If you have an environmental sensor set up in your home, office, farm etc and want to check the temperature, you don’t want to have to physically go out and do a sensor reading every time. There are already handy dashboards you can connect your device to (like the Arduino Cloud or Telstra IoT Platform), but if you are in a rush you can now ask the device to update you via SMS on demand!
We could potentially set this up to automate updates every hour, minute, week, or when a threshold is exceeded (like in the next example) but this project focuses on on-demand data.
This project follows on from part 1: Control your IoT device remotely with SMS commands where we set up an Arduino board connected to Telstra's NB-IoT network, that flashes it's LED light on or off based on an SMS command.
I tweaked it slightly, to be able to SEND SMS commands as well as receive them, so we can get information off the device with remote sensors.
This is the overall flow that handles inbound messages requesting specific sensor info, and used the most up to date sensor readings from our Arduino ENV Shield via an IoT broker to send the response:
Our Arduino device is subscribed to an IoT broker that updates the latest sensor reading every minute. When an SMS is sent to our virtual mobile number (from Telstra’s Messaging API free trial), it is forwarded to the http endpoint here in Node-Red where we match the text payload to some expected keywords (i.e temp, humidity, UV) and create a reply message payload based on what data has been asked for.
Ask your device for the “temp” and it will send you back the last known temperature reading in Celsius.
We are able to map this process pretty easily using the low-code flow in Node-Red:
This code is all available in my GitHub repo for you to use, just replace your own credientials!
A similar flow could be used to get on-demand readings from any other critical system you want to check in on, like the water level of a drinking trough on your remote farm, or the location of your package travelling across Australia! Pretty handy to be able to poll for that data, rather than wait for an automatical alert (we'll get to those in part 3!)
To see more detail or try this out yourself, check out my GitHub for the source code and detailed instructions.
GitHub Repo + ReadMe: https://github.com/MichelleHowie/IoTSensorData_OnDemand
This tutorial was originally presented in a workshop at Call For Code with DeveloperSteve Coochin, June 2020: https://video.ibm.com/channel/23832688/video/cfc2020-telstradev-iotworkshop
To see how SMS alerts can be triggered by sensor input from your IoT device in emergencies, head to part 3 of this series.