SureFlap Haustierklappe

Begonnen von greuff, 09 Juni 2015, 17:35:57

Vorheriges Thema - Nächstes Thema

clumsy

Zitat von: tek am 24 November 2021, 21:13:12
ja das hab ich drin bei mir und läuft auch. Ich habs versucht aus dem Stateformat rauszulesen um mir einzelne Readings anzulegen um diese wiederum auf meiner Smartphoneapp zu verwenden. Aber nach 3 Tagen hab ich jetzt aufgegeben :D

Versuchs mal mit userReadings:
attr sf_pet01 userReadings since_now { my $ssince = int(timelocal(gmtime())) - time_str2num(ReadingsVal("$name","data_position_since", "0"));; my $since = sprintf("%02d:%02d", $ssince/3600, $ssince/60%60);; return $since },  since_prev { my $osince = time_str2num(ReadingsVal("$name","data_position_since", "0")) - time_str2num(OldReadingsVal("$name","data_position_since", "0"));; my $since = sprintf("%02d:%02d", $osince/3600, $osince/60%60);; return $since }

Wichtig dass
attr sf_pet01 oldreadings data_position_since
gesetzt ist!

Das generiert dir 2 neue Readings mit der aktuellen und der vorigen Verweildauer (std:min).

tek

mega danke, das ja noch besser wie gewünscht :D

Navaho

Vielen Dank für den Code. Coole Sache. Ich muss noch mal die Fehler checken, aber man sollte ja auch keinen Code nutzen ohne den ganzen Beitrag gelesen zu haben.  :)

Wastegate

Wünsche ein schönes neues Jahr.
Vielen Dank für deine Arbeit. Ich habe auch das ganze mal getestet und bekomme seit heute eine Fehlermeldung im LOG:

2022.01.01 00:00:55 1: PERL WARNING: Use of uninitialized value in subtraction (-) at (eval 1541971) line 1.
2022.01.01 00:00:55 3: eval: { return "missing" if ( (time_str2num(ReadingsTimestamp($NAME,"data_updated_at","1900-01-01T20:00:00+00:00")) - time_str2num(ReadingsVal($NAME,"data_updated_at","1900-01-01T20:00:00+00:00"))) < -3600 ); return "ok" if ( ReadingsVal($NAME, "data_battery", "-1" ) > 4.5); return "low" }

Was wohl mit den userReadings von sf_flap01 zusammenhängt. Leider bin ich nicht so fit um das Problem, wenn es denn eines ist, selber zu lösen.

clumsy

Es könnte sein, dass der Fehler kommt, bevor die Klappe den ersten Event meldet (z.B. nach einem Neustart) und deshalb eins der Readings noch nicht initialisiert ist. Wobei das eigentlich abgefangen werden sollte.

Wastegate

Habe sf_flap01 mal auf disable gesetzt.

Weitere Meldungen aus dem LOG:

2022.01.02 10:49:31 1: PERL WARNING: Argument "42+00" isn't numeric in subroutine entry at ./FHEM/99_Utils.pm line 21.
2022.01.02 10:49:31 3: eval: { my $ssince = int(timelocal(gmtime())) - time_str2num(ReadingsVal("$name","data_position_since", "0"));; my $since = sprintf("%02d:%02d", $ssince/3600, $ssince/60%60);; return $since }

Das scheint dann von sf_pet01 zu sein.
Sonst Klappt das mit sf_dashboard wirklich super. Da sind alle Informationen enthalten. Ich hole mir dort die Informationen für meine Tablet UI.

clumsy

Zitat von: Wastegate am 02 Januar 2022, 11:42:03
2022.01.02 10:49:31 1: PERL WARNING: Argument "42+00" isn't numeric in subroutine entry at ./FHEM/99_Utils.pm line 21.
Hmm... das scheint aber nicht von dem SF zu sein, ist ja nichts davon im 99_Utils.pm... was steht dann dort auf Zeile 21?

Wastegate

Ich nehme mal an das es mit der Zeitberechnung zusammenhängt, bin mir da aber nicht sicher.
Die Zeile 21 bezieht sich wohl auf time_str2num.
Dort steht:

return mktime($a[5],$a[4],$a[3],$a[2],$a[1]-1,$a[0]-1900,0,0,-1);

Könnte das ein Problem aus den userReadings sein?
Hoffe das Hilft weiter.  ;)

clumsy

