Hilscher and SIGNL4 Mobile Alerting

I have connected a sensorEDGE FIELD – Edge IO-Link Master from Hilscher with SIGNL4. The edge device is powerful enough to run Docker containers, enabling it to host services such as an Eclipse Mosquitto MQTT broker and Node-RED directly on the device, and even additional applications if required.

The connected sensors publish their data to the MQTT broker. From there, Node-RED subscribes to the data, processes it, and evaluates defined conditions. If certain thresholds are exceeded (for example, if the temperature is too high), a SIGNL4 alert is automatically triggered.

This setup makes bridging the OT/IT gap straightforward and enables reliable mobile alerting in various IIoT scenarios.

[{"id":"f6f2187d.f17ca8","type":"tab","label":"SIGNL4 Alerting","disabled":false,"info":""},{"id":"3cc11d24.ff01a2","type":"comment","z":"f6f2187d.f17ca8","name":"WARNING: please check you have started this container with a volume that is mounted to /data\\n otherwise any flow changes are lost when you redeploy or upgrade the container\\n (e.g. upgrade to a more recent node-red docker image).\\n  If you are using named volumes you can ignore this warning.\\n Double click or see info side panel to learn how to start Node-RED in Docker to save your work","info":"\nTo start docker with a bind mount volume (-v option), for example:\n\n```\ndocker run -it -p 1880:1880 -v /home/user/node_red_data:/data --name mynodered nodered/node-red\n```\n\nwhere `/home/user/node_red_data` is a directory on your host machine where you want to store your flows.\n\nIf you do not do this then you can experiment and redploy flows, but if you restart or upgrade the container the flows will be disconnected and lost. \n\nThey will still exist in a hidden data volume, which can be recovered using standard docker techniques, but that is much more complex than just starting with a named volume as described above.","x":350,"y":80,"wires":[]},{"id":"85113364b354899d","type":"mqtt in","z":"f6f2187d.f17ca8","name":"Sensor MQTT","topic":"Oi4/OTConnector/hilscher.com/netFIELD,20App,20OPC,20UA,20IO-Link,20Adapter/1917.011/netfield-app-opc-ua-io-link-adapter/Pub/Data","qos":"2","datatype":"auto-detect","broker":"c8d8f0dbf841de63","nl":false,"rap":true,"rh":0,"inputs":0,"x":170,"y":320,"wires":[["3e52eea1fac331c1","2715c126558149ad"]]},{"id":"3e52eea1fac331c1","type":"debug","z":"f6f2187d.f17ca8","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":380,"y":420,"wires":[]},{"id":"b8aeeb65015995e8","type":"function","z":"f6f2187d.f17ca8","name":"Alert Data","func":"\n// Check if already alerted\nif (flow.get(\"alertActive\")) {\n    return null;\n}\n\n// Assemble SIGNL4 alert data\nmsg.payload = {\n    \"Sensor Temperature\": msg.payload.Messages[0].Payload.Temperature,\n    \"a Peak\": msg.payload.Messages[0].Payload[\"a-Peak\"],\n    \"a Rms\": msg.payload.Messages[0].Payload[\"a-Rms\"],\n    \"v Rms\": msg.payload.Messages[0].Payload[\"v-Rms\"],\n    \"X-S4-ExternalID\": \"ifm-sensor-1\"\n}\n\nflow.set(\"alertActive\", 1);\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":660,"y":280,"wires":[["45c0c179fc8efabf"]]},{"id":"45c0c179fc8efabf","type":"SIGNL4","z":"f6f2187d.f17ca8","name":"SIGNL4 Alerting","teamSecret":"xxxxxxxx","alertSubject":"Hilscher IO-Link Alert","alertBody":"Sensor data out of range.","alertS4Service":"","alertS4Location":"","alertS4AlertingScenario":"single_ack","alertS4Filtering":"false","alertS4ExternalID":"","x":860,"y":280,"wires":[[]]},{"id":"3cd5adca3bb4d6d7","type":"SIGNL4 Resolve","z":"f6f2187d.f17ca8","name":"SIGNL4 Resolve","x":870,"y":360,"wires":[[]]},{"id":"2715c126558149ad","type":"switch","z":"f6f2187d.f17ca8","name":"Temperature Condition","property":"payload.Messages[0].Payload.Temperature","propertyType":"msg","rules":[{"t":"gt","v":"30","vt":"str"},{"t":"lte","v":"30","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":420,"y":320,"wires":[["b8aeeb65015995e8"],["d11f3cfe0207fdf3"]]},{"id":"d11f3cfe0207fdf3","type":"function","z":"f6f2187d.f17ca8","name":"OK Data","func":"\n// Check if already resolved\nif (!flow.get(\"alertActive\")) {\n    return null;\n}\n\n// Assemble SIGNL4 alert data\nmsg.payload = {\n    \"X-S4-ExternalID\": \"ifm-sensor-1\"\n}\n\nflow.set(\"alertActive\", 0);\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":660,"y":360,"wires":[["3cd5adca3bb4d6d7"]]},{"id":"c8d8f0dbf841de63","type":"mqtt-broker","name":"","broker":"http://mosquitto:1883","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""}]

Flow Info

Created 2 weeks, 5 days ago
Rating: not yet rated

Owner

Actions

Rate:

Node Types

Core
  • comment (x1)
  • debug (x1)
  • function (x2)
  • mqtt in (x1)
  • mqtt-broker (x1)
  • switch (x1)
Other

Tags

  • IO-Link
  • Alerting
  • Mobile
  • App
  • SMS
  • Call
  • Hilscher
  • SIGNL4
Copy this flow JSON to your clipboard and then import into Node-RED using the Import From > Clipboard (Ctrl-I) menu option