FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Knallfrosch am 27 Oktober 2025, 00:53:02

Titel: DOIF, Ausführungen mit unterschiedlichen Bedingungen
Beitrag von: Knallfrosch am 27 Oktober 2025, 00:53:02
Hallo,

ich nutze folgendes DOIF:

([3D_Drucker:ENERGY_Power] > 100)
(setreading 3D_Drucker_Zustand status 3D-Druck läuft)
DOELSEIF ([3D_Drucker:ENERGY_Power] < 20)
(setreading 3D_Drucker_Zustand status 3D-Druck beendet)
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542)
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542)

Soweit so gut!

Nun würde ich aber gerne den 2. und 3. Set-Befehl des DOELSEIF nur ausführen, wenn die Uhrzeit ([06:00-23:00]) ist.

Wie kann ich das realisieren?

([3D_Drucker:ENERGY_Power] > 100)
(setreading 3D_Drucker_Zustand status 3D-Druck läuft)

DOELSEIF ([3D_Drucker:ENERGY_Power] < 20)
(setreading 3D_Drucker_Zustand status 3D-Druck beendet)
([06:00-23:00])
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542)
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542)

Funktioniert natürlich nicht!


Danke für die Hilfe.


Grüße


Titel: Aw: DOIF, Ausführungen mit unterschiedlichen Bedingungen
Beitrag von: rabehd am 27 Oktober 2025, 05:33:39
Ernsthaft?
Ich sehe da schon zu Beginn in der Commander Beispiele.

Warum mischt Du Bedingungen und Ausführung?
Titel: Aw: DOIF, Ausführungen mit unterschiedlichen Bedingungen
Beitrag von: Per am 27 Oktober 2025, 07:30:42
Du kannst in den Commands IF verwenden. Sonst müsstest du 3 Bedingungen nutzen und die Commands wiederholen, wäre mMn nicht so elegant.
Oder Perl Mode nehmen.
Titel: Aw: DOIF, Ausführungen mit unterschiedlichen Bedingungen
Beitrag von: Knallfrosch am 27 Oktober 2025, 10:46:36
Zitat von: rabehd am 27 Oktober 2025, 05:33:39Ernsthaft?
Ich sehe da schon zu Beginn in der Commander Beispiele.

Warum mischt Du Bedingungen und Ausführung?

Ernsthaft?
Ich sehe da schon zu Beginn nur das Ziel "zeigen, welch toller Hecht" man ist".

Warum sparst du dir die Antwort nicht, wenn du nicht bereit bist ordentlich zu helfen?


Zitat von: Per am 27 Oktober 2025, 07:30:42Du kannst in den Commands IF verwenden. Sonst müsstest du 3 Bedingungen nutzen und die Commands wiederholen, wäre mMn nicht so elegant.
Oder Perl Mode nehmen.

Danke für den Denkanstoss, aber ich bekomme das nicht umgesetzt.

([3D_Drucker:ENERGY_Power] > 50)
(setreading 3D_Drucker_Zustand status 3D-Druck läuft)

DOELSEIF ([3D_Drucker:ENERGY_Power] < 20)
(setreading 3D_Drucker_Zustand status 3D-Druck beendet)
IF ([06:00-23:00] eq "true")
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542-247e-4ae4-966f-ac0295396bcd)
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542-247e-4ae4-966f-ac0295396bcd)

Funktioniert nicht!


Also, falls jemand bereit ist mir zu helfen......

Danke im Voraus.



Grüße



PS: Wenn ich eine Lösung hätte oder den Fehler finden würde, würde ich nicht Fragen.  ;)
Titel: Aw: DOIF, Ausführungen mit unterschiedlichen Bedingungen
Beitrag von: rabehd am 27 Oktober 2025, 11:42:13
Zitat von: Knallfrosch am 27 Oktober 2025, 10:46:36Warum sparst du dir die Antwort nicht, wenn du nicht bereit bist ordentlich zu helfen?
Was meinst Du mit ordentlich?
Ich habe Dir einen konkreten Hinweis zur Commadref gegeben.
Ich habe Dir gesagt was ich für falsch finde.

DOELSEIF ([3D_Drucker:ENERGY_Power] < 20)
(setreading 3D_Drucker_Zustand status 3D-Druck beendet)
IF ([06:00-23:00] eq "true")
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542-247e-4ae4-966f-ac0295396bcd)
(set ECHO_G090U607835206H1 routine_play fhemprintend@amzn1.alexa.automation.d0aa3542-247e-4ae4-966f-ac0295396bcd)
Das wird NIE funktionieren.
Was willst Du?
Zitat(setreading 3D_Drucker_Zustand status 3D-Druck beendet)
und nur tagsüber kommt Alexa ins Spiel ? In dem Fall fehlt eine Klammer (auf und zu).
Grundsätzlich gilt: Bedigungen prüfen -> ToDo
Wenn Du IF in die Ausführung bringst (was möglich ist) dann gehört da auch die in DOIF üblich Klammer drum.
Titel: Aw: DOIF, Ausführungen mit unterschiedlichen Bedingungen
Beitrag von: Damian am 27 Oktober 2025, 12:11:19
Also, IF funktioniert nicht mit Zeitangaben. Um mal konkreter zu werden: Du fügst einen weiteren DOELSEIF-Zweig hinzu und verknüpfst die Zeit mit "and" mit deinem ENERGY-Power-Vergleich.