Benutzer-Werkzeuge

Webseiten-Werkzeuge


iot:vollautomatische_katzenwaage:programmversion_0.1

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
iot:vollautomatische_katzenwaage:programmversion_0.1 [14.06.2019 09:02]
Frickelpiet
iot:vollautomatische_katzenwaage:programmversion_0.1 [28.06.2019 16:30] (aktuell)
Frickelpiet
Zeile 1: Zeile 1:
 ====== Vollautomatische Katzenwaage - Programmversion 0.1 ====== ====== Vollautomatische Katzenwaage - Programmversion 0.1 ======
  
-Angestrebte ​Funktionsweise: Die Waage soll das Gewicht einer Katze bestimmenwährend sie auf der Katzentoilette sitztDa mich nicht das Gewicht ​der Katzentoilette interessiert,​ kann die Waage immer dann auf Null gestellt ​werden, wenn keine Katze auf der Toilette istDazu sollen ​die Messwerte kontinuierlich in ein Array geschrieben werden, wobei die neuesten ​Messungen ​die ältesten ersetzen. Nach dem Hinzufügen eines neuen Messwertes werden das Minimum und das Maximum im Array bestimmt. Liegen diese unterhalb des Rauschens, wird die Waage genullt. (Alternativ könnte die Waage genullt werden, wenn die Standardabweichung unter einem geeigneten Schwellwert liegt.)+===== Funktionsweise ​===== 
 +Nach jedem Toilettengangnachdem Streu aufgefüllt,​ die Toilette gereinigt oder der Deckel aufgesetzt wurde muss die Waage genullt werdenFür das Tarieren ​der Waage werden ​die Messwerte ​der letzten 10 Sekunden ausgewertetLiegt die größte und die kleinste Abweichung vom Mittelwert aller 100 Messungen ​innerhalb spezifischer Grenzwerte, wird die Waage tariert.
  
-Sobald ​eine Katze die Toilette betritt, wird das automatische ​Nullen ​deaktiviert. ​Das Betreten der Toilette ​wird durch einen Gewichtsanstieg über einen Schwellwert detektiertNun wird kontinuierlich ​das Gewicht ​gemessen und die Messwerte in ein Array geschriebenwobei die neuesten Messwerte die ältesten ersetzenNachdem ​die Katze die Toilette ​verlassen hat, wird die Waage genullt und innerhalb des Array nach den zehn aufeinanderfolgenden ​Messwerten ​mit der geringsten Standardabweichung ​vom Mittelwert ​gesuchtDa die geringsten Standardabweichungen vom Mittelwert erwartet werden werden könnenwenn die Katze ruhig sitztist der Mittelwert dieser zehn Messungen ​die bestmögliche Annäherung an das tatsächliche Gewicht der KatzeDas Ergebnis ​der Messung wird aber noch nicht an den Server gesendet.+Sobald die Waage eine Gewichtsveränderung über +/- 100 Gramm misst, wird das automatische ​Tarieren ​deaktiviert. ​Wenn das Gewicht innerhalb von 30 Sekunden wieder ungefähr 0 Gramm erreicht, ​wird die Waage tariertNach exakt 30 Sekunden ​wird geprüft, ob das Gewicht ​mindestens eine Sekunde lang im Mittel unter null Gramm lag. Ist das der Fallwird die Waage tariertIst beides nicht der Fall geht die Waage davon aus, dass eine Katze auf der Toilette ​sitzt. Fällt das Gewicht innerhalb weiterer 90 Sekunden ungefähr auf 0 Gramm wird das Gewicht der Katze berechnet. Dazu werden maximal 1200 Einzelmessungen analysiert. Gesucht werden ​die zehn aufeinanderfolgenden ​Einzelmessungen ​mit der geringsten Standardabweichung ​von ihrem Mittelwert. ​Liegt das Gewicht zwischen 3 und 4 Kilogramm wird die Messung Leonie zugeordnetliegt sie zwischen 4 und 5 Kilogrammwird die Messung Leslie zugeordnetAnschließend wird das Ergebnis an meinen ​Server gesendet.
  
