1-Wire home automation tutorial from linux.conf.au 2019, part 3

This is the third in a set of posts about the home automation tutorial from linux.conf.au 2019. You should probably read part 1 and part 2 before this post.

In the end Alistair decided that my home automation shield was defective, which is the cause of the errors from the past post. So I am instead running with the prototype shield that he handed me when I started helping with the tutorial preparation. That shield has some other bugs (misalignments of holes mainly), but is functional apart from that.

I have also decided that I’m not super excited by hassos, and just want to run the orangepi with the OWFS to MQTT gateway into my existing home assistant setup if possible, so I am going to focus on getting that bare component working for now.

To that end, the gateway can be found at https://github.com/InfernoEmbedded/OWFS-MQTT-Bridge, and is a perl script named ha-daemon.pl. I needed to install some dependancies, which in my case were for armbian:

$ apt-get install perl libanyevent-perl cpanminus libdist-zilla-perl libfile-slurp-perl libdatetime-format-strptime-perl
$ dzil listdeps | cpanm --sudo

Then I needed to write a configuration file and put it at ha.toml in the same directory as the daemon. Mine looks like this:

[general]
	timezone="Australia/Sydney"
	discovery_prefix="homeassistant"

[1wire]
	host="localhost"
	port=4304
	timeout=5 # seconds, will reconnect after this if no response
	sensor_period=30 # seconds
	switch_period=10 # seconds
	debug=true

[mqtt]
	host="192.168.1.6"
	port=1883

Now run the gateway like this:

$ perl ha-daemon.pl

I see messages on MQTT that a temperature sensor is being published to home assistant:

homeassistant/sensor/1067C6697351FF_temperature/config {
	"name": "10.67C6697351FF_temperature",
	"current_temperature_topic": "temperature/10.67C6697351FF/state",
	"unit_of_measurement": "°C"
}

However, I do not see temperature readings being published. Having added some debug code to OWFS-MQTT, this appears to be because no temperature is being returned from the read operation:

2019-05-27 17:28:14.833: lib/Daemon/OneWire.pm:73:Daemon::OneWire::readTemperatureDevices(): Reading temperature for device '10.67C6697351FF'
[...snip...]
2019-05-27 17:28:14.867: /usr/local/share/perl/5.24.1/AnyEvent/OWNet.pm:117:Daemon::OneWire::__ANON__(): Read data: $VAR1 = bless( {
                 'payload' => 0,
                 'size' => 0,
                 'version' => 0,
                 'offset' => 0,
                 'ret' => 4294967295,
                 'sg' => 270
               }, 'AnyEvent::OWNet::Response' );

I continue to debug.

1-Wire home automation tutorial from linux.conf.au 2019, part 2

For the actual on-the-day work, delegates were handed a link to these instructions in github. If you’re playing along at home, you should probably read 1-Wire home automation tutorial from linux.conf.au 2019, part 1 before attempting the work described here. Its especially important that you know the IP address of your board for example.

Relay tweaks

The instructions are pretty self explanatory, although I did get confused about where to connect the relay as I couldn’t find PC8 in my 40 pin header diagrams. That’s because the shields for the tutorial have a separate header which is a bit more convenient:

GPIO header

I was also a bit confused when the relay didn’t work initially, but that turns out because I’d misunderstood the wiring. The relay needs to be powered from the 3.3v pin on the 40 pin header, as there is a PCB error which puts 5v on the pins labelled as 3.3v on the GPIO header. I ended up with jumper wires which looked like this:

Cabling the relay

1-Wire issues

Following on the tutorial instructions worked well from then on until I tried to get 1-Wire setup. The owfs2mqtt bridge plugin was logging this:

2019-04-08 19:23:55.075: /opt/OWFS-MQTT-Bridge/lib/Daemon/OneWire.pm:148:Daemon::logError(): Connection to owserver failed: Can't connect owserver: Address not available

