OK, HomeAssistant runs on RaspberryPi, but the RPi only has digital in/out, but what if I want to read analog values from sensors? One solution appears to be to use an Arduino, since this is the sort of thing they do well. However, finding details of how to do this seems a bit sketchy. I could use I2C, but that seems a bit tricky. I did read that I can use USB, which is convenient because that will also give me power for the Arduino. To use an Arduino as an add-on board for the RPi, I had read about something called Firmata, which loads as a sketch running on the Arduino. This is easy at the Arduino end, as it is just one of the examples pre-installed, upload and it’s ready to go.
I set up the configuration in HomeAssistant and immediately got a whole heap of errors, mostly referring to needing PyMata 2.14. Now PyMata is a client library that allows Python to control the Arduino. Obviously not part of the standard RPi/Hassbian image. After a bit of messing around here’s what I managed to do:
Plug the Arduino into your computer, load up the IDE and upload the StandardFirmata sketch (found in the Examples submenu)
Plug the Arduino into a USB port on the RPi. Log into the RPi using SSH
At the command line, run:
sudo pip3 install pymata
If you download the examples from the GitHub repository, you should be able to call the blink sketch to verify that all is working. It should flash the LED 10 times, and you should see the process running in your terminal session counting down. (Note that my UNO clone is connected at ‘/dev/ttyACM0’, so the script works as is.
Add the following entries to your configuration.yaml script and save it:
The LED should show up as another switch in your dashboard, and turning it on should light the pin 13 LED on the Arduino
Note that it appears you can only read analog input pins, and switch digital output pins through this interface. No PWM, and I suppose if you need to read digital inputs then you can do that directly on the RPi.
Thought it was time to step up the home automation effort, so a mention of HomeAssistant on a blog had me interested. So now the RaspberryPi is running some new software and I’ve been tinkering with this seeing what it can do. There’s not too many things in the house that are ‘smart’, but I can turn the TV off and control a WeMo switch. Much of the built-in functionality is impressive, so triggers for sunset or time let one test how it works. Integration with my phone also lets it track location and use geofencing for triggers also.
I’d be interested to see what can be done once I can integrate with other systems in the house, such as the alarm system, thermostat or pool controllers. Being open-source and open, there’s plenty of scope to ‘roll-your-own’ to meet individual needs.
Here’s a useful article on using the Hass.io version of HomeAssistant. Worth a look.
It’s interesting how things have come full circle. As a teenager, I used to buy Australian-published electronics magazines each month, and tinkered with making some projects. At that time, we had Electronics Today International, or ETI, and Electronics Australia. Early in the 90s ETI disappeared, and EA hung around a while longer. At some time some of the former EA staff set up a new magazine, Silicon Chip, which I have looked at from time to time.
Suddenly people are making things with electronics again, but the focus has shifted from analog circuitry to computer technology, and now that we have affordable programmable devices the hobby market is born again.I was quite excited to discover a new magazine launching in Australia, called Diyode. First new electronics magazine in the country for almost 30 years. I’ve subscribed, in print as well as digital, and the first issue arrived yesterday, a few days ahead of the newsstand launch. Good thing it’s school holidays and I’ll have some time to read it. Looks good, like some of the better UK magazines with full colour page spreads and some good practical articles.
My son entered Science Talent Search with this Arduino-powered buggy. We used IR with a TV remote to issue codes for motor control and combinations of colours for the RGB LEDs.
Programming was fairly simple, but we found issues with power. It seems that motors are very noisy and when they run it can reset the Arduino. We solved this by running the motor off 4 x AA batteries, whilst the Arduino is powered by a phone battery booster. The Arduino in question is actually a Freetronics Leostick, which is a nice small board, and has a USB plug which we just plugged straight into the phone battery.
I bought a NodeMCU module a while back, but couldn’t figure out how to use it at the time. I also played with one of the ESP8266 modules using a FTDI adaptor to also convert to 3V3, but it seemed rather flaky. In the end, I found I could simply hook up the NodeMCU to a USB port and use the Arduino IDE. To save a whole lot of messing around, I also set up Blynk, which works briliantly with this type of device. One slight complication is that the NodeMCU tries to map pins to equivalent Arduino pinouts, whilst Blynk is still aware of the GPIO pinouts. Finding a pinout diagram here helped make sense of it.
It also seems that the USB ports on my MacBook Pro aren’t reliable with this device, whether it isn’t so happy with USB 3.0 ports or whether it’s not supplying enough current I can’t tell. When it shows up it is easy to flash it with the Arduino sketch. Plugging the board into a phone charger it works 100%. I’m also testing out an el cheapo phone battery booster from K-Mart as a portable power source for projects, and at only $5 this is great value, so I plan to pick up a few more.
Suddenly I see a whole lot of benefits of using these inexpensive NodeMCU boards in place of Arduinos for lightweight projects, considering that you get Wi-Fi built in.
So it’s been busy, and school is just about to go back. I did find time to try out my Christmas present so I opened up the kit, plugged in the SD card and WiPi adaptor, hooked up peripherals that normally are hooked up to the Mac Mini, plugged in the power and we’re up and running. A few clicks and we’ve joined the network and posting a new item on this blog!
So this project had been sitting on my desk for ages now with the sensors and RF module spread across two breadboards with a mess of wire connecting it all up. Today I finally found some time to add the RF module to a prototyping shield. The other sensors are still on a breadboard and that’s the extra wires hanging off it, but it’s one step closer to a finished project. Some of the soldering was a bit fiddly but worked straight off.
Last week just as we were getting used to sunshine again the weather reminded us it’s still winter. Sitting in a meeting Thursday afternoon hearing the wind and rain crashing around the building I pulled up the weather feed and you can see when it really hit.
This shot is from about 4:25pm. Temperature dropped about 10 °C in an hour. You can see the humidity shot up too with the rain.
This morning we woke up to a coating of frost on everything, and the weather station told me that despite the bright sunny morning it was -0.4 °C outside. Guess there’s still more days to go skiing this season!