Zoekresultaten : mqtt

apr 152017
 

Now that Alex explained everyone how to use MQTT in combination with the LoPy, I thought it was time to show some more advanced uses of MQTT in case you still had no idea why you would bother learning to understand it.
The nice thing about MQTT (MQ Telemetry Transport or Message Queue Telemetry Transport) as a protocol, is that it is not tied to the LoPy or WiPy that Alex used in his example. You can use it in combination with many different devices, tools and applications. For example, in our house, I use a Mosquitto MQTT broker as the central backbone for the home automation. For those that can understand Dutch, see this blogpost I did in 2014, or the one about the lights in my Christmas tree.

MQTT is also supported by The Things Network (TTN) meaning that you can retrieve all the data that your nodes send to TTN using MQTT. This also means you can use MQTT as a way to create a local backup of the data that your nodes send this way.
You can also use it in combination with the KPN LoRaWAN network, but the setup is slightly different. So in this post I am going to focus on TTN, although like before I will be using both the Marvin board and the LoPy board (in combination with Puck.js although that is completely optional of course).

I will be using Node-RED installed on one of my Raspberry Pi devices and I will be using MySQL as the database backend. I will be posting about MySQL versus MongoDB versus InfluxDB one of these days, but on a Raspberry Pi for now this was the quickest and easiest solution.

Let’s dive in:

Lees verder….

Deel dit bericht:
dec 202015
 

php_MQTTDit is even een blogpost die 99% van de lezers niet zal zeggen, maar die ik voor mezelf hier maak zodat ik hem de volgende keer weer terug kan vinden, zonder het bijbehorende uitzoekwerk.

Wat wilde ik?
Ik heb op een Raspberry Pi een Mosquitto MQTT server draaien en op die server draait ook een Apache webserver met PHP5 ondersteuning. Nu wilde ik vanuit PHP data naar de Mosquitto server kunnen sturen en lezen. Dat kan, via deze uitbreiding. Maar daar moest ik een paar zaken voor doen. De commando’s zijn:

> sudo apt-get install php-pear
> sudo apt-get install php5-dev
> sudo apt-get install libmosquitto-dev
> sudo pecl install Mosquitto-alpha
> sudo nano /etc/php5/apache2/php.ini
voeg
extension=mosquitto.so
toe aan het bestand en sluit af
> sudo nano /etc/php5/cli/php.ini
voeg
extension=mosquitto.so
toe aan het bestand en sluit af
> sudo /etc/init.d/apache2 restart

Belangrijk is dat ik extension=mosquitto.so aan /etc/php5/cli/php.ini toe bleek te moeten voegen om het ook vanaf de commando prompt te kunnen gebruiken.

Deel dit bericht:
 Reacties uitgeschakeld voor Quick notes: MQTT ondersteuning in PHP op Raspberry Pi  Tags: , ,
jul 052014
 

Schema netwerk Vandaag weer wat (lees: eigenlijk teveel) tijd gehad om verder te werken aan mijn sensornetwerk op basis van MQTT. Ik had een vorige keer al beschreven dat ik op dit moment helaas alleen digitale vochtmeters voor in de grond huis heb (de analoge exemplaren zijn nog onderweg vanuit China). Maar ik had, naast de drie digitale vochtmeters voor in de grond, ook nog een gecombineerde temperatuur/luchtvochtigheid meter (een DHT11) en een lichtgevoelige weerstand beschikbaar, dus in totaal 6 meeteenheden.

Mosquitto
Op de Raspberry Pi had ik Mosquitto draaien, een open source MQTT “broker”, een plek waar de Arduino de gegevens naar toe kan sturen en waar anderen kunnen aangeven dat ze die info dan ook willen hebben. Het betrouwbaar aan de praat krijgen van de koppeling tussen de Arduino en de Raspberry Pi was niet gemakkelijk. Eigenlijk een bekend probleem: ik wilde het te mooi/ingewikkeld doen en was met JSON aan de slag gegaan om in plaats van via 6 MQTT calls, het geheel in één JSON via MQTT call te doen. Om een lang verhaal kort te maken: slecht idee.
Op een gegeven moment liep de Arduino bij het opstarten meteen vast en wel op een manier dat de seriële poort ook niet meer werkte en ik er dus geen gewijzigde scripts op kon zetten.
De oplossing bleek het goed getimed uploaden van het “blink” script waarbij ik de Arduino net op het juiste moment moest aansluiten zodat het uploaden plaats zou vinden voordat het bestaande script de Arduino weer zou doen vastlopen.
Lees verder….

