// the find
st-one-io/node-red-contrib-s7
A Node-RED node to interact with Siemens S7 PLCs
A Node-RED node wrapping the Siemens S7 protocol (via an underlying snap7-style driver) so flows can poll or write PLC memory areas directly from Node-RED. It's aimed at industrial/SCADA integrators who want PLC data in a flow-based automation tool without writing a custom S7 client.
The addressing documentation is unusually thorough — it maps every Node-RED address format to its exact Step7/TIA Portal equivalent (DBX, DBB, DBW, DBD, REAL, DTL, etc.) across all memory areas, which is the kind of thing that normally takes someone a support ticket to figure out. Three read modes (single variable, one-message-per-variable, combined object) with an optional diff flag means you can avoid flooding the flow with unchanged values on every poll cycle. It explicitly documents the S7-1200/1500 'optimized block access' and PUT/GET permission gotchas that trip up almost everyone moving from older S7-300/400 hardware, plus a full Logo! 8 VM memory map most libraries don't bother with.
The actual implementation is two files (s7.js, tools.js) with a single test flow (flow_writeTest.json) — for something writing to live industrial controllers, that's thin coverage and most of the correctness burden sits on whatever S7 driver it wraps underneath, which isn't visible from the README. Support is explicitly 'best-effort' GitHub issues unless you pay ST-One directly, so anyone hitting an edge case on a specific CPU firmware is on their own. GPLv3+ is copyleft, which can be a real blocker if you're embedding this in a commercial product rather than just running it inside Node-RED. No mention of reconnection behavior, timeout handling, or what happens to in-flight reads when a PLC drops off the network — a real concern for anything controlling physical equipment.