Appearance
Bloc8 power outputs (function 1)
8-channel power output module with current sensing.
- Output state enum (
outNstrings):power-off,power-on,short-circuit,not-connected.
Published
device/1/<i>/life
metadata adds counter; expireAfterSec: 30.
data field | Type | Unit | Description |
|---|---|---|---|
VirtualSig0..VirtualSig3 | bool | — | Virtual signals 0-3 |
out0..out7 | string | — | Output state (enum) |
out0Code..out7Code | int | — | Raw output state 0-3 |
currentTotal | number (1 dec) | A | Total output current |
json
{
"data": {
"VirtualSig0": false,
"VirtualSig1": false,
"VirtualSig2": false,
"VirtualSig3": false,
"out0": "power-on",
"out0Code": 1,
"out1": "power-off",
"out1Code": 0,
"out2": "power-off",
"out2Code": 0,
"out3": "power-off",
"out3Code": 0,
"out4": "power-off",
"out4Code": 0,
"out5": "power-off",
"out5Code": 0,
"out6": "power-off",
"out6Code": 0,
"out7": "power-on",
"out7Code": 1,
"currentTotal": 12.3
},
"metadata": {
"rxdate": "2026-06-17T14:30:45.123Z",
"rxTimestamp": 1781793045,
"expireAfterSec": 30,
"counter": 7
}
}device/1/<i>/io
expireAfterSec: 30.
data field | Type | Unit | Description |
|---|---|---|---|
digitalInput0..digitalInput5 | bool | — | Digital inputs 0-5 |
analogInput0..analogInput2 | number (3 dec) | V | Analog inputs 0-2 |
json
{
"data": {
"digitalInput0": true,
"digitalInput1": false,
"digitalInput2": false,
"digitalInput3": false,
"digitalInput4": false,
"digitalInput5": true,
"analogInput0": 3.301,
"analogInput1": 0.012,
"analogInput2": 1.65
},
"metadata": {
"rxdate": "2026-06-17T14:30:45.123Z",
"rxTimestamp": 1781793045,
"expireAfterSec": 30
}
}device/1/<i>/current1 and device/1/<i>/current2
expireAfterSec: 30. Per-channel current, signed.
| Topic | data fields | Type | Unit |
|---|---|---|---|
current1 | current0..current3 | number (1 dec) | A |
current2 | current4..current7 | number (1 dec) | A |
json
{
"data": {
"current0": 2.5,
"current1": -0.3,
"current2": 0.0,
"current3": 5.1
},
"metadata": {
"rxdate": "2026-06-17T14:30:45.123Z",
"rxTimestamp": 1781793045,
"expireAfterSec": 30
}
}device/1/<i>/voltage
expireAfterSec: 30.
data field | Type | Unit | Description |
|---|---|---|---|
voltage | number (1 dec) | V | Battery voltage |
json
{
"data": {
"voltage": 13.2
},
"metadata": {
"rxdate": "2026-06-17T14:30:45.123Z",
"rxTimestamp": 1781793045,
"expireAfterSec": 30
}
}bash
mosquitto_sub -h 127.0.0.1 -t 'device/1/+/#' -vCommand — device/1/<i>/command
Regex ^device/1/([[:digit:]]+)/command$.
Fields are either per-channel — they act on the one output named by channel — or product-global, applying to the bloc8 as a whole.
| Field | Type | Scope | Description |
|---|---|---|---|
channel | int 0-7 | — | Target output. Required by every per-channel field |
requestOn | bool | per channel | Turn the channel on |
requestOff | bool | per channel | Turn the channel off |
dimming | int 0-100 | per channel | Dimming level in %, clamped into range |
requestOnPublishCurrent | bool | global | Start periodic current publishing |
requestOffPublishCurrent | bool | global | Stop periodic current publishing |
publishPeriod | int | global | Publish period in ms |
Rules: if requestOn and requestOff both true → requestOn cleared. If both publish flags true → requestOnPublishCurrent cleared. requestOnPublishCurrent with no/zero publishPeriod defaults to 10 ms.
A payload carrying any per-channel field is dropped unless channel is present and in 0-7 — including a dimming on its own. A payload with only global fields needs no channel, but one that carries a channel that is not a JSON integer 0-7 is dropped all the same.
A payload that asks for nothing is dropped rather than put on the bus: the frame carries either an output command (requestOn / requestOff / dimming) or a publish-current command (requestOnPublishCurrent / requestOffPublishCurrent), so {} — and a publishPeriod with neither publish flag — sends nothing.
bash
# per channel — channel is required
mosquitto_pub -h 127.0.0.1 -t 'device/1/0/command' -m '{"channel":5,"requestOn":true}'
mosquitto_pub -h 127.0.0.1 -t 'device/1/0/command' -m '{"channel":5,"requestOff":true}'
mosquitto_pub -h 127.0.0.1 -t 'device/1/0/command' -m '{"channel":5,"dimming":40}'
# product-global — no channel
mosquitto_pub -h 127.0.0.1 -t 'device/1/0/command' -m '{"requestOnPublishCurrent":true,"publishPeriod":50}'