Deel dit bericht:
jun 022014
 

MQTTTijdens het schrijven van de post over de robots gisteren, kwam ik een term tegen die ik nog niet kende, maar die wél al heel lang blijkt te bestaan: MQTT of: MQ Telemetry Transport, in 1999 bedacht door Dr Andy Stanford-Clark van IBM en Arlen Nipper van Arcom (tegenwoordig Eurotech).

Het is een lichtgewicht protocol voor berichten tussen apparaten. De werking is heel simpel: je hebt minimaal drie partijen (apparaten/programma’s) nodig: een sender, een ontvanger en daar tussenin een ‘broker’. Dit is een plek waar de zender de informatie aflevert en de ontvanger de informatie op haalt. En natuurlijk kan een broker meer dan één zender aan en kunnen meerdere ontvangers dezelfde informatie ophalen. En het kan ook zijn dat één ontvanger de informatie van meerdere ontvangers verzameld/combineert.

Daarbij hoeven zender en ontvanger niets van elkaar te weten. Het kunnen verschillende hardwareplatformen zijn en verschillende programmeertalen. Zo beschrijft dit voorbeeld de communicatie tussen een BeagleBone Black die Python gebruikt en een Raspberry Pi waar Java op draait. Beide apparaten hoeven niet van elkaars bestaan te weten, ze hoeven niet in hetzelfde netwerk te zitten, als de ene er even niet is, dan heeft de andere er niet direct last van. Zolang de broker maar in de lucht is.
Lees verder….

Deel dit bericht:
mrt 012020
 

Het kon al op specifieke apparaten zoals de Lopy of in custom builds of als je Circuit Python gebruikte op hardware die daar ondersteuning voor heeft. Maar op de ESP32 had je tot voor kort nog niet de mogelijkheid om BLE (Bluetooth Low Energy) te gebruiken binnen MicroPython als je gebruik maakte van een van de officiële firmware images. Met ingang van release 1.12 is dat eindelijk wél zo. Flashen van mijn ESP32 deed ik volgens de instructies die hier staan. Nieuw, wat mij betreft, was ook dat Thonny, de gratis open source IDE voor Python (en MicroPython) ook ondersteuning heeft voor het rechtstreeks werken op de ESP32.

Dat was tot voor kort nogal een gedoe. Anders dan bij de apparaten die Adafruit maakt, kon je de ESP32 niet als USB-drive zien na aansluiten op je laptop. Maar de Thonny “ziet” de ESP32 en je kunt dan bestanden openen die er op staan (ander dan bij Arduino vindt compilatie niet al vooraf plaats dus je kunt de programmacode ook achteraf nog lezen), nieuwe bestanden aanmaken én je hebt de REPL beschikbaar om interactief commando’s uit te voeren die dan op de ESP32 worden uitgevoerd.

Dat maakt het debuggen een stuk gemakkelijker. Mauro Riva  heeft op zijn blog niet alleen blogposts over het gebruik van MicroPython staan (zoals deze over het zelf compileren van de firmware met BLE support), maar ook een github repository. Daar kun je ook een aantal voorbeelden vinden.

Lees verder….

Deel dit bericht:
feb 242020
 

Ik weet het: echte ontwikkelaars maken voor hun versiebeheer geen gebruik van Onedrive. Dan moet het op zijn minst via Github. Prima, gebruik ik ook, af en toe. Als iets af is, om te delen.

Maar als ik gewoon wat aan het klooien ben,  als ik bv een TCRT5000 sensor op de watermeter in de meterkast geplakt heb om het ronddraaien van het tellerschijfje te registreren en dat dan weer via MQTT over Wifi vanaf een ESP8266 door te sturen naar een Mosquitto-server zodat ik die waarden in Home Assistant weer kan geven en in influxDB kan archiveren, dan ben ik meestal eerst even gewoon met code aan het stoeien.
Met een beetje mazzel (zoals deze keer) met Over The Air (OTA) updates zodat ik niet op een krukje op USB-kabel lengte afstand van de meterkast hoef te blijven zitten.

Tijdens zo’n traject kan het wel eens voorkomen dat ik denk “oei, nu heb ik een stuk code weggegooid of aangepast en dat had ik niet moeten doen”.

In dat geval kan het helpen om het .ino bestand op te slaan binnen een map die gesynchroniseerd wordt met Onedrive. Privé of zakelijk maakt niet uit. Ik gebruik in dit geval mijn privé Onedrive. Het mooie van Onedrive (en waarschijnlijk een aantal van de andere beschikbare diensten ook) is dat hij aan versiebeheer doet. Dus in dit geval, waarbij ik een stuk code had verwijderd dat ik toch nog wilde gebruiken, ging ik naar onedrive.com, zocht daar de map en het programma-code bestand op en selecteerde een oudere versie. Onedrive kan ze niet online weergeven zodat je even snel kunt knippen en plakken, het bestand wordt gedownload naar je computer. Ook goed. Als backup voor foutjes tijdens het klooien in de Arduino IDE in ieder geval iets wat mij al wat tijd bespaard heeft vandaag. 🙂

Deel dit bericht:
jul 252019
 

Terwijl iedereen het warm heeft in Nederland en ook vandaag weer een nieuw warmterecord bereikt is, dacht ik “laat ik eens een blogpost over hitte maken”, schijnt actueel te zijn.

Was het ook voor mij, zo bleek. Sinds maandag ligt er namelijk een Raspberry Pi 1B in een (open) kistje in de tuin, verbonden aan de antenne voor de NOAA satellieten (zie dit bericht).
En die plek in de tuin wordt (zo weet ik inmiddels) overdag tamelijk warm. Elders had ik gelezen dat ook telefoons, laptops etc. problemen konden krijgen als ze het te warm krijgen (de Raspberry Pi 4 wordt uit zichzelf al snel te warm en schakelt dan terug in snelheid), dus wilde ik weten hoe warm die Raspberry Pi het had.

Uiteraard bleek al iemand anders het antwoord op die vraag uitgewerkt te hebben, in deze blogpost van Lars kun je het script vinden dat hij gebruikt. Ik zou meteen even het tweede, uitgebreidere script gebruiken dan krijg je ook de processorbelasting, het percentage gebruik van de micro-SD kaart en het geheugengebruik. Lars legt uit hoe je die informatie via MQTT kunt doorsturen. Hij stuurt het door naar een externe MQTT-server van Adafruit, ik gebruik (uiteraard) mijn eigen MQTT-server die onderdeel is van de Home Assistant installatie die de rest van de apparaten aanstuurt.

Daar bleek al snel dat de Raspberry Pi in de tuin het vandaag wel heel erg warm kreeg.

Na deze screenshot steeg de temperatuur nog door naar 101,4 °C. Dat is veel meer dan de 85 °C die als maximum voorgeschreven wordt. Het zit nog ruim onder de 125 °C die in het bericht genoemd wordt, maar voor mij was het voldoende reden om de Raspberry Pi af te sluiten en voor de rest van de dag maar even binnen neer te zetten. Er kwam een geur van de case af een beetje leek op een hete soldeerbout, lijkt me niet goed.
Ik heb de cronjob voor het script op 1 keer updaten elke 10 minuten staan. Bij gebruik van Home Assistant kan ik dan eenvoudig een waarschuwing instellen voor als de temperatuur boven de 90 °C uit komt. Niet direct noodzakelijk voor deze testopstelling die na morgen toch weer afgebroken wordt, maar handig om te weten ook voor de andere systemen die in huis in gebruik zijn. Omdat het hier om de temperatuur in de processor zelf gaat, is een graad of 40 °C hier helemaal geen probleem.

Het script werkte niet “zomaar” op mijn Raspberry Pi. Python was uiteraard al geïnstalleerd, maar voor het verkrijgen van de info en het versturen van berichten via MQTT waren twee andere libraries nodig:

sudo pip install paho-mqtt
sudo pip install psutil

