Autor Thema: (Gelöst) DOIF-Problem  (Gelesen 392 mal)

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
(Gelöst) DOIF-Problem
« am: 29 November 2022, 14:47:20 »
Hi,

mein Zusammengefriemeltes funktioniert nicht (Fehlermeldung: "expected DOELSEIF or DOELSE" - aber das steht doch drin?!?) 

Ich möchte Folgendes erreichen:
Zu bestimmten Uhrzeiten soll geprüft werden, ob ein Dummy auf "off" steht. Ist das der Fall, soll nichts passieren, andernfalls sollen Meldungen abgesetzt werden.
So weit bin ich:

define d_HeizungBueroM DOIF ([12:30] or [18:00] or [19:00] or [20:00] or [21:00] or [22:00] or [23:00]) && {if (Value("HeizungBueroM") eq "on" {fhem("set Sonos_Wohnzimmer Speak 50 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet! ;; sleep 10 ;; set Sonos_Unnamed_Room Speak 30 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!  ;; set teleBot message Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!)} DOELSE return
Sieht jemand den Fehler?

Vielen Dank,
Ingo
« Letzte Änderung: 30 November 2022, 08:38:29 von is2late »
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:DOIF-Problem
« Antwort #1 am: 29 November 2022, 15:16:14 »
Bin einen Schritt weiter: Der Fehler liegt offenbar hier

&& {if (Value("HeizungBueroM") eq "on"}
Nehme ich diese Bedingung raus, wird der Rest akzeptiert.

Aber was ist falsch an Obigem?

LG
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Nobbynews

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:DOIF-Problem
« Antwort #2 am: 29 November 2022, 15:22:17 »
define d_HeizungBueroM DOIF ([12:30] or [18:00] or [19:00] or [20:00] or [21:00] or [22:00] or [23:00]) && {if (Value("HeizungBueroM") eq "on" {fhem("set Sonos_Wohnzimmer Speak 50 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet! ;; sleep 10 ;; set Sonos_Unnamed_Room Speak 30 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!  ;; set teleBot message Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!)} DOELSE return
Sieht jemand den Fehler?
Das sind wohl mehrere Fehler drin, insbesondere die if-Abfrage in der Bedingung.
Folgender ungetester Vorschlag von mir als DOIF-Laie:
define_HeizungBueroM DOIF
 ([12:30] or [18:00] or [19:00] or [20:00] or [21:00] or [22:00] or [23:00]) and [HeizungBueroM] eq "on")
  ({fhem("set Sonos_Wohnzimmer Speak 50 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!"})
  ({fhem("set Sonos_Unnamed_Room Speak 30 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!;
          set teleBot message Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!")})
DOELSE
 return

attr d_HeizungBueroM wait 0:10,0
Das Attribut wait ersetzt das 'sleep 10'.
« Letzte Änderung: 29 November 2022, 17:50:46 von Nobbynews »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:DOIF-Problem
« Antwort #3 am: 29 November 2022, 15:22:48 »
Weiter gehts:

defmod d_HeizungBueroM DOIF ([12:30] or [18:00] or [19:00] or [20:00] or [21:00] or [22:00] or [23:00] and [HeizungBueroM:on]) {fhem("set Sonos_Wohnzimmer Speak 50 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet! ;; sleep 10 ;; set Sonos_Unnamed_Room Speak 30 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!  ;; set teleBot message Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!)} DOELSE return
Bleibt ohne Fehlermeldung. Funktion ist noch zu testen.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:DOIF-Problem
« Antwort #4 am: 29 November 2022, 15:23:42 »
Vielen Dank, Nobbynews, probiere ich alternativ.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Nobbynews

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:DOIF-Problem
« Antwort #5 am: 29 November 2022, 15:46:23 »
and [HeizungBueroM:on])Bleibt ohne Fehlermeldung. Funktion ist noch zu testen.
Wird nicht funktionieren, da der Dummy kein Reading "on" hat.
Wenn schon, dann:
[HeizungBueroM:"on"]Das ist aber ein Ereignis und kein Zustand. Und Du willst ja den Zustand abfragen, oder?
Alternativ:
[HeizungBueroM:state] eq "on"

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:DOIF-Problem
« Antwort #6 am: 29 November 2022, 16:36:43 »
Du hast Recht, es funktioniert nicht (richtig).
Bei Deinem Code gibt es aber folgende Fehlermeldung:

d_HeizungBueroM DOIF: expected DOELSEIF or DOELSE: and [HeizungBueroM]:state eq "on") ({fhem("set Sonos_Wohnzimmer Speak 50 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!"}) ({fhem("set Sonos_Unnamed_Room Speak 30 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!.....

Ich probiere noch ein bisschen herum...

LG
« Letzte Änderung: 29 November 2022, 16:41:47 von is2late »
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Nobbynews

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:DOIF-Problem
« Antwort #7 am: 29 November 2022, 16:55:19 »
[HeizungBueroM]:state eq "on")
Es muss ja auch heißen:
[HeizungBueroM:state] eq "on" Wenn schon kopieren, dann bitte auch richtig.

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:DOIF-Problem
« Antwort #8 am: 29 November 2022, 17:20:00 »
Sorry, Du hast Recht!

Dennoch gibt es die Fehlermeldung, dass (zumind. eine) Klammer fehlt. ich habe daher jetzt wie folgt geändert:

defmod d_HeizungBueroM DOIF ([17:17] or [18:00] or [19:00] or [20:00] or [21:00] or [22:00] or [23:00] and [HeizungBueroM:state] eq "on") ({fhem("set Sonos_Wohnzimmer Speak 50 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet")}) ({fhem("set Sonos_Unnamed_Room Speak 30 de |TempleBell| Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!")}) ({fhem("set teleBot message Achtung, die Schreibtischheizung bei Baerbel ist noch eingeschaltet!")}) DOELSE return
Funktioniert jetzt, vielen Dank!!!
« Letzte Änderung: 29 November 2022, 17:37:21 von is2late »
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Nobbynews

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:DOIF-Problem
« Antwort #9 am: 29 November 2022, 17:53:22 »
Dennoch gibt es die Fehlermeldung, dass (zumind. eine) Klammer fehlt. ich habe daher jetzt wie folgt geändert:
Stimmt, hatte eine ')' vergessen. Daher ja auch ungetestet. Hab's oben geändert.

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:(Gelöst) DOIF-Problem
« Antwort #10 am: 29 November 2022, 20:04:40 »
Hm da war ich wohl zu voreilig.
 Derzeit werden nämlich die Meldungen auch dann abgesetzt, wenn der Dummy auf off steht.
Wie kann das bloß sein??? Eine Fehlermeldung gibt es ja nicht, aber ist da trotzdem noch ein Syntax- oder Logikfehler drin?

Vielen Dank!
« Letzte Änderung: 29 November 2022, 20:34:33 von is2late »
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Nobbynews

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:(Gelöst) DOIF-Problem
« Antwort #11 am: 30 November 2022, 04:40:22 »
Wie kann das bloß sein???
Das dürfte an der Rangfolge der Operatoren liegen.
Klammere mal die or-Verknüpfungen ein, also
(([17:17] or [18:00] or [19:00] or [20:00] or [21:00] or [22:00] or [23:00]) and [HeizungBueroM:state] eq "on")
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline is2late

  • Sr. Member
  • ****
  • Beiträge: 536
Antw:DOIF-Problem
« Antwort #12 am: 30 November 2022, 08:38:11 »
Super, Nobbynews, das ist die Lösung! Jetzt funktioniert es.

Herzlichen Dank für Deine Mühe!

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

 

decade-submarginal