FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: masterpete23 am 08 Dezember 2022, 13:41:00

Titel: DoIF Abfragen /ABzweigungen nach Bedingung
Beitrag von: masterpete23 am 08 Dezember 2022, 13:41:00
Hi, ich hoffe ich bin hier richtig.
Ich habe einen Codeschnipsel (ja, irgendwo kopiert ohne ihn 100% nachvollziehen zu können - aber ich verstehe ihn).
Es ist die Def eines DoIF für meinen Trockner:
([MQTT2_SP1_02:ENERGY_Power] > 0.1 and [?dTrockner] =~ "cmd_4|initialized")
      (({Log 3, "Trockner: Ein"}))## Schalter ein
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_1")
     (({Log 3, "Trockner: Programmstart"}))
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_2" and [?08:00-22:00])## Ende (wenn länger als 5 min < 20)
     (({Log 3, "Trockner: Programmende"}),(set teleBot message NEU Trockner ist fertig NEU!) (set ECHO_G0911M10017312DM sounds glocken) (sleep 3) (set ECHO_G0911M10017312DM speak Der Trockner ist fertig))
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] < 0.1 or [MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_3")
     (({Log 3, "Trockner: Aus"}))## Schalter aus oder Neustart ohne aus


So wird zwischen [?08:00-22:00]) dies ausgeführt:   (({Log 3, "Trockner: Programmende"}),(set teleBot message NEU Trockner ist fertig NEU!) (set ECHO_G0911M10017312DM sounds glocken) (sleep 3) (set ECHO_G0911M10017312DM speak Der Trockner ist fertig))

Ich hätte gerne das nur (set ECHO_G0911M10017312DM sounds glocken) (sleep 3) (set ECHO_G0911M10017312DM speak Der Trockner ist fertig) zwischen 8-22 Uhr ausgeführt wird und der Rest immer.
WIe gehe ich am besten vor?
Titel: Antw:DoIF Abfragen /ABzweigungen nach Bedingung
Beitrag von: Damian am 08 Dezember 2022, 14:08:32
Zitat von: masterpete23 am 08 Dezember 2022, 13:41:00
Hi, ich hoffe ich bin hier richtig.
Ich habe einen Codeschnipsel (ja, irgendwo kopiert ohne ihn 100% nachvollziehen zu können - aber ich verstehe ihn).
Es ist die Def eines DoIF für meinen Trockner:
([MQTT2_SP1_02:ENERGY_Power] > 0.1 and [?dTrockner] =~ "cmd_4|initialized")
      (({Log 3, "Trockner: Ein"}))## Schalter ein
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_1")
     (({Log 3, "Trockner: Programmstart"}))
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_2" and [?08:00-22:00])## Ende (wenn länger als 5 min < 20)
     (({Log 3, "Trockner: Programmende"}),(set teleBot message NEU Trockner ist fertig NEU!) (set ECHO_G0911M10017312DM sounds glocken) (sleep 3) (set ECHO_G0911M10017312DM speak Der Trockner ist fertig))
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] < 0.1 or [MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_3")
     (({Log 3, "Trockner: Aus"}))## Schalter aus oder Neustart ohne aus


So wird zwischen [?08:00-22:00]) dies ausgeführt:   (({Log 3, "Trockner: Programmende"}),(set teleBot message NEU Trockner ist fertig NEU!) (set ECHO_G0911M10017312DM sounds glocken) (sleep 3) (set ECHO_G0911M10017312DM speak Der Trockner ist fertig))

Ich hätte gerne das nur (set ECHO_G0911M10017312DM sounds glocken) (sleep 3) (set ECHO_G0911M10017312DM speak Der Trockner ist fertig) zwischen 8-22 Uhr ausgeführt wird und der Rest immer.
WIe gehe ich am besten vor?

Dann musst du wohl konventionell vorgehen: [08:00-22:00] aus der Bedingung rausnehmen und im Ausführungsteil mit if ($hm ge "08:00" and $hm lt "22:00") den zweiten Teil einleiten.
Titel: Antw:DoIF Abfragen /ABzweigungen nach Bedingung
Beitrag von: juergen012 am 08 Dezember 2022, 14:56:04
(set teleBot message NEU Trockner ist fertig NEU!)

entfernen?
Titel: Antw:DoIF Abfragen /ABzweigungen nach Bedingung
Beitrag von: Damian am 08 Dezember 2022, 17:06:28
Zitat von: juergen012 am 08 Dezember 2022, 14:56:04
(set teleBot message NEU Trockner ist fertig NEU!)

entfernen?

DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_2")## Ende (wenn länger als 5 min < 20)
    {Log 3, "Trockner: Programmende";fhem "set teleBot message NEU Trockner ist fertig NEU!"; if ($hm ge "08:00" and $hm lt "22:00") {fhem"set ECHO_G0911M10017312DM sounds glocken;sleep 3;set ECHO_G0911M10017312DM speak Der Trockner ist fertig"}}
Titel: Antw:DoIF Abfragen /ABzweigungen nach Bedingung
Beitrag von: masterpete23 am 08 Dezember 2022, 22:22:35
Danke. was ist denn der Unterschied zwischen:
fhem "set teleBot message NEU Trockner ist fertig NEU!"
und
(set teleBot message NEU Trockner ist fertig NEU!)
?

Zitat von: Damian am 08 Dezember 2022, 17:06:28
DOELSEIF ([MQTT2_SP1_02:ENERGY_Power] > 20 and [?dTrockner] eq "cmd_2")## Ende (wenn länger als 5 min < 20)
    {Log 3, "Trockner: Programmende";fhem "set teleBot message NEU Trockner ist fertig NEU!"; if ($hm ge "08:00" and $hm lt "22:00") {fhem"set ECHO_G0911M10017312DM sounds glocken;sleep 3;set ECHO_G0911M10017312DM speak Der Trockner ist fertig"}}


Titel: Antw:DoIF Abfragen /ABzweigungen nach Bedingung
Beitrag von: Damian am 08 Dezember 2022, 23:03:42
Das eine ist Perl und das andere ist FHEM. Das wundert mich jetzt aber, dass du den Unterschied nicht kennst, wenn du selbst beide Modi benutzt (Log ist auch Perl und nicht FHEM)