Hauptmenü

DOIF Batterieüberwachung

Begonnen von weini, 02 Juni 2016, 23:35:59

Vorheriges Thema - Nächstes Thema

satprofi

Hallo.
Wo finde ich das attr delaycounter? Bei DOIF nicht, oder?

LG
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Magst du dir mal den Code im ersten Beitrag ansehen? Daraus wird das ganz schnell klar.

Hast du das bisher nicht genau so übernommen?

satprofi

schon gefunden, thx.
Habe ein bisschen anderes doif


(([":^battery: low"]) or ([":^Battery: low"])) (set Telegram message @xxxxxxx send 'Battery warnung $DEVICE' low)
DOELSEIF (["HZ:^batteryLevel",0] < 2.2) (set Telegram message @xxxxxxx send 'Batteryspannung $DEVICE' unter 2.2V)
DOELSE


Werds testen, sonst übernehm ich deins 1:1

lg
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Ist das dein ganzes DOIF?
Falls ja, dann solltest du es tatsächlich mal ohne "do always" versuchen.
Du nutzt da eine ganz andere Logik: Ich arbeite in meinem DOIF mit einem Zähler, den hast du nicht.

satprofi

Ja, sollte lt. Commandref genügen.

Habe jetzt deine attribute eingetragen, leider hat sich die eine schwache batterie wieder erfangen und zeigt ok an.
mal abwarten was später passiert


gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

Klappt leider auch nicht, alle 5-10min. alarmmeldung. Habe jetzt counter auf 0 gesetzt, jetzt kommt keine Meldung mehr von diesem Device.
Versteh nicht, warum das Beispiel aus der Commandref nicht funktioniert.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Nochmal: Wenn du oben deinen kompletten DOIF Code gepostet hast, dann bringt dir das Attribut delayCounter nichts, weil du es im DOIF nirgends abfragst.

So wie dein Code aussieht, muss das "do always" erst mal raus. Wenn du dann aber ein "Flattern" beim Batteriestatus bekommst (low & ok im Wechsel), dann löst der Alarm trotzdem mehrfach aus.
Genau um so etwas abzufangen habe ich ja die Logik mit dem Counter entwickelt: Erst wenn der Alarm eine gewisse Anzahl mal hintereinander auftritt, ohne dass es eine Entwarnung gibt, wird die Benachrichtigung ausgelöst (und zwar nur einmal).

satprofi

hallo.
habe das hier gepostete übernommen

( ([":^battery:.*low"] or [":^battery:.*0"]) and [?$SELF:$DEVICE] eq "0")
( set PBNotification message 'Intelligentes Wohnen' | 'Batteriewarnung $DEVICE: $EVENT', setreading $SELF $DEVICE low)
DOELSEIF ( ([":^battery:.*low"] or [":^battery:.*0"]) and ([?$SELF:$DEVICE] eq "ok" or [?$SELF:$DEVICE] eq "novalue"))
(setreading $SELF $DEVICE [$SELF:delayCounter])
DOELSEIF ( ([":^battery:.*low"] or [":^battery:.*0"]) and [?$SELF:$DEVICE] gt 0 and [?$SELF:$DEVICE] le [?$SELF:delayCounter])
(setreading $SELF $DEVICE {([$SELF:$DEVICE])-1})
DOELSEIF ( ([":^battery:.*ok"] or [":^battery:.*1"]) and [?$SELF:$DEVICE] ne "ok") (setreading $SELF $DEVICE ok)


samt den Attributen, aber ebenfalls andauernde warnung.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Kannst du mal ein list von deinem DOIF posten?

satprofi

hallo.
habe wieder den originalzustand hergestellt, wo auch der andauernde alarm kommt

