Introduction (Latest update October 08, 2017)
I should have just entitled this “Raspberry Pi” as it keeps expanding (now covering the rest of the Pi boards – but keep reading).. as you will see, the title is a little restrictive given what we’ve done over the last few days. Friend Antonio over Italy and I (still stuck here in the frozen wastes of the Northeast of England) have been working quietly in the background on making the script compatible with the new Raspberry Pi Zero WiFi (RPiZW) having already managed to get it working on a range of boards and operating systems including RPi2, RPi3, Debian, Xenial, various Orange Pi boards, various FriendlyArm boards, the Odroid C2 and more.
At under a tenner, no-one can claim this tiny WIFI enabled RPiWZ is going to break any records. It is slow. very slow compared to a Raspberry Pi 2 or perhaps an Orange Pi Zero... and at first attempt I nearly gave up after waiting a whole day for my script to run (and fail) - something that can take maybe an hour on more powerful single board computers such as the RPi3 or the Odroid C2 etc.
However, having failed to get the script to run on the official Raspbian distribution for this board, for a variety of reasons, we next tackled DIETPI. Here, this slimmed down operating system comes into it's own and the PI Zero WiFi runs a lot more swiftly than it does with stock Raspbian. Still, by lunchtime yesterday I'd stopped the script due to various errors. By late last night however, with a little manual injection I had everything running on this tiny board - Apache, PHP, Node-Red with all my usual Nodes, MQTT, Sqlite, PhpLiteAdmin, Ha-Bridge, MC and much more, all with no manual intervention (just as well, given the time it takes).
This weekend while I was out shopping for a new milk-frother, our friend Antonio over in Italy was busy working on some last minute amendments to the script which, you'll recall now runs on a range of devices and systems including Xenial and Debian. We’ve now completed the updates to the script, including the ability to run on the RPiZW. The sheer size of the RPiZW (or rather lack of it, being exceedingly thin) means you could fit this board, able to control a house, on the back of an LCD display and have the whole thing mounted in a reasonably slim wall-mounting box. The Orange Pi Zero on the other hand has that large Ethernet connector which means a slim case is out of the question.
There is of course competition for this board, the Nanopi Neo Air is actually smaller (different format of course, being square) - and no doubt a lot faster - but like the RPiZW it has no Ethernet. One issue I've had with many boards is that of WIFI reliability. Up to now, the WIFI on the RPiZW is rock-solid - just as well, as it doesn't have hardwired Ethernet capability (well, not without some soldering or a compact-size-defeating USB dongle). The NanoPi on the other hand works well and is way better technically but I'm not 100% happy about the WIFI on the latter. All of this could change of course with future software updates.
Raspberry Pi Zero WiFi: Here’s what I did (total time 4 hours - VERY little of which I was actually doing anything – well, watching YouTube videos actually):
Something that has come out of this – is the importance of SD speed… I’ve always known this but NEVER has it been as obvious as it is here with this slower board. 4 hours – recall I mentioned an earlier attempt which failed but also took longer. Well, now I’m using a decent Samsung microSD.
Raspberry Pi Original: Which brings me to the Raspberry Pi – not the 2 or 3 but one of the originals. The script appears to be working perfectly now even on pre-Pi2 boards with full size SD card (Raspberry Pi © 2011.12). Sadly when I was using those I was not aware of the need for the best SD and THIS install took 7.25 hours – if you plan to try one of these – get a decent SD! Still – all working so an otherwise useless Pi is now up and running.
Raspberry Pi Zero: On a whim, I took a copy of the microSD I used on the RPiZW and dropped it into the lowly, cheap and cheerful Raspberry Pi Zero (the one with nothing) – I then took a USB adaptor and plugged it in, with one of those really cheap unbranded WiFi USB blocks at the other end. I plugged in power, waited, checked for new IP addresses and LO AND BEHOLD that was online too!
Raspberry Pi 2: I tested the modified script on the Pi2 and as well as being a darn sight faster to install than the units above – it does work well. I did however notice that the yellow Node-Red GPIO node does not work – possibly something missing in DietPi. However – there’s a great utility called GPIO which gives you full command line access and I’ve now added that as an option to the script. I’ve tried GPIO access including PWM and it all works a treat as Pi user.
git clone git://git.drogon.net/wiringPi
The above it what I added… then use GPIO – now, with the –g option, the pins correspond to the actual connector which is nice – so for a nice dim LED on GPIO13
gpio –g mode 13 pwm
gpio –g pwm 13 20
Not tried that on the Zero but I assume it will work as well. If anyone knows why that yellow GPIO node sits at “connecting” do let me know. Remember in all of this we’re using the DIETPI image – NOT original Raspbian – which IMHO is a little heavy handed if you don’t want a graphical interface.
Things are looking up.
And now for something completely different: Meanwhile I thought you might like to see this Raspberry Pi battery backup (not for good reasons) - I bought this a couple of weeks ago and it turned up today. 4 brass spacers and it fits onto my Raspberry Pi 3 a treat.
But – pull the power out – and the Pi reboots – who on EARTH dreamed this up!!! They claim 9 hours of backup but no good if power loss causes a reset… worse - I bought it from Europe at £9.49 and I COULD have bought it from where they probably got it from in the first place at £8.73 and no postage. Oh well. I’m assuming I got a bad one – surely they could not have designed it this way. Anyway, it has a 3800maH battery and it all fits perfectly on the back of a Pi. On the FRONT of my Pi I have an LCD display and the whole thing was intended to form the backbone of my updated home control in Spain when we go back there in April. A clue to the problem may be that there is a small yellow power indicator on the Pi, suggesting the pack might just be putting out insufficient voltage for the Pi + LCD. So – I tried it with a Raspberry Pi 2 on it’s own – same result. Just thought you’d like to know in case you were thinking of buying one of these. THIS looks GOOD (Thanks Antonio) – any experience of this?? I have some goodies from another company coming in the next couple of weeks which look promising as uninterruptable supplies– more on this soon.
Thanks to readers in here I’m having a play with HA-Bridge to act as a device gateway between my home control (generally ESP8266) devices and Amazon Echo.
I’m only scratching the surface and haven’t gotten past “Alexa, turn X on”, “Alexa turn X off” and “Alexa set X to 30%” but it’s a start and hopefully someone in here will fill in the blanks.
So, assuming you have an Amazon DOT or Echo (at £49 the DOT is the best toy I’ve bought for ages – just bought another one for the house – as this one is hiding in my office)…
The BEST way to control gadgets by voice up to now IMHO is using our own Node-Red software and an HTTPS certificate – but then – it’s not trivial as has been discussed elsewhere (unless you’ve done it before) to get the HTTPS and Amazon talking to each other.
So I played with simpler solutions (I like to try everything) but just recently decided to have a go at HA-Bridge – now – this IS EASY if you don’t go to the wrong repository etc…
First things first – Aidan was playing with this and he could not get anywhere as he had an old version of JAVA on his Raspberry Pi – he solved THAT problem as such. I found that I had to use root access for ALL of the code below.
[pcsh lang="bash" tab_size="4" message="" hl_lines="" provider="manual"]
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/webupd8team-java.list echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee -a /etc/apt/sources.list.d/webupd8team-java.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 sudo apt-get update sudo apt-get install oracle-java8-installer
So that's Java up to version 8. On a NEO AIR I got an error message when running “java –version” until I rebooted.
Now to install HA-Bridge - easy - go to your PI directory on the Pi or similar - make a directory - called, say, "habridge" - and enter that directory. I grabbed the JAVA file directly in Windows and copied it across- giving it execute permissions - not sure if that was necessary but I'm just repeating what I did.
All I did was grab the JAVA file from here.
So the general idea is that this Java file will run - and give you a web page in which you can create and run "devices" that the Dot or the Echo will recognise. But it will want to use Port 80 by default (normal web page port) and I of course have a web server there... I tried running it - failed due to lack of permissions - so I ran it as ROOT - that failed due to the port being in use.
sudo java -jar -Dserver.port=82 ha-bridge-3.2.2.jar
I ran this - note the reference to port 82 - and lo - it works - ok - another matter getting it to run from power up but we’ll come to that.
Ok so THEN I discovered that my MQTT installation – Mosquitto did not include the client tools… so…
sudo apt-get install mosquitto mosquitto-clients -y
Off I went to a browser : 192.168.0.20:82
Ok, here's the bit that floored me - this might save you a little work. I used MANUAL ADD to add these devices - here's one of them... these will respond to on, off and a value - and send MQTT messages accordingly. That's it - all you then have to do is tell Alexa to search for new devices - and use them.
So what we have here is only marginally better than the simple node-red node - i.e. we now have % lighting control - who is going to show us how to develop this to do temperature and other stuff!
If you don't need user and password for your MQTT (-P and –u) - don't use them.
The only thing that appears fairly useless is the middle item - intensity control - which could be used for lighting or heating. So "turn office television to 25" works - you get the value 25. "turn office television up" or "down" shifts the value by around 25% - and that's GREAT for lighting but no use for heating - I would want an actual value to set the heating to that value - but up and down to shift the temperature by - maybe 1 degree.
You can in fact say “turn X up by one”.
SO - easy voice control - create lots of devices... this whole operation other than blogging it took merely a few minutes and thanks to readers who pointed me in this direction.
This software does not seem able to control responses – you get “OK” - how then would you ASK the thermometer to return it’s current value!?!?! Well, you can’t so there is still life in our HTTPS solution – but this is VERY easy to set up.
Having now followed the instructions here and here (see “writing a unit file in the latter link) made a “unit” startup file – I now have the whole thing running from power-up on the same Pi that runs Node-Red and Mosquitto.
Essentially here’s what I ran having created a UNIT file as per the first of those two links above.
sudo systemctl enable habridge.service
sudo systemctl start habridge.service
That’s it – program runs – survives power cycle.
Here’s another explanation of how to do this! http://xbmcnut.blogspot.co.uk/2016/10/installing-ha-bridge-on-your-raspberry.html
So much to learn, so little time.
The last couple of days has been interesting – we’ve been checking that the Raspberry Pi 2 script works properly – it turns out that it simply won’t work if you have any kind of root access to the Pi. I’d not realised by by giving myself SUDO access in winSCP – rather handy for editing files, I’d given myself the same access in the terminal – and hence all attempts at the script failed. Today after starting afresh with the November 2015 Jessie image from Raspberry Pi (NOT the Noobs setup) – and running as Pi user, the script (despite warnings) operates perfectly, installing Apache, Sqlite, Mosquitto with web sockets and Node-Red with a host of nodes including my own.
In other events, the ESP8266 code referred to elsewhere in the blog has taken a leap (not yet online – I’m off to Spain for a couple of weeks and I’ll get onto that on my return) and now handles (thanks to Richard Burton for his help) OTA. Still working on OTA from an external site. We’ve added OTA setup commands to the web interface.
Most importantly on the above we’ve found and modified a library to give a software second serial port able to run at 56k – hence enabling direct Nextion display interaction on an un-modified ESP-12 for example. I already have a display device with buttons controlling other ESPs on the network via MQTT commands – this could be so powerful and will allow for remote control display panels all over the place.
Right now I’m packing my bags as I’m off to work on a project for just under 2 weeks on the east coast of Spain near Barcelona – using ESP-12s and Raspberry Pis strangely enough so output on the blog will be somewhat reduced as I can’t take my toys with me. I’ve a new paper-white display and a fantastic new software-defined radio setup – but they’ll just have to wait for my return.
The Facebook page at www.facebook.com/esp8266wifi is seeing more Pi and review related material and I’ve decided it is time to move the non-ESP stuff off onto a page of it’s own – so please if you are a Facebook user, follow www.facebook.com/iotstuff