Autor Thema: Probleme mit meinem "or" DOIF  (Gelesen 580 mal)

Offline M.Piet

  • Full Member
  • ***
  • Beiträge: 238
Probleme mit meinem "or" DOIF
« am: 25 Juni 2022, 10:41:58 »
Moin Zusammen,

ich scheitere grade an einer einfachen Aufgabe.

Ich habe einen DOIF als "oder" aufgebaut. Hintergrund: ich möchte, dass der Solarkreis am Pool nur aktiv ist, wenn es auch ein halbwegs sonniger Tag ist. Darum schau ich ganz simpel, was Proplanta für den Nachmittag vorhersagt. Tritt einer der Bedinungen zu, soll "Solar_Wetter_Prolanta" auf "Solar_Wetter_On" gesetzt werden. Bei allen anderen Bedinungen auf "Off"

[Wetter_PROPLANTA:fc0_weatherDay:"heiter"] or [Wetter_PROPLANTA:fc0_weatherDay:"sonnig"] or [Wetter_PROPLANTA:fc0_weatherDay:"bedeckt"] (set Solar_Wetter_Prolanta Solar_Wetter_On) DOELSE (set Solar_Wetter_Prolanta Solar_Wetter_Off)
Da "Wetter_PROPLANTA:fc0_weatherDay" sich zuletzt um 17:32 geändert hat, und das Reading nicht auf "heiter", "sonnig" oder "bedeckt" steht, sollte mein Dummy doch auf "Solar_Wetter_Off". stehen. Er ist aber unverändert. Seit 2 Tagen unverändert.

Oder mache ich einen Denkfehler?
Danke schon mal für die Hilfe :)

PS: ja, ich habe in meinem Device Proplanta falsch geschrieben... xD

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18232
  • Stoppt den Unicode-Irrsinn!
Antw:Probleme mit meinem "or" DOIF
« Antwort #1 am: 25 Juni 2022, 11:20:59 »
Fehlt da vielleicht eine umschließende Klammer um die Gesamtheit der drei Vergleiche?
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4566
Antw:Probleme mit meinem "or" DOIF
« Antwort #2 am: 25 Juni 2022, 11:43:16 »
bitte ein list des DOIF im Fehlerzustand.
Alles andere ist raten.....

Ich würde das auch eher über eine Zustandsabfrage machen anstatt der Events.
([DEVICE:READING] =~ "version1|version2|version3") (set BLA on) DOELSE (set BLA off)
« Letzte Änderung: 25 Juni 2022, 11:45:45 von Frank_Huber »
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Reinhard.M

  • Full Member
  • ***
  • Beiträge: 302
Antw:Probleme mit meinem "or" DOIF
« Antwort #3 am: 26 Juni 2022, 10:54:33 »
Moin Zusammen,

ich scheitere grade an einer einfachen Aufgabe.

Ich habe einen DOIF als "oder" aufgebaut. Hintergrund: ich möchte, dass der Solarkreis am Pool nur aktiv ist, wenn es auch ein halbwegs sonniger Tag ist. Darum schau ich ganz simpel, was Proplanta für den Nachmittag vorhersagt. Tritt einer der Bedinungen zu, soll "Solar_Wetter_Prolanta" auf "Solar_Wetter_On" gesetzt werden. Bei allen anderen Bedinungen auf "Off"

[Wetter_PROPLANTA:fc0_weatherDay:"heiter"] or [Wetter_PROPLANTA:fc0_weatherDay:"sonnig"] or [Wetter_PROPLANTA:fc0_weatherDay:"bedeckt"] (set Solar_Wetter_Prolanta Solar_Wetter_On) DOELSE (set Solar_Wetter_Prolanta Solar_Wetter_Off)
Da "Wetter_PROPLANTA:fc0_weatherDay" sich zuletzt um 17:32 geändert hat, und das Reading nicht auf "heiter", "sonnig" oder "bedeckt" steht, sollte mein Dummy doch auf "Solar_Wetter_Off". stehen. Er ist aber unverändert. Seit 2 Tagen unverändert.

Oder mache ich einen Denkfehler?
Danke schon mal für die Hilfe :)

PS: ja, ich habe in meinem Device Proplanta falsch geschrieben... xD

Hallo M.Piet!
Für mich sieht deine Beschreibung der Event States falsch aus. Fall das Reading "fc0_weatherDay" heißt und du die Werte heiter, sonnig und bedeckt triggern willst müsste es meines Erachtens folgendermaßen aussehen:

[Wetter_PROPLANTA:"fc0_weatherDay: heiter"] or [Wetter_PROPLANTA:"fc0_weatherDay: sonnig"] or [Wetter_PROPLANTA:"fc0_weatherDay: bedeckt"] (set Solar_Wetter_Prolanta Solar_Wetter_On) DOELSE (set Solar_Wetter_Prolanta Solar_Wetter_Off)

Das Reading muss zusammen mit dem erwarteten Ergebnis in Anführungszeichen stehen und exakt dem entsprechen was als Event im Monitor zu sehen ist. Daher auch das Leerzeichen. Wenn du auf Nummer Sicher gehen willst einmal die Events im Monitor anschauen.

