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
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.
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...
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.)
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
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
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
Es gibt aber kein PushoverDirk in CMD_7...
Ja das habe ich doch rausgenommen wie oben geschrieben. Aber ich packe es wieder rein zum debuggen.
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 '')
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.
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.
Vielen Dank für den tollen Tipp! Das macht Sinn und wieder was gelernt :)
Das DOIF funktioniert nun auch mit CMD7 wie es soll! Danke für eure Hilfe. Die Tipps haben gewirkt :)