Internals:
   DEF        (([":^battery: low"]) or ([":^Battery: low"])) (set Telegram message @###### send 'Battery warnung $DEVICE' low)
DOELSEIF (["HZ:^batteryLevel",0] < 2.2) (set Telegram message @###### send 'Batteryspannung $DEVICE' unter 2,2V)
DOELSE
   NAME       Batt_Check
   NR         717
   NTFY_ORDER 50-Batt_Check
   STATE      cmd_3
   TYPE       DOIF
   Readings:
     2017-04-11 19:27:11   Device          HZ_Vorzimmer
     2017-04-11 17:50:48   HZ_Bad          ok
     2017-04-11 17:50:18   HZ_Buero        ok
     2017-04-11 17:50:15   HZ_Hobbyraum    ok
     2017-04-11 17:50:47   HZ_Schlafzimmer ok
     2017-04-11 17:51:07   HZ_Vorzimmer    ok
     2017-04-11 17:50:32   HZ_Wohnzimmer   ok
     2017-04-11 17:50:36   Hideki_30_1     ok
     2017-04-11 17:51:45   Pooltemperatur  ok
     2017-04-11 19:15:55   SD_WS07_TH_1    low
     2017-04-11 17:49:57   TH_Sensor       ok
     2017-04-11 18:35:05   Wetter_Dach     low
     2017-04-11 19:27:11   cmd             3
     2017-04-11 19:27:11   cmd_event       HZ_Vorzimmer
     2017-04-11 19:27:11   cmd_nr          3
     2017-04-11 19:21:37   delayCounter    0
     2017-04-11 19:21:37   matched_event_c1_1 battery: low
     2017-04-11 19:27:11   matched_event_c2_1 batteryLevel: 2.6
     2017-04-11 19:27:11   state           cmd_3
   Condition:
     0          (EventDoIf('',$hash,'^battery: low',0)) or (EventDoIf('',$hash,'^Battery: low',0))
     1          EventDoIf('HZ',$hash,'^batteryLevel',0,'[^\:]*: (.*)','','0') < 2.2
   Devices:
   Do:
     0:
       0          set Telegram message @###### send 'Battery warnung $DEVICE' low
     1:
       0          set Telegram message @###### send 'Batteryspannung $DEVICE' unter 2,2V
     2:
       0
   Helper:
     event      batteryLevel: 2.6
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   HZ_Vorzimmer
     timerevent batteryLevel: 2.6
     triggerDev HZ_Vorzimmer
     timerevents:
       actuator: 0
       battery: ok
       batteryLevel: 2.6
       desired-temp: 21.0
       measured-temp: 22.6
       motorErr: ok
     timereventsState:
       actuator: 0
       battery: ok
       batteryLevel: 2.6
       desired-temp: 21.0
       measured-temp: 22.6
       motorErr: ok
     triggerEvents:
       actuator: 0
       battery: ok
       batteryLevel: 2.6
       desired-temp: 21.0
       measured-temp: 22.6
       motorErr: ok
     triggerEventsState:
       actuator: 0
       battery: ok
       batteryLevel: 2.6
       desired-temp: 21.0
       measured-temp: 22.6
       motorErr: ok
   Internals:
   Itimer:
   Readings:
   Regexp:
     0:
       0          :^battery: low
       1          :^Battery: low
     1:
       0          HZ:^batteryLevel
     All:
       0          :^battery: low
       1          :^Battery: low
       2          HZ:^batteryLevel
   State:
   Trigger:
Attributes:
   delayCounter 0
   do         always
   notexist   "ok"
   room       DOIF
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Du hast "delayCounter" auf 0 gesetzt, das ist in der Tat etwas schräg. Setz das mal auf 2 und versuche meinen Code nochmal.

satprofi

hatte ich vorher auf 2, keine veränderung.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Mein meinem Code aus dem ersten Post?

Bitte lass es damit nochmal laufen, warte bis wieder andauernd die Alarme kommen und poste dann nochmal ein List.

satprofi

Das funktioniert? Dachte das dort Fehler drinnen sind. Morgen werde ich testen

Gesendet von meinem ONEPLUS A3003 mit Tapatalk

gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

weini

Ja, der Code funktioniert. Nimm besser die Fassung aus dem 3. Post, die ist etwas eleganter, tut aber das selbe.
Ich habe das glaube ich nie mit delayCounter=0 getestet. Der Counter sagt ja, wie oft das Ereignis auftreten soll. Von der Logik her sollte das Minimum 1 sein, ich würde aber 2 empfehlen. Da bekommst du dann keine Fehlalarme, wenn sich ein Aktor einmalig beschwert (meine Temperatursender machen das manchmal).

Ein Nutzer hatte mal Probleme mit der Fassung aus dem 3. Post, die haben sich aber ganz anders geäußert und ich konnte das nie richtig nachstellen. Sonst hatte ich noch keine Beschwerden  ;)