-Welche ​Katze auf der Toilette ​ist soll zunächst mithilfe von Schwellwerten bestimmt werden: Liegt das Gewicht ​zwischen 3 und 4 Kilogrammmuss es sich um Leonie handelnliegt das Gewicht zwischen 4 und 5 Kilogramm, ist Leslie auf der ToiletteIn einer zukünftigen Programmversion könnte eine automatische Anpassung ​an langfristige Gewichtsveränderungen programmiert werden.+{{:​iot:​vollautomatische_katzenwaage:​serieller_plotter_toilettengang.png?​200 |}}Sobald eine Katze die Toilette betritt, wird das automatische Nullen deaktiviert. Das Betreten ​der Toilette ​wird durch einen Gewichtsanstieg über einen Schwellwert detektiert. Nun wird kontinuierlich ​das Gewicht ​gemessen ​und die Messwerte in ein Array geschriebenwobei die neuesten Messwerte die ältesten ersetzen. Nachdem die Katze die Toilette verlassen hatwird die Waage genullt ​und innerhalb des Array nach den zehn aufeinanderfolgenden Messwerten mit der geringsten Standardabweichung vom Mittelwert gesucht. Da die geringsten Standardabweichungen vom Mittelwert erwartet werden werden können, wenn die Katze ruhig sitzt, ist der Mittelwert dieser zehn Messungen die bestmögliche Annäherung an das tatsächliche Gewicht der KatzeDas Ergebnis der Messung wird aber noch nicht an den Server gesendet. Anschließend wird die Waage tariert.
  
-Bevor das Ergebnis der Messung an den Server gesendet wird, muss jedoch noch detektiert werden, ob die Gewichtszunahme von einer Katze verursacht wurde oder ob nur frisches Katzenstreu nachgefüllt wurde. Dafür kommen zwei Ansätze infrage: ​ 
-  - Wenn die Gewichtszunahme von einer Katze verursacht wurde, verlässt sie die Toilette nach einer Weile. Wenn jedoch Katzenstreu aufgefüllt wurde, bleibt es in der Toilette. Es müsste also bestimmt werden, ob das Gewicht nach einer (geeigneten) Zeitspanne wieder abnimmt oder erhalten bleibt. Man müsste hierbei mit einem Timer arbeiten, was den Nachteil hat, dass ein Toilettengang unmittelbar nach dem Auffüllen von Streu nicht erkannt wird, wenn der Timer zu lang eingestellt ist, oder eine korrekte Messung verworfen wird, wenn der Timer zu kurz eingestellt ist. 
-  - Alternativ könnte die Geschwindigkeit der Gewichtszunahme detektiert werden: Nimmt das Gewicht relativ plötzlich zu, ist eine Katze in die Toilette gesprungen, nimmt es hingegen kontinuierlich zu, wurde Katzenstreu hineingeschüttet. 
-  - Eine dritte Alternative wäre die Verwendung einer Lichtschranke ö.ä., aber das möchte ich eigentlich vermeiden. 
  
-Schließlich wird das automatische Nullen ​der Waage wieder aktiviertnachdem detektiert wurdedass die Katze die Toilette verlassen ​hat.+====Betriebsmodi==== 
 +Die Waage kennt zwei Betriebszustände:​ Den **Taramodus** und den **Ereignismodus**,​ wobei der eine den anderen Modus ausschließt. 
 +  * Der Taramodus ist der Standardmodus ​der Waage. Im Taramodus wird die Waage tariertsobald die Abweichung von Null größer oder kleiner als 5 Gramm ist und zehn Sekunden lang keine Gewichtsveränderung gemessen wird. 
 +  * Die Waage geht in den Ereignismodussobald eine Gewichtsänderung von +/- 100 Gramm gemessen wird. So lange dieser Modus aktiv ist, wird die Waage nicht automatisch nach 10 Sekunden tariert. In diesem Modus versucht die Waage zu erkennen, wodurch die Gewichtserkennung ausgelöst wurde. Das Ziel ist, möglichst treffsicher zu erkennen, ob eine Katze auf dem Klo ist und ihr Geschäft erledigt, oder ob die Gewichtsveränderung andere Gründe ​hat. Ist Letzteres der Fall, soll die Waage möglichst schnell zurück in den Taramodus wechseln
  
