Gelöst: DOIF bleibt auf initialized

Begonnen von Bobsonbob, 05 September 2017, 08:57:30

Vorheriges Thema - Nächstes Thema

Bobsonbob

Ich habe folgendes DOIF
([PufferObenGed] < ([VorlaufSoll] + 5) and [s12:"off"]) {myUtils_PufferKesseltemp()}
DOELSEIF ([PufferObenGed] > ([VorlaufSoll] + 10) and [s12:"off"]) (set THBrenner desired 20)

mit folgenden List
ZitatInternals:
   DEF        ([PufferObenGed] < ([VorlaufSoll] + 5) and [s12:"off"]) {myUtils_PufferKesseltemp()}
DOELSEIF ([PufferObenGed] > ([VorlaufSoll] + 10) and [s12:"off"]) (set THBrenner desired 20)
   NAME       Pufferbrenner
   NR         137
   NTFY_ORDER 50-Pufferbrenner
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-09-05 08:52:15   Device          VorlaufSoll
     2017-09-05 08:48:21   cmd             0
     2017-09-05 08:52:15   e_PufferObenGed_STATE 39.7
     2017-09-05 08:52:15   e_PufferObenGed_events 39.7
     2017-09-05 08:52:15   e_VorlaufSoll_STATE 25
     2017-09-05 08:52:15   e_VorlaufSoll_events 25
     2017-09-05 08:48:21   state           initialized
   condition:
     0          InternalDoIf($hash,'PufferObenGed','STATE') < (InternalDoIf($hash,'VorlaufSoll','STATE') + 5) and EventDoIf('s12',$hash,'off',1)
     1          InternalDoIf($hash,'PufferObenGed','STATE') > (InternalDoIf($hash,'VorlaufSoll','STATE') + 10) and EventDoIf('s12',$hash,'off',1)
   devices:
     0           PufferObenGed VorlaufSoll s12
     1           PufferObenGed VorlaufSoll s12
     all         PufferObenGed VorlaufSoll s12
   do:
     0:
       0          {myUtils_PufferKesseltemp()}
     1:
       0          set THBrenner desired 20
     2:
   helper:
     event      25
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev VorlaufSoll
     triggerEvents:
       25
     triggerEventsState:
       state: 25
   internals:
     0           PufferObenGed:STATE VorlaufSoll:STATE
     1           PufferObenGed:STATE VorlaufSoll:STATE
     all         PufferObenGed:STATE VorlaufSoll:STATE
   itimer:
   readings:
   regexp:
     0:
     1:
     all:
   state:
     STATE:
   trigger:
     all         s12
Attributes:
   group      PufferladungKessel
   room       Heizung
"s12" ist der Schalter für die WWLadung. Wenn Diese läuft, soll der Pufferspeicher nicht geladen werden.
Der state von S12 ist "off".
List s12:
ZitatInternals:
   DEF        5
   IODev      FIRMATA1
   NAME       s12
   NR         55
   PIN        5
   STATE      off
   TYPE       FRM_OUT
   READINGS:
     2017-09-04 20:55:57   state           Initialized
     2017-09-05 08:26:29   value           off
Attributes:
   IODev      FIRMATA1
   alias      05WWSpeicherLadung
   group      WWSpeicherladungKessel,Schalter
   room       Heizung
   stateFormat value
Aber sobald ich "s12" als Bedingung mit in die DOIF eintrage, Inizialisiert die DOIF endlos.
Ohne die "s12"-Bedingung klappt alles wunderbar. Habe ich da was in der Syntax falsch, oder
habe ich (wie so oft :)) einen Denkfehler?

Rolfg

