Making of RoboKlobo - der Klobot

in #deutsch7 years ago (edited)

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!
Sort:  

Hodor!
Haha du bist der Hammer! :D

'underpants passwort :P'

Also für deine ersten Gehversuche mit Python, machst du das schon ausgezeichnet. :)

Vielleicht baust du noch so einen fiesen 5V Lichtwarnsummer ein, der denn zeitbetuchte Toilettenbesetzer aufschrekt. :D

blush danke :D
ich will doch meine Klobesucher nicht verschrecken O_O .. aber überall an der Decke rote Alarmleuchten hätten schon Style.. Hauptlicht aus und die an, zusammen mit nem Selbstzerstörungstimer wenn man das Bad nicht innerhalb der nächsten 10 Sek wieder frei gibt.. :D

Ich sehe, wir verstehen uns :)

VG 🐧

This comment has received a 0.52 % upvote from @speedvoter thanks to: @patternbot.

Ein klobot!
Schräg aber durchaus sehr interessant! Python hat wunderbare Möglichkeiten mit Zeiten zu spielen, lass uns Mal quatschen :)
Großartig!
LG
Jan

uh sehr gerne :) ich meld mich!

Wunderbar. Nun noch für jeden Nutzer ein NFC Chip und die Monatsstatistik wer wie lange auf dem Klo war ist perfekt 😂

Vielleicht noch großes oder kleines Geschäft unterscheiden.

NFC hatte ich auch zuerst überlegt, aber dann müsste man immer z.B. sein Handy dabei haben.. darum lieber die Buttons - hat aber das Problem, dass man nicht zwischen verschiedenen Besuchern unterscheiden kann, außer man nimmt ganz ganz viele Buttons. Außer man machts vlt mit Namenseingabe.. aber das würde wahrscheinlich keiner machen wollen xD
Die Monatsstatistik ist toll :D

Wie unterscheidet man großes Geschäft von kleinem Geschäft?

Hm... NFC Chip vielleicht implantieren und denn 2 Buttons für KACKA und PIPI ...lol

lol
why not
XD
brauch dann Roboterarme die jeden festhalten der durch die Tür will, auf den Chip überprüft und wenn keiner vorhanden ist, wird er direkt eingepflanzt..

sehr gut - nächstes Projekt 😂

This post has received a 0.25 % upvote from @speedvoter thanks to: @patternbot.

Da das ganze ja quasi eh schon open-source ist kannst du das ganze doch auch gleich mal in ein github-repo packen und auf utopian posten :)
Kriegst dann auch ne gute Bewertung von mir :p

(Warum gibts keinen ref bonus für utopian? Gleich mal vorschlagen^^ )