Canonical section: docs/control-panel-v8/README.md.
Do not merge this work conceptually with the generator/source-selector control paths unless the CAN evidence explicitly requires it. This panel is a separate RefBloc=48, Coding=1, Subnetwork=0 device family on the same Multibloc V8 network.
Reported panel markings:
SCHEIBER 41.96012.01 000000
V08.15.01 000276 756-20
The panel must be connected by its normal physical Scheiber X1/X2 cable into the rest of the working Multibloc V8 network before reproducing the captures or testing control.
The complete network supplies the real outputs, feedback, interlocks, termination, and distributed logic. A disconnected panel plus USB-CAN adapter is not an equivalent test setup.
data/raw/control-panel-v8/panel-switch-sequence-2026-08-18.log
SHA-256 bf035f80627716379f7ea0618ae4f657cd6d82ab84c750f1492176c55c9793f7
data/raw/control-panel-v8/water-pump-demand-2026-08-18.log
SHA-256 43feb9b8008e7348a8ca32af723802b2396fac0aee9cbfae46ce5f8664feb875
docs/control-panel-v8/control-panel-reference.webp
SHA-256 eef58d0f7a594cf7aa7d7546d4deec34d4b2d158067cddc744772a2a35fa0bc2
Do not edit those files. Add new captures instead.
Pinned source:
https://github.com/domoticz/domoticz/blob/11d95f0c7afedabc6b4c6fef2de971eecd9ee278/hardware/USBtin_MultiblocV8.cpp
Use this exact revision when checking the reasoning recorded in this section. Important source concepts: Multibloc CAN-ID masks/shifts, SFSP_SWITCH=512, E_TOR=266, paired output-state types 267.., press bit 0x80, state flags in bytes 2/6, and RTR state requests.
Panel ALIVE:
00001808#080F018076
firmware 08.15.01
configuration CRC 0x8076
RefBloc 48 / Coding 1 / Subnetwork 0
Button event CAN ID:
04001808
payload 00 00 00 01 KK
KK bit 0x80 set = press
same key with 0x80 clear = release
Key/output map:
02 electronics -> output 1
05 deck floodlight -> output 2
03 navigation lights -> output 3
06 anchor light -> output 4
04 steaming light -> output 5
08 port bilge AUTO -> output 6
0C port bilge MANUAL -> output 7
09 starboard bilge AUTO -> output 8
0D starboard bilge MANUAL -> output 9
0A fresh-water pump enable -> output 10
0B fridge -> output 11
07 general/cabin lighting -> output 12
State IDs:
02161808 outputs 1-2
02181808 outputs 3-4
021A1808 outputs 5-6
021C1808 outputs 7-8
021E1808 outputs 9-10
02201808 outputs 11-12
For each state frame:
slot 1: level byte 0, command flags byte 2, ON bit 0x01
slot 2: level byte 4, command flags byte 6, ON bit 0x01
Do not decode bytes 1/3/5/7 without new evidence.
Digital-input feedback:
02141808#01 fresh-water pump actually running / demand active
02141808#02 port bilge running
02141808#04 starboard bilge running
02141808#00 none of those running
The frame class E_TOR is source-established. The bit-to-function mapping is a high-confidence inference from controlled tests, not an OEM label.
Steaming dependency is observed:
steaming ON -> steaming output 5 ON + navigation output 3 ON
steaming OFF -> output 5 OFF; output 3 remains ON
Never initialize software state to OFF.
The physical key is a momentary event. It does not encode explicit ON or OFF. At controller startup:
all functions = UNKNOWN
Then learn/request actual state from the paired state frames. A desired-state controller only presses a key if actual state is known and differs from desired state.
Never turn everything OFF merely to establish a baseline. That is particularly unacceptable for bilge AUTO modes.
External injection on this exact installation is still pending live validation.
A captured/source-consistent fridge event is:
cansend can1 04001808#000000018B
sleep 0.15
cansend can1 04001808#000000010Bscripts/scheiber_v8_panel.py is dry-run by default and requires --transmit for active CAN.
Do the first active test on a non-critical lighting circuit, not a bilge function.
The pinned Multibloc V8 source requests digital-output state with CAN RTR. Candidate exact requests for this panel are:
cansend can1 02161808#R8
cansend can1 02181808#R8
cansend can1 021A1808#R8
cansend can1 021C1808#R8
cansend can1 021E1808#R8
cansend can1 02201808#R8This mechanism is source-derived but has not yet been live-validated on the supplied installation. Record a new capture when testing it.
The source includes type_CMD_S_TOR=283, implying direct output command ID 0x02361808 for this panel's base fields. Do not operationalize this yet.
Reason: it may bypass Scheiber logic/interlocks, and the steaming/navigation behavior proves those interlocks are meaningful. Keep the direct-output path documented as source-derived/unvalidated unless separately tested with a safety plan.
02041808 E_ANA_1_TO_4, frequently changing, function unresolved
04081808 SFSP_SYNCHRO, correlated with some button presses
04020000 SFSP_LED_CMD, FFFF1111... / FFFF2222... around navigation changes
Do not assign new semantics from timing alone.
- Connect panel normally to the complete Scheiber network.
- Passive
candump -Land live decoder first. - Validate RTR output-state synchronization.
- Validate one external button injection on general lighting/deck floodlight.
- Verify output state and physical panel indicator confirmation.
- Repeat once to prove toggle reversal.
- Build desired-state controller using
UNKNOWN -> synchronized ON/OFFsemantics. - Only after state synchronization/control is robust, consider bilge-mode integration.
- For bilges, explicitly model OFF/AUTO/MANUAL; do not flatten to a boolean.
- Keep every active test capture with exact operator action annotations.
python3 scripts/scheiber_v8_panel.py --log data/raw/control-panel-v8/panel-switch-sequence-2026-08-18.log >/tmp/panel.decoded
python3 -m unittest tests.test_control_panel