Table of Contents

MQTT

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

Client

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.

Unser Server

Erster Code und erste Aufgabe

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).

Weitere Aufgaben und Ideen

7-Segment-Anzeige

Anderen ESP per Knopfdruck steuern

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.

Temperatur, Helligkeit oder sonstigen Messwert publizieren