Manche von euch kennen meinen Klobot - ich nenne ihn liebevoll den "RoboKlobo" - vielleicht aus meinem allerersten Post - dem "#introduceyourself". Ich hab ihn so gerne, dass ich ihn nun mal genauer vorstellen möchte. :3
Was ist denn der "RoboKlobo"?
RoboKlobo ist mein KloBot.
RoboKlobo sagt mir Bescheid, wenn das Klo besetzt ist, damit ich nicht immer zum Klo renne, um dann entgeistert vor geschlossener Tür zu stehen, weil bereits jemand anders drin ist..
Sexy Foto - Unterseite, Kupferdrähte und Lötstellen:
Zum ersten Mal gelötet. ^^ und dazu erstmal einen Tag damit verbracht, Grundlagen der Elektrotechnik zu erlernen..
Zwei Kupferdrähte sorgen dafür, dass man erkennen kann, ob die Tür auf oder zu ist - vom Chip bekomme ich dann eine 1 oder 0, je nachdem, ob sich die beiden Drähte berühren oder nicht.
underpants' Schmiernotizen
Falls jemand wissen will, wie ich neue Dinge lerne: Skizzen.. schmierige Skizzen. Und da ich an dem Tag nichts dabei hatte und zum Löten außer Haus war, musste mein Tagebuch herhalten. :D
Sexy Foto Nr. 2 - der Chip
Der Chip ist ein "ESP" - normalerweise fängt man wohl mit einem allseits bekannten "Arduino" an - pff, ich halt nicht. :D
der Coding-Prozess
Für die Code-Interessierten; das ganze ist via Python (MicroPython - für Microcontroller) umgesetzt. War damit mein erster Kontakt zu dem ganzen Gebiet. -
zum Netzwerk verbinden
Natürlich muss der Klobo erstmal ins Netzwerk, um überhaupt Nachrichten vom Klo irgendwo anders hinschicken zu können - hier mittels Wlan.
Kupferdraht-Daten auslesen
Damit die Daten ausgelesen werden können, muss man auf den jeweiligen Pin zugreifen. Bei mir ist das hier IO2 (das zweite Kabel ist dementsprechend für Ground).
Auf Änderungen des Signals reagieren
Innerhalb der change()-Funktion wird dann auf die Änderungen des Signals reagiert.
Sobald also der neue Wert anders ist als der vorherige Wert, soll dieser neue Wert weitergegeben werden.
Das ganze wurde mit dem MQTT-Nachrichtenprotokoll umgesetzt.
MQTT basiert auf dem publish-subscribe Prinzip - RoboKlobo publisht die Nachricht "Klo ist besetzt", wenn es besetzt ist, und "Klo ist frei", wenn es wieder frei ist. Hierfür wird ein bestimmtes Topic verwendet.
Topic für die Klodaten ist "klobot/hodor" - hodor hält die Tür.. Anspielung, hust
Hätte ich später für den klobot weitere Daten, z.B. welche Person gerade auf dem Klo ist (indem die Person z.B. vor dem Klogang auf einen Button drückt), könnte ich dies dann also unter "klobot/button" o.ä. publishen.
Wenn nun ein anderes Gerät an diesen gepublishten Daten interessiert ist, kann er sich einfach für das Thema einschreiben. Er kann sich dann entscheiden, ob er nur die hodor-Daten, nur die button-Daten oder gleich alle klobot-Daten haben möchte.
mit dem Message Broker verbinden
Unter main() findet der Verbindungsprozess zum "Message Broker" (in diesem Fall mein Raspberry Pi) statt.
Der Message Broker ist dafür da, die Nachrichten zu empfangen und weiterzuverteilen.
Was macht der Raspberry Pi?
Der Code auf dem Raspi ist deutlich länger als der auf dem Chip - damit der Beitrag nicht unendlich lang wird, lasse ich hier nun also lieber etwas weg.
Im Groben und Ganzen setzt der Raspi bei mir im Moment den Telegram-Bot um - somit kann ich direkt auf meinem Handy sehen, wenn sich etwas beim Klo geändert hat.
Er subscribet sich für "klobot/hodor" um die Daten vom ESP zu empfangen, setzt usernamen und Passwörter, passt bisschen auf den Network-Traffic auf..
Da mich auch interessiert, wie lange jemand denn auf dem Klo war, hab ich ein bisschen mit den Zeiten rumgespielt, bis der Ausgabestring einigermaßen hübsch aussah - ich bekomme nun Stunden, Minuten und Sekunden (und wenn man nur Minuten oder Sekunden drauf war, gibt er auch nur Minuten oder Sekunden aus) - suche hier eigentlich noch nach einer hübscheren Lösung..bin noch Python-Noob :P
Somit bietet der Telegram-Bot nicht nur den Klostatus, sondern auch zusätzlich noch die Zeit.
RoboKlobo in Action
RoboKlobo versteckt sich gerne unter Hüten.. dann haben Besucher nicht so sehr Angst vor ihm.

Dabei hat er eigentlich gar keinen Grund, sich zu verstecken. Er ist wunderschön..und leuchtet!
Mangels erreichbarer Steckdose und mangels Genehmigung des Elternhauses zum Dauerbetrieb (weil das kleine Teil ja soooo viel Strom zieht..) muss er durch eine Powerbank versorgt werden.

Die Drähte erstrecken sich, beinahe unsichtbar, an der Wand entlang.. vom Schrank, auf dem der Klobo liegt, bis zum Türrahmen. Von hier aus geschieht das Zauberwerk.

more to come...
auf der to-do-Liste befinden sich noch Sachen wie
- Daten in eine externe Datei abspeichern, um sie statistisch auszuwerten (zu welcher Zeit gehen Personen am häufigsten aufs Klo? Wie hoch ist die Wahrscheinlichkeit, dass innerhalb der nächsten 20 Minuten das Klo besetzt ist? Wie lange verbringen Personen hier im Durchschnitt?) :P
- die erwähnten Buttons sind tatsächlich auch im Gespräch - allerdings erst nach dem Umzug in die eigene Wohnung. Meine Eltern stehen irgendwie auf Privatssphäre. Komisch..
- ich will unbedingt einen Gewichtssensor unter der Klobrille! Ich möchte wissen, wie viel Gewicht ich gerade verliere, in Live!(!!) :DD .. weiß aber noch nicht, wie das wirklich realisierbar ist..
- Anbindung zum Ikosaeder (siehe leuchtendes Ding in meinem Banner) - Lampenfarben sollen sich je nach Klostatus verändern
- bin offen für weitere coole Ideen!