du kannst versuchen in allen
time_str2num(..., ..., "0")
den default Wert "0" zu ersetzen durch
"1900-01-01T20:00:00+00:00"
evtl. verschwindet so der Fehler.

flobeewan

Gratulationen und vielen Dank! Bei mir hat die Integration auf Anhieb funktioniert!

flobeewan

Zitat von: Wastegate am 01 Januar 2022, 13:07:18
Wünsche ein schönes neues Jahr.
Vielen Dank für deine Arbeit. Ich habe auch das ganze mal getestet und bekomme seit heute eine Fehlermeldung im LOG:

2022.01.01 00:00:55 1: PERL WARNING: Use of uninitialized value in subtraction (-) at (eval 1541971) line 1.
2022.01.01 00:00:55 3: eval: { return "missing" if ( (time_str2num(ReadingsTimestamp($NAME,"data_updated_at","1900-01-01T20:00:00+00:00")) - time_str2num(ReadingsVal($NAME,"data_updated_at","1900-01-01T20:00:00+00:00"))) < -3600 ); return "ok" if ( ReadingsVal($NAME, "data_battery", "-1" ) > 4.5); return "low" }

Was wohl mit den userReadings von sf_flap01 zusammenhängt. Leider bin ich nicht so fit um das Problem, wenn es denn eines ist, selber zu lösen.


Scheinbar hat SureFlap die Readings geändert. Das reading "data_updated_at" kommt bei der Klappe nicht mehr vor. Ich habe folgendes geändert und bei mir funktioniert es:
attrib sf_flap01 userReadings battery { return "missing" if ( (time_str2num(ReadingsTimestamp("sf_device","data_02_updated_at","1900-01-01T20:00:00+00:00")) - time_str2num(ReadingsVal("sf_device","data_02_updated_at","1900-01-01T20:00:00+00:00"))) < -3600 );; return "ok" if ( ReadingsVal($NAME, "data_battery", "-1" ) > 4.5);; return "low" }

Vielleicht trägt das zur Lösung bei.

Wastegate

Leider hat es bei mir das Problem nicht gelöst

2022.02.18 20:27:13 1: PERL WARNING: Argument "36+00" isn't numeric in subroutine entry at ./FHEM/99_Utils.pm line 21.
2022.02.18 20:27:13 3: eval: { return "missing" if ( (time_str2num(ReadingsTimestamp("sf_device","data_02_updated_at","1900-01-01T20:00:00+00:00")) - time_str2num(ReadingsVal("sf_device","data_02_updated_at","1900-01-01T20:00:00+00:00"))) < -3600 );; return "ok" if ( ReadingsVal($NAME, "data_battery", "-1" ) > 4.5);; return "low" }


Ich habe sf_flap01 disabled und hole mir die Readings aus dem Dashboard. Das funktioniert Super.
Vielen Dank

tcbh

#42
Hallo in die Runde,

ich habe eine ganz andere Frage.
Man liest ja manchmal, dass bei der Sureflap die Verriegelung etwas wackelig ist - also bei kräftigem Drücken auch ohne Entriegelung aufgeht. Ist das bei Euren Klappen kein Problem?

Bevor ich das teure Ding anschaffe, wollte ich gern sicher sein, dass der große Nachbarskater beim Hinterherjagen sich nicht einfach mit Gewalt Zutritt zum Haus verschafft  ;)

Danke und viele Grüße
Till

clumsy

Naja, wir hatten vorher eine "normale Katzenklappe, ohne Elektronik nur mit dem mechanischen Verschluss... Unser Kater hat dann einfach die halbe Katzenklappe mit Gewalt (und wohl etwas hartem Kopf) aufgestossen, resp. die Plexischeibe halb zerrissen und aus dem Scharnier gedrückt, als er mal drin bleiben sollte... Je nach Kater geht das wohl mit jeder Katzenklappe... gegen Rohe Gewalt sind die nicht gesichert, aber die meisten (fremden) Katzen werden nicht mit Gewalt versuchen zu öffnen (unsere Erfahrung), da reicht meist etwas Wiederstand. Bisher sind wir eigentlich sehr zufrieden damit, ausser dass man halt alle paar Monate die Batterien wechseln muss....

tcbh

Hallo Clumsy,

danke für Deine Rückmeldung - das hört sich ja ganz gut an  :)
Habt Ihr denn die Katzenklappe oder die etwas größere Haustierklappe mit zwei Verschlussriegeln?

Viele Grüße
Till