{"_id":"@automation-room-control/node-red-arc","_rev":"7-6999ceb9a38bce6b698658f7113c7234","name":"@automation-room-control/node-red-arc","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@automation-room-control/node-red-arc","version":"1.0.0","keywords":["node-red","escape room","iot","arc","automation"],"author":{"name":"Automation Room Control, LLC"},"license":"MIT","_id":"@automation-room-control/node-red-arc@1.0.0","maintainers":[{"name":"mfriskey","email":"m.friskey@gmail.com"}],"dist":{"shasum":"706f7f397b7825be0477197ae8cd0127b3476760","tarball":"https://registry.npmjs.org/@automation-room-control/node-red-arc/-/node-red-arc-1.0.0.tgz","fileCount":22,"integrity":"sha512-LG01ZcXMpGr/PiUYXq81vZ2OmM/pZc8JDiNrkQUX/60DPFD7fuHpldrTfqxxvKvHtogcx+hvcGM+LS+19HuioA==","signatures":[{"sig":"MEYCIQCtV1P/v6NNoxOhcErxbr2yBChWQPHeQUJe/a8n2czfAAIhAKxWmRGksbaeFuX4xwsEe6eNEyVvVI/wDDHX4c1C5bpT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":322015},"gitHead":"16214abb966bc1500b53f04a5c491d4def627070","_npmUser":{"name":"mfriskey","email":"m.friskey@gmail.com"},"node-red":{"nodes":{"arc-state":"nodes/state.js","arc-timer":"nodes/timer.js","arc-config":"nodes/config.js","arc-control":"nodes/control.js","arc-objective":"nodes/objective.js"}},"_npmVersion":"11.9.0","description":"Node-RED nodes for ARC: monitor game activity and trigger actions.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"socket.io-client":"^4.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"socket.io":"^4.8.1"},"_npmOperationalInternal":{"tmp":"tmp/node-red-arc_1.0.0_1778255055842_0.06555184282812099","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@automation-room-control/node-red-arc","version":"1.1.0","keywords":["node-red","escape room","iot","arc","automation"],"author":{"name":"Automation Room Control, LLC"},"license":"MIT","_id":"@automation-room-control/node-red-arc@1.1.0","maintainers":[{"name":"mfriskey","email":"m.friskey@gmail.com"}],"dist":{"shasum":"d0dcffcd906174916c5dd621ab6725150e889e31","tarball":"https://registry.npmjs.org/@automation-room-control/node-red-arc/-/node-red-arc-1.1.0.tgz","fileCount":24,"integrity":"sha512-AdIltscS1fSwP0mKuOqKwz790cdheRHJ3oU8htgdVCGCxXU1SDaEhNhyDZh/4egqVzZIlEu+sXbwa+HylxDIEw==","signatures":[{"sig":"MEUCICwy2mMplrWhsmxE8PB+fQErgMPGG0NZit6uEpLMYpdAAiEAu+iitOYW5YhzBIkGOZ5K716mQDOpZIQk6yozrMEatuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339920},"gitHead":"942d5b144aa857096d3b1908896ec1e1627c88d7","_npmUser":{"name":"mfriskey","email":"m.friskey@gmail.com"},"node-red":{"nodes":{"arc-state":"nodes/state.js","arc-timer":"nodes/timer.js","arc-config":"nodes/config.js","arc-control":"nodes/control.js","arc-session":"nodes/session.js","arc-objective":"nodes/objective.js"}},"_npmVersion":"11.9.0","description":"Node-RED nodes for ARC: monitor game activity and trigger actions.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"socket.io-client":"^4.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"socket.io":"^4.8.1"},"_npmOperationalInternal":{"tmp":"tmp/node-red-arc_1.1.0_1778818842748_0.25336159452217677","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@automation-room-control/node-red-arc","version":"1.1.1","keywords":["node-red","escape room","iot","arc","automation"],"author":{"name":"Automation Room Control, LLC"},"license":"MIT","_id":"@automation-room-control/node-red-arc@1.1.1","maintainers":[{"name":"mfriskey","email":"m.friskey@gmail.com"}],"dist":{"shasum":"a2d99b9428706c90df79ec7dd35a4290c05bea1d","tarball":"https://registry.npmjs.org/@automation-room-control/node-red-arc/-/node-red-arc-1.1.1.tgz","fileCount":24,"integrity":"sha512-QOF3uIoWJRFGGwB5CxRqskOgLMxKLUmkp4wuX4t3W2c4UG/5NsCKLoXal6YtwuzDr2JfXvPi0G67fZEqhtm65A==","signatures":[{"sig":"MEYCIQC8bfSsMWch6a0CC8a5yectRyvhC9eLoBiSASrRY9BkiQIhANcioQEN7mVjvK9LoD82wyzc74vvrmGShYmZHqv5/oi8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":340187},"gitHead":"79b7e286a55ec28e8c386db70c2daba2566a7934","_npmUser":{"name":"mfriskey","email":"m.friskey@gmail.com"},"node-red":{"nodes":{"arc-state":"nodes/state.js","arc-timer":"nodes/timer.js","arc-config":"nodes/config.js","arc-control":"nodes/control.js","arc-session":"nodes/session.js","arc-objective":"nodes/objective.js"}},"_npmVersion":"11.9.0","description":"Node-RED nodes for ARC: monitor game activity and trigger actions.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"socket.io-client":"^4.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"socket.io":"^4.8.1"},"_npmOperationalInternal":{"tmp":"tmp/node-red-arc_1.1.1_1778820003743_0.16352099096533546","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@automation-room-control/node-red-arc","version":"1.2.0","description":"Node-RED nodes for ARC: monitor game activity and trigger actions.","author":{"name":"Automation Room Control, LLC"},"license":"MIT","publishConfig":{"access":"public"},"dependencies":{"socket.io-client":"^4.7.5"},"keywords":["node-red","escape room","iot","arc","automation"],"node-red":{"nodes":{"arc-config":"nodes/config.js","arc-control":"nodes/control.js","arc-state":"nodes/state.js","arc-timer":"nodes/timer.js","arc-objective":"nodes/objective.js","arc-session":"nodes/session.js"}},"devDependencies":{"socket.io":"^4.8.1"},"gitHead":"3ac1e2a58b705b325e7610bef1f46676ec4c51d6","_id":"@automation-room-control/node-red-arc@1.2.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-jaNQine6qSJ3l7yfBau7k2vzWMZAvbtg8PFCrQQxvkTp0QKWq3E970Rz25rtgX2TAim8Mz5EdqCQl88zGOc/NQ==","shasum":"d54c98aea7e9f9b205b8a29ac099941563cbcfa2","tarball":"https://registry.npmjs.org/@automation-room-control/node-red-arc/-/node-red-arc-1.2.0.tgz","fileCount":24,"unpackedSize":341105,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBl0amZTt7E2BZpk/IOnY5TP5Gm6a3/ZrRQFMW5p80eEAiEApoVzxkebcWTufH7tTZ9vNmD7zvXxdLyTyrkRGP/SCAA="}]},"_npmUser":{"name":"mfriskey","email":"m.friskey@gmail.com"},"directories":{},"maintainers":[{"name":"mfriskey","email":"m.friskey@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/node-red-arc_1.2.0_1780659320961_0.4980665525225303"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-08T15:44:15.754Z","modified":"2026-06-05T11:35:21.225Z","0.1.0":"2026-05-08T04:49:53.169Z","1.0.0":"2026-05-08T15:44:16.003Z","1.1.0":"2026-05-15T04:20:42.944Z","1.1.1":"2026-05-15T04:40:03.936Z","1.2.0":"2026-06-05T11:35:21.099Z"},"author":{"name":"Automation Room Control, LLC"},"license":"MIT","keywords":["node-red","escape room","iot","arc","automation"],"description":"Node-RED nodes for ARC: monitor game activity and trigger actions.","maintainers":[{"name":"mfriskey","email":"m.friskey@gmail.com"}],"readme":"# @automation-room-control/node-red-arc\r\n\r\nNode-RED nodes for Automation Room Control (ARC). Use them to trigger ARC controls from flows and listen for game state, timer, and objective progress.\r\n\r\n## Requirements\r\n- Node-RED 2.0+\r\n- ARC Software reachable on the same network\r\n- ARC connection `node-red` enabled in Settings -> Connections\r\n\r\n## Install\r\n```bash\r\ncd ~/.node-red\r\nnpm install @automation-room-control/node-red-arc\r\n```\r\n\r\nRestart Node-RED after install.\r\n\r\n## Quick Start\r\n1. Add an **ARC Config** node. It defaults to `arc.local`; change the host only if you need an IP address.\r\n2. Use **Test connection** in the config node.\r\n3. Add **ARC Control** to run an ARC action from a Node-RED flow.\r\n4. Add **ARC Timer**, **ARC State**, or **ARC Objective** when a flow needs to react to live ARC activity.\r\n5. Deploy.\r\n\r\n## Nodes\r\n| Node | What it does |\r\n| --- | --- |\r\n| **ARC Config** | Shared ARC connection settings. The port is fixed at `1183`. |\r\n| **ARC Control** | Runs game actions, objective actions, hint actions, display messages, display commands, or variable actions. |\r\n| **ARC Timer** | Sends timer updates every N seconds or at selected thresholds. |\r\n| **ARC State** | Sends selected game state changes. |\r\n| **ARC Objective** | Sends simple objective triggers: all completed, selected objective completed, bypassed, or reset. |\r\n| **ARC Session** | Sends a message when a game ends, with the full game results as `msg.payload`. Filter by game and/or outcome. |\r\n\r\nThe editor loads metadata from ARC, so games, objectives, displays, hints, and variables are selected from dropdowns instead of typed manually. Saved IDs are preserved if ARC is offline while editing.\r\n\r\n## ARC Control\r\n**ARC Control** is the main output node. Pick a game, choose a control type, then choose the action from ARC-backed dropdowns.\r\n\r\nSupported control types:\r\n- Game action: start, pause, resume, adjust time, request help, end, success, failure, or reset game.\r\n- Objective action: complete, bypass, or reset.\r\n- Hint action: send a configured objective hint, with an **Allow repeat send** checkbox when the flow should permit sending the same hint again.\r\n- Display message.\r\n- Display command: clear, refresh, pause, resume, skip, reset overlay, alert, ambient audio, volume, or audio reset.\r\n- Variable action: set, adjust, toggle, or reset a game variable.\r\n\r\n**Reset game** does the same thing as the **Reset Game** button on the live control page: it returns the session to its idle state, resets game variables, clears the room displays back to the timer view, and restores audio to the game's configured levels. Like the control page, the reset always runs - it does not wait for props to be back in their reset positions.\r\n\r\nThe top-level control type list is the package's set of ARC categories. The choices inside the ARC-backed categories, such as objectives, hints, displays, and variables, are loaded from ARC metadata and refresh without republishing the Node-RED package.\r\n\r\nSet `msg.gameId` to override the configured game for one trigger. Most flows do not need any other fields.\r\n\r\nFor Hint action nodes, set `msg.allowRepeatSend` or `msg.allow_repeat_send` to override the configured repeat-send policy for one trigger. Existing flows that send `msg.resend` are still accepted for compatibility.\r\n\r\n## ARC Session\r\n**ARC Session** sends a message when a game ends. Use it to log finished games, send notifications, post results to a Slack channel or a spreadsheet, or feed a leaderboard.\r\n\r\n- Pick the **Game** to watch.\r\n- Leave **Outcomes** unchecked to send a message for every game, or check one or more (`success` / `failure` / `unknown`) to filter.\r\n- `msg.payload` is the game's results: outcome, when it started and ended, how long it ran, how much time was left, the hints used (broken down by hint type — text, image, video, audio, TTS, verbal), objective progress (total / completed / bypassed), the team's size, and the staff member who ran the session.\r\n- The message also includes `msg.gameId`, `msg.gameName`, `msg.sessionId`, and a timestamp on `msg.ts`.\r\n- Games run in **Testing** mode never trigger this node.\r\n- To watch multiple games, drop one **ARC Session** node per game in your flow.\r\n\r\n## Notes\r\n- ARC host defaults to `arc.local`.\r\n- ARC always runs on port `1183`; the node configuration does not expose a port field.\r\n- The ARC WebSocket path is handled by the package.\r\n- Low-level raw event streaming is intentionally not included in this first package surface. It can return later as a separate advanced node if needed.\r\n\r\n## Release Notes\r\nSee `CHANGELOG.md`.\r\n","readmeFilename":"README.md"}