{
  "$type": "site.standard.document",
  "canonicalUrl": "https://bisse.nl/blog/posts/2021/12-14-project10",
  "path": "/posts/2021/12-14-project10",
  "publishedAt": "2021-12-14T11:00:00.000Z",
  "site": "at://did:plc:t4bzqfd4wo3ukq62opjuvy2u/site.standard.publication/3mpeliratc624",
  "tags": [
    "raspberry pi"
  ],
  "textContent": "Repost van Tumblr. Sources op github.\n\nAls je met je zelfgebouwde IoT-dingetjes in huis gegevens wilt\nverzamelen, dan moet je die gegevens ergens opslaan. Daar zijn\nverschillende mogelijkheden voor.\n\nJe kunt een internet-dienst gebruiken. Ik hou daar niet van. Je bent\nafhankelijk, en je geeft je data uit handen.\n\n\n\nJe kunt een service opzetten op je PC. Maar dan moet die PC wel 24 uur\nper dag aan staan. Dat wil je niet met zo'n energieslurper.\n\nWat overblijft is een mini-computer of een single board computer, een\napparaat dat heel weinig energie verbruikt.\n\nIk wilde een Rasberry Pi 4B gebruiken. Die is al een flinke tijd voor\nme in bestelling. Nog steeds niet gearriveerd. Nergens leverbaar. De\nvraag is veel groter dan het aanbod. Gelukkig wist ik m'n hand te\nleggen op een Raspberry Pi Zero 2.\n\nEen Raspberry met Ubuntu Server 64bits, en daar dan Mosquitto op\ndraaien (een broker voor MQTT), InfluxDB (een time series database),\nTelegram (om gegevens vanuit Mosquitto in InfluxDB te krijgen), en\nGrafana (voor de weergave van data uit InfluxDB in grafieken die beter\nzijn dan de grafieken die InfluxDB zelf kan produceren).\n\nDit alles bleek niet mogelijk. Op een Pi 4B had het gekund, met 4 of 8\nGb geheugen, maar de Zero 2 heeft maar een half Gb. InfluxDB en co vreten\ngeheugen. Deze set-up zal moeten wachten tot (als) m'n Pi 4B\narriveert.\n\nIk heb nu een minimale set-up. Een server met Moquitto, en een klein\nprogrammaatje dat de gegevens die binnenkomen via Mosquitto opslaat in\ntekstbestanden. Als m'n PC aan staat, dan worden de gegevens\nregelmatig van de Pi naar de PC verplaatst, en daar ingevoerd in\nInfluxDB. Grafana draait ook op m'n PC zodat ik daar de grafieken kan\nbekijken, maar ook op m'n tablet, mits de PC aanstaat. Er zit wel een\nvertraging van 12 tot 22 minuten in tot de gegevens op deze manier\nbeschikbaar zijn.\n \n\n \nActuele gegevens (de meest actuele waardes) zijn wel direct te zien op m'n PC\n(met mosquitto_sub) en op m'n tablet\n(met MQTT Dash,\nook als de PC uit staat).\n\nMQTT\n\nMQTT is een prachtige techniek, een zeer eenvoudige standaard die\nbreed wordt ondersteund, waarmee je makkelijk data-bronnen en\ndata-gebruikers aan elkaar kunt koppelen. Alles gaat via een centraal\npunt, de broker, die bij mij op de Pi draait (Mosquitto). Bronnen sturen data\ndaarheen zonder zich verder hoeven te bekommeren om waar de data\nuiteindelijk heen moet om gebruikt te worden. M'n Nano IoT uit\nproject 08 stuurt de gegevens van de weersensor\ndaarheen. M'n PC en m'n tablet\nsturen allebei gegevens over wanneer het scherm aan is, zodat ik\ninzicht krijg ik m'n schermgebruik (dat blijkt meer dan verstandig).\nEn de Pi stuurt meetgegevens over zichzelf naar zichzelf, over\ngeheugengebruik, temperatuur van de processor, etc.\n\nRapsberry Pi Zero 2: Set-up\n\nAlgemene instructies: How to install Ubuntu Server on your Raspberry Pi\n\nAls besturingssysteem op de Pi Zero 2 gebruik ik Ubuntu Server. Ik\ngebruik de 64-bits versie zodat ik ook Go-programma's kan draaien, die\nje trouwens gewoon op je PC kunt compileren, dankzij de\ncross-compileermogelijkheid van Go.\n(InfluxDB draait ook alleen onder 64 bits.) De Pi Zero 2 wordt (nog?)\nniet officieel ondersteund door Ubuntu, maar met een simpele\ntruc kun je het er wel op installeren.\n\nOnderstaande instructies heb ik van https://waldorf.waveform.org.uk/2021/the-pi-zero-2.html\n\n  Flash a fresh Ubuntu Impish image to your choice of storage media\n   (SD card, SSD, etc). Probably the easiest means of doing this is\n   the Raspberry Pi Imaging utility (you’ll find Ubuntu under “Other\n   general purpose OS”).\n  Once complete, safely remove the medium and re-insert. The boot\n   partition (and potentially the root partition if you’re on Linux)\n   will auto-mount.\n  Open the boot partition in your file-browser and find the\n   bcm2710-rpi-3-b.dtb file. Make a copy of this file and rename it to\n   bcm2710-rpi-zero-2.dtb. The trick here is simply that the Zero 2’s\n   hardware is close enough to the 3B (minus the ethernet port, some\n   RAM, and the DSI port) that the 3B’s device-tree works.\n  You’re done! You can now boot the card on your new Zero 2. Once\n   you’ve done that, go through the usual sudo apt update, sudo apt\n   upgrade dance to get the “proper” device-tree installed.\n\nDit werkte, bijna goed. Ik kreeg een foutmelding bij apt upgrade.\n\nEen oplossing voor dit probleem vond ik elders. In\n/etc/initramfs-tools/initramfs.conf moet je zstd vervangen door\nlz4. En dan:\n\nMosquitto\n\nMosquitto installeren is simpel:\n\nJe moet dan nog wel de configuratie aanpassen om Mosquitto bereikbaar\nte maken voor andere apparaten in je lokale netwerk. Maak het bestand\n/etc/mosquitto/conf.d/local.conf met deze inhoud:\n\nHerstarten:\n\nIk heb twee extra services aangemaakt (zie bronbestanden op github),\nmqtt-logger.service en mqtt-status.service. De eerste verzamelt\ndata die binnenkomt in Mosquitto en slaat die op in tekstbestanden. De tweede\nstuurt statusinformatie over de Pi naar Mosquitto.",
  "title": "Project 10 — Pi Zero 2 met MQTT-broker"
}