FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: satprofi am 21 August 2017, 08:33:52

Titel: doif auf cmd triggern
Beitrag von: satprofi am 21 August 2017, 08:33:52
hallo. ist es möglich doif auf eigenen status abzufragen und diesen in neues doelseif zu verknüpfen?



Gesendet von meinem ONEPLUS A5000 mit Tapatalk

Titel: Antw:doif auf cmd triggern
Beitrag von: Per am 21 August 2017, 13:40:04
Ja, ist es. Musst nur aufpassen, ob du es triggernd (attr selftrigger (https://fhem.de/commandref_DE.html#DOIF_selftrigger)) oder nur lesend ([?$SELF:cmd] (https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger)) haben möchtest.
Titel: Antw:doif auf cmd triggern
Beitrag von: satprofi am 21 August 2017, 14:06:53
Sa = ?

LG
Titel: Antw:doif auf cmd triggern
Beitrag von: satprofi am 21 August 2017, 16:36:37
Hallo.
habe folgendes jetzt

define Ladestrom DOIF ((([Ueberschuss] >1400 and [Lader] eq "on" and [Wert_I:A] !=25) or (([Ueberschuss] >10 and [Ueberschuss] <2500) and [Xtender_Batt_A] >24))) ("python2 /usr/local/bin/25Amp.py")
DOELSEIF ((([Ueberschuss] >1200 and [Lader] eq "on" and [Wert_I:A] !=22) or (([Ueberschuss] >10 and [Ueberschuss] <1500) and [Xtender_Batt_A] >22))) ("python2 /usr/local/bin/22Amp.py")
DOELSEIF ((([Ueberschuss] >1100 and [Lader] eq "on" and [Wert_I:A] !=20) or (([Ueberschuss] >10 and [Ueberschuss] <1500) and [Xtender_Batt_A] >20))) ("python2 /usr/local/bin/20Amp.py")
DOELSEIF ([Ladestrom:state] eq "cmd_1" [Ueberschuss] <0) ("python2 /usr/local/bin/22Amp.py")
DOELSEIF ([Ladestrom:state] eq "cmd_1" [Ueberschuss] <0) ("python2 /usr/local/bin/20Amp.py")
DOELSEIF ([Ladestrom] eq "cmd_3" [Ueberschuss] <0) ("python2 /usr/local/bin/18Amp.py")
DOELSE


aber in den "Probably associated with" scheint das eigene DOIF nicht auf.
Vorhaben: Wenn bei cmd_1 der Ueberschuss unter 0 fällt, soll auf cmd_2 geswitcht werden, wenn auf cmd_2 auch der wert unter 0 ist auf cmd_3.

klappt das überhaupt so?
Titel: Antw:doif auf cmd triggern
Beitrag von: Brockmann am 22 August 2017, 07:52:22
Zitat von: satprofi am 21 August 2017, 16:36:37
aber in den "Probably associated with" scheint das eigene DOIF nicht auf.
Warum sollte es? Das wäre ungefähr so sinnvoll wie die Aussage, dass Du zu den Menschen gehörst, die Du kennst.

Zitat von: satprofi am 21 August 2017, 16:36:37
klappt das überhaupt so?
Eher nicht. Zwischen "cmd_..." und [Ueberschuss] muss jeweils ein and.
Und in der zweiten dieser Zeile sollte es vermutlich "cmd_2" heißen?

Ansonsten: Das DOELSE am Ende ist ein Kandidat für unerwünschte Nebeneffekte. Ist es wirklich nötig?
Titel: Antw:doif auf cmd triggern
Beitrag von: satprofi am 22 August 2017, 15:00:54
Hallo.
danke für den Hinweis, irgendwann sieht man den Wald vor lauter Bäume nicht mehr.
Es klappt, und ich habe es dahingehend abgeändert:


DOELSEIF ([Ueberschuss] >500 and [Lader] eq "on" and [Wert_I:A] !=8) ("python2 /usr/local/bin/8Amp.py")
DOELSEIF ([Ueberschuss] >400 and [Lader] eq "on" and [Wert_I:A] !=6) ("python2 /usr/local/bin/6Amp.py")
DOELSEIF ([Ueberschuss] >300 and [Lader] eq "on" and [Wert_I:A] !=4) ("python2 /usr/local/bin/4Amp.py")
DOELSEIF (([Ueberschuss] >200 and [Lader] eq "on" and [Wert_I:A] >2.5) or ([Lader] eq "off" and [Wert_I:A] >2)) ("python2 /usr/local/bin/2Amp.py")
DOELSEIF ([Ladestrom:state] eq "cmd_1" and [Ueberschuss] <0) ("python2 /usr/local/bin/6Amp.py")
DOELSEIF (([Ladestrom:state] eq "cmd_2" or [Ladestrom:state] eq "cmd_6") and [Ueberschuss] <0) ("python2 /usr/local/bin/4Amp.py")
DOELSEIF (([Ladestrom:state] eq "cmd_3" or [Ladestrom:state] eq "cmd_7") and [Ueberschuss] <0) ("python2 /usr/local/bin/2Amp.py")


jetzt startet das Spiel bei mehr als 500W, wenn jetzt der Uberschuss unter 0 fällt triggert cmd_1, wenn es weiterhin unter 0 bleibt triggert cmd_6, und so weiter.

damit ist auch mein weiterer thread (https://forum.fhem.de/index.php/topic,75640.0.html) erledigt
Titel: Antw:doif auf cmd triggern
Beitrag von: satprofi am 22 August 2017, 16:05:26
so, habe es noch vereinfacht

DOELSEIF ([Ueberschuss] >500 and [Lader] eq "on" and [Wert_I:A] !=8) ("python2 /usr/local/bin/8Amp.py")
DOELSEIF ([Ueberschuss] >400 and [Lader] eq "on" and [Wert_I:A] !=6) ("python2 /usr/local/bin/6Amp.py")
DOELSEIF ([Ueberschuss] >300 and [Lader] eq "on" and [Wert_I:A] !=4) ("python2 /usr/local/bin/4Amp.py")
DOELSEIF (([Ueberschuss] >200 and [Lader] eq "on" and [Wert_I:A] >2.5) or ([Lader] eq "off" and [Wert_I:A] >2)) ("python2 /usr/local/bin/2Amp.py")
DOELSEIF ([Ladestrom:state] eq "8A" and [Ueberschuss] <0) ("python2 /usr/local/bin/6Amp.py")
DOELSEIF ([Ladestrom:state] eq "6A" and [Ueberschuss] <0) ("python2 /usr/local/bin/4Amp.py")
DOELSEIF ([Ladestrom:state] eq "4A" and [Ueberschuss] <0) ("python2 /usr/local/bin/2Amp.py")


Man muss cmdState auf attr cmdState 8A|6A|4A|2A setzen