Der Wäsche-Fertigmelder LAB 9000

So installieren Sie die Software des Wäsche-Fertig-Melders aus der Make 3/20 und richten den Telegram-Bot ein.

In Pocket speichern vorlesen Druckansicht
LAB 9000: Einrichtung des Telegram-Nachrichtendienstes

Der Wäsche-Fertig-Melder aus Make 3/20

Lesezeit: 13 Min.
Von
  • Kilian Hofmann
Inhaltsverzeichnis

Der Druck und der Zusammenbau des Wäsche-fertig-Melders wurden in der Make 3/20 ausführlich beschrieben. Hier folgt nun die Installation der Software, die Einrichtung des Telegram-Bots und die notwendigen Anpassungen, damit alles bei Ihnen zu Hause funktioniert.

Falls noch nicht geschehen, laden und installieren Sie die aktuelle Arduino IDE von der Arduino-Seite. Ich empfehle die Windows-Version. Mit der nachfolgenden Installation der Bibliotheken gab es zum Zeitpunkt des Artikels mit MacOS Probleme. Der verwendete Günstig-ESP8266 benötigt zur USB-Kommunikation mit der Arduino IDE einen eigenen Treiber CH341SER.

In der IDE fügen Sie als erstes über das Menü Datei und Voreinstellungen> eine Zusätzliche Boardverwalter-URL in den Voreinstellungen der IDE ein:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Die zusätzliche Boardverwalter-URL wird hier eingetragen.

Jetzt den Boardverwalter mit Werkzeuge, Board und Boardverwalter starten. Im Boardverwalter nach ESP866 suchen und die Board-Erweiterung installieren.

Laundry Watchbot wurde mit Version 2.6.3 entwickelt.

Drei Libraries müssen für unser Projekt eingebunden werden. Die Installation erfolgt über Werkzeuge und Bibliotheken verwalten.

Library für den ADS1015: Dazu einfach im Bibliotheksverwalter der Arduino IDE nach ADS1015 suchen und die Library Adafruit ADS1X15 von Adafruit installieren.

Arduino JSON: Die JSON-Library wird in erster Linie für die Telegram-API benötigt. Wichtig: Die Library für den Telegram-Bot arbeitet ausschließlich mit JSON 5! Im Bibliotheksverwalter nach ArduinoJson suchen, die Library von Benoit Blanchon auswählen und in der Version 5.13.5 installieren.

Universal Telegram Bot Library: Zunächst müssen Sie diese Library über GitHub herunterladen. Zur Installation wählen Sie Sketch, Bibliothek einbinden, .zip-Bibliothek hinzufügen und wählen den .zip-Ordner aus, in den Sie die Datei gespeichert haben. Den Rest macht die Arduino IDE selbst.

Sie brauchen die Bibliotheken ADS1015, Arduino JSON und Universal Telegram Bot Library.

Schließen Sie nun den ESP8266 per USB an und nehmen Sie unter Werkzeuge die folgenden Board-Einstellungen vor:

  • Board: NodeMCU 1.0 12-E
  • Flash Size: 4 MB (FS: 1 MB OTA)
  • Erase Flash: „All Flash Contents“ (zumindest bei der ersten Installation. Später können Sie auf <I>Only Sketch<I> umstellen, falls die Threshold- und Usereinstellungen übernommen werden sollen).

Wählen Sie dann den richtigen Port aus (hängt vom USB-Anschluss ab), an dem der ESP angeschlossen ist. Falls kein Port aktiv ist, überprüfen Sie die Verbindung (USB rein-raus). Es könnte auch am falschen USB-Treiber liegen. Rechner neu booten könnte auch helfen.

Nach der Anpassung der Arduino IDE an das Board und der Installation der Bibliotheken kann nun der Sketch mit dem Laundry Watchbot Operating System /1 LABOS/1 importiert werden. Laden Sie den Sketch vom Make-Server herunter, packen Sie ihn aus und öffnen Sie ihn in der Arduino IDE. Nun kommt der erste Test: Direkt einmal durchcompilieren. Keine Fehlermeldungen? Bravo: Alles richtig gemacht. Andernfalls die Installation der Librarys und Boardeinstellungen überprüfen.

Das LABOS/1 Softwarepaket besteht aus vier .ino-Dateien

  • LaundryBot.ino
  • b_LaundryMachine.ino
  • c_Telegram.ino
  • d_Support.ino

