I hope you enjoyed the Microsoft Developer Cloud Summit today! Thank you very much for attending my session: Automating your home or office with IoT Central and Power Apps” It was a lot of information in 30 min, so here’s the content, resources and source code.
This whole session was done using Home Automation devices combined with OBS. Camera Scene changes were controlled with a standard home remote control. So automation doesn’t have to be traditional garage doors or lighting, you can control you PC life too! π Controlling your OBS Scenes with a Home Automation device
I came across this Smart Watering Kit by Elecrow. It was really great, but one thing missing is internet conectivity. We all know that we can’t grow plants without the “I” in IoT! So let’s see what we can do about that!
Electrow Ardunio Smart Plant Watering KitInside the box
The kit comes with everything you need to water four different plants automatically.
The box contains
Arduino Leonardo
Power Supply
Pump
4 Capacitive Moisture Sensors
4 Way valves
Pipes
The kit is very comprensive and includes and LCD display which can show at a glance the conditions of your plants.
The boardSerial Port
The board unfortunately does not have built in wifi connectivity. But what it does have is a serial port. That’s perfect, so what we could do is use that to send telemetry out to another device that is internet / wifi enabled.
A good device for that is a good old (and cheap) 8266 board. I had a NodeMCU in my box of tricks, so I decided to use that.
Parts List
Arduino Smart Watering Board (Arduino Leonardo)
NodeMCU board
2.2 K ohm resistor
1 K ohm Resistor
470 ohm Resistor
Breadboard
Wires
Power Supply
Connecting an Arduino Leonardo to a Node MCU via Serial Port
First step is to make it work on a breadboard.
Parts List
Arduino Smart Watering Board (Arduino Leonardo)
NodeMCU board
2.2 K ohm resistor
1 K ohm Resistor
470 ohm Resistor
Veroboard
Wires
Power Supply
Connecting an Arduino Leonardo to a Node MCU via Serial Port
Once working, the next step is to build that onto a more permanent solution. I decided to use just veroboard as it was quick and easy.
Two boards up and running
IoT Central
Device Templates
Device Capabilities
Create device capabilities for the moisture sensors as telemetry (Moisture1, Moisture2, Moisture3, Moisture4). [Device Definition json file is in the github repository along with the source code]
Create properties for the 4 relay states for each of the 4 valves. [Device Definition json file is in the github repository along with the source code]
Create a property for the pump state. [Device Definition json file is in the github repository along with the source code]
Publish the template and create an instance of the template as a device.
Instance of a device template
Note the “connection” information for the new device instance.
Device “Connection” information
Take note of the following:
Scope ID
Device ID
Primary Key
iotcserialrelay.ino
Update the iotcserialrelay.ino file with the:
WIFI_SSID – The wifi hotspot ssid
WIFI_PASSWORD – The wifi hotspot password
SCOPE_ID – The Device Instance’s Scope Id
DEVICE_ID – The Device Instance’s Device Id
DEVICE_KEY 0 The Device Instance’s Key
Deploy iotcserialrelay.ino to NodeMCU.
Deploy watering_kit.ino to the Arduio Smart Watering Board.
Telemetry in IoT Central
Once deployed and connection is made, telemetry starts appearing within IoT Central’s dashboard.
Finished Product with happy plants powered by Microsoft Azure ππ
You can easily set up a standard 433 Mhz remote control that you use every day in your home to control scenes in OBS (Open Broadcast Software) if you don’t own a fancy Stream Deck.
All you need is a remote, a 433 Mhz Wifi Bridge and some Node-RED magic.
Node-RED Switch using button codes to control flow
The 433 Mhz Bridge when it detects a signal, it publishes a message with it’s contents via MQTT. These will have codes attached to them and in the case of a remote, that code / data that is sent via the message payload translates to the button pressed. You can “train” your solution with the remotes you have. These can be standard house-hold remotes.
Scene flows per button press
The switch statements routes the flow based on the button data to a specific function.
Scene switch command to OBS Socket Server
The function sends a message with the “scene-name” with the parameter of the scene created in OBS.
Scenes in OBS
For additional commands refer to the protocol document:
Sonoff RF Bridges are great to take every day houshold remotes, alarm systems, passive IR seasons etc , and pass the codes they transmit via MQTT messages.
These bridges can also be flashed with the Tasmota open-source firmware used for Home Automation.
Sonoff 433 Mhz BridgeSerial Port on the 433 Mhz BridgeFlashing with a Raspberry Pi