diff --git a/content/blog/using-esp8266-macaddress-as-mqtt-unique-id.rst b/content/blog/using-esp8266-macaddress-as-mqtt-unique-id.rst index 97d198b..5d83497 100644 --- a/content/blog/using-esp8266-macaddress-as-mqtt-unique-id.rst +++ b/content/blog/using-esp8266-macaddress-as-mqtt-unique-id.rst @@ -30,11 +30,11 @@ battery; i had to install the station near a mains socket, which is in a place i providing less accurate temperature readings. It also takes away a precious wall socket, of which i have only two outside. -I got a little stuck in an X-Y problem, and started looking for another solution, based on a -Prometheus Push Gateway. While browsing documentation and generally hanging around the Interwebz, -i stumbled upon the Home Assistant project (which is on my ToDo list for a looong time). Without -hesitating, i quickly backed up the SD card of my Raspberry Pi and installed Hassio on it. I -never looked back since. +I got a little stuck in an `X-Y problem `_, and started +looking for another solution, based on a Prometheus Push Gateway. While browsing documentation +and generally hanging around the Interwebz, i stumbled upon the Home Assistant project (which was +on my ToDo list for a looong time anyway). Without hesitating, i quickly backed up the SD card of +my Raspberry Pi and installed Hassio on it. I never looked back since. With Home Assistant installed and configured, i installed and configured the Mosquitto add-on and started tinkering with my ESP boards. @@ -62,7 +62,7 @@ they don’t do that if it’s raining, and since my smartphone rebooted for som delivery guy could not reach me and left; he will try to deliver the package again on Monday. All this happened because i don’t have a doorbell. -So while at it, i quicly installed a push button on our gate, led the wire to my office (a good 5 +So while at it, i quickly installed a push button on our gate, led the wire to my office (a good 5 meters or so), and did some more soldering: - Connect the GND pin of the ESP board to D4 through a 10kΩ resistor @@ -235,7 +235,7 @@ Now guess what the unique ID of the device will be. I’ll wait… Was your answer “the MAC address of the ESP board’s WiFi chip”? Yeah, mine too. Except it will be ``000000000000``. If you want to install one station in your house, that’s not a big deal. But i want one outside, one in my office, in the kitchen, the bedroom, bathroom, and so one. -Having the same unique ID makes it not-so-unique in this case. So I dag deeper in the code of ``HADevice``. +Having the same unique ID makes it not-so-unique in this case. So I dug deeper in the code of ``HADevice``. It has the following constructors: @@ -254,10 +254,9 @@ It has the following constructors: Meanwhile, the ``WiFi.macAddress(mac)`` line calls a function that *gets* the MAC address of the WiFi chip, and stores the bytes in the ``mac`` array. -So what happens? How does the unique ID become a string of zeroes? - -The example code calls the second constructor, effectively converting the ``mac`` array (full of -zeroes) to a character string full of zeroes. +So what happens? How does the unique ID become a string of zeroes? Well, the example code calls +the second constructor, effectively converting the ``mac`` array (full of zeroes) to a character +string full of zeroes. The solution ============ @@ -328,4 +327,6 @@ mangling. So let’s update our code a bit: mqtt.loop(); } -And now you have a unique(ish) ID (well, unless you start tinkering with MAC addresses on you network, but then you are on your own). +And now you have a unique(ish) ID (well, unless you start tinkering with MAC addresses on you +network, but then you are on your own). And if you want to update the unique ID while the +software is still running, you can do that, too. But i won’t help you with such perversions.