Benutzer-Werkzeuge

Webseiten-Werkzeuge


iot:vollautomatische_katzenwaage:programmversion_0.1

Dies ist eine alte Version des Dokuments!


Vollautomatische Katzenwaage - Programmversion 0.1

Angestrebte Funktionsweise: Die Waage soll das Gewicht einer Katze bestimmen, während sie auf der Katzentoilette sitzt. Da mich nicht das Gewicht der Katzentoilette interessiert, kann die Waage immer dann auf Null gestellt werden, wenn keine Katze auf der Toilette ist. Dazu 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.)

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 geschrieben, wobei die neuesten Messwerte die ältesten ersetzen. Nachdem 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 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 Katze. Das Ergebnis der Messung wird aber noch nicht an den Server gesendet.

Welche Katze auf der Toilette ist soll zunächst mithilfe von Schwellwerten bestimmt werden: Liegt das Gewicht zwischen 3 und 4 Kilogramm, muss es sich um Leonie handeln, liegt das Gewicht zwischen 4 und 5 Kilogramm, ist Leslie auf der Toilette. In einer zukünftigen Programmversion könnte eine automatische Anpassung an langfristige Gewichtsveränderungen programmiert werden.

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:

  1. 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.
  2. 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.
  3. 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 aktiviert, nachdem detektiert wurde, dass die Katze die Toilette verlassen hat.

Auslösegewicht: 500 Gramm (so viel wiegen Kätzchen ungefähr in der vierten Woche, und vorher benutzen sie ohnehin nicht die Katzentoilette.)

Analyse Toilettengänge

Ausgangspunkt für die Programmierung der Gewichtsmessung ist eine Analyse der Toilettengänge meiner beiden Katzen. Dafür wurden Anfang Juni 2019 einige Tage alle Toilettengänge videografiert und anschließend ausgewertet. (Anmerkung: Leslie benutzt auch ein anderes Klo, das nicht erfasst wurde; Leonie ist wegen Verdauungsproblemen in Behandlung.)

Aufnahme Katze Betreten Setzen Aufstehen Verlassen Vorb. Entleer. Nachb. Ges.
02.06.19
113 Leonie 0:19 0:39 1:16 1:32 20 37 16 73
115 Leonie 0:08 0:27 0:39 0:50 19 12 13 44
126/127 Leonie 0:05 0:20 0:52 1:20 15 32 28 75
03.06.19
06 Leonie 0:08 0:27 0:38 0:50 19 11 12 42
07 Leonie 0:06 0:29 1:04 1:26 23 35 22 80
19 Leonie 0:06 0:20 0:44 1:07 14 24 23 61
25 Leslie 0:10 0:25 0:34 0:49 15 11 15 41
26 Leonie 0:28 0:53 1:07 1:24 25 14 17 56
32 Leonie 0:07 0:29 1:11 1:40 22 42 29 93
36 Leonie 0:03 0:20 1:00 1:23 17 40 23 80
04.06.19
02 Leslie 0:06 0:24 0:36 0:51 18 12 15 45
03 Leonie ? 0:08 0:48 1:02 40 14
16 Leonie 0:05 0:15 1:00 1:22 10 45 22 67
25 Leslie 0:35 0:50 1:05 1:18 15 15 13 43
31 Leslie 0:07 0:20 0:31 0:48 13 11 17 41
32 Leonie 0:07 0:26 0:36 0:53 19 10 17 46
37 Leonie 0:08 0:19 1:06 1:31 11 47 25 83
40 Leslie 0:07 0:17 0:22 0:23 10 5 1 17
41 Leslie 0:03 1:04 1:30 2:12 61 26 42 129
05.06.19
01 Leslie 0:04 0:37 0:50 1:07 33 13 17 63
02 Leonie 0:09 0:32 1:42 2:07 23 70 25 118
15 Leonie 0:46 1:00 1:38 1:56 14 38 18 70
21 Leonie 0:24 0:37 1:27 1:48 13 50 21 84
29 Leslie 0:07 0:25 0:41 1:02 18 16 21 55
31 Leonie 0:39 1:02 1:34 1:57 23 32 23 78
37 Leslie 0:07 0:21 0:36 0:56 14 15 20 49
38 Leonie 0:07 0:46 0:58 1:17 39 12 19 70
06.06.19
01/02 Leonie 0:01 0:18 0:43 1:04 17 25 21 63
04 Leslie 0:04 0:20 0:35 0:53 16 15 18 49
08 Leonie 0:54 1:14 1:47 2:15 20 33 28 81
10 Leonie 0:06 0:23 0:31 0:49 17 8 18 43
26 Leonie 0:07 0:22 1:08 1:47 15 46 39 100
34 Leonie 1:08 1:21 1:30 1:42 13 9 12 34
35 Leonie 0:45 1:00 1:33 2:05 15 33 32 80
36 Leonie 0:22 0:47 1:21 1:46 25 34 25 84
07.06.19
02 Leonie 0:02 0:17 0:59 1:23 15 42 24 81
08 Leonie 1:20 1:38 2:13 2:48 18 35 35 88
28 Leonie 0:24 0:42 1:30 1:58 18 48 28 94
33 Leonie 0:11 0:35 0:41 0:56 24 6 15 45
42 Leslie 0:04 0:25 0:37 0:57 21 12 20 53
43/44 Leonie 0:00 0:10 0:37 1:02 10 27 25 62
08.06.19
08 Leonie 0:06 0:22 0:32 0:51 16 10 19 45
09 Leslie 0:06 0:16 0:24 0:42 10 8 18 36

