FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: theotherhalf am 28 Oktober 2021, 09:59:17

Titel: [gelöst] Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 28 Oktober 2021, 09:59:17
Guten Morgen,
ich versuche schon eine Weile ein bedingtes Setzen einer Variable zu realisieren, aber komme nicht so recht weiter.
Im Grunde geht es darum den Status meiner Heizungstherme aus 3 Variablen abzuleiten:
1. Gasventil
2. Umwälzpumpe
3. Umschaltventil (Warmwasserbetrieb/Heizungsbetrieb)
Wenn Ventil "on" und Pumpe "on" sowie Umschaltventil auf "100" sind, dann bereitet die Therme warmes Wasser.
Das Ergebnis soll in ein Dummy "Vaillant_Therme_Warmwasserbetrieb"geschrieben werden.
Es gibt mehrere Möglichkeiten, wobei ich mich für ein Notify entschieden habe.
Folgenden Code habe ich testweise in Benutzung, bekomme aber als state immer nur aktiv, obwohl die Therme nichts macht.
define test_Warmwasserbetrieb notify (Gasventil_Therme:on|Stellung_Umschaltventil:100|Umwaelzpumpe_Therme:on) { if( Value("Gasventil_Therme") eq "on" && Value("Stellung_Umschaltventil") eq "100"  && Value("Umwaelzpumpe_Therme") eq "on" )  {fhem ("set Vaillant_Therme _Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme _Warmwasserbetrieb Inaktiv");;  } }



Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 28 Oktober 2021, 10:11:05
Ich würde von der Verwendung von Value abraten!!

Value "frägt" das INTERNAL!! STATE ab!
NICHT das Reading state!

Manchmal/meist ist es dasselbe ABER: z.B. stateFormat können das ändern... Und dann liefert Value eben was "anderes"!

Dann:

Zitat
set Vaillant_Therme _Warmwasserbetrieb Aktiv

Ist da nicht ein LEERZEICHEN zu viel?

Weil entweder:

set Device Value

oder

setreading Device Reading Value

Bei dir steht:

set Device NochWas Value ;)

Ob es das ist/war und ob das alles ist: keine Ahnung ;)

EDIT: die runden Klammern um die RegExen können weg (schaden aber nicht?). Löst denn das notify aus? Also evtl. mal eine Logausgabe einbauen (nur um sicher zu gehen): Log3(undef, 1, "Notify hat getriggert $EVENT")

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Beta-User am 28 Oktober 2021, 10:33:13
Mal abgesehen von den berechtigten Hinweisen von MadMax-FHEM: ist denn da ein Trigger im notify für den "Inactive"-Fall...?

Weitere Hinweise:
- das "dummy-Geschubse" ist mir hochgradig suspekt, und ich vermute, da sind noch mehr (überflüssige?) dummy beteiligt, sonst ginge das mit Value() nicht...
- hier käme evtl. auch eine structure in Frage (mit entsprechendem mapping für die "100")
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Wernieman am 28 Oktober 2021, 10:33:39
Ist das eigentlich direkt aus der Config oder aus FHEM kopiert? Mich wundern gerade die ;; .. also2 Stück ..
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 28 Oktober 2021, 10:35:37
Ah, korrekt! Da ist ein Leerzeichen zu viel. Habe ich entfernt.

Im Device muss ich  auf das Reading schauen, welches den gleichen Namen hat wie das Device selbst. Das ist dann STATE?
state ist tatsächlich anders.



Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 28 Oktober 2021, 10:39:29
Zitat von: Beta-User am 28 Oktober 2021, 10:33:13
Mal abgesehen von den berechtigten Hinweisen von MadMax-FHEM: ist denn da ein Trigger im notify für den "Inactive"-Fall...?

Weitere Hinweise:
- das "dummy-Geschubse" ist mir hochgradig suspekt, und ich vermute, da sind noch mehr (überflüssige?) dummy beteiligt, sonst ginge das mit Value() nicht...
- hier käme evtl. auch eine structure in Frage (mit entsprechendem mapping für die "100")

Meine Intention war, wenn sich eine der drei Werte auf Zielwerte verändern, wird das Notify ausgelöst. Und dann im Folgenden eben abgeprüft ob alle 3 Signale entsprechend sind um den Dummy zu setzen oder eben nicht.
Es ist nur ein Dummy verwendet, da ich den Status in einem Floorplan darstellen möchte.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 28 Oktober 2021, 10:40:21
Zitat von: Wernieman am 28 Oktober 2021, 10:33:39
Ist das eigentlich direkt aus der Config oder aus FHEM kopiert? Mich wundern gerade die ;; .. also2 Stück ..

Es ist eine Kopie dessen, was ich später über die Command Leiste eingebe.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Beta-User am 28 Oktober 2021, 10:44:40
Zitat von: theotherhalf am 28 Oktober 2021, 10:39:29
Meine Intention war, wenn sich eine der drei Werte auf Zielwerte verändern, wird das Notify ausgelöst. Und dann im Folgenden eben abgeprüft ob alle 3 Signale entsprechend sind um den Dummy zu setzen oder eben nicht.
Es ist nur ein Dummy verwendet, da ich den Status in einem Floorplan darstellen möchte.
Dann muss halt auch ein entsprechender trigger kommen, sonst bleibt das halt uU. länger so als erwartet.

Für Darstellungsfragen in FHEMWEB/floorplan kann man readingsProxy oder readingsGroup verwenden. Im Ergebnis sollte das einfacher sein.

