Skip to content

Troubleshooting

mchristegh edited this page Jul 15, 2026 · 1 revision

Most reports about this node turn out to be documented, deliberate behavior — this page collects the usual suspects first, then the diagnostic procedure for everything else.

First move, always: watch output 4

Wire a debug node (set to complete msg object) to output 4 (Events). This node never fails silently: every rejected value, suppressed decision, staleness expiry, and refused command appears there with msg.ignored, msg.source, and the attempted value. Nine times out of ten the envelope names your answer.

"It looks like a bug, but…"

Symptom What's actually happening
Trigger fired once and never again The latch is working: output 1 fires once per untriggeredtriggered transition and re-arms only on a Release. Check msg.consensusState. See Trigger and Release.
A clear threshold crossing didn't trigger Three usual causes, all visible on output 4: quorum not satisfied (msg.quorum: false), the node is disabled (triggered with ignored: true), or the value never counted (rejected reading). See Sources Freshness and Quorum and Input Messages.
The average "ignores" one of my sensors That source went stale and is excluded — exactly the trust feature working. Look for its sourcestale event and stale: true in a query's msg.sources.
The average includes a sensor that died days ago The opposite problem: your Staleness Window is 0 (disabled), so last values are held forever. Configure a window.
Readings "vanish" from output 4 Emit aggregate on change only (default checked) suppresses accepted readings that didn't move the aggregate. Rejections always emit. See Output Messages.
Boolean sensor values are rejected after I set custom lists Custom True/False lists replace the defaults — a sensor sending true no longer coerces if your list only says open. See Type Modes.
A sensor payload was treated as a command Command words always win over coercion, in both modes. Don't use reset, query, etc. as sensor values. See Input Messages.
settrigger / setrelease was refused Wrong-side protection: with a distinct release, the pair guards against inversion (which would flap outputs 1/2). The event carries the attempted value; move the pair in the valid order. See Trigger and Release.
Restore after a restart fired no Trigger even though conditions were met Restore is transition-silent by design; the first genuine transition comes from live evaluation. See Persistence.
A sourcestale event claims quorum: true right before a quorumlost Envelopes reflect the instant of dispatch; the correcting event follows. Documented in Output Messages.
A startup warning about the release value The dialog was saved with the release on the wrong side of the trigger; the node sanitized it to same-as-trigger. Fix the config to silence it. See Trigger and Release.
sourceadded instead of a reading, or sourcerecovered instead of a reading One message, one event — the most specific reading-class event replaces the plain one. See Events.

Reporting a problem

If output 4 doesn't explain it:

  1. Capture the debug output from output 4 (complete msg object) around the moment in question.
  2. Note your configuration — at minimum the type mode and your staleness / quorum settings, since most "didn't trigger" reports trace back to those.
  3. Ask in Discussions (questions) or open an Issue (reproducible bugs), including both of the above.

Version-specific fixes and changes are listed in Release Notes.

Clone this wiki locally