Die Auswertung der Toilettenbesuche von Leonie und Leslie zeigt, dass nach dem Betreten der Toilette im Mittel ca. 19 Sekunden, mindestens aber 10 Sekunden vergehen, bis sie sich hinsetzen und ihr Geschäft erledigen. Nachdem eine Gewichtszunahme gemessen wurde, können also die ersten 10 Sekunden für die Gewichtsmessung ignoriert werden. Das Erledigen des „Geschäfts“ und auch das anschließende Verscharren dauern durchschnittlich 26 bzw. 21 Sekunden, die Varianz ist jedoch enorm. Das betrifft dann in der Summe auch die Gesamtdauer der Toilettengänge: Im Durchschnitt sind Leonie und Leslie 65 Sekunden auf der Toilette, der längste Toilettengang im Erhebungszeitraum hat jedoch doppelt so lange gedauert. Zusammenfassend kann festgehalten werden, dass bei allen Messungen die ersten 10 Sekunden ignoriert werden können und ein Toilettengang über zwei Minuten dauern kann.

Neben den „normalen“ Toilettengängen sind aber auch die Aufnahmen interessant, auf denen Vorfälle dokumentiert sind, die zu Fehlmessungen führen könnten:

  • 03.06.2019, #04, Leslie steht mit zwei Pfötchen im Klo und schnuppert am Streu
  • 03.06.2019, #05, Leslie betritt das Klo, erkundet es und verlässt es, ohne ein „Geschäft“ zu erledigen
  • 04.06.2019, #04, Leonie betritt das Klo, setzt sich, steht wieder auf, verlässt es, betritt es wieder, setzt sich, macht ihr „Geschäft“, scharrt es zu und verlässt das Klo
  • 04.06.2019, #41, Leslie verlässt nach dem „Geschäft“ das Klo und scharrt es zu, wobei er nicht im Klo steht
  • 04.06.2019, #42, Leslie betritt das Klo, kratz herum und verlässt es wieder, ohne ein „Geschäft“ gemacht zu haben.
  • 04.06.2019, #42, Leslie steht mit zwei Pfötchen im Klo und schnuppert am Streu
  • 05.06.2019, #02, Leonie macht erst das kleine, dann das große „Geschäft“
  • 05.06.2019, #04, Leslie betritt das Klo, schnuppert am Streu, macht aber kein Geschäft
  • 05.06.2019, #38, Leonie betritt das Klo, steht lange still, bevor sie ihr Geschäft macht
  • 06.06.2019, #04, Leslie scharrt sein „Geschäft“ zu, ohne im Klo zu stehen.
  • 06.06.2019, #06, Leslie steht mit zwei Pfötchen im Klo und schnuppert am Streu
  • 06.06.2019. #09, Leslie betritt das Klo, schnuppert, macht aber kein „Geschäft“
  • 07.06.2019. #35, Leslie betritt das Klo, schnuppert, macht aber kein „Geschäft“
  • 07.06.2019. #41, Leslie betritt das Klo, schnuppert, macht aber kein „Geschäft“

Problematisch sind insbesondere solche Verhaltensweisen, die - beim aktuellen Stand der Programmierung - als Toilettengang detektiert werden würden, aber zu falschen oder ungenauen Messungen führen würden.

  • Ungenaue Messungen können insbesondere dann entstehen, wenn Leslie das Klo betritt, ohne ein „Geschäft“ zu erledigen, weil er dann nicht ruhig sitzt. Solche Messungen könnten evtl. mit Hilfe der Standardabweichung des Mittelwerts einer Anzahl von Einzelmessungen herausgefiltert werden.
  • Falsche Messungen können entstehen, wenn Leslie mit zwei Pfoten im Klo steht und am Streu schnuppert, denn je nach dem, wie viel Gewicht er dabei auf die Waage bringt, würde das Ergebnis der Messung evtl. Leonie zugerechnet, die etwa ein Kilogramm leichter ist. Es wäre zu überprüfen, ob ein Timer eine Lösung ist, ein kleines Fenster, innerhalb dessen Messungen Leonie zugeordnet werden, oder ob sich ein typischer Toilettengang anhand typischer Schwankungen der Varianz der Messwerte detektieren lässt.

Und schließlich habe ich auch noch eine Reihe von Toilettenreinigungen zur weiteren Analyse videografiert:

  • 03.06.2019, #08
  • 03.06.2019, #24
  • 03.06.2019, #40
  • 04.06.2019, #07
  • 04.06.2019, #39
  • 05.06.2019, #07
  • 05.06.2019, #35
  • 06.06.2019, #11
  • 07.06.2019, #03
  • 07.06.2019, #07
  • 07.06.2019, #09
  • 07.06.2019, #32
  • 08.06.2019, #04
  • 08.06.2019, #11

Toilettenreinigungen werden sich von Toilettengängen aber gut unterscheiden lassen, weil das Gewicht nach getaner Arbeit geringer ist als vorher. Das Auffüllen von Streu könnte anhand der kontinuierlichen Gewichtszunahme erkannt werden oder einfach daran, dass es im Klo bleibt.

iot/vollautomatische_katzenwaage/programmversion_0.1.1560003224.txt.gz · Zuletzt geändert: 18.05.2023 12:16 (Externe Bearbeitung)