Nou, en dan voor de geschiedenisboeken toch nog even een aantal andere temperaturen om het huis: De airco staat UIT op de studeerkamer op zolder, AAN op de eerste verdieping (waar de slaapkamers liggen). De serre heeft een dak van dubbellaags kunststof dus dat is een broeikast, maar zoals je ziet doet de volle zon op het balkon aan de voorkant van het huis (op het zuiden) ook haar werk.

Tja, gewoon rustig aan doen dus.

Deel dit bericht:
jul 082019
 

Het leek heel gemakkelijk, was het ook voor wat betreft de eerste demo, maar stap 2 was een stuk complexer.

Ik had een aantal voorbeelden gezien van, wat mij betreft, enorm indrukwekkende demonstraties van de kracht van de ESP32 microprocessor. Je blijkt er een heel kleine camera op aan te kunnen sluiten (daar zijn de meeste mensen niet meer zo vreselijk van onder de indruk). Maar Espressif (de bedenkers van de chip) heeft nu ook een demo/test board gemaakt, genaamd de ESP-EYE, met niet alleen de camera voorgeïnstalleerd, maar ook spraak- en gezichtsherkenning alvast voorgeprogrammeerd. Je kunt dus meteen aan de slag!

Als je de video hierboven bekeken hebt voordat je verder las, dan weet je waarom dat indrukwekkend is: het is namelijk niet zo dat de ESP-EYE stiekumpjes gebruik maakt van een online webservice, dus bv Google of Amazon die al het werk uit handen neemt. Nee, de ESP-EYE werkt volledig zelfstandig. Dus geen data die over het internet naar de een of andere, meer of minder betrouwbare aanbieder gaat. Alles gebeurt 100% op het boardje zelf. Dat wilde ik zelf uitproberen, dus heb ik er eentje besteld bij AliExpress. Ik heb er overigens zelf €22,65 voor betaald, ik zie dat hij nu iets boven de 26 euro kost. Ik verdien niets aan de link of het verwijzen naar AliExpress, shop gerust dus even rond voor de beste deal. Hieronder zie je wat foto’s van de verpakking, de ESP-EYE met als referentie voor het formaat een 5 eurocent muntje ernaast. Het ding is klein!

De video hierboven van Luca Dentella was heel handig en behulpzaam, hij laat zien hoe de ESP-EYE zo uit het doosje werkt, dat lukte mij ook. Maar de instructies zorgden ook voor de nodige problemen toen ik hem letterlijk probeerde te volgen bij het aanpassen van de standaardcode.

Lees verder….

Deel dit bericht:
dec 232018
 

Ik had dit bericht eigenlijk al eerder deze week willen schrijven, maar niet alleen was het best een drukke week zo net voor de vakantie, ik was ook in afwachting van een reactie van een leverancier die ik wat informatie gevraagd had over een van zijn producten. Dat product, een draadloze schakelaar die op 433Mhz werkt, was namelijk de aanleiding van het geheel. Ik had die via Aliexpress besteld. De link in de vorige zin gaat naar wat zo mooi heet de “transaction screenshot”, het is de weergave van het product op het moment dat ik het bestelde (een tijdje geleden, op 23 november). Nou zijn de schakelaars zoals ik ze heb ontvangen niet precies hetzelfde zoals in de transaction screenshot. De leverancier nam na de bestelling, heel netjes, contact op. Het uiterlijk van de huidige batch van schakelaars was namelijk anders dan in de advertentie. Hij stuurde een paar foto’s mee van renders. Belangrijk ander verschil, een pluspunt wat mij betreft, was dat de schakelaar geen 12V batterij meer gebruikte maar een ‘gewone’ knoopcel batterij. Wat mij betreft geen enkel probleem, dus kreeg ik ze opgestuurd. Maar het lijkt er nu op alsof het een laatste batch is geweest, want bij deze leverancier kan ik ze niet meer vinden en navraag leert ook dat ze ze niet meer hebben.

Hoe dan ook, ze zien er zo uit (zie hiernaast). Er zit een klein schakelaartje in, vergelijkbaar met de schakelaartjes die vaak op een breadboard gebruikt worden en een led die oplicht als je op de knop drukt. Dat zie je alleen in de het donker goed.

Er worden twee kleine stickers meegeleverd zodat je de schakelaar ergens vast kunt plakken, maar je kunt hem ook gewoon als een soort simpele afstandbediening ergens op een tafel of kast leggen. Bijvoorbeeld voor je kerstboom als je ’s avond de lampjes uit wilt doen en geen zin hebt om tegen de Google Home Mini te praten, of je smartphone te pakken.

De schakelaars werken op een knoopcelbatterij en kostten ongeveer een euro of 3 per stuk (ik kreeg een relais erbij geleverd in een nette compacte case, het is even de vraag hoeveel euro je daarover van het totaalbedrag van 10 euro aftrekt). Maar zoals gezegd, de verkoper waar ik ze besteld had heeft ze niet meer, deze exemplaren zien er qua foto’s, specificaties en prijs hetzelfde uit. ik kan je niet naar een werkende link op Aliexpress sturen omdat de verkoper ze niet meer heeft.

Maar natuurlijk werkten de schakelaars niet zomaar, daar moest het een en ander voor gebeuren.

Lees verder….

Deel dit bericht:
okt 282018
 

De site/toepassing is niet nieuw, maar ik had simpelweg nog geen reden gehad om er eerder naar te kijken: MIT App Inventor.

Vandaag heb ik er voor het eerst mee geëxperimenteerd. De aanleiding is een wat groter project waarbij ik sensorwaarden die via een ESP32 worden verzameld direct op een mobiel apparaat wil kunnen ontvangen (dus niet via WiFi / MQTT etc). Het idee is om daar BLE (Bluetooth Low Energie) voor te gebruiken, de ESP32 heeft standaard WiFi en BLE ingebouwd. Maar de standaard apps die je voor BLE kunt downloaden hadden wat moeite met het verwerken en zeker met het netjes weergeven van de data die op deze manier binnen kwam. Zelf een app bouwen voor iOS of Android had ik in het verleden wel al eens geprobeerd, maar in beide gevallen was het installeren van de benodigde tools/software en het krijgen van een basisbegrip van hoe e.e.a. werkt al voldoende reden om daar niet teveel extra tijd in te steken.

Ik was dan ook een beetje sceptisch toen ik de verwijzing naar MIT APP Inventor tegenkwam. Maar, de eerste indruk na een paar uurtjes testen is heel positief. Goed, de eerste beperking voor nu is nog dat er nog geen ondersteuning is voor iOS. Dat was voor mij geen echt probleem, ik heb beide ter beschikking.
Heel prettig is wat mij betreft dat ik meteen in de online omgeving aan de slag kon. Ik kon met een Google account inloggen, naar keuze voor mij dan dus via @gmail.com of via @ixperium.nl omdat we Google Apps for Education gebruiken. Maar helemaal mooi werd het na het koppelen van mijn Android toestel via de MIT AI2 Companion App die ik via Google Play kon installeren. Na het scannen van een QR-code of het invoeren van een korte code werd mijn toestel gekoppeld aan het project waar ik mee bezig was. Dat betekende dat wijzigingen meteen werden doorgevoerd en te testen waren.

Het bouwen van een applicatie voelde heel vertrouwd, enerzijds heb je de ontwerpomgeving waar je knoppen, lijsten etc. op je scherm plaatst. Om er voor te zorgen dat die knoppen daadwerkelijk iets doen gebruik je de “Blocks” omgeving. Als je met Scratch kunt werken of met de Blocky achtige omgevingen zoals ook bij de Micro:bit gebruikt worden, dan kun je hiermee eenvoudig overweg.
En ook wijzigingen die je hier doorvoert worden meteen in de app op je smartphone doorgevoerd.

Heb je app helemaal klaar, dan kun je een .apk bestand downloaden op je smartphone. Dat is dus een “echte” app die gewoon zelfstandig werkt, los van de online omgeving. Nou staan de meeste smartphone tegenwoordig zo ingesteld dat ze niet zomaar apps installeren die niet in Google Play staan. Maar als het goed is, dan is dat één vinkje dat je moet aanzetten. Ik heb nog niet uitgezocht hoeveel werk de optie is om je app via Google Play te delen via App Inventor, want dat is voor mijn doel niet nodig.

Conclusie
Voorlopige conclusie is dat deze omgeving voldoende flexibiliteit biedt voor wat ik nodig heb.  De app is nog niet klaar dus nog geen filmpje etc. van het eindresultaat. Dat wordt nog vervolgd.

Deel dit bericht: