Die-Frickler.org

Wir haben Zweigstellen in jeder Nervenheilanstalt!



LaundrySorcery, oder: seit wann fällt eigentlich Ethernet aus unserer Waschmaschine?

Keine Antwort

Einführung

Woohoo, Inhalte!

In der WG standen wir neulich vor dem Problem: Die Waschmaschine befindet sich im Keller, also ganze zwei Stockwerke unter uns. Der geplagte Student nimmt also periodisch, den Rücken gebeugt unter der Bürde von geschätzt vier Wochen Wäsche, den mühsamen Weg in den Keller auf sich, ohne Gewissheit, dass die Waschmaschine auch tatsächlich frei ist.

Schlimmer noch, im Worst Case steht man vor laufender Waschmaschine, und hat mangels Timer an der Kiste keine Ahnung wie lange die Wäsche da drin war, oder wie lange sie noch drin sein wird.

Dass dieser Zustand unhaltbar ist, war auch der Genossin BC klar, kundgetan mit den (ungefähren) Worten: „Man sollte mal ’nen Sensor an die Waschmaschine pappen, hier fliegt auch noch ein Raspberry PI rum, der auf Einsatz wartet“

Natürlich liess ich mir das nicht zweimal sagen, und fuhr instantan in den lokalen Elektronikshop um das restliche Hühnerfutter zu besorgen.

Sensorik

Die Sensorik funktioniert so: Über die „Ein“-LED wird ein LDR geklebt, welcher vom Raspberry PI mit folgender Elektronik ausgelesen wird:

Wir messen also den Widerstandswert über Timingunterschiede des Ladezyklus:

Timingunterschiede des Ladekreises bei änderndem Widerstandswert.

Sobald wir die obere Hysterese (in der Abbildung bei 2.8V) erreichen, ziehen wir den Eingang der Schaltung auf 0V, bei der unteren Hysterese (1.8V) auf 3.3V.

Auswertung

Der Raspberry Pi erhält nun periodisch die Dauern der Zyklen. Doch: woher weiss er nun, ob die „Ein“-LED leuchtet oder nicht? Optimalerweise ginge das ohne fest einprogrammierte Grenzen.

Wir machen für das Problem zwei Annahmen: Wenn der Pi startet, befindet sich die Waschmaschine im Zustand aus, und die ausgelesenen Zeitdauern sind Gaussverteilt:

Zwei Gaussverteilungen

Zwei Gaussverteilungen der Messwerte. Die Y-Achse ist die Wahrscheinlichkeit, den Wert in der X-Achse zu erhalten, abhängig davon, ob die Waschmaschine an oder aus ist.

Die Gaussverteilungen werden zur Laufzeit mit running averages geschätzt, sie sind also a-priori nicht bekannt.

Ein Blick in die Entscheidertheorie zeigt, dass die optimale Entscheidung für Gaussverteilungen gleicher Varianz genau in der Mitte der Kurven liegt, i.e. wenn wir einen Wert messen, der über der Mitte (in Falle dieser Abbildung 800) liegt, entscheiden wir uns für OFF, ansonsten für ON. Falls die Verteilungen nicht die gleiche Varianz haben, liegt die Entscheidergrenze bei:

Entscheidungsgrenze bei unterschiedlichen Varianzen

Weswegen wir annehmen, dass die gleiche Varianz vorliegt.

Bootstrapping

Baron von Münchhausen

++++ An den Haaren herbeigezogen: Baron befreit sich angeblich durch Hochziehen am eigenen Schopf aus Sumpf ++++

Aufmerksame Leser werden jetzt sagen: „Mooo-ment mal, Baron von Münchhausen, woher wissen wir zu Beginn, wo die Entscheidungsgrenze liegt, wenn wir die Verteilung a-priori nicht kennen?“

Ja, da hat der besorgte Bürger^W^W aufmerksame Leser natürlich recht: Wir bedienen uns bei der initialen Schätzung einer Krücke: Wir gehen davon aus, dass die Maschine im Aus-Zustand ist. Wir können daher die Gaussverteilung für den Aus-Zustand trainieren. Die Entscheidungsgrenze(n) liegen nun einfach 5*σ vom Mittelwert entfernt, i.e. sobald wir einen Wert Messen, der „zu weit“ von unserem gemessenen Mittel weg liegt, entscheiden wir uns um zum ON Zustand (lustigerweise kann der in unserem Algorithmus auch weniger Licht vorweisen als der OFF-Zustand)

Sobald wir die erste Entscheidung mal getroffen haben, können wir anfangen, die Gaussverteilung des ON-Zustandes zu trainieren, und können die oben besprochene Entscheidung verwenden.

Outlier-Resistenz

Wenn wir bei jedem einzelnen Wert überhalb des Grenzwertes wechseln würden, wäre das System unbrauchbar und ständig am rumwechseln. Wir entscheiden uns erst nach 100 konsekutiven Werten überhalb des Grenzwertes um.

Software

Das Programm wurde in C geschrieben. Wir verwenden zusätzlich ein paar Tricks, die grosse Messunterschiede wegen Scheduling durch das Betriebssystem vorbeugen: Der Messprozess wird in einer isolierten CPU ausgeführt, die nur von ihm benutzt werden darf. Weiterhin ist der Prozess immer am Werte auslesen, weswegen er nie gestoppt wird.

Interface

Dem ganzen wurde ein Web-Interface spendiert, das folgendermassen aussieht:

Webseite im Aus-Zustand

Webseite im Aus-Zustand. Im Ein-Zustand wäre der Power-Knopf Grün.

Zusätzlich sieht man in der Detail-Seite ein paar Kurven, welche die Software in eine RRD schreibt:

Änderung des Mittelwertes über einen Tag. Die blaue Kurve ist die gelernte Gaussverteilung, welche (langsam) der roten Kurve angepasst wird.

Das Ganze ist im LAN, sofern das Endgerät es beherrscht, per MDNS unter http://laundrysorcery.local erreichbar

Installation

So, genug gelabert, nun zur eigentlichen Installation:

 

Geschrieben von doeme @die-frickler.org

am 20. Juni 2018 um 03:19 Uhr

Stammtisch am 18. März 2017

Keine Antwort

Gute Tageszeit,
Jetzt ist der letzte Stammtisch schon wieder 4 Monate her und ich wurde desöfteren gefragt, wann es denn endlich wieder einen gibt…

Daher kann ich nun verkünden:
Zum ersten Stammtisch Süd 2017 treffen wir uns am 18.03. um 12:00 Uhr

in der Gaststätte Eschengarten, Ebereschenstraße 17, 80935 München (noch unter Vorbehalt)
Wer teilnehmen mag, kann sich hier eintragen, ich passe dann die Reservierung entsprechend an: https://dudle.inf.tu-dresden.de/st_sued_0117/

Vielen Dank für die Aufmerksamkeit,
i.A.
Management

Geschrieben von Censer @die-frickler.org

am 14. März 2017 um 07:40 Uhr

productronica und Stammtisch Q4/15 – Freitag der 13. November

Keine Antwort

Sehr geehrte Mitfrickelnde,
in nur einer Woche ist es wieder so weit: Die productronica, nach eigenen Angaben Weltleitmesse für Entwicklung und Fertigung von Elektronik, findet vom 10. bis 13. November in der Messe München statt. Wie in den letzten Jahren auch würden wir die Messe gemeinsam am letzten Tag (Freitag, 13.11.) besuchen.
Wie jedes Jahr ist an dem Freitag der „student day“, dennoch bietet sich die Möglichkeit, viel Neues zu lernen und interessante Kontakte zu knüpfen.

Wir treffen uns
um 10:00 Uhr MEZ
am Eingang West

innerhalb der Absperrungen, genauer: Falls sie noch da stehen, in der Nähe der Schließfächer. Zur Koordination steht ab 09:00 Uhr MEZ die übliche Handynummer zur Verfügung:

Falls Interesse besteht, würden wir uns nach dem Ende der productronica (ca 17:00) in ein Wirtshaus/Lokal begeben und den Tag gemütlich ausklingen lassen.

Hierfür treffen wir uns um 18:00 Uhr MEZ in der Klenze17 (Klenzestr. 17,80469 München)

Wenn ihr teilnehmen wollt, tragt euch doch bitte im Doodle ein, damit wir entsprechend planen können.

Wer Probleme mit der Ticketbeschaffung hat, probiert es bitte bei elektor oder wendet sich an stammtisch-sued@die-frickler.org

Vielen Dank für die Aufmerksamkeit,
i.A.
Management
(censer & jwacalex)

Geschrieben von Stammtisch-Sued @die-frickler.org

am 4. November 2015 um 00:05 Uhr