Debugging that involved connecting to the owfs2mqtt docker container (hint: ssh to the Orange Pi, do a docker ps, and then run bash inside the docker container for the addon). Running owserver with debug produces this:

owserver fails

Sorry to post that as an image, cut and paste for the hassos ssh server doesn’t like me for some reason. I suspect I have a defective DS2482, but I’ll have to wait and see what Allistair says.

1-Wire home automation tutorial from linux.conf.au 2019, part 1

I didn’t get much of a chance to work through the home automation tutorial at linux.conf.au 2019 because I ended up helping others in the room get their Orange Pi is booting. Now that things have settled down after the conference, I’ve had a chance to actually do some of the tutorial myself. These are my notes so I can remember what I did later…

Pre-tutorial setup

You need to do the pre-tutorial setup first. I use Ubuntu, which means its important that I use 18.10 or greater so that st-link is packaged. Apart from that the instructions as written just worked.

You also need to download the image for the SD card, which was provided on the day at the conference. The URL for that is from github. Download that image, decompress it, and then flash it to an SD card using something like Balena Etcher. The tutorial used 32gb SD cards, but the image will fit on something smaller than that.

hassos also doesn’t put anything on the Orange Pi HDMI port when it boots, so your machine is going to look like it didn’t boot. That’s expected. For the tutorial we provided a mapping from board number (mac address effectively) to IP address allocated in the tutorial. At home if you’re using an Orange Pi that isn’t from the conference you’re going to have to find another way to determine the IP address of your Orange Pi.

The way we determined MAC addresses and so forth for the boards used at the conference was to boot an Armbian image and then run a simple python script which performed some simple checks of each board by logging into the board over serial. The MAC addresses for the boards handed out on the day are on github.

An Aside: Serial on the Orange Pi Prime

As an aside, the serial on the Orange Pi Prime is really handy, especially with the hassos image. Serial is exposed by a three pin header on the board, which is sort of labelled:

Orange Pi Prime Serial Port
The Orange Pi Prime Serial Port

Noting that you’ll need to bend the pins of the serial header a little if you’re using the shield from the conference:

Serial port connected to a USB to serial converter

The advantage being that suddenly you get useful debugging information! The serial connection is 115200 baud 8N1 (8 data bits, no parity, 1 stop bit) by the way.

Serial debug information from an hassos boot

The hassos image used for the conference allows login as root with no password over serial, which dumps you into a hass interface. Type “login” to get a bash prompt, even though its not in the list of commands available. At this point you can use the “ip address” command to work out what address DHCP handed the board.

The actual on-the-day work

So at this point we’re about as ready as people were meant to be when they walked into the room for the tutorial. I’ll write more notes when I complete the actual tutorial.

The linux.conf.au 2016 Call For Proposals is open!

The OpenStack community has been well represented at linux.conf.au over the last few years, which I think is reflective of both the growing level of interest in OpenStack in the general Linux community, as well as the fact that OpenStack is one of the largest Python projects around these days. linux.conf.au is one of the region’s biggest Open Source conferences, and has a solid reputation for deep technical content.

Its time to make it all happen again, with the linux.conf.au 2016 Call For Proposals opening today! I’m especially keen to encourage talk proposals which are somehow more than introductions to various components of OpenStack. Its time to talk detail about how people’s networking deployments work, what container solutions we’re using, and how we’re deploying OpenStack in the real world to do seriously cool stuff.

The conference is in the first week of February in Geelong, Australia. I’d be happy to chat with anyone who has questions about the CFP process.

OpenStack at linux.conf.au 2013

As some of you might know, I’m the Director for linux.conf.au 2013. I’ve tried really hard to not use my powers for evil and make the entire conference about OpenStack — in fact I haven’t pulled rank and demanded that specific content be included at all. However, the level of interest in OpenStack has grown so much since LCA 2012 that there is now a significant amount of OpenStack content in the conference without me having to do any of that.

