Skip to content

Bloc8 power outputs (function 1) ​

8-channel power output module with current sensing.

  • Output state enum (outN strings): power-off, power-on, short-circuit, not-connected.

Published ​

device/1/<i>/life ​

metadata adds counter; expireAfterSec: 30.

data fieldTypeUnitDescription
VirtualSig0..VirtualSig3bool—Virtual signals 0-3
out0..out7string—Output state (enum)
out0Code..out7Codeint—Raw output state 0-3
currentTotalnumber (1 dec)ATotal 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 fieldTypeUnitDescription
digitalInput0..digitalInput5bool—Digital inputs 0-5
analogInput0..analogInput2number (3 dec)VAnalog 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.

Topicdata fieldsTypeUnit
current1current0..current3number (1 dec)A
current2current4..current7number (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 fieldTypeUnitDescription
voltagenumber (1 dec)VBattery 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/+/#' -v

Command — 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.

FieldTypeScopeDescription
channelint 0-7—Target output. Required by every per-channel field
requestOnboolper channelTurn the channel on
requestOffboolper channelTurn the channel off
dimmingint 0-100per channelDimming level in %, clamped into range
requestOnPublishCurrentboolglobalStart periodic current publishing
requestOffPublishCurrentboolglobalStop periodic current publishing
publishPeriodintglobalPublish 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}'

Integration of multiplexed solutions
MUXEN and the MUXEN logo are trademarks of MUXEN SAS.