Die Konfigurationseinstellungen und Deklarationen sind alle in der Datei a_configuration.h zusammengefasst. Insgesamt umfasst das Software-Paket rund 1.900 Zeilen -- wir haben an dieser Stelle auf einen kompletten Abdruck verzichtet.

LaundryBot.ino beinhaltet die zentralen setup()- und loop()-Funktionen für die Maschinenstatus- und Telegram-Messageabfrage, dazu das (ellenlange) Coding für die Befehlsverarbeitung. In LaundryMachine.ino befinden sich die eigentlichen Laundry-Geräte-Funktionen: Messen, steuern, regeln und LED Handling. In Telegram.ino geht es ums Kommunikationshandling: Nachrichten empfangen, senden, Userverwaltung und Einstellungen, zusammengefasst in der Message(Msg)-Klasse. Support.ino beinhaltet ein paar Hilfsfunktionen.

Die strikte Trennung erlaubt in späteren Projektphasen eine verhältnismäßig einfache Integration anderer oder zusätzlicher Messenger-Dienste. Wichtig für die individuelle Konfiguration Ihres LAB 9000 ist lediglich die Datei LABOS_SETUP.h.

Um Komplikationen mit dem Compiler zu vermeiden, sind die .ino-Dateien alphabetisch geordnet, daher die a_, b_, c_, d_ Präfixe. Der Arduino-Compiler kompiliert die einzelnen Dateien in alphabetischer Reihenfolge. So sind die include-Anweisungen nicht in jeder Datei erforderlich, eine zentrale Definition in der Datei a_LaundryBot.ino reicht. Wenn ein erster Compiler-Durchlauf fehlerfrei funktioniert, sollten die Bibliotheken korrekt installiert sein.

Bevor Sie mit der Anpassung des Sketches weitermachen sollten Sie Telegram auf Ihrem Computer/Smartphone installieren, falls noch nicht geschehen. Anschließend müssen Sie in Telegram einen Bot für den Wäsche-fertig-Melder einrichten. Das geschieht mit Hilfe von BotFather, ein Bot in Telegram, der alle anderen kontrolliert. BotFather finden Sie mit der Eingabe von @botfather in die Telegram-Suchzeile. Daraufhin wird Ihnen eine Liste aller passenden Telegram-Fundstellen angezeigt. Klicken Sie auf BotFather. Achten Sie darauf, auch wirklich den BotFather zu erwischen, er ist der Einzige mit Telegram-Verifizierungshäkchen.

Den echten BotFather erkennen Sie am Häkchen hinter dem Namen.

Mit dem Befehl /start wird BotFather gestartet. Sie erhalten daraufhin eine Nachricht mit den möglichen Kommandos.

Mit /newbot legen Sie einen neuen Bot an. Geben Sie ihm einen treffenden Namen (zum Beispiel „MeiersLaundryWatchbot“). Danach ist noch ein Username erforderlich, der immer auf _bot enden muss – das war es eigentlich schon.

Sind alle erforderlichen Eingaben im Telegram-System, sendet BotFather Ihnen eine Congratulation-Nachricht. Wichtig für die Botintegration in LABOS/1 ist allein der darin enthaltene http-API Token. Der muss in die LABOS_Setup.h übernommen werden. Der Token identifiziert den Bot eindeutig - halten Sie den Token daher unbedingt geheim. Jeder, der ihn kennt, kann den Bot auch übernehmen.

In der Congratulation-Nachricht sendet Ihnen BotFather den API-Token.

Wer will, kann den Bot mit den Kommandos /setdescription, /setabouttext, /setuserpic usw. noch aufhübschen.

Ohne WLAN und Masteruser geht in LABOS/1 nichts. Ergänzen Sie den Sketch zunächst um ihre WLAN-Konfigurationsdaten (Zeilen 20 und 21) und die entsprechenden Werte für Ihre Maschinen. Kommentarzeilen in der Datei LABOS_Setup.h helfen Ihnen dabei. Laden Sie dann den Sketch in den ESP hoch. Achtung: Falls es beim Hochladen Probleme gibt, drücken Sie die Flash-Taste auf dem Board, sobald der Schreibvorgang beginnt.