Gruß Reinhard
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline M.Piet

  • Full Member
  • ***
  • Beiträge: 238
Antw:Probleme mit meinem "or" DOIF
« Antwort #4 am: 27 Juni 2022, 11:04:16 »
Ich würde das auch eher über eine Zustandsabfrage machen anstatt der Events.
([DEVICE:READING] =~ "version1|version2|version3") (set BLA on) DOELSE (set BLA off)
Genau das hat mir geholfen. :)
Vielen Dank. Jetzt macht mein DOIF was er soll. :)

Offline M.Piet

  • Full Member
  • ***
  • Beiträge: 238
Antw:Probleme mit meinem "or" DOIF
« Antwort #5 am: 27 Juni 2022, 14:37:00 »
Nun aber doch noch eine Frage.

Nun möchte ich einen weiteren "and" -DOIF.
Er soll den Stellmotor der Solaranlage nur aktiv schalten, wenn alle 4 Bedingungen erfüllt sind. Die 4 Quellen sind dummys. Ich frage mich, warum der DOIF nichts macht, obwohl alle 4 Bedingungen zuteffen. Gibt es bei einem "and" DOIF was anderes zu beachten?
(Zum testen wird ein Dummy geschaltet, später wird es der Stellmotor sein).

Wäre nett, wenn mir da noch jemand helfen könnte. Danke schon mal.

[Solar_Zeitschaltuhr:"state: Solar_Zeit_On"] and [Solar_Wetter_Prolanta:"state: Solar_Wetter_On"] and [Solar_An_Aus:"state: Solar_On"] and [Solar_Temp_On:"state: Solar_Temp_On"](set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)
Der DOIF:
Internals:
   CFGFN     
   DEF        [Solar_Zeitschaltuhr:"state: Solar_Zeit_On"] and [Solar_Wetter_Prolanta:"state: Solar_Wetter_On"] and [Solar_An_Aus:"state: Solar_On"] and [Solar_Temp_On:"state: Solar_Temp_On"](set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)
   FUUID      62b99850-f33f-8a41-1979-cab6838f356da661
   MODEL      Perl
   NAME       Solar_Steuerung_4_Zustaende_DOIF
   NOTIFYDEV  global
   NR         3753988
   NTFY_ORDER 50-Solar_Steuerung_4_Zustaende_DOIF
   STATE      initialized
   TYPE       DOIF
   VERSION    25386 2021-12-28 22:19:25
   READINGS:
     2022-06-27 14:32:01   mode            enabled
     2022-06-27 14:32:01   state           initialized
   Regex:
     accu:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   perlblock:
   uiState:
   uiTable:
Attributes:
   room       Pool


Einer der 4 Dummys:
Internals:
   CFGFN     
   FUUID      62b5895f-f33f-8a41-9af9-8ef06c2f8aed2b9c
   NAME       Solar_Zeitschaltuhr
   NR         3681530
   STATE      Solar_Zeit_On
   TYPE       dummy
   READINGS:
     2022-06-27 14:30:00   state           Solar_Zeit_On
Attributes:
   room       Pool

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4566
Antw:Probleme mit meinem "or" DOIF
« Antwort #6 am: 27 Juni 2022, 14:53:46 »
Nun aber doch noch eine Frage.

Nun möchte ich einen weiteren "and" -DOIF.
Er soll den Stellmotor der Solaranlage nur aktiv schalten, wenn alle 4 Bedingungen erfüllt sind. Die 4 Quellen sind dummys. Ich frage mich, warum der DOIF nichts macht, obwohl alle 4 Bedingungen zuteffen. Gibt es bei einem "and" DOIF was anderes zu beachten?
(Zum testen wird ein Dummy geschaltet, später wird es der Stellmotor sein).

Wäre nett, wenn mir da noch jemand helfen könnte. Danke schon mal.

[Solar_Zeitschaltuhr:"state: Solar_Zeit_On"] and [Solar_Wetter_Prolanta:"state: Solar_Wetter_On"] and [Solar_An_Aus:"state: Solar_On"] and [Solar_Temp_On:"state: Solar_Temp_On"](set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)
Der DOIF:
Internals:
   CFGFN     
   DEF        [Solar_Zeitschaltuhr:"state: Solar_Zeit_On"] and [Solar_Wetter_Prolanta:"state: Solar_Wetter_On"] and [Solar_An_Aus:"state: Solar_On"] and [Solar_Temp_On:"state: Solar_Temp_On"](set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)
   FUUID      62b99850-f33f-8a41-1979-cab6838f356da661
   MODEL      Perl
   NAME       Solar_Steuerung_4_Zustaende_DOIF
   NOTIFYDEV  global
   NR         3753988
   NTFY_ORDER 50-Solar_Steuerung_4_Zustaende_DOIF
   STATE      initialized
   TYPE       DOIF
   VERSION    25386 2021-12-28 22:19:25
   READINGS:
     2022-06-27 14:32:01   mode            enabled
     2022-06-27 14:32:01   state           initialized
   Regex:
     accu:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   perlblock:
   uiState:
   uiTable:
