(Erledigt![kein bug]) - Eigenartiges Verhalten mit Pushover, RFHEM und DOIF

Begonnen von Dersch, 14 Juli 2017, 23:01:43

Vorheriges Thema - Nächstes Thema

Dersch

Hi, ich habe grade irgendwie ein komischen Verhalten entdeckt und frage mich ob es ein Bug im DOIF ist. Zumindest kann ich es mir nicht anders erklären. (Es könnte auch ein ein Bug im Pushover Modul sein aber ich fange mal hier an)

Es geht um folgendes DOIF:


([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [08:30-15:59|WE] or [10:30-15:59|AT])
(set TeBachpumpe on, set PushoverDirk msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '', set PushoverDanni msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '')
DOELSEIF
([TeBachpumpe] eq "on" and [16:00]) (set TeBachpumpe off)
DOELSEIF
([TeBachWasserstand:level] < 25) (set TeBachpumpe off, set PushoverDirk msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '', set PushoverDanni msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '')
DOELSEIF
([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [17:30-{sunset("REAL",2800,"20:30","22:30")}]) (set TeBachpumpe on)
DOELSEIF
([TeBachpumpe] eq "on" and [{sunset("REAL",2800,"20:30","22:30")}]) (set TeBachpumpe off)
DOELSEIF
([TeBachpumpe] eq "on" and [TeBachWasserstand] eq "MISSING ACK") (set TeBachpumpe off, set PushoverDirk msg 'Bachlauf Füllstand' 'Keine Verbindung zum Sensor' '' 0 '')
DOELSEIF
([TeBachWasserstand:level] < 40) (set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60, set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 '')


Im Prinzip funktioniert alles so wie es soll. Nun habe ich noch CMD7 hinzugefügt da ich grade eine automatische Wasserzufuhr für den Vorratsbehälter baue. Das Relais und der weitere PI sind bereits aktiv nur die Wasserleitung noch nicht. (Das nur zur Erklärung falls jemand versucht zu verstehen was ich da mache ;) )

Nun zum Problem:

Die Pushnachricht aus CMD7 wird nicht gesendet! Darüber hinaus geht das dazu gehörige "PushoverDirk" auf Disconnected!  ???  :o
Pushover hat an sich aber kein Problem. Setze ich den State auf CMD6 z.B. kommt sofort die Nachricht und "PushoverDirk" steht dann wieder auf Connected.  Nur bei CMD7 geht es nicht.

Nun habe ich einfach mal das "set Push...." aus CMD7 rausgenommen und dafür ein eigenes einzeiliges DOIF gemacht:

([TeBachWasserzufuhr] eq "on") (set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 '')


Triggere ich nun den CMD7 aus dem obigen ist die Pushnachricht sofort da.

Daher frage ich mich nun warum??? Folgende flüchtige Erklärungen meinerseits:

- Es ist ein Bug im DOIF Modul was sich zeigt wenn RFHEM und Push in einem CMD kombiniert sind
- Es ist ein Bug im Pushover Modul, warum das so sein könnte weiß ich nicht
- Es ist irgendein Mist von mir selbst nur das sehe ich grade einfach nicht

Eventuell kann sich das ja jemand von euch erklären. Ein normales Fehlerbild ist das jedenfalls nicht, irgendwas ist da sehr komisch.

Grüße
Dirk

amenomade

Ich tendiere für die 3. Option:
ZitatEs ist irgendein Mist von mir selbst nur das sehe ich grade einfach nicht
:P  ;)

set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60
Fehlt hier nicht ein Komma in CMD7?

Bedingung 1 + Bedingung 4 ([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [08:30-15:59|WE] or [10:30-15:59|AT])
([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [17:30-{sunset("REAL",2800,"20:30","22:30")}])
  sind nicht mit Bedingung 7 ([TeBachWasserstand:level] < 40)exklusiv. Wenn [TeBachWasserstand:level] zwischen 30 und 40 liegt, kannst Du in CMD1 o. CMD4 statt CMD7 landen.

Idem für Bedingung 2, 5 und 6.

Überleg mal bei jeder Bedingung, was triggern soll, und was nur getestet werden soll. Was nur getestet werden soll schreibst Du mit [?Device:Reading] statt [Device:Reading]

Dazu, wenn do kein "do always" und kein DOELSE hast, must Du überlegen, wie das DOIF aus einem Zustand kommt. Es kann sein, dass Du in einem Zweig stehen bleibst.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Brockmann

Zitat(set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60, set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 '')
Ich kenne RFHEM nicht näher, aber könnte es sein, dass Du dem GarageRFHEM den gesamten restlichen Befehl bis zur schließenden Klammer übergibst? Also einschließlich des Pushover, dass Du ja vermutlich nicht auf der Remote-Instanz ausführen möchtest?
Vielleicht trennst Du die beiden Befehle deutlicher, beispielsweise so:

(
fhem ("set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60"),
set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 ''
)

ungetestet und ohne Gewähr...

amenomade

ZitatVielleicht trennst Du die beiden Befehle deutlicher

Dann eher so:
(set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60)
(set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 '')


(Hast Recht wegen RFHEM, hatte ich überlesen. Da braucht man natürlich kein Komma zwischen cmd und set.)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dersch

#4
Hi, danke für eure Antworten.

Ich habe den letzten Hinweis auch schon probiert mit Hinblick auf das RFEHM Modul. Allerdings ändert das nichts. Zudem ist es dann immer noch nicht erklärbar warum das PushoverDirk Device auf disconnected geht.


Zu den anderen Hinweisen die nicht direkt zum Thema gehören:

([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [08:30-15:59|WE] or [10:30-15:59|AT])
([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [17:30-{sunset("REAL",2800,"20:30","22:30")}])



([TeBachWasserstand:level] < 40) Ja das ist bisher ja noch zum Test um zu sehen wie sich das alles so verhält. Die Werte muss ich noch anpassen wenn auch wirklich Wasser nachgefüllt wird. Bisher habe ich ja eine manuelle Nachfüllung und zum Schutz der Pumpe sind die Werte auf < 30. Wenn aber Wasser zuverlässig automatisch nachgefüllt wird sind die Regeln neu zu bewerten.

Bisher funktioniert es aber genauso sehr zuverlässig und das richtige CMD triggert im richtigen Zeitpunkt. Ein hängenbleiben auf einem CMD hatte ich auch noch nicht und teste das nun schon ca 2 Wochen. Aber ich habe es dennoch nun mal auf < 30 gesetzt denn ich gebe dir Recht das macht einfach mehr Sinn :)

Was verändert das ?Device wenn eine Regel nur zum testen ist? Davon habe ich bislang noch nichts gehört.

Grüße
Dirk

amenomade

Poste mal ein "list <DOIFName>" nachdem Du denkst, er sollte CMD7 ausgelöst haben.

Und evtl. setzte das DOIF auf verbose 5, und bring es zum gewünschten Zustand, und poste die Log.

Zu ?Device: https://forum.fhem.de/index.php/topic,72805.msg648160.html#msg648160
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dersch

Hier ist mal das List:


nternals:
   DEF        ([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [08:30-15:59|WE] or [10:30-15:59|AT])
(set TeBachpumpe on, set PushoverDirk msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '', set PushoverDanni msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '')
DOELSEIF
([TeBachpumpe] eq "on" and [16:00]) (set TeBachpumpe off)
DOELSEIF
([TeBachWasserstand:level] < 25) (set TeBachpumpe off, set PushoverDirk msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '', set PushoverDanni msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '')
DOELSEIF
([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [17:30-{sunset("REAL",2800,"20:30","22:30")}]) (set TeBachpumpe on)
DOELSEIF
([TeBachpumpe] eq "on" and [{sunset("REAL",2800,"20:30","22:30")}]) (set TeBachpumpe off)
DOELSEIF
([TeBachpumpe] eq "on" and [TeBachWasserstand] eq "MISSING ACK") (set TeBachpumpe off, set PushoverDirk msg 'Bachlauf Füllstand' 'Keine Verbindung zum Sensor' '' 0 '')
DOELSEIF
([TeBachWasserstand:level] < 30) (set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60)
   NAME       TeBachDOIF
   NR         265
   NTFY_ORDER 50-TeBachDOIF
   STATE      cmd_7
   TYPE       DOIF
   READINGS:
     2017-07-16 20:53:33   Device          TeBachWasserstand
     2017-07-16 20:53:40   cmd             7
     2017-07-16 20:53:40   cmd_event       TeBachWasserstand
     2017-07-16 20:53:40   cmd_nr          7
     2017-07-16 20:53:33   e_TeBachWasserstand_STATE 29
     2017-07-16 20:53:33   e_TeBachWasserstand_level 29
     2017-07-16 20:36:04   e_TeBachpumpe_STATE off
     2017-07-16 20:53:40   state           cmd_7
     2017-07-16 15:59:00   timer_01_c01    17.07.2017 08:30:00|WE
     2017-07-16 15:59:00   timer_02_c01    17.07.2017 15:59:00|WE
     2017-07-16 15:59:00   timer_03_c01    17.07.2017 10:30:00|AT
     2017-07-16 15:59:00   timer_04_c01    17.07.2017 15:59:00|AT
     2017-07-16 16:00:00   timer_05_c02    17.07.2017 16:00:00
     2017-07-16 05:48:33   timer_06_c04    16.07.2017 17:30:00
     2017-07-16 05:48:33   timer_07_c04    16.07.2017 22:08:55
     2017-07-16 05:48:33   timer_08_c05    16.07.2017 22:08:55
   condition:
     0          InternalDoIf($hash,'TeBachWasserstand','STATE') ne "MISSING ACK" and ReadingValDoIf($hash,'TeBachWasserstand','level') > 30 and DOIF_time($hash,0,1,$wday,$hms,"WE") or DOIF_time($hash,2,3,$wday,$hms,"AT")
     1          InternalDoIf($hash,'TeBachpumpe','STATE') eq "on" and DOIF_time_once($hash,4,$wday)
     2          ReadingValDoIf($hash,'TeBachWasserstand','level') < 25
     3          InternalDoIf($hash,'TeBachWasserstand','STATE') ne "MISSING ACK" and ReadingValDoIf($hash,'TeBachWasserstand','level') > 30 and DOIF_time($hash,5,6,$wday,$hms)
     4          InternalDoIf($hash,'TeBachpumpe','STATE') eq "on" and DOIF_time_once($hash,7,$wday)
     5          InternalDoIf($hash,'TeBachpumpe','STATE') eq "on" and InternalDoIf($hash,'TeBachWasserstand','STATE') eq "MISSING ACK"
     6          ReadingValDoIf($hash,'TeBachWasserstand','level') < 30
   days:
     0          WE
     1          WE
     2          AT
     3          AT
   devices:
     0           TeBachWasserstand
     1           TeBachpumpe
     2           TeBachWasserstand
     3           TeBachWasserstand
     4           TeBachpumpe
     5           TeBachpumpe TeBachWasserstand
     6           TeBachWasserstand
     all         TeBachWasserstand TeBachpumpe
   do:
     0:
       0          set TeBachpumpe on, set PushoverDirk msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '', set PushoverDanni msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 ''
     1:
       0          set TeBachpumpe off
     2:
       0          set TeBachpumpe off, set PushoverDirk msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '', set PushoverDanni msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 ''
     3:
       0          set TeBachpumpe on
     4:
       0          set TeBachpumpe off
     5:
       0          set TeBachpumpe off, set PushoverDirk msg 'Bachlauf Füllstand' 'Keine Verbindung zum Sensor' '' 0 ''
     6:
       0          set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60
     7:
   helper:
     event      battery: ok,level: 29,29
     globalinit 1
     last_timer 8
     sleeptimer -1
     timerdev   TeBachWasserstand
     timerevent battery: ok,level: 29,29
     triggerDev TeBachWasserstand
     timerevents:
       battery: ok
       level: 29
       29
     timereventsState:
       battery: ok
       level: 29
       state: 29
     triggerEvents:
       battery: ok
       level: 29
       29
     triggerEventsState:
       battery: ok
       level: 29
       state: 29
   internals:
     0           TeBachWasserstand:STATE
     1           TeBachpumpe:STATE
     3           TeBachWasserstand:STATE
     4           TeBachpumpe:STATE
     5           TeBachpumpe:STATE TeBachWasserstand:STATE
     all         TeBachWasserstand:STATE TeBachpumpe:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     5          -1
     6          5
   itimer:
   localtime:
     0          1500273000
     1          1500299940
     2          1500280200
     3          1500299940
     4          1500300000
     5          1500219000
     6          1500235735
     7          1500235735
   readings:
     0           TeBachWasserstand:level
     2           TeBachWasserstand:level
     3           TeBachWasserstand:level
     6           TeBachWasserstand:level
     all         TeBachWasserstand:level
   realtime:
     0          08:30:00
     1          15:59:00
     2          10:30:00
     3          15:59:00
     4          16:00:00
     5          17:30:00
     6          22:08:55
     7          22:08:55
   regexp:
     0:
     1:
     2:
     3:
     4:
     5:
     6:
     all:
   state:
     STATE:
   time:
     0          08:30:00
     1          15:59:00
     2          10:30:00
     3          15:59:00
     4          16:00:00
     5          17:30:00
     6          {sunset("REAL",2800,"20:30","22:30")}
     7          {sunset("REAL",2800,"20:30","22:30")}
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          1
     5          3
     6          3
     7          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1  2  3
     1           4
     3           5  6
     4           7
   trigger:
   triggertime:
     1500235735:
       localtime  1500235735
       hash:
     1500273000:
       localtime  1500273000
       hash:
     1500280200:
       localtime  1500280200
       hash:
     1500299940:
       localtime  1500299940
       hash:
     1500300000:
       localtime  1500300000
       hash:
Attributes:
   room       Terrasse
   waitsame   0:0:0:0:0:1800:0
   weekdays   So,Mo,Di,Mi,Do,Fr,Sa,WE,AT

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dersch

Ja das habe ich doch rausgenommen wie oben geschrieben. Aber ich packe es wieder rein zum debuggen.

amenomade

Aber packt es bitte so wieder rein:
(set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60)
(set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 '')
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dersch

Jetzt passiert grade wieder etwas eigenartiges. Die Pumpe wird über CMD1 eingeschaltet obwohl der Füllstand unter 30 ist???


List vom DOIF


Internals:
   DEF        ([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [08:30-15:59|WE] or [10:30-15:59|AT])
(set TeBachpumpe on, set PushoverDirk msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '', set PushoverDanni msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '')
DOELSEIF
([TeBachpumpe] eq "on" and [16:00]) (set TeBachpumpe off)
DOELSEIF
([TeBachWasserstand:level] < 25) (set TeBachpumpe off, set PushoverDirk msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '', set PushoverDanni msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '')
DOELSEIF
([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [17:30-{sunset("REAL",2800,"20:30","22:30")}]) (set TeBachpumpe on)
DOELSEIF
([TeBachpumpe] eq "on" and [{sunset("REAL",2800,"20:30","22:30")}]) (set TeBachpumpe off)
DOELSEIF
([TeBachpumpe] eq "on" and [TeBachWasserstand] eq "MISSING ACK") (set TeBachpumpe off, set PushoverDirk msg 'Bachlauf Füllstand' 'Keine Verbindung zum Sensor' '' 0 '')
DOELSEIF
([TeBachWasserstand:level] < 30) (set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60) (set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 '')
   NAME       TeBachDOIF
   NR         265
   NTFY_ORDER 50-TeBachDOIF
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-07-17 11:34:27   Device          TeBachpumpe
     2017-07-17 11:34:27   cmd             1
     2017-07-17 11:34:27   cmd_event       TeBachWasserstand
     2017-07-17 11:34:27   cmd_nr          1
     2017-07-17 11:34:27   e_TeBachWasserstand_STATE 24
     2017-07-17 11:34:27   e_TeBachWasserstand_level 24
     2017-07-17 11:34:27   e_TeBachpumpe_STATE on
     2017-07-17 11:34:27   state           cmd_1
     2017-07-17 11:19:54   timer_01_c01    18.07.2017 08:30:00|WE
     2017-07-17 11:19:54   timer_02_c01    17.07.2017 15:59:00|WE
     2017-07-17 11:19:54   timer_03_c01    18.07.2017 10:30:00|AT
     2017-07-17 11:19:54   timer_04_c01    17.07.2017 15:59:00|AT
     2017-07-17 11:19:54   timer_05_c02    17.07.2017 16:00:00
     2017-07-17 11:19:54   timer_06_c04    17.07.2017 17:30:00
     2017-07-17 11:19:54   timer_07_c04    17.07.2017 22:07:58
     2017-07-17 11:19:54   timer_08_c05    17.07.2017 22:07:58
   condition:
     0          InternalDoIf($hash,'TeBachWasserstand','STATE') ne "MISSING ACK" and ReadingValDoIf($hash,'TeBachWasserstand','level') > 30 and DOIF_time($hash,0,1,$wday,$hms,"WE") or DOIF_time($hash,2,3,$wday,$hms,"AT")
     1          InternalDoIf($hash,'TeBachpumpe','STATE') eq "on" and DOIF_time_once($hash,4,$wday)
     2          ReadingValDoIf($hash,'TeBachWasserstand','level') < 25
     3          InternalDoIf($hash,'TeBachWasserstand','STATE') ne "MISSING ACK" and ReadingValDoIf($hash,'TeBachWasserstand','level') > 30 and DOIF_time($hash,5,6,$wday,$hms)
     4          InternalDoIf($hash,'TeBachpumpe','STATE') eq "on" and DOIF_time_once($hash,7,$wday)
     5          InternalDoIf($hash,'TeBachpumpe','STATE') eq "on" and InternalDoIf($hash,'TeBachWasserstand','STATE') eq "MISSING ACK"
     6          ReadingValDoIf($hash,'TeBachWasserstand','level') < 30
   days:
     0          WE
     1          WE
     2          AT
     3          AT
   devices:
     0           TeBachWasserstand
     1           TeBachpumpe
     2           TeBachWasserstand
     3           TeBachWasserstand
     4           TeBachpumpe
     5           TeBachpumpe TeBachWasserstand
     6           TeBachWasserstand
     all         TeBachWasserstand TeBachpumpe
   do:
     0:
       0          set TeBachpumpe on, set PushoverDirk msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 '', set PushoverDanni msg 'Bachlauf gestartet' 'Wasser läuft - der Bach ist toll!' '' 0 ''
     1:
       0          set TeBachpumpe off
     2:
       0          set TeBachpumpe off, set PushoverDirk msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 '', set PushoverDanni msg 'Bachlauf leer' 'Bitte Wasser Nachfüllen' '' 0 ''
     3:
       0          set TeBachpumpe on
     4:
       0          set TeBachpumpe off
     5:
       0          set TeBachpumpe off, set PushoverDirk msg 'Bachlauf Füllstand' 'Keine Verbindung zum Sensor' '' 0 ''
     6:
       0          set GarageRFHEM cmd set TeBachWasserzufuhr on-for-timer 60
       1          set PushoverDirk msg 'Bachlauf Wasserstand niedrig' 'Wasser wird aufgefüllt' '' 0 ''
     7:
   helper:
     event      deviceMsg: on (to CCU),level: 100,pct: 100,on,timedOn: off
     globalinit 1
     last_timer 8
     sleeptimer -1
     timerdev   TeBachWasserstand
     timerevent battery: ok,level: 24,24
     triggerDev TeBachpumpe
     timerevents:
       battery: ok
       level: 24
       24
     timereventsState:
       battery: ok
       level: 24
       state: 24
     triggerEvents:
       deviceMsg: on (to CCU)
       level: 100
       pct: 100
       on
       timedOn: off
     triggerEventsState:
       deviceMsg: on (to CCU)
       level: 100
       pct: 100
       state: on
       timedOn: off
   internals:
     0           TeBachWasserstand:STATE
     1           TeBachpumpe:STATE
     3           TeBachWasserstand:STATE
     4           TeBachpumpe:STATE
     5           TeBachpumpe:STATE TeBachWasserstand:STATE
     all         TeBachWasserstand:STATE TeBachpumpe:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     5          -1
     6          5
   itimer:
   localtime:
     0          1500359400
     1          1500299940
     2          1500366600
     3          1500299940
     4          1500300000
     5          1500305400
     6          1500322078
     7          1500322078
   readings:
     0           TeBachWasserstand:level
     2           TeBachWasserstand:level
     3           TeBachWasserstand:level
     6           TeBachWasserstand:level
     all         TeBachWasserstand:level
   realtime:
     0          08:30:00
     1          15:59:00
     2          10:30:00
     3          15:59:00
     4          16:00:00
     5          17:30:00
     6          22:07:58
     7          22:07:58
   regexp:
     0:
     1:
     2:
     3:
     4:
     5:
     6:
     all:
   state:
     STATE:
   time:
     0          08:30:00
     1          15:59:00
     2          10:30:00
     3          15:59:00
     4          16:00:00
     5          17:30:00
     6          {sunset("REAL",2800,"20:30","22:30")}
     7          {sunset("REAL",2800,"20:30","22:30")}
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          1
     5          3
     6          3
     7          4
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1  2  3
     1           4
     3           5  6
     4           7
   trigger:
   triggertime:
     1500299940:
       localtime  1500299940
       hash:
     1500300000:
       localtime  1500300000
       hash:
     1500305400:
       localtime  1500305400
       hash:
     1500322078:
       localtime  1500322078
       hash:
     1500359400:
       localtime  1500359400
       hash:
     1500366600:
       localtime  1500366600
       hash:
Attributes:
   room       Terrasse
   verbose    5
   waitsame   0:0:0:0:0:1800:0
   weekdays   So,Mo,Di,Mi,Do,Fr,Sa,WE,AT



Log Eintrag
2017.07.17 11:34:27 3: CUL_HM set TeBachpumpe on


List vom Füllstandssensor
Internals:
   DEF        4DD7E7
   HMLAN1_MSGCNT 97
   HMLAN1_RAWMSG E4DD7E7,0000,5348C63C,FF,FFA5,E886104DD7E700000006013000
   HMLAN1_RSSI -91
   HMLAN1_TIME 2017-07-17 11:34:27
   HMUSB_MSGCNT 97
   HMUSB_RAWMSG E4DD7E7,0000,2D4A226E,FF,FFB2,E886104DD7E700000006013000
   HMUSB_RSSI -78
   HMUSB_TIME 2017-07-17 11:34:27
   IODev      HMUSB
   LASTInputDev HMUSB
   MSGCNT     194
   NAME       TeBachWasserstand
   NOTIFYDEV  global
   NR         266
   NTFY_ORDER 50-TeBachWasserstand
   STATE      24
   TYPE       CUL_HM
   lastMsg    No:E8 - t:10 s:4DD7E7 d:000000 06013000
   protCmdDel 2
   protLastRcv 2017-07-17 11:34:27
   protResnd  3 last_at:2017-07-16 06:11:18
   protResndFail 1 last_at:2017-07-16 06:28:49
   protSnd    4 last_at:2017-07-16 06:28:44
   protState  CMDs_done_Errors:1
   rssi_at_HMLAN1 avg:-88.6 min:-98 max:-78 lst:-91 cnt:97
   rssi_at_HMUSB avg:-87.3 min:-100 max:-78 lst:-78 cnt:97
   READINGS:
     2017-07-16 05:48:32   Activity        alive
     2017-07-11 23:04:38   CommandAccepted yes
     2017-07-11 23:04:37   D-firmware      1.3
     2017-07-11 23:04:37   D-serialNr      NEQ1012603
     2017-07-11 23:04:38   PairedTo        0x000000
     2017-07-07 23:03:09   R-caseDesign    verticalBarrel
     2017-07-07 23:03:34   R-caseHigh      100 cm
     2017-07-07 23:03:34   R-caseLength    100 cm
     2017-07-07 23:03:54   R-caseWidth     100 cm
     2017-07-11 23:04:38   R-cyclicInfoMsgDis 5
     2017-07-07 23:03:09   R-fillLevel     100 cm
     2017-07-07 23:04:35   R-meaLength     100 cm
     2017-07-07 22:32:35   R-pairCentral   0x000000
     2017-07-07 23:03:09   R-sign          off
     2017-07-07 23:03:09   R-useCustom     off
     2017-07-07 23:03:09   R-waterUppThr   255
     2017-07-07 23:03:09   R-waterlowThr   255
     2017-07-11 23:04:38   RegL_00.        02:01 0A:00 0B:00 0C:00 11:05 14:06 18:00 00:00
     2017-07-11 23:04:39   RegL_01.        06:FF 07:FF 08:00 22:64 30:06 5B:01 5E:00 5F:64  62:00 63:64 66:00 67:64 6A:00 6B:64 6C:00 6D:64  6E:00 00:00
     2017-07-17 11:34:27   battery         ok
     2017-07-17 11:34:27   level           24
     2017-07-07 22:38:08   powerOn         2017-07-07 22:38:08
     2017-07-17 11:34:27   recentStateType info
     2017-07-17 11:34:27   state           24
   helper:
     HM_CMDNR   232
     mId        009F
     rxType     12
     supp_Pair_Rep 0
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     io:
       newChn     +4DD7E7,00,00,00
       nextSend   1500284067.43596
       prefIO
       rxt        2
       vccu
       p:
         4DD7E7
         00
         00
         00
     mRssi:
       mNo        E8
       io:
         HMLAN1     -91
         HMUSB      -76
     prt:
       bErr       0
       sProc      0
     q:
       qReqConf
       qReqStat
     role:
       chn        1
       dev        1
     rssi:
       at_HMLAN1:
         avg        -88.6082474226804
         cnt        97
         lst        -91
         max        -78
         min        -98
       at_HMUSB:
         avg        -87.3092783505155
         cnt        97
         lst        -78
         max        -78
         min        -100
     shadowReg:
     tmpl:
Attributes:
   IODev      HMUSB
   actCycle   028:00
   actStatus  alive
   autoReadReg 4_reqStatus
   devStateIcon 6\d.*:measure_battery_100@blue 5\d.*:measure_battery_75@blue 4\d.*:measure_battery_50@blue 3\d.*:measure_battery_25@blue 2\d.*:measure_battery_25@red 1\d.*:measure_battery_0@red
   expert     2_raw
   firmware   1.3
   group      Garten
   icon       weather_humidity
   model      HM-Sen-Wa-Od
   peerIDs    00000000,
   room       Terrasse
   serialNr   NEQ1012603
   subType    sensor



Das verstehe ich nun gar nicht mehr :( Der Füllstandssensor hat zwar einen CMD-Error-1 aber sein Level ist ja eindeutig und er misst auch. Mit dem ursprünglichen  Pushover Problem bei CMD7 hat das zwar nun nichts zu tun. Aber auch dieses Verhalten verstehe ich grade nicht. Hat bislang immer funktioniert wenn ich den Vorratsbehälter nicht manuell nachgefüllt habe.

Brockmann

Zitat von: Dersch am 17 Juli 2017, 11:43:52
Jetzt passiert grade wieder etwas eigenartiges. Die Pumpe wird über CMD1 eingeschaltet obwohl der Füllstand unter 30 ist???
AND bindet stärker als OR. Was Du da ausformuliert stehen hast ist:
(([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30 and [08:30-15:59|WE]) or ([10:30-15:59|AT]))

Diese Bedingung ist immer wahr, wenn sie zwischen 10:30 und 15:59 irgendwie getriggert wird.

Was Du meinst ist vermutlich:
(([TeBachWasserstand] ne "MISSING ACK" and [TeBachWasserstand:level] > 30) and ([08:30-15:59|WE] or [10:30-15:59|AT]))

Deshalb beim Kombinieren von AND und OR lieber die Klammern explizit hinschreiben.

Dersch

Vielen Dank für den tollen Tipp! Das macht Sinn und wieder was gelernt :)

Dersch

Das DOIF funktioniert nun auch mit CMD7 wie es soll! Danke für eure Hilfe. Die Tipps haben gewirkt :)