In this blog, we look at how to use SMS commands from the Telstra Messaging API to control your IoT device remotely.
Three elements that make up the IoT ecosystem
Developing with the Internet of Things is fun. It’s challenging. It’s frustrating at times. But it’s also an opportunity to change the world with code. And you don’t need five years R&D experience or an engineering degree to do it. In this blog, I’ll go through some quick weekend hackathon projects you can put together to bring your IoT idea to life.
Consider that the Internet of Things is made up of 3 key elements:
The importance of network connectivity
Network connectivity is a critical element of the IoT ecosystem, enabling you to send sensor data reliably and efficiently between devices and applications. Then there’s the messaging alerts for real-time emergency notifications and communication that the network can also provide.
Here’s a couple of projects that harness TelstraDev’s network capabilities for IoT prototypes that address some key local and global issues. If you want to see more detail on each one, check out the GitHub repos.
How to control your IoT device with SMS and the Telstra Messaging API
Some IoT devices can actuate (i.e action on received data) based on specific inputs. For example, streetlights that turn on depending on the time of day, or when someone walks past and triggers a people counter.
In this quick prototype, I set up an Arduino MKR NB 1500 with Telstra LTE-M connectivity, so that when I send “ON” in a text message to my virtual mobile number, it turns the LED on the Arduino board on. Sending “OFF” in an SMS turns it off.
The fun part, was that I also had the virtual mobile number that controlled my mate Steve’s Arduino device, so we could send messages across Australia to control each other’s IoT device lights. Awesome potential here, but also very real security and control considerations.
We used Node-RED, a programming tool for wiring together hardware devices, APIs and online services. It was quick and easy to set up the Watson IoT and Messaging API nodes, and you can copy the whole flow directly from our GitHub repo. Just add in your own user credentials.
In Node-RED, we set up a http endpoint (we call that a NotifyURL) that any SMS can come to. Using Telstra Messaging API, we then created a virtual mobile number (called a Subscription in Messaging V2) that can receive SMS. Now the Node-RED http endpoint can show any inbound messages to the your new Virtual Number.
Any SMS command from your Telstra Mobile (connected to 4G or 5G) to that Virtual Number, where a function in Node-RED validates the message payload input and decides if it should trigger 1 of 3 possible device events:
- light ON if it sees "ON"
- light OFF if it sees "OFF"
- or do nothing if you send anything else
The message to change the state of the LED is published to your IoT broker, where the Arduino is listening. The sketch running on your Arduino knows what to do when it sees ON or OFF, and voila!
For more details, see the GitHub ReadMe or recorded tutorial of this prototype, which includes an introduction to IoT brokers and the open source low-code software we used to put this together in just a few hours.
GitHub Repo + ReadMe: https://github.com/MichelleHowie/TelstraDevArduinoNodeRedBlink
Telstra Messaging API Free Trial
Check out part 2 of this series to learn how to request Environmental Sensor Data via SMS from your remote IoT device.