I thought I’d take a second to highlight some of the OpenStack content that I think is particularly interesting — these are the talks I’ll be going to if I have the time (which remains to be seen):

Monday

  • Cloud Infrastructure, Distributed Storage and High Availability Miniconf: while not specifically about OpenStack, this miniconf is going to be a good warm up for all things IaaS at the conference. Here’s a list of the talks for that miniconf:<ul
  • Delivering IaaS with Apache CloudStack – Joe Brockmeier
  • oVirt – Dan Macpherson
  • Aeolus – Dan Macpherson
  • Ops: From bare metal to cloud space – Phil Ingram
  • VMs on VLANs on Bridges on Bonds on many NICs – Kim Hawtin
  • OpenStack Swift Overview – John Dickinson
  • JORN and the rise and fall of clustering – Jamie Birse
  • MongoDB Replication & Replica Sets – Stephen Steneker
  • MariaDB Galera Cluster – Grant Allen
  • The Grand Distributed Storage Debate: GlusterFS and Ceph going head to head – Florian Haas, Sage Weil, Jeff Darcy

Tuesday

  • The OpenStack Miniconf: this is a mostly-clear winner for Tuesday. Tristan Goode has been doing a fantastic job of organizing this miniconf, which might not be obvious to people who haven’t been talking to him a couple of times a week about its progress like me. I think people will be impressed with the program, which includes:
    • Welcome and Introduction – Tristan Goode
    • Introduction to OpenStack – Joshua McKenty
    • Demonstration – Sina Sadeghi
    • NeCTAR Research Cloud: OpenStack in Production – Tom Fifeld
    • Bare metal provisioning with OpenStack – Devananda van der Veen
    • Intro to Swift for New Contributors – John Dickinson
    • All-around OpenStack storage with Ceph – Florian Haas
    • Writing API extensions for Nova – Christopher Yeoh
    • The OpenStack Metering Project – Angus Salkeld
    • Lightweight PaaS on the NCI OpenStack Cloud – Kevin Pulo
    • Enabling Compute Clusters atop OpenStack – Enis Afgan
    • Shared Panel with Open Government
  • The Open Government Miniconf: this is the other OpenStack relevant miniconf on Tuesday. This might seem like a bit of a stretch, but as best as I can tell there is massive interest in government at the moment in deploying cloud infrastructure, and now is the time to be convincing the decision makers that open clouds based on open source are the right way to go. OpenStack has a lot to offer in the private cloud space, and we need to as a community make sure that people are aware of the various options that are out there. This is why there is a shared panel at the end of the day with the OpenStack miniconf.

Wednesday

    • There aren’t any OpenStack talks on Wednesday, but I am really hoping that someone will propose an OpenStack BoF via the wiki. I’d sure go to a BoF.

Thursday

  • Playing with OpenStack Swift by John Dickinson
  • Ceph: Managing A Distributed Storage System At Scale by Sage Weil

Friday

  • Openstack on Openstack – a single management API for all your servers by Robert Collins
  • Heat: Orchestrating multiple cloud applications on OpenStack using templates by Angus Salkeld and Steve Baker
  • How OpenStack Improves Code Quality with Project Gating and Zuul by James Blair
  • Ceph: object storage, block storage, file system, replication, massive scalability, and then some! by Tim Serong and Florian Haas

So, if you’re interested in OpenStack and haven’t considered linux.conf.au 2013 as a conference you might be interested in, now would be a good time to reconsider before we sell out!

A historical note from November 2020: the linux.conf.au 2013 website has now been offline for quite some time, and broken links have therefore been removed from this post.

MySQL Users Conference

Well, they’re definitely thinking about getting started. Like last year I caught the VTA down — it’s hard to beat a $1.75 trip without having to worry about traffic. Registraton wasn’t as smooth this year as last, for example I didn’t get my free book (there didn’t seem to be any attempt to hand those out to speakers). Whatever.

I’m now waiting for the replication talk to start.