-
-
Notifications
You must be signed in to change notification settings - Fork 0
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.
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.
| Symptom | What's actually happening |
|---|---|
| Trigger fired once and never again | The latch is working: output 1 fires once per untriggered → triggered 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. |
If output 4 doesn't explain it:
- Capture the debug output from output 4 (complete msg object) around the moment in question.
- Note your configuration — at minimum the type mode and your staleness / quorum settings, since most "didn't trigger" reports trace back to those.
- 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.
Getting Started
Reference
Features
Examples
- Examples Basic Numeric Averaging
- Examples Staleness and Quorum
- Examples Boolean Voting
- Examples Runtime Commands
Test Script Coverage
- Overview
- Test Suite 1 — Output routing & envelope shape
- Test Suite 2 — Aggregation functions
- Test Suite 3 — Boolean mode
- Test Suite 4 — Commands
- Test Suite 5 — Threshold set-commands & release-follows-trigger
- Test Suite 6 — Status labels
- Test Suite 7 — Staleness, quorum policies, heartbeat
- Test Suite 8 — Persistence
Support