Beim Start des LAB 9000 begrüßt dieser Sie mit einer kurzen Welcome-Disco-Lightshow mit Buzzer-Unterstützung. Danach wird die WLAN-Verbindung aufgebaut. Bei erfolgreicher Anmeldung wechselt die Status-LED die Farbe - wir sind verbunden. Nun ist es soweit: Wechseln Sie zu Telegram, suchen Sie den neu angelegten Bot, starten ihn mit /start – und freuen Sie sich auf Ihre erste Zugriff-verweigert Fehlermeldung.

Bei der ersten Kontaktaufnahme des Wäsche-fertig-Melders mit dem Telegram-Bot erfahren Sie die User-ID.

Jeder Telegram-User hat neben seinen Kontaktdaten eine zentrale, eindeutige Chat-ID. Diese Chat-IDs werden innerhalb des Userkonzepts zur Identifikation benutzt, auch zur Identifikation des Masterusers (siehe „Zusätzliche Botbefehle für den Master“). Der Masteruser hat aber die Sonderstellung, dass ihm auch nach einem völligen Systemreset oder leeren System Zugang gewährt wird. Kopieren Sie nun die in der Meldung genannte ChatID in das MASTER_USER- #define (Zeile 25 der LABOS_Setup.h). Das war es auch schon. Laden Sie den Sketch wieder in den ESP8266 hoch.

Sobald der LAB 9000 erneut gestartet ist, geben Sie anschließend im Telegram-Bot erneut den /start-Befehl ein. Meldet sich der Watchbot anschließend mit seiner Bereit-Meldung, hat alles geklappt.

So sollte es aussehen, wenn Sie die User-ID richtig in den Sketch eingetragen haben.

Nun testen wir die Verbindungen, beginnend mit den LEDs mit dem Bot-Befehl /Signaltest. Nacheinander werden die LEDs der Waschmaschine, des Trockners und des Wasseralarms aktiviert, inklusive des Buzzers. Passen die LEDs zusammen? Einzelne Verbindungen können mit /Signaltest <Gerätename> auch individuell geprüft werden, falls es Probleme gab. Passt das Ergebnis soweit, können wir einen Blick auf die Sensoren werfen. Prüfen Sie mit /Sensor die Messwerte der LDRs. Sind sie größer als 10? Perfekt. Halten Sie nacheinander eine Lichtquelle an die Sensoren. Mit /Sensor <Gerätename> kann auch jeder Sensor einzeln geprüft werden. Ändert sich der Wert des Sensors wie erwartet: mehr Licht = höherer Wert? Ansonsten: Nochmal Verkabelung und Bauteile prüfen.

Als Letztes werden die Wassersensoren getestet – einfach in eine mit Wasser gefüllte Untertasse stellen. Legt der Alarm los, ist alles gut. Tipp: Nach dem Trockenlegen kann man den nervigen Alarm mit /reset wieder abstellen.

Im letzten Schritt geht’s um die Stromversorgung, funktioniert auch die? USB-Kabel abziehen, Netzteil oder Batterie anschließen, einschalten... meldet sich der Bot mit seiner Statusmeldung, ist alles gut.

Jetzt kann der Laundry Watchbot an seinen Bestimmungsort. Suchen Sie einen möglichst vibrationsfreien Stellplatz, direkt auf Waschmaschine oder Trockner ist keine gute Idee (abgesehen für Titelfotos). Verlegen Sie die Kabel (hoffentlich vorher ausgemessen) und kleben Sie die jeweiligen Sensoren auf die Status-LEDs. Bewährt hat sich bei uns die Befestigung mit Power Stripes, diese gleichen auch leichte Wölbungen des Maschinenpanels aus. Die Versionen mit 2kg Haftkraft sollten genügen. Achten Sie darauf, dass möglichst wenig Fremdlicht einfallen kann.

Jetzt müssen die Schwellenwerte (/ListThresholds) zum jetzt-fertig-Status gesetzt werden, also welche maximale Helligkeit noch nicht fertig entspricht. Dazu die maximale Beleuchtung im Raum einschalten (Fremdlicht) und die jeweilige Maschine starten. Bei unserer Maschine sind die Programmstatus-LEDs sehr eng beieinander, daher habe ich die Messung im laufenden Schleuderprogramm vorgenommen. Die Schleuder-LED ist der Fertig-LED am nächsten.

Die Sensoreinstellungen müssen einmal an die Raumhelligkeit und die jeweilige Maschine angepasst werden.