Versuche mal [? s12....

Gruß Rolf


Frank_Huber

... and [S12] eq "off)

und im ersten Zweig den Ausführungsteil bitte noch in Klammern setzen.

([PufferObenGed] < ([VorlaufSoll] + 5) and [s12] eq "off") ({myUtils_PufferKesseltemp()})
DOELSEIF ([PufferObenGed] > ([VorlaufSoll] + 10) and [s12] eq "off") (set THBrenner desired 20)

Bobsonbob

Vielen Dank für eure Tips. Hat aber leider alles nicht geholfen. Die DOIF initialisiert stetig weiter.

darkness

(([PufferObenGed] < ([VorlaufSoll] + 5)) and [s12] eq "off") ({myUtils_PufferKesseltemp()})

Und wenn du den "kleiner" Vergleich in eine extra Klammer machst?


Beta-User

m.E. ist diese Annahme falsch:
ZitatDer state von S12 ist "off".

Zitat von: Bobsonbob am 05 September 2017, 08:57:30
   READINGS:
     2017-09-04 20:55:57   state           Initialized
     2017-09-05 08:26:29   value           off
Du solltest also auf "value" triggern bzw. abfragen, nicht auf "state" bzw. "STATE".
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

CoolTux

Ich rate dem Hilfesuchenden sich wenigstens Ansatzweise mit der DOIF Syntax zu beschäftigen. Hierzu gibt es eine sehr sehr ausführliche Commandref.
Es hilft nichts wenn hilfsbereite User Dir den Code vorkauen und Du es nicht verstanden hast.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

nils_

Zitat von: Bobsonbob am 05 September 2017, 08:57:30
Aber sobald ich "s12" als Bedingung mit in die DOIF eintrage, Inizialisiert die DOIF endlos.

so wie du das "beschreibst" würde ich denken, das das DOIF andauernd (wiederholend) initialisiert. wie auch immer du das festgestellt hast...

wenn ich mir die anderen kommentare und lösungsvorschläge so durchlese, würde ich eher vermuten, das dein DOIF nicht den Zustand "initialized" verlässt -> was wiederum bedeutet keine deiner Bedingungen wird erfüllt!
die lösung wird wohl sein den vorschlag von darkness und Beta-User zu kombinieren.
viele Wege in FHEM es gibt!

Bobsonbob

Ich danke denen, die mir bei meiner Frage eine Hilfreiche Antwortgegeben haben. Der Lösungsvorschlag von BetaUser hat mir weiter geholfen. Manchmal sieht man vor Wald die Bäume nicht. Da hilft es leider auch nichts, zum 100sten Mal in die Commandref zu  schauen. Ich bin Anfänger und stelle eine Frage, weil ich echt nicht weiter weiss. Die abweisenden Bemerkungen kann man ja ignorieren ;D. Aber nochmal vielen Dank den lieben Usern, die mir hier weiter helfen. Cooles Forum. Vieeeelen Dank

Beta-User

Schön, dass es funktioniert hat; gut war, dass du ein List der beteiligten devices mitgeliefert hast, sonst wäre das evtl. noch lange so gegangen ;) .

Als Hilfestellung für zukünftige Probleme: Neben dem Blick in die Commandref ist bei konkreten Ereignissen immer auch ein Blick in den Event-Monitor hilfreich; da gibt es auch die Möglichkeit, ein notify (oder DOIF) direkt zu erstellen oder zu editieren. Damit geht es nach meiner Erfahrung am schnellsten, die Funktion scheint aber nicht sehr bekannt zu sein.

Btw.: m.E. wäre ein notify auf "PufferObenGed" völlig ausreichend, den Rest könnte man auch gut mit perl-code lösen. Das scheinst Du ja zu beherrschen, da auch eine perl-Funktion aufgerufen wird.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Bobsonbob

Hallo Beta-User,
Das mit dem Event-Monitor kenne ich noch nicht.
Werde ich mir aber später mal genau ansehen.
Du bist eine echte Bereicherung für dieses Forum.
Vielen lieben Dank vom

Perl-Spezi  ;D ;D

nils_

viele Wege in FHEM es gibt!

Amenophis86

Bitte Gelöst nicht vergessen, wenn das Thema gelöst ist :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...