Ansonsten solltest du mal in der commandref nach ReadingsVal(), Value() und stateFormat suchen, dann wird das ggf. klarer, was du ggf. ändern mußt. Ansonsten können wir ohne Infos (aka: list) nicht viel weiterhelfen.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 28 Oktober 2021, 10:51:20
Zitat von: Beta-User am 28 Oktober 2021, 10:44:40
Dann muss halt auch ein entsprechender trigger kommen, sonst bleibt das halt uU. länger so als erwartet.

Für Darstellungsfragen in FHEMWEB/floorplan kann man readingsProxy oder readingsGroup verwenden. Im Ergebnis sollte das einfacher sein.

Ansonsten solltest du mal in der commandref nach ReadingsVal(), Value() und stateFormat suchen, dann wird das ggf. klarer, was du ggf. ändern mußt. Ansonsten können wir ohne Infos (aka: list) nicht viel weiterhelfen.

Der Trigger kommt ja, da das System aktiv ist. Der Status der Heizung ändert sich ja ca. alle 60 Minuten. Aber wenn ich diesen Code eingebe, dann ist der Status sofort "Aktiv" und verbleibt da auch, auch wenn die 3 Signale nicht den Status darstellen.
Die 3 Signale habe ich auch als ReadingProxy, da hierdurch die Darstellung im Floorplan vereinfacht wurden. Du meinst wenn ich darauf verweise ist es einfacher? Es ist doch ein und dasselbe Signal?
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Beta-User am 28 Oktober 2021, 11:11:58
Also: Wenn erst eines der Geräte (vereinfacht) "on" wird, setzt das notify "Aktiv". Soweit so gut. Wenn dann eines oder zwei (oder alle drei) Geräte "off" werden, passiert nichts. Erst wenn wieder ein "on"-Trigger kommt wird nochmal geprüft. Vermutlich ist das so nicht beabsichtigt? Wenn nicht, muss das notify auch auf "off"-Trigger reagieren. Genau das würde eine "structure" auch tun, übrigens...

Wenn du die drei Signale als readingsProxy angelegt hast, die nur für die Darstellung im floorplan gedacht sind, spricht das dafür, die ggf. zu löschen und das ganze in einer readingsGroup zusammenzufassen und ggf. via notify (oder uU. alternativ via userReadings) einfach ein weiteres Reading an deinem "Heizungsdevice" zu setzen. Aber nochmal:
Zitat von: Beta-User am 28 Oktober 2021, 10:44:40
können wir ohne Infos (aka: list) nicht viel weiterhelfen.
Beachte also bitte einfach die "Bevor du postest"-Hinweise.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 28 Oktober 2021, 12:14:21
Zitat von: theotherhalf am 28 Oktober 2021, 10:35:37
Im Device muss ich  auf das Reading schauen, welches den gleichen Namen hat wie das Device selbst. Das ist dann STATE?
state ist tatsächlich anders.

STATE: INTERNAL ! Bei Änderung KEIN Event -> das kannst du "abfragen" mit Value() oder InternalVal(...) Wird beeinflusst durch stateFormat (ansonsten ist es meist gleich state)

state: Reading Bei Änderung eigentlich meist auch ein Event -> Eventhandler (notify, DOIF, FileLog, ...) gehen. Abfrage per ReadingsVal(...) oder wenn du sicher nur Ziffern willst ReadingsNum(...)

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 28 Oktober 2021, 15:45:00
Ich muss gestehen, das ich selten mit meiner Konfig in FHEM spiele, von daher ist es immer sehr holprig.
Vielleicht ist es mit DOIF etwas weniger komplex, habe mich da auch etwas eingelesen, aber obwohl es einfach scheint, komme ich leider nicht zum Ziel.

Es ist doch recht simpel: Wenn die 3 Variablen (Pumpe, Gasventil und Umschaltventil) eine bestimmte Stellung haben, dann soll ein Dummy gesetzt werden. Falls eine der Variablen nicht aktiv ist, dann soll der Dummy auf OFF gesetzt werden. Vielleicht habe ich da auch ein Brett vor dem Kopf?
Mein Ansatz ist der folgende:
define Vaillant_Warmwasserbereitung DOIF ([Gasventil_Therme_von_Vaillant:"Gasventil_Therme on"] and [Umwaelzpumpe_Therme_von_Vaillant:"Umwaelzpumpe_Therme on"] and [Stellung_Umschaltventil_von_Vaillant:"100"]) (set Vaillant_Therme_Warmwasserbetrieb on) DOELSE (set Vaillant_Therme_Warmwasserbetrieb off)

Auch wenn alle drei Variablen die Bedingung erfüllen (sie tauchen auch im Event Monitor so auf), so wird der Dummy nicht auf "on" gesetzt.
cmd2 ist die ganze Zeit auf 2, daher scheint die Bedingung nicht erfüllt zu sein. Was übersehe ich hier? Liegt es in der Abfolge der Events begründet?
Setze ich in die Bedingung nur eine der drei Variablen ein, dann klappt es. :-\
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Beta-User am 28 Oktober 2021, 16:11:00
Bin raus. Sehe keinen Sinn in weiteren Hilfsangeboten, wenn Infos nicht geliefert werden, aber ohne Not neue Fässer aufgemacht werden.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 28 Oktober 2021, 18:18:16
Zitat von: theotherhalf am 28 Oktober 2021, 15:45:00
Ich muss gestehen, das ich selten mit meiner Konfig in FHEM spiele, von daher ist es immer sehr holprig.
Vielleicht ist es mit DOIF etwas weniger komplex, habe mich da auch etwas eingelesen, aber obwohl es einfach scheint, komme ich leider nicht zum Ziel.