Ist die Logik genau anders herum (on-off Pattern, wie bei unserem Trockner), erfolgt die Kalibrierung, wenn die LED im nicht-fertig-Modus durchleuchtet. Hier ist dann also der Helligkeitsabfall relevant. Den Threshold mit /SetThreshold <Maschine> setzen, die wirklich sicher Frage bejahen, und der neue Helligkeitsgrenzwert ist gesetzt. Die gespeicherten Werte lassen sich mit /ListThresholds jederzeit überprüfen. Nach der Kalibrierung ist Laundry Watchbot endlich einsatzbereit.

Das Hinzufügen von Usern erfolgt nach dem gleichen Muster wie die Master-User Anlage: Der neu hinzuzufügende Wäschebeauftragte sucht in seinem Telegram nach dem Bot und versucht mit ihm zu kommunizieren. Die Anfrage wird wie erwartet mit einer Fehlermeldung abgelehnt – der Master-User erhält eine entsprechende Mitteilung inklusive der Chat-ID des Zugreifenden. Jetzt kann der Master-User die ID einfach kopieren und den User mit dem Befehl /adduser <Chat-ID> hinzufügen.

Diesmal Telegram auf dem Smartphone:So fügt der Masteruser einen neuen User zum Bot hinzu.

Den Überblick über die User behält der Master mit dem Befehl /ListUser, der alle User, deren Chat-IDs und Subscribe-Status angezeigt. Den Zugriff entziehen Sie einem User mit /removeuser <Chat-ID>. Standardmäßig können bis zu acht User hinzugefügt werden.

Ein Liste mit den Bot-Befehlen, die normale und der Masteruser eingeben können, erhalten Sie übrigens am Ende dieses Artikels.

Der letzte Schritt: Jetzt müssen die bisherigen Wäscheverweigerer in der Familie/WG noch ins Boot und die Verantwortlichkeiten geklärt werden. Vielleicht der anstrengendste Prozess im ganzen Projekt… Aber dafür nie wieder Zombiegeruch aus der Trommel.

Der LAB 9000 ist mit Sicherheit nicht das Ende dieses IoT Projekts. Während der Realisierungsphase hatten wir noch einige Ideen, die zeitlich nicht mehr in diese Projekt-Phase reinpassten. Ma sehen, wie´s weitergeht. Wir freuen uns auch auf Ihre Anregungen. Sie wissen jedenfalls, was Sie zu tun haben, wenn Sie eine Nachricht aus Richtung Waschküche bekommen.

  • /Start: Üblicherweise das erste Kommando, wenn ein neuer Telegram Bot als Chat-Partner im Client ausgewählt wird
  • /Status: Übersicht der Geräte-Zustände
  • /Reset: Zurücksetzen des Status, wenn eine Laundry-Maschine fertig ist und ausgeräumt wurde. Der Wasch-/Trockenzyklus ist damit beendet, ein neuer beginnt.
  • /SeiStill: Abbestellen der Status-Nachrichten des Laundry Watchbots (Meldungen des Water Alerts werden weiterhin ausgegeben)
  • /GibLaut: Abonnieren der Status-Nachrichten
  • /Info: Anzeigen der Infos des Laundry Watchbots
  • /help: Ausgabe der Befehlsliste, incl. der gesetzten Gerätenamen
  • /ChatID: Ausgabe der Chat-ID des aktuellen Users
  • /SetThreshold <Gerätename>: Aktuellen Messwert des Sensors auslesen und als Threshold/Schwellenwert für zukünftige Auslösungen verwenden
  • /ListThresholds: Liste die Thresholds/Schwellenwerte aller Geräte auf
  • /Sensor <Max>|<Gerätename>: Ohne Gerätename werden alle drei Sensoren ausgelesen und angezeigt (je 2 Sekunden), <Gerätename> prüft nur einen. Mit Max werden alle gemessenen Maximal- bzw. Minimalwerte (abhängig vom Signalpattern) seit dem Start bzw. letzten /reset ausgegeben.
  • /SignalTest <Gerätename>: Testen der LEDs und des Piezo-Buzzers. Ohne Gerätenamen werden alle getestet.
  • /AddUser <chatID>: Hinzufügen eines neuen Users
  • /RemoveUser <chatID>: Entfernen eines Users
  • /Userlist: Anzeigen aller bekannter User mit der Chat-ID und dem Subscribe-Status
  • /SystemReset: Zurücksetzen des Laundry Watchbots auf Werkseinstellungen, gespeicherte Thresholds und User werden gelöscht. Der Masteruser muss die Konfiguration neu aufsetzen.

(hgb)