An introduction to the SignalK(SK), Marine application, is given here.
A very easy way to measure temperatures with SK is to use one wire (1W) DS18B20 (DS)temperature sensors.
In a former post the DS:s where connected direkt to the RPi GPIO:s, but in this post they are WiFi enabled via the Shelly 1(S1). Alarms are also sent when the temperature exceeds a set value.
NR should be installed in SK as a plugin, "@signalk/signalk-node-red", via the admin UI.
Here is a link to a quick NR intro and the link to NR website.
In NR, opened via admin UI(Webapps), import the "SignalK_shelly_temp.json" flow, found here, to NR.
Via POST the temperatures is fetched every 15 seconds, change to what is appropriate in Your case, with the. "inject" node.
In the "function" node, values are changed to Celsius, from Kelvin, and the values are stored via a global.set(xx,yy).
In the next part, every 3 seconds, the stored values are fetched, mapped to a SK path and sent on to the "signalk-send-pathvalue" node which forward the data to SK server.
If humidity is of interest You can use a DHT22 sensor instead of a DS sensor.
Using the NodeRed(NR) plugin, a browser-based editor for the Internet of Things, will map the temperature measures to a SignalK path. This can be done despite You maybe don't have any advanced programming skills.
You can even send the temperatures to a NMEA 2000/0183 network with sufficient hardware.
Start with installing the Shelly 1 and the DS:s checking this post.
Prerequisite is a SK server up and running, the mentioned Shelly 1 and up to 3 DS:s.
NR should be installed in SK as a plugin, "@signalk/signalk-node-red", via the admin UI.
Here is a link to a quick NR intro and the link to NR website.
In NR, opened via admin UI(Webapps), import the "SignalK_shelly_temp.json" flow, found here, to NR.
Via POST the temperatures is fetched every 15 seconds, change to what is appropriate in Your case, with the. "inject" node.
In the "function" node, values are changed to Celsius, from Kelvin, and the values are stored via a global.set(xx,yy).
In the next part, every 3 seconds, the stored values are fetched, mapped to a SK path and sent on to the "signalk-send-pathvalue" node which forward the data to SK server.
As You se I'm measuring the exhaust temperature and here You have a post with a "how to".
The separation between fetching and sending data is due to that in my case some values are sent on to a Garmin GMI 20 display which must have new data, at least, every 5:th second otherwise the GMI20 just will display "--". So if there is a delay with fetching the data over WiFi the last value will be displayed.
The last part will monitor the temperature levels. If the temperature levels, for exhaust, will increase over 50 °C alarms will be sent to the SK server.
In my case an Actisense NTG-1 is installed and I want to display the "engineRoom temperature" in my N2K instruments. The "signalk-to-nmea2000" plugin, in Node Server, will do the job.
In the Plugin Config click "Active" and enable "Engine Room Temperature" and then "Submit".
130312, mentioned in the config, is the N2K pgn that will be created.
Setup is complete and You will see the temperature in Your N2K instruments.
My instruments hadn't the possibility to display the exhaust temperatures so instead I used the nice WilhelmSK app diskussed here.
In the Plugin Config click "Active" and enable "Engine Room Temperature" and then "Submit".
130312, mentioned in the config, is the N2K pgn that will be created.
Setup is complete and You will see the temperature in Your N2K instruments.
My instruments hadn't the possibility to display the exhaust temperatures so instead I used the nice WilhelmSK app diskussed here.
Thank you for sharing!
ReplyDelete👍
Thanks ! 🙏
Delete