- +====Schematischer Programmablauf==== 
-Auslösegewicht:​ 500 Gramm (so viel wiegen Kätzchen ungefähr in der vierten Wocheund vorher benutzen sie ohnehin nicht die Katzentoilette.+  * Ausgangspunkt ​der Wenn-dann-Abfrage zur Identifizierung der Ursache einer Gewichtsveränderung ist der Taramodus. Das heißt, die Waage ist typischerweise tariert, wenn eine Gewichtsabweichung die Waage in den Ereignismodus zwingt
- +  * Wird eine Gewichtszunahme oder -abnahme von +/- 100 Gramm erkanntwechselt die Waage in den Ereignismodus. Dieser Modus wird also ausgelöst, wenn 
-Ereigniserkennung:​ +    * eine Katze zwei Pfötchen in die Waage stellt und am Streu schnuppert,​ 
-  * Tarierung: Wenn keine Katze auf dem Klo ist und die Abweichung größer als +/- Gramm ist, wird die Waage tariert +    * eine Katze die Toilette betritt und ihr Geschäft erledigt, 
-  * Katze auf dem Klo: Wenn das Gewicht 100 Gramm überschreitetkönnte ​eine Katze auf dem Klo seinEine Berechnung ​des Gewichts erfolgtwenn das Gewicht ​nach mehr als 30 Sekunden ​und innerhalb von 120 Sekunden wieder unter 100 Gramm fällt. +    * die Toilette gereinigt wird, 
-    * Nach Überschreiten ​der Frist von 120 Sekunden ​wird die Annahme, dass eine Katze auf dem Klo ist verworfen(Denn in diesem Fall wurde evtl. nur Streu nachgefüllt.) +    * der Deckel oder der Rand abgenommen wird, 
-    * Nach Unterschreiten ​der Frist von 30 Sekunden ​wird die Annahmedass eine Katze auf dem Klo war, ebenfalls verworfen. (Weil ein Toilettengang in der Regel länger dauert, eine gute Messung aber voraussetzt,​ dass die Katze ihr Geschäft erledigt, ​weil sie nur dann ruhig sitzt.)+    * der Deckel oder der Rand aufgesetzt wird, 
 +    * frisches Streu in die Toilette geschüttet wird, 
 +    * die Toilette einschließlich oder ausschließlich der Waage bewegt wird, um die Waage oder das Bad zu reinigen, 
 +    * etc. 
 +  * Im Ereignismodus versucht die Waage nun zu erkennen, ob eine Katze auf der Toilette ist und ihr Geschäft macht, oder ob die Gewichtsveränderung eine andere Ursache hat. Dafür nimmt sich die Waage bis zu zwei Minuten Zeit. Bei manchen Gewichtsveränderungen kann aber auch schon früher ausgeschlossen werden, dass eine Katze auf der Toilette ist. 
 +    * Erkennung der Toilettenreinigung: Wenn innerhalb der ersten 30 Sekunden zehn aufeinanderfolgende Messwerte gefunden werden, deren Mittelwert unter 0 Gramm liegtwurde beispielsweise der Deckel oder Rand abgenommen und / oder verunreinigtes Katzenstreu entnommen und evtl. danach frisches Streu eingefüllt. In diesem Fall befindet sich auf keinen Fall eine Katze auf der Toilette und die Waage kann in den Taramodus versetzt werden. 
 +    * Erkennung ​des Auffüllen von frischem Streu: Wenn innerhalb der ersten zehn Sekunden eine stetige Gewichtszunahme gemessen wurdewurde frisches Streu eingefüllt. In diesem Fall befindet sich auf keinen Fall eine Katze auf der Toilette und die Waage kann in den Taramodus versetzt werden. 
 +    * Erkennung des Aufsetzen des Rands oder des Deckels: Wenn nach einer Gewichtszunahme nach 10 Sekunden ​für weitere 10 Sekunden keine Gewichtsschwankungen gemessen werden, befindet sich ebenfalls keine Katze auf der Toilette. In diesem Fall kann die Waage in den Taramodus versetzt werden. 
 +    * Erkennung des vorzeitigen Verlassens einer Katze: Wenn nach einer Gewichtszunahme das Gewicht ​innerhalb von 30 Sekunden wieder ​auf unter 10 Gramm fällt, war wahrscheinlich eine Katze auf der Toilette, hat aber kein Geschäft gemacht. In diesem Fall kann die Waage in den Taramodus versetzt werden
 +    * Abbruch ​der Messung nach Zeitüberschreitung:​ Wenn nach einer Gewichtszunahme das Gewicht nicht innerhalb ​von 120 Sekunden ​wieder unter 100 Gramm fälltwurde möglicherweise Streu nachgefüllt oder der Rand bzw. Deckel aufgesetzt, ohne dass das erkannt wurde. Evtl. braucht die Katze auch nur sehr lange für ihr GeschäftIn diesem Fall wird die Waage in den Taramodus versetzt
 +    * Messung des Gewichts einer Katze: Wenn nach einem Gewichtsanstieg das Gewicht nicht innerhalb ​der ersten ​30 Sekunden ​auf unter 10 Gramm fälltaber vor Ablauf von 120 auf einen Wert von unter 100 Gramm fällt, war eine Katze auf dem Klo und hat ein Geschäft erledigt. In diesem Fall werden die Messungen ab 10 Sekunden nach dem Gewichtsanstieg und bis zum Falles des Gewichts auf unter 100 Gramm die 10 aufeinanderfolgenden Messwerte bestimmtdie die geringste Standardabweichung von ihrem Mittelwert haben. Anschließend wird die Waage in den Taramodus versetzt.
     * Die Messung wird verworfen, wenn die Standardabweichung vom errechneten Mittelwert einen Grenzwert überschreitet. (Denn dann hat die Katze nicht ruhig genug gesessen.)     * Die Messung wird verworfen, wenn die Standardabweichung vom errechneten Mittelwert einen Grenzwert überschreitet. (Denn dann hat die Katze nicht ruhig genug gesessen.)
-    * Die Annahme kann außerdem verworfen werden, wenn innerhalb von 30 Sekunden die niedrigsten Messwerte unter null Gramm liegen. (Denn in diesem Fall wird wahrscheinlich das Klo gereinigt.) 
-  * Toilettenreinigung:​ Wenn das Gewicht um mehr als -100 Gramm abweicht und niedrigsten Messwerte innerhalb der ersten 30 Sekunden unter null liegen, wird offensichtlich das Klo gereinigt. (Es wurde Streu entnommen, der Deckel abgenommen etc.) In diesem Fall ist keine Katze auf dem Klo, das heißt es muss nicht darauf gewartet werden, dass die Katze das Klo verlässt. 
   * Badezimmerreinigung:​ Wenn das Gewicht um mehr als 8000 Gramm abweicht, ist ebenfalls keine Katze auf dem Klo. Wahrscheinlich wurde die gesamte Toilette versetzt, z.B. um darunter sauber zu machen.   * Badezimmerreinigung:​ Wenn das Gewicht um mehr als 8000 Gramm abweicht, ist ebenfalls keine Katze auf dem Klo. Wahrscheinlich wurde die gesamte Toilette versetzt, z.B. um darunter sauber zu machen.
  
 +https://​www.instructables.com/​id/​Stabilize-Sensor-Readings-With-Kalman-Filter/​
  
 +WLAN
 +https://​forum.arduino.cc/​index.php?​topic=544478.0
  
 Tags: #Arduino #ESP32 #Katzen #​Katzentoilette #​Katzenwaage Tags: #Arduino #ESP32 #Katzen #​Katzentoilette #​Katzenwaage
iot/vollautomatische_katzenwaage/programmversion_0.1.1560495735.txt.gz · Zuletzt geändert: 14.06.2019 09:02 von Frickelpiet