DoIF Abfragen /ABzweigungen nach Bedingung

Begonnen von masterpete23, 08 Dezember 2022, 13:41:00

Vorheriges Thema - Nächstes Thema

masterpete23

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?

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

juergen012

(set teleBot message NEU Trockner ist fertig NEU!)

entfernen?
Fhem unter Proxmox

Damian

#3
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"}}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

masterpete23

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"}}



Damian

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)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF