MQTT op een verkeersregeltoestel
et mooiste is om iets te ontwikkelen wat er nog niet is. Een verkeersregeltoestel heeft al heel veel voorzieningen om op applicatie niveau informatie in te winnen over het gedrag van het regeltoestel. Bijvoorbeeld via het IVERA protocol, SFTP of via een VLOG stream.
Data die op dit moment niet realtime beschikbaar zijn: Processortemperatuur, vrije ruimte van bestandssysteem, opgenomen vermogen van de verkeerslichten.
Mijn uitdaging is om deze data beschikbaar te stellen bij een MQTT broker en deze data op een dashboard inzichtelijk te krijgen.
Wat is hierbij nodig:
- MQTT client geïnstalleerd op de processor van een regeltoestel
- Een voor het regeltoestel bereikbare MQTT broker
- Een server waarop een Node-red applicatie functioneert die zich kan Subsciben op de broker.
- De data beschikbaar maken op de client en versturen naar de broker
Om op de BSP van de processorkaart een MQTT client beschikbaar te hebben, kan er een RPM gecompileerd worden vanuit de sources voor het OS. In deze situatie wordt er gebruikt gemaakt van het Yocto Project. Met een ontwikkelaar van Swarco is deze uitdaging besproken en is er een RPM gemaakt voor de MQTT client.
Deze MQTT client is geïnstalleerd in een test omgeving. Met de handleiding geprobeerd om berichten te versturen, echter is er nog geen Broker aanwezig die de berichten kan ontvangen.
Voor de broker op de laptop de Mosquitto broker geïnstalleerd en geconfigureerd.
Op de processorkaart van het regeltoestel een bash script gemaakt, waarmee om de x-seconden de waarde van het vrije geheugen en de omvang van het bestandssysteem wordt verstuurd naar de broker.
#/bin/bash
{
echo "Script bepaalt iedere $1 seconden het vrije geheugen en percentage van de gebruikte ruimte op het filesysteem"
while [ : ]
do
vrij_geheugen=$(free -h|grep Mem:|awk '{print $4;}')
perc_omvang_bestandsysteem=$(df -h /data|grep /dev/mmc|awk '{print $4}')
mosquitto_pub -h 192.168.65.154 -p 1883 -t acu/geheugen -m "$vrij_geheugen"
mosquitto_pub -h 192.168.65.154 -p 1883 -t acu/filesysteem -m "$perc_omvang_bestandsysteem"
sleep $1
done
}
Dit script start op basis van een nohub commando op, zodat de terminal weer kan worden afgesloten:
nohup sh test.sh 5 &
Een overzicht van het systeem staat in de volgende weergave:

In Node-red is een Dashboard aanwezig waarop de ontvangen waarden worden weergegeven:
Dit maakt het mogelijk om de trend van deze gegevens te kunnen volgen.
