MQTT ist ein Protokoll, um zwischen IoT Geräten Daten via einen Server auszutauschen.
Daten können dort publiziert werden. Wenn sich dort ein client einträgt (subscribe) wird dieser bei einer Änderung benachrichtigt. Es ist also kein Polling (ständiges Nachfragen) nötig.
Die Publikation findet über eine Art Pfadangabe statt. Damit können die Daten organisiert werden. Z.B. ffprg20/ivo/wert
mqttfx
gestartet werden.Weitere Clients finden sich z.B. hier: https://www.hivemq.com/blog/seven-best-mqtt-client-tools/
Es gibt auch Apps für Android (und sicher auch iO$). Ich verwende auf Android MQTT Dash, womit sich auch gleich passende Interfaces definieren lassen.
Für iOS funktioniert MQTT Terminal Pro.
ACHTUNG Funktioniert nicht auf KSBG-Wild. St. Galler Wireless, tech-labc, mobile Daten sind ok.
Dieser Code übermittelt den Wert des intern verbauten Hall-Sensors (Magnetfeldmessung) auf das Topic ffprg20/ivo/hall
.
Die “onboard led” wird je nach ffprg20/ivo/led
ein- oder ausgeschaltet.
mqtt-first.zip ERRATA Es muss chipid & 0xffffffff
heissen (und nicht &&, was ein boolean ergibt).
ffprg20/ivo/led
mit mqttfx. Ihre LED sollte sich entsprechend ändern. (D.h. von allen ESP, die schon verbunden sind).ffprg20/hansli/zahl
publiziert ist. Anstatt hansli verwenden Sie Ihren Vornamen.Auf einem ESP soll ein Knopf gedrückt werden (Boot auf GPIO-0, Touch oder “normaler” Button), und damit auf einem anderen ESP eine Aktion ausgelöst werden (z.B. LED ein- oder ausschalten).
if (!digitalRead(0)) { // Boot-Knopf (oder anderer Druckknopf auf anderem Pin ist unten // tu was }
Achtung: Das Auslesen der Knöpfe sollte nicht blockierend sein. Zudem muss eventuell Debouncing betrieben werden. Grundidee: status-Variablen mit Zustand und Zeitpunkt letzter Änderung.
// Touch-Fähige pins: 2,4,12,13,14,27,32,33 if (touchRead(2)<60) { // Tu was }
Achtung: Das zuverlässige Auslesen der Touch-Pins ist nicht ganz einfach. Es empfiehlt sich, mehrere (z.B. 10) Messungen zu machen, bevor man eine Berührung wertet. Weiter gelten die gleichen Dinge wie für Druckknöpfe.