Es ist doch recht simpel: Wenn die 3 Variablen (Pumpe, Gasventil und Umschaltventil) eine bestimmte Stellung haben, dann soll ein Dummy gesetzt werden. Falls eine der Variablen nicht aktiv ist, dann soll der Dummy auf OFF gesetzt werden. Vielleicht habe ich da auch ein Brett vor dem Kopf?
Mein Ansatz ist der folgende:
define Vaillant_Warmwasserbereitung DOIF ([Gasventil_Therme_von_Vaillant:"Gasventil_Therme on"] and [Umwaelzpumpe_Therme_von_Vaillant:"Umwaelzpumpe_Therme on"] and [Stellung_Umschaltventil_von_Vaillant:"100"]) (set Vaillant_Therme_Warmwasserbetrieb on) DOELSE (set Vaillant_Therme_Warmwasserbetrieb off)

Auch wenn alle drei Variablen die Bedingung erfüllen (sie tauchen auch im Event Monitor so auf), so wird der Dummy nicht auf "on" gesetzt.
cmd2 ist die ganze Zeit auf 2, daher scheint die Bedingung nicht erfüllt zu sein. Was übersehe ich hier? Liegt es in der Abfolge der Events begründet?
Setze ich in die Bedingung nur eine der drei Variablen ein, dann klappt es. :-\

Warum plötzlich DOIF?

commandref zu DOIF gelesen?
Verglichen mit notify?

Was ist/scheint da einfacher?

Ich nutze (genau auch deswegen) kein DOIF aber ich denke die Syntax ist falsch...
...und bei DOIF gibt es auch Trigger (genau wie bei notify und anderen Eventhandlern) und die Möglichkeit "nur" abzufragen.

Selbst wenn du deine Syntax (von der ich annehme, dass sie nicht passt) korrigierst, dann sind alle "Bedingungen" triggernd und vermutlich niemals "gleichzeitig" wahr (das kommt bei DOIF dazu)...

Warum nicht einach das notify vernünftig machen und gut?

Dazu Ausschnitt aus dem Eventmonitor, wenn alles was relevant ist mal passiert ist.
Und list der beteiligten Devices -> damit man die Readings etc. sehen kann...

Mit dem Eventmonitor kann man sich auch notify/DOIF/FileLog/... anlegen lassen...
...ja nur zu einem Event aber man kann sich ja für jedes Ereignis ein notify anlegen lassen und dann mit RegEx-ODER kombinieren...
Und man darf halt (wie Beta-User schon gleich und du ja jetzt zuletzt selber angegeben hast) halt auch den Fall "und sonst" nicht "vergessen"...

Mal angenommen die trigger stimmen, dann evtl. so in der Art:


define test_Warmwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( Value("Gasventil_Therme") eq "on" && Value("Stellung_Umschaltventil") eq "100"  && Value("Umwaelzpumpe_Therme") eq "on" )  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");;  } }


Ob nun .* als RegEx oder ob es weiter vernünftig einzuschränken geht, dazu fehlen die Infos...

Allerdings triggert das notify nun deutlich öfter (ob zu oft musst du prüfen) und prüft ja jedes mal, ob der gewünschte Zustand vorhanden und wenn ja: Aktiv und sonst eben Inaktiv...
...so soll es doch sein?

EDIT: die Abfrage auf GENAU 100 hat halt Potential für "Probleme", wenn der Wert öfter mal schwankt -> Aktiv/Inaktiv/Aktiv/Inaktiv/Aktiv/Inaktiv... Sieht für mich eher aus als sollte da eine Hysterese rein. Aber das kannst nur du wissen...

Wichtg, generell: möglichst Events im System soweit einschränken wie möglich. Also nur so viele Events (wenn machbar) wie nötig sind, damit notify/DOIF/... und Logging funktioniert...

Stichwort: event-on-change-reading und "Verwandte"...

Da ich Perl immer (auch kleine Sachen) in eine myUtils auslagere, bin ich bei den Strichpunkten nicht sicher.
Wobei die vermutlich sogar alle weg können...

Ich hätte ja auch auf ReadingsVal/ReadingsNum umgbaut aber ohne list kenne ich ja das entscheidende Reading nicht bzw. könnte "state" annehmen aber das muss ja nicht, siehe Anmerkung stateFormat und Value()...

Wenn du bei DOIF bleiben willst: da bin ich (leider) raus.

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Damian am 28 Oktober 2021, 18:36:25
Zitat von: theotherhalf am 28 Oktober 2021, 15:45:00
Ich muss gestehen, das ich selten mit meiner Konfig in FHEM spiele, von daher ist es immer sehr holprig.
Vielleicht ist es mit DOIF etwas weniger komplex, habe mich da auch etwas eingelesen, aber obwohl es einfach scheint, komme ich leider nicht zum Ziel.

Es ist doch recht simpel: Wenn die 3 Variablen (Pumpe, Gasventil und Umschaltventil) eine bestimmte Stellung haben, dann soll ein Dummy gesetzt werden. Falls eine der Variablen nicht aktiv ist, dann soll der Dummy auf OFF gesetzt werden. Vielleicht habe ich da auch ein Brett vor dem Kopf?
Mein Ansatz ist der folgende:
define Vaillant_Warmwasserbereitung DOIF ([Gasventil_Therme_von_Vaillant:"Gasventil_Therme on"] and [Umwaelzpumpe_Therme_von_Vaillant:"Umwaelzpumpe_Therme on"] and [Stellung_Umschaltventil_von_Vaillant:"100"]) (set Vaillant_Therme_Warmwasserbetrieb on) DOELSE (set Vaillant_Therme_Warmwasserbetrieb off)

