lehrkraefte:blc:informatik:ffprg2-2020:mqtt

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg2-2020:mqtt [2020/09/06 08:50]
Ivo Blöchliger [Clients]
lehrkraefte:blc:informatik:ffprg2-2020:mqtt [2020/09/11 16:41] (current)
Ivo Blöchliger [Client]
Line 6: Line 6:
 Die Publikation findet über eine Art Pfadangabe statt. Damit können die Daten organisiert werden. Z.B. ''ffprg20/ivo/wert'' Die Publikation findet über eine Art Pfadangabe statt. Damit können die Daten organisiert werden. Z.B. ''ffprg20/ivo/wert''
 ===== Client ===== ===== Client =====
-  * Wir werden hier MQTTFX verwenden: https://mqttfx.jensd.de/index.php/download+  * Wir werden hier MQTTfx verwenden: https://mqttfx.jensd.de/index.php/download
     * Auf den Laptops kann das Programm via Terminal durch Eingabe von ''mqttfx'' gestartet werden.     * Auf den Laptops kann das Programm via Terminal durch Eingabe von ''mqttfx'' gestartet werden.
       * //Hinweis: Das .deb-Packet installiert sich in /opt/MQTTfx/MQTTfx, ein symbolischer Link /usr/local/bin/mqttfx darauf wurde platziert.//       * //Hinweis: Das .deb-Packet installiert sich in /opt/MQTTfx/MQTTfx, ein symbolischer Link /usr/local/bin/mqttfx darauf wurde platziert.//
Line 13: Line 13:
  
 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. 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 ===== ===== Unser Server =====
Line 19: Line 23:
  
  
 +
 +===== 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.
 +
 +{{ :lehrkraefte:blc:informatik:ffprg2-2020:mqtt-first.zip |}} **ERRATA** Es muss ''chipid & 0xffffffff'' heissen (und nicht &&, was ein boolean ergibt).
 +
 +  * Entpacken Sie die Datei (inklusive Ordner) und öffenen Sie den Sketch mit der Arduino-IDE
 +  * Passen Sie die Datei secrets.h an (username und passwort für den MQTT-Server)
 +  * Laden Sie das Programm auf den ESP32.
 +  * Kontrollieren Sie die Ausgabe im Serial Monitor.
 +  * Starten Sie mqttfx (im Terminal) und verbinden Sie sich mit dem MQTT-Server
 +  * Publizieren Sie 1 oder 0 (ohne Zeilenumbruch!) im topic ''ffprg20/ivo/led'' mit mqttfx. Ihre LED sollte sich entsprechend ändern. (D.h. von allen ESP, die schon verbunden sind).
 +  * Studieren sie den Code
 +
 +===== Weitere Aufgaben und Ideen =====
 +==== 7-Segment-Anzeige ====
 +  * Stellen Sie die Zahl dar, die z.B. im topic ''ffprg20/hansli/zahl'' publiziert ist. Anstatt hansli verwenden Sie Ihren Vornamen.
 +==== 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).
 +
 +<code c++>
 +if (!digitalRead(0)) { // Boot-Knopf (oder anderer Druckknopf auf anderem Pin ist unten
 +  // tu was
 +}
 +</code>
 +
 +**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.
 +
 +<code c++>
 +// Touch-Fähige pins: 2,4,12,13,14,27,32,33
 +if (touchRead(2)<60) {
 +   // Tu was
 +}
 +</code>
 +**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 ====
  
  
  • lehrkraefte/blc/informatik/ffprg2-2020/mqtt.1599375002.txt.gz
  • Last modified: 2020/09/06 08:50
  • by Ivo Blöchliger