Attributes:
   room       Pool


Einer der 4 Dummys:
Internals:
   CFGFN     
   FUUID      62b5895f-f33f-8a41-9af9-8ef06c2f8aed2b9c
   NAME       Solar_Zeitschaltuhr
   NR         3681530
   STATE      Solar_Zeit_On
   TYPE       dummy
   READINGS:
     2022-06-27 14:30:00   state           Solar_Zeit_On
Attributes:
   room       Pool

Du prüfst auf Ereignisse, nicht Zustände.
I(n deinem Versuch müssen alle 4 Dummys gleichzeitig schalten... baue es auf Zustandsüberwachung um und es sollte gehen.

Offline kjmEjfu

  • Sr. Member
  • ****
  • Beiträge: 843
Antw:Probleme mit meinem "or" DOIF
« Antwort #7 am: 27 Juni 2022, 15:12:52 »
Wird auch in der CommandRef gut beschrieben: https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung
Vor allem vor den Events ;-)

Offline M.Piet

  • Full Member
  • ***
  • Beiträge: 238
Antw:Probleme mit meinem "or" DOIF
« Antwort #8 am: 27 Juni 2022, 15:29:50 »
Ah OK.....danke....das es bei einem Dummy nicht so einfach ist, hätte ich jetzt nicht gedacht.

OK, ich habe ihn umgebaut. Aber ich fürchte das ich irgendwas mit den Klammern noch falsch habe:

([Solar_Zeitschaltuhr]:"state: Solar_Zeit_On") and ([Solar_Wetter_Prolanta] eq "Solar_Wetter_On") and ([Solar_An_Aus] eq "Solar_On") and ([Solar_Temp_On] eq "Solar_Temp_On")(set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)
Ich bekomme beim Speichern des DOIFs folgende Meldung:

Solar_Steuerung_4_Zustaende_DOIF DOIF: expected DOELSEIF or DOELSE:  and ([Solar_Wetter_Prolanta] eq "Solar_Wetter_On") and ([Solar_An_Aus] eq "Solar_On") and ([Solar_Temp_On] eq "Solar_Temp_On")(set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4566
Antw:Probleme mit meinem "or" DOIF
« Antwort #9 am: 27 Juni 2022, 16:39:42 »
so muss das:

([GERÄT1:READING] eq "Bla" and [GERÄT2:READING] eq "Bla" and [GERÄT3:READING] eq "Bla")

Du hast jetzt ne Mischung aus Ereignis und Zustand gebaut die gar nicht funktioniert.

Offline M.Piet

  • Full Member
  • ***
  • Beiträge: 238
Antw:Probleme mit meinem "or" DOIF
« Antwort #10 am: 27 Juni 2022, 17:23:53 »
Hmmm....ich hatte mich an den Link gehalten:
https://fhem.de/commandref_DE.html#DOIF_Ereignissteuerung

Aber OK. Ich habe es nun so aufgebaut, wie du mir genannt hast.

([Solar_Zeitschaltuhr:state] eq "Solar_Zeit_On" and [Solar_Wetter_Prolanta:state] eq "Solar_Wetter_On" and [Solar_An_Aus:state] eq "Solar_On") and [Solar_Temp:state] eq "Solar_Temp_On") (set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)Ich bekomme hier leider die gleiche Fehlermeldung:
Solar_Steuerung_4_Zustaende_DOIF DOIF: expected DOELSEIF or DOELSE:  and [Solar_Temp:state] eq "Solar_Temp_On") (set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)
Beispiel:
Das Reading "state" im Device "Solar_Zeitschaltuhr" ist "Solar_Zeit_On".
Also sollte dies doch richtig sein:
[Solar_Zeitschaltuhr:state] eq "Solar_Zeit_On"
...oder kann es sein, dass ich dich gar nicht verstanden habe?

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 12411
  • NIVEAu ist keine Creme...
Antw:Probleme mit meinem "or" DOIF
« Antwort #11 am: 27 Juni 2022, 17:37:01 »
Klammern schon mal gezählt?

Zitat
([Solar_Zeitschaltuhr:state] eq "Solar_Zeit_On" and [Solar_Wetter_Prolanta:state] eq "Solar_Wetter_On" and [Solar_An_Aus:state] eq "Solar_On") and [Solar_Temp:state] eq "Solar_Temp_On") (set Dummy_Solar_Test DOIF_AN) DOELSE (set Dummy_Solar_Test DOIF_AUS)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline M.Piet

  • Full Member
  • ***
  • Beiträge: 238
Antw:Probleme mit meinem "or" DOIF
« Antwort #12 am: 27 Juni 2022, 17:45:10 »
Klammern schon mal gezählt?

Gruß, Joachim
Danke Joachim....das war es. Der DOIF jetzt macht was er soll! Vielen vielen dank für deine Hilfe und deine Geduld!

 

decade-submarginal