Auch wenn alle drei Variablen die Bedingung erfüllen (sie tauchen auch im Event Monitor so auf), so wird der Dummy nicht auf "on" gesetzt.
cmd2 ist die ganze Zeit auf 2, daher scheint die Bedingung nicht erfüllt zu sein. Was übersehe ich hier? Liegt es in der Abfolge der Events begründet?
Setze ich in die Bedingung nur eine der drei Variablen ein, dann klappt es. :-\

Du musst schon die Zustände (Readings) abfragen und nicht die Events:

define Vaillant_Warmwasserbereitung DOIF ([Gasventil_Therme:state] eq "on" and [Umwaelzpumpe_Therme:state] eq "on" and [Stellung_Umschaltventil:state] eq "100") (set Vaillant_Therme_Warmwasserbetrieb on) DOELSE (set Vaillant_Therme_Warmwasserbetrieb off)
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Wernieman am 28 Oktober 2021, 18:52:52
Müste nicht im notify anstelle der ":" ein . stehen?

Bei DOIF bin ich aus raus ...

Sorry Damian, aber ich persönlich finde DOIF komplizierter als notify, aber darüber hatten wir uns schon mal ausgetauscht ;o)
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 28 Oktober 2021, 19:01:46
Zitat von: Wernieman am 28 Oktober 2021, 18:52:52
Müste nicht im notify anstelle der ":" ein . stehen?

Bei DOIF bin ich aus raus ...

Sorry Damian, aber ich persönlich finde DOIF komplizierter als notify, aber darüber hatten wir uns schon mal ausgetauscht ;o)

Nicht unbedingt.

Aber Punkt wäre "allgemeiner"...

Wenn man Ausschnite des EventMonitors hätte könnte man es genau sagen...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: Wernieman am 28 Oktober 2021, 19:18:25
Also fehlt uns doch ein List von mindestens 1 gerät + Aktuellem Notify List

Ich bin mir aber wirklich mit den ;; unsicher .. braucht man überhaupt an der Stelle ein ;??

Sorry bin aktuell zu müde zum Testen :o( Tag war anstrengend
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 28 Oktober 2021, 19:45:09
Die Strichpunkte (bei der notify-Variante) kann man wohl weglassen (hatte ich ja schon geschrieben ;)  )...
Ist ja nur 1 Befehl, da ist Perl wohl nicht so genau... ;)

Gruß, Joachim

P.S.: vielleicht funktioniert ja das DOIF von Damian... Dann hat sich das eh erledigt...
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 15:08:45
Vielen Dank für eure Hilfe soweit.
Anbei sende ich ein List der drei Signale

Internals:
   DEF        bai00.class
   FUUID      5f9e3462-f33f-0f31-5b0d-dc8032106d596115
   IODev      EBUS2_EcoTec196VC3_5
   NAME       Gasventil_Therme
   NR         203
   STATE      Gasventil_Therme off


   TYPE       ECMDDevice
   READINGS:
     2021-10-29 14:59:56   Gasventil_Therme off


     2021-10-29 13:18:54   IODev           EBUS2_EcoTec196VC3_5
     2021-10-29 14:59:56   state           Gasventil_Therme off


   fhem:
     classname  bai00.class
     cache:
       specials:
         %NAME      Gasventil_Therme
         %TYPE      ECMDDevice
Attributes:
   IODev      EBUS2_EcoTec196VC3_5
   group      EcoTec196VC3_5
   room       Vaillant


Internals:
   DEF        bai00.class
   FUUID      5f9e3462-f33f-0f31-2c01-327a4d75bfa18d3d
   IODev      EBUS2_EcoTec196VC3_5
   NAME       Stellung_Umschaltventil
   NR         198
   STATE      Stellung_Umschaltventil 100


   TYPE       ECMDDevice
   READINGS:
     2021-10-29 13:18:54   IODev           EBUS2_EcoTec196VC3_5
     2021-10-29 15:00:34   Stellung_Umschaltventil 100


     2021-10-29 15:00:34   state           Stellung_Umschaltventil 100


   fhem:
     classname  bai00.class
     cache:
       specials:
         %NAME      Stellung_Umschaltventil
         %TYPE      ECMDDevice
Attributes:
   IODev      EBUS2_EcoTec196VC3_5
   group      EcoTec196VC3_5
   room       Vaillant


Internals:
   DEF        bai00.class
   FUUID      5f9e3462-f33f-0f31-2535-24a4ef55d433cbdf
   IODev      EBUS2_EcoTec196VC3_5
   NAME       Umwaelzpumpe_Therme
   NR         194
   STATE      Umwaelzpumpe_Therme off


   TYPE       ECMDDevice
   READINGS:
     2021-10-29 13:18:54   IODev           EBUS2_EcoTec196VC3_5
     2021-10-29 15:01:34   Umwaelzpumpe_Therme off


     2021-10-29 15:01:34   state           Umwaelzpumpe_Therme off


   fhem:
     classname  bai00.class
     cache:
       specials:
         %NAME      Umwaelzpumpe_Therme
         %TYPE      ECMDDevice
Attributes:
   IODev      EBUS2_EcoTec196VC3_5
   group      EcoTec196VC3_5
   room       Vaillant


2021-10-29 15:02:13 ECMDDevice Wasserdruck_Therme Wasserdruck_Therme: 1.319 
2021-10-29 15:02:13 ECMDDevice Wasserdruck_Therme Wasserdruck_Therme 1.319 
2021-10-29 15:02:13 readingsProxy Vorlauftemperatur_Therme_von_Vaillant 35.31 
2021-10-29 15:02:13 ECMDDevice Vorlauftemperatur_Therme Vorlauftemperatur_Therme: 35.31 
2021-10-29 15:02:13 ECMDDevice Vorlauftemperatur_Therme Vorlauftemperatur_Therme 35.31 
2021-10-29 15:02:14 readingsProxy Ruecklauftemperatur_Therme_von_Vaillant 34.38 
2021-10-29 15:02:14 ECMDDevice Ruecklauftemperatur_Therme Ruecklauftemperatur_Therme: 34.38 
2021-10-29 15:02:14 ECMDDevice Ruecklauftemperatur_Therme Ruecklauftemperatur_Therme 34.38   
2021-10-29 15:02:14 ECMDDevice Umwaelzpumpe_Therme Umwaelzpumpe_Therme: off 
2021-10-29 15:02:14 ECMDDevice Umwaelzpumpe_Therme Umwaelzpumpe_Therme off 
2021-10-29 15:02:14 readingsProxy Brauchwasserspeichertemperatur_von_Vaillant 54.75 
2021-10-29 15:02:14 ECMDDevice Brauchwasserspeichertemperatur Brauchwasserspeichertemperatur: 54.75 
2021-10-29 15:02:14 ECMDDevice Brauchwasserspeichertemperatur Brauchwasserspeichertemperatur 54.75 
2021-10-29 15:02:14 readingsProxy Sollwert_Brauchwasserspeicher_von_Vaillant 58.00 
2021-10-29 15:02:14 ECMDDevice Sollwert_Brauchwasserspeicher Sollwert_Brauchwasserspeicher: 58.00 
2021-10-29 15:02:14 ECMDDevice Sollwert_Brauchwasserspeicher Sollwert_Brauchwasserspeicher 58.00 
2021-10-29 15:02:14 readingsProxy Vorlaufsollwert_789_von_Vaillant 0.00 
2021-10-29 15:02:14 ECMDDevice Vorlaufsollwert_789 Vorlaufsollwert_789: 0.00 
2021-10-29 15:02:14 ECMDDevice Vorlaufsollwert_789 Vorlaufsollwert_789 0.00 
2021-10-29 15:02:14 readingsProxy Stellung_Umschaltventil_von_Vaillant Warmwasser 
2021-10-29 15:02:14 ECMDDevice Stellung_Umschaltventil Stellung_Umschaltventil: 100 
2021-10-29 15:02:14 ECMDDevice Stellung_Umschaltventil Stellung_Umschaltventil 100     
2021-10-29 15:02:17 readingsProxy Gasventil_Therme_von_Vaillant Zu 
2021-10-29 15:02:17 ECMDDevice Gasventil_Therme Gasventil_Therme: off 
2021-10-29 15:02:17 ECMDDevice Gasventil_Therme Gasventil_Therme off


Für diese 3 Signale habe ich auch jeweils einen ReadingProxy konfiguriert. Den brauche ich um den Status im Floorplan darzustellen. Den Text formatiere ich dafür.

Ich habe leider gestern keine Möglichkeit gehabt etwas per DOIF ander notify zu testen, wollte euch hier die Lists senden um dann weiter zu machen.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 15:18:17
Habe gerade mal in Joachims notify Vorschlag geschaut und die Abfrage angepasst. Dann sollte es so funktionieren:

define test_Warmwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( Value("Gasventil_Therme") eq "Gasventil_Therme on" && Value("Stellung_Umschaltventil") eq "Stellung_Umschaltventil 100"  && Value("Umwaelzpumpe_Therme") eq "Umwaelzpumpe_Therme on" )  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");;  } }
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 15:40:01
Wenn man von Value und damit STATE weggeht, wird es "vernünftiger".

Warum in state auch noch der Readingname steht: ?
Gewünscht?
Macht das das Modul so?

Zeige doch mal einen deiner readingsProxy.
Ich bin mir sicher, dass das alles unnötig ist: stateFormat (oder userReadings) können das bestimmt auch...

Daher würde ich das so machen:


define test_Warmwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( ReadingsVal("Gasventil_Therme","Gasventil_Therme","off") eq "on" && ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0) == 100  && ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","off") eq "on" )  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");;  } }


Fehlt nur noch ein Ausschnitt aus dem Eventmonitor um sicher zu gehen...
Aber wenn es vorher grtriggert hat, dann jetzt erst recht ;)

Und dann bleibt noch: wie oft ändern sich die Werte? -> event-on-change-reading zum "Eindämmen" und "Last aus dem System nehmen". Und v.a. wie oft schwankt der Stellung_Umschaltventil zwischen 100 und !100? -> Hysterese...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 15:54:24
Du hast Recht, mit Value klappt es nicht...

Ja, der Readingname steht durch das Modul so da drin.

Der Reading Proxy vom Gasventil sieht z.B. so aus:
Internals:
   DEF        Gasventil_Therme:state
   DEVICE     Gasventil_Therme
   FUUID      5fc0db4b-f33f-0f31-a48c-49fb0daaf9de48aa
   NAME       Gasventil_Therme_von_Vaillant
   NOTIFYDEV  global,Gasventil_Therme
   NR         262
   NTFY_ORDER 50-Gasventil_Therme_von_Vaillant
   READING    state
   STATE      Zu


   TYPE       readingsProxy
   CONTENT:
     Gasventil_Therme 1
   READINGS:
     2021-10-29 15:52:58   state           Gasventil_Therme off


Attributes:
   eventMap   /Gasventil_Therme on:Auf/Gasventil_Therme off:Zu/
   fp_Haustechnik 429,140,1,Gasventil_Therme_von_Vaillant,


Du verweist hier als Ausdruck auf on bzw. 100, aber der Ausdruck enthält noch zusätzlich das Reading. Muss er nicht deshalb mit da rein?
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 16:11:06
Zitat von: theotherhalf am 29 Oktober 2021, 15:54:24
Du hast Recht, mit Value klappt es nicht...

Ja, der Readingname steht durch das Modul so da drin.


Mit der Value-Variante sollte schon (auch) gehen. Mit der Gefahr, dass eben bei Anwendung von stateFormat (zur Formatierung der "Ansicht") eben Value was liefert was man nicht "erwartet".
Drum ja der Umbau auf ReadingsVal/ReadingsNum

Geht denn meine Variane?

Zitat von: theotherhalf am 29 Oktober 2021, 15:54:24
Du verweist hier als Ausdruck auf on bzw. 100, aber der Ausdruck enthält noch zusätzlich das Reading. Muss er nicht deshalb mit da rein?

Nein!

Musst halt mal lesen wie ReadingsVal/ReadingsNum funktioniert ;)

ReadingsVal("Devicename", "Readingname", "Ersatzwert")

Wenn du dir dein Device anschaust, dann ist doch:

Devicename=Gasventil_Therme
Readingname=Gasventil_Therme (= Devicename, ist zwar eigenartig aber scheint ja so zu sein!?)
Wert=on/off

Warum in state auch noch der Readingname steht hatten wir ja.

Mit einem stateFormat auf z.B. den Readingnamen Gasventil_Therme würde in STATE nur on/off stehen und auch Value() nur on/off liefern...


attr Gasventil_Therme stateFormat Gasventil_Therme


Und was du in deinem readingsProxy machst kannst du auch ganz einfach per stateFormat oder devStateIcon (und wenn wirklich "wilde Sachen" benötigt werden noch userReadings) im SELBEN Device lösen:
https://wiki.fhem.de/wiki/DeviceOverview_anpassen
https://wiki.fhem.de/wiki/DeviceOverview_anpassen#stateFormat
Dort geht Perl, HTML, ...

https://wiki.fhem.de/wiki/DeviceOverview_anpassen#devStateIcon

Bzw. wie immer: commandref... ;)

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 16:19:28
Ich habe deine Variante eben getestet, aber leider bleibt der Dummy auf Inaktiv, auch wenn alle 3 Ausdrücke erfüllt sind.
Probiere es gleich noch mal aus und poste den Event Monitor.

define Vaillant_Therme_Brauchwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( ReadingsVal("Gasventil_Therme","Gasventil_Therme","off") eq "on" && ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0) == 100  && ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","off") eq "on" )  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");;  } }

Das Schreiben auf den Dummy über den else Zweig klappt, ich hatte den mal anders beschrieben, aber er wird zyklisch auf Inaktiv zurück gesetzt.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 16:44:28
2021-10-29 16:38:31 ECMDDevice Umwaelzpumpe_Therme Umwaelzpumpe_Therme: on 
2021-10-29 16:38:31 ECMDDevice Umwaelzpumpe_Therme Umwaelzpumpe_Therme on
2021-10-29 16:38:32 ECMDDevice Stellung_Umschaltventil Stellung_Umschaltventil: 100 
2021-10-29 16:38:32 ECMDDevice Stellung_Umschaltventil Stellung_Umschaltventil 100
2021-10-29 16:38:32 ECMDDevice Gasventil_Therme Gasventil_Therme: on 
2021-10-29 16:38:32 ECMDDevice Gasventil_Therme Gasventil_Therme on 


Das Ventil steht meist auf Stellung "100", dann geht zuerst die Pumpe an und dann ca. 15s später das Gasventil auf. Den rest des Logs habe ich hier mal außen vor gelassen.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 16:53:12
Wie gibst du den Code denn ein?

Über DEF oder per RawDef?

Bzw. wie machst du es das notify zu posten?
Das ist ja kein list!

Also mal folgendes:

Klicke beim notify auf DEF, dann löschst du alles zwischen den äußeren geschweiften Klammern, dann "modify", das notify sieht dann so aus:


define test_Warmwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* {}


Jetzt noch mal auf DEF und das hier anstatt der 2 geschweiften Klammern:


{my $GasventilTherme=ReadingsVal("Gasventil_Therme","Gasventil_Therme","n.a."); my $UmwaelzpunmpeTherme=ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","n.a.");my $StellungUmschaltventil=ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0); Log3(undef,1,"test_Warmwasserbetrieb StellungUmschaltventil: $StellungUmschaltventil    GasventilTherme: $GasventilTherme   UmwaelzpunmpeTherme: $UmwaelzpunmpeTherme"); if($GasventilTherme eq "on" &&  $StellungUmschaltventil == 100  && $UmwaelzpunmpeTherme eq "on")  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv")} else {fhem("set Vaillant_Therme_Warmwasserbetrieb Inaktiv")}}


Jetzt wird geloggt was in den Readings steht wenn das notify auslöst...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 16:59:01
Wie häufig kommen denn die Werte?

Wie "stabil" sind diese?

Weil ab und an ja mit Doppelpunkt?

Wichtig ist halt (aber das sehen wir ja mit der "Log-Variante"), dass die Readingwerte auch tatsächlich die Bedingung erfüllen!
Nicht, dass immer wieder mal eines einen anderen Wert hat und dann ist nat. ELSE -> Inaktiv...

Aber das werden wir ja dann im Log sehen...

Und wie geschrieben: Events eindämmen!

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 17:13:22
Ich hatte das Notify bisher immer gelöscht und neu angelegt. Kleinere Änderungen habe ich per Def gemacht.
Du hast Recht, ich muss das ganze mal bereinigen und die Events eindämmen, das mache ich im Anschluss wenn es läuft.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 17:15:27
Zitat von: MadMax-FHEM am 29 Oktober 2021, 16:59:01
Wie häufig kommen denn die Werte?

Wie "stabil" sind diese?

Weil ab und an ja mit Doppelpunkt?



Das EBUS Modul liest die Werte alle 15s aus der Therme, das kann man natürlich noch verlängern.
Die Therme selbst springt sehr unregelmäßig an.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 17:16:28
Klar, eindämmen immer erst wenn es läuft...

Nicht, dass man sich "ins Knie schießt"... ;)

Wenn du die Änderungen oben gemacht hast, dann lass mal laufen und schau ins Log.

Poste mal was da kommt...

Ich lagere ja Logik immer in myUtils aus...
...evtl. auch mal anschauen ;)

https://wiki.fhem.de/wiki/99_myUtils_anlegen

EDIT: alle 15s ein Trigger. Da solltest du auf jeden Fall (nachher) eindämmen oder (wenn nicht aus anderen Gründen nötig) gleich nicht so oft senden lassen. Weil da ja alle 15s das notify prüft und dann müssen die Werte ja immer passen, sonst: ELSE ;)

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 17:24:32
Kurze Frage: Im LOgfile hast du Punmpe geschrieben. Egal?
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 17:27:28
Hab mal am Poti Warmwasserbereitung getriggert:

2021.10.29 17:26:10 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 17:26:11 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 17:26:11 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 17:26:12 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on


2021.10.29 17:26:12 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 17:34:16
Hmm, die letzten beiden Einträge hätten dann eigentlich zu Aktiv führen müssen...

Ist das passiert?

Wenn nicht, dann evtl. noch Logausgabe beim set Active bzw. set Inactive einbauen...

EDIT: Bleibt denn der Zustand stabil? Nicht, dass der immer "schwankt" und der dummy "hüpft" (und immer wenn du schaust ist Inaktiv ;)  )... Der Zeitstempel beim dummy ändert sich aber? Weil nicht, dass der set Befehl "falsch" ist...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 17:43:09
Also so, wieder per DEF:


{my $GasventilTherme=ReadingsVal("Gasventil_Therme","Gasventil_Therme","n.a."); my $UmwaelzpunmpeTherme=ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","n.a.");my $StellungUmschaltventil=ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0); Log3(undef,1,"test_Warmwasserbetrieb StellungUmschaltventil: $StellungUmschaltventil    GasventilTherme: $GasventilTherme   UmwaelzpunmpeTherme: $UmwaelzpunmpeTherme"); if($GasventilTherme eq "on" &&  $StellungUmschaltventil == 100  && $UmwaelzpunmpeTherme eq "on")  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv");Log3(undef,1,"test_Warmwasserbetrieb: set Aktiv");} else {fhem("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");Log3(undef,1,"test_Warmwasserbetrieb: set Inaktiv");}}


Wenn es läuft, dann nat. die Logausgaben wieder raus ;)
Sonst läuft (bei der Frequenz der Daten/Events) das Log voll...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 17:51:00
Warten wir mal das Log ab, wenn die Schaltbefehle auch geloggt werden...
...aber was mich ein wenig stutzig macht ist der Zeilenumbruch im geposteten Log:

Zitat
2021.10.29 17:26:12 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on

Ist das wirklich so oder ist es wegen irgendwelcher Bildschirmeinstellungen etc.?
Nicht, dass am Ende hinter dem "on" noch was kommt, also beispielsweise (wobei eher ungewöhnlich) ein '\r' oder '\n' oder so.
Wenn das nämlich zum Readingwert "gehört", dann ist klar, dass "on" nicht "matcht"...

EDIT: wenn dem so wäre, dann evtl. eq "on"  durch =~ m/on/ ersetzen...

Aber wie geschrieben: mal die weiteren Logausgaben einbauen und laufen lassen und posten...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 17:59:56
2021.10.29 17:54:50 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:54:50 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 17:54:50 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:54:51 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 17:54:51 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:54:51 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 17:54:51 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:54:53 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on


2021.10.29 17:54:53 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:54:53 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on


2021.10.29 17:54:53 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:55:10 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on


2021.10.29 17:55:10 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 17:55:10 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 18:00:36
Nein, an den Bilschirmeinstellungen liegt es nicht.
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 18:05:52
Dann mal sehen was kommt, wenn die zusätzlichen Logausgaben eingebaut sind...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 19:17:11
Mit "=~ m/on/" klappt es :)

2021.10.29 18:50:33 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 18:50:50 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 18:50:50 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 18:50:50 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 18:50:50 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 18:50:50 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 18:50:50 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 18:50:50 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: off

   UmwaelzpunmpeTherme: on


2021.10.29 18:50:50 1: test_Warmwasserbetrieb: set Inaktiv
2021.10.29 18:50:51 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on


2021.10.29 18:50:51 1: test_Warmwasserbetrieb: set Aktiv
2021.10.29 18:50:51 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on


2021.10.29 18:50:51 1: test_Warmwasserbetrieb: set Aktiv
2021.10.29 18:51:10 1: test_Warmwasserbetrieb StellungUmschaltventil: 100    GasventilTherme: on

   UmwaelzpunmpeTherme: on
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 19:23:41
Naja set Aktiv wird ausgeführt.

Bist du sicher, dass der set-Befehl den du hier mal gepostet hattest auch stimmt?
EDIT: bzw. war ja bei dir das mit dem "falschen" Leerzeichen...

Wie heißt denn der dummy?

EDIT: oder tut es jetzt? Hast du das mit dem "match" oder immer noch eq?

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 19:33:44
Ja, jetzt wo ich eq durch das match ersetzt habe, schaltet er im Log auf Aktiv.
Der Dummy heisst "Vaillant_Therme_Warmwasserbetrieb".

Ich würde es jetzt folgendermaßen definieren (das log notify vorher rausnehmen):

define Vaillant_Therme_Brauchwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( ReadingsVal("Gasventil_Therme","Gasventil_Therme","off") =~ m/on/ && ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0) == 100  && ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","off") =~ m/on/)  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");;  } }
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 19:42:25
Zitat von: theotherhalf am 29 Oktober 2021, 19:33:44
Ja, jetzt wo ich eq durch das match ersetzt habe, schaltet er im Log auf Aktiv.

Nur im Log oder auch den dummy?

Wenn es nur mit dem "match" geht, dann ist an dem Wert eines (oder beider) der Readings mit on/off was "faul".
Das nur als Hinweis/Anmerkung, falls du damit noch andere Dinge tust bzw. erneut ein notify/DOIF o.ä. bauen willst.


Zitat von: theotherhalf am 29 Oktober 2021, 19:33:44
Ich würde es jetzt folgendermaßen definieren (das log notify vorher rausnehmen):

define Vaillant_Therme_Brauchwasserbetrieb notify Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( ReadingsVal("Gasventil_Therme","Gasventil_Therme","off") =~ m/on/&& ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0) == 100  && ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","off") =~ m/on/)  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv") ;; } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv");;  } }


Ich würde mal bei =~ m/on/&& zwischen =~ m/on/ und den && ein Leerzeichen einfügen...
Ob das muss keine Ahnung aber es "gefällt" mir besser 8)

Was mich immer verwirrt sind deine doppelten ;;
Wo kopierst du denn das her, was du hier postest?
RawDef?
Direkt aus der config?
(editierst du direkt? -> lass es besser)

Weil bei Eingabe in DEF (und das ist der bevorzugte Weg, weil da auch ein Syntax-Check stattfindet und [wenn aktiviert] auch "Code-highlightning") braucht es nur einen Strichpunkt...

Und noch mal, wenn du in den geschweiften Klammern (bei/nach if/else) nur einen Befehl hast, dann kannst du die/den Strichpunkt(e) auch ganz weglassen.

Ich würde das ja (wie schon geschrieben) in eine Sub auslagern, die Variablen drin lassen und nur die Logausgaben auskommentieren...
...weil: wenn mal wieder was hakt, dann brauchst du nur die Logeinträge wieder einkommentieren und gut...

Aber: dein System, musst du wissen...

EDIT: und halt evtl. statt der wilden dummy und readingsProxy mal einen Blick auf stateFormat, devStateIcon und userReadings werfen...
Aber auch hier: dein System, musst du wissen...

Gruß, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 29 Oktober 2021, 20:33:20
Auch der Dummy ist auf Aktiv gesetzt worden :-)

Das Leerzeichen hatte ich schon entdeckt.
Ich habe das, was ich gepostet habe, über die Kommandozeile eingegeben. Editiert in Word Pad. Die beiden Semikolon z.B. hattest Du mir früher geschickt in einem Beispiel, da waren die her, hab sie jetzt.
Ich fand das am Anfang übersichtlicher und habe das Device neu angelegt und zuvor gelöscht.

Nun sieht es so aus:
Internals:
   CFGFN     
   DEF        Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.* { if( ReadingsVal("Gasventil_Therme","Gasventil_Therme","off") =~ m/on/ && ReadingsNum("Stellung_Umschaltventil", "Stellung_Umschaltventil", 0) == 100  && ReadingsVal("Umwaelzpumpe_Therme","Umwaelzpumpe_Therme","off") =~ m/on/)  {fhem ("set Vaillant_Therme_Warmwasserbetrieb Aktiv")  } else {fhem  ("set Vaillant_Therme_Warmwasserbetrieb Inaktiv")  } }
   FUUID      617c112e-f33f-0f31-f12b-28f73348a48ab8ba
   NAME       test_Warmwasserbetrieb
   NOTIFYDEV  Umwaelzpumpe_Therme,Gasventil_Therme,Stellung_Umschaltventil
   NR         400
   NTFY_ORDER 50-test_Warmwasserbetrieb
   REGEXP     Gasventil_Therme:.*|Stellung_Umschaltventil:.*|Umwaelzpumpe_Therme:.*
   STATE      2021-10-29 20:29:51
   TRIGGERTIME 1635532191.75743
   TYPE       notify
   READINGS:
     2021-10-29 19:54:20   state           active
Attributes:



Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: MadMax-FHEM am 29 Oktober 2021, 20:42:26
D.h. jetzt geht es?

Na dann :)

Packst du dann noch ein [gelöst] o.ä. vor den ersten Post, danke.

Mal noch mal über die anderen Anmerkungen nachdenken... ;)

Viel Spaß noch, Joachim
Titel: Antw:Notify mit UND Verknüpfung
Beitrag von: theotherhalf am 02 November 2021, 16:12:34
Hallo Joachim,
komme jetzt erst wieder dazu hier reinzuschauen.
Ich danke Dir nochmals (und allen anderen auch!) für Deine Hilfe! Es funktioniert bestens und ich habe auch schon angefangen die Devices zu bereinigen um den Event Monitor "einzudämmen".
Viele Grüße
Martin