FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: JueFi am 04 November 2022, 14:24:21

Titel: [gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 04 November 2022, 14:24:21
Leider habe ich kein wirklich passendes Thema gefunden, wo ich mich anhängen kann.

Ich schaffe es, aus FHEM heraus meine Werte für Temperatur und Luftfeuchtigkeit in der CCU3 zu setzen (per HMCCU)
set myCCU var CUxD.CUX9002001:1.SET_TEMPERATURE 20.1
set myCCU var CUxD.CUX9002001:1.SET_HUMIDITY 91

Jetzt möchte ich aber einen Notify erstellen, der mir die Werte automatisch bei Änderung an die CCU schickt.
Das ist mein kläglicher Versuch, der nicht klappt.
define nt.Tmp_T4 notify (TMP_T4.*) {\
  fhem ('myCCU var CUxD.CUX9002001:1.SET_TEMPERATURE ' .$EVTPART1);;\
}

Wie komme ich an die Werte für Temperatur und Luftfeuchte meines Sensors, um die zur CCU zu schicken ?
Im Eventlog kommen die Meldungen für den Temperatur-Sensor in dieser Form:
2022-11-04 14:04:57 TRX_WEATHER Tmp_T4 T: 18.9 H: 66 BAT: ok
Vielen Dank
Titel: Antw:TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: CoolTux am 05 November 2022, 10:14:05
Gib mal bitte ein list vom Tmp_T4 Device. Bin mir sicher das nicht nur das eine Reading kommt. Das scheint ja das state Reading zu sein. Da gibt es auch noch temperature und humidity bestimmt. Und dann musst Du Deine RegEx setzen.

define nt.Tmp_T4 notify TMP_T4:(temperature|humidity):.*

Und im Notify weiter auswerten
Titel: Antw:TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Otto123 am 05 November 2022, 10:24:45
Zitat von: JueFi am 04 November 2022, 14:24:21
Jetzt möchte ich aber einen Notify erstellen, der mir die Werte automatisch bei Änderung an die CCU schickt.
Hi,

Tipp: die einfachste Vorgehensweise ist mit Hilfe vom Eventmonitor.
https://wiki.fhem.de/wiki/Event_monitor
Danach kann man optimieren ;)

Gruß Otto
Titel: Antw:TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 05 November 2022, 10:52:01
Vielen Dank euch beiden.

So läuft es jetzt:
Ich habe noch per "Log" eine Debug-Hilfsausgabe ins Logfile eingefügt, die kann natürlich raus.
Und nicht wundern, ich habe einen anderen Sensor benutzt zum Testen (Tmp_T2, statt wie oben Tmp_T4, ist aber der gleiche Typ)
define nt.Tmp_T2 notify (Tmp_T2.*) {\
my $temperature = ReadingsNum("Tmp_T2","temperature",10);;\
my $humidity = ReadingsNum("Tmp_T2","humidity",10);;\
Log 3, "$NAME: CCU Temperatur: $temperature";;;;\
Log 3, "$NAME: CCU Humidity: $humidity";;;;\
fhem ('set myCCU var CUxD.CUX9002001:1.SET_TEMPERATURE ' .$temperature);;\
fhem ('set myCCU var CUxD.CUX9002001:1.SET_HUMIDITY ' .$humidity);;\
}
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Otto123 am 05 November 2022, 10:57:44
Das Suchmuster ist "nicht schön" prüf mal:
{notifyRegexpCheck('(Tmp_T2.*)')}
das belastet das System unnötig.
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 05 November 2022, 11:03:47
Sorry bin nicht so fit.

Statt
define nt.Tmp_T2 notify (Tmp_T2.*) {\
soll ich
define nt.Tmp_T2 {notifyRegexpCheck('(Tmp_T2.*)')} {\
probieren ?
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Nobbynews am 05 November 2022, 11:15:25
Zitat von: JueFi am 05 November 2022, 11:03:47
define nt.Tmp_T2 {notifyRegexpCheck('(Tmp_T2.*)')} {\
probieren ?
Nein, das war so nicht gemeint.
Du solltest das in der Kommandozeile von FHEM schreiben. Die Ausgabe zeigt Dir dann an, auf welche devices Dein notify reagiert.
Zur Probe kannst Du ja mal eingeben:
{notifyRegexpCheck('(Tmp_T2:temperatue:.*)')}

Die Verbesserung bzw. das Schärfen des Triggers meinte Otto und zwar zu:
define nt.Tmp_T2 notify Tmp_T2:temperature:.*)
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Otto123 am 05 November 2022, 11:16:04
Zitat von: JueFi am 05 November 2022, 11:03:47
Sorry bin nicht so fit.
nein! Du sollst diesen Code mal in die FHEM Kommandozeile werfen und die Ausgabe versuchen zu verstehen.
Vor allem ist Dein Suchmuster nicht optimal! Die Klammern sind so unnütz und es es fehlt die Trennung Gerätename:Event.
https://fhem.de/commandref_modular_DE.html#notify
Dein Suchmuster lässt das notify auf jeden Event triggern!

Und ich will Dir zeigen wie Du fitter wirst, also lies bitte den Link oben zum Wiki und verstehe ihn.
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: CoolTux am 05 November 2022, 11:39:22
{notifyRegexpCheck('TMP_":temperatue:.*|TMP_2:humidity:.*')}

Bei Dir dann

define nt.Tmp_T2 notify TMP_2:temperatue:.*|TMP_2:humidity:.*

Finde ich aber zu viel geschrieben. Geht auch anders.

define nt.Tmp_T2 notify TMP_T2:(temperature|humidity):.*
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 05 November 2022, 11:49:41
Vielen Dank für eure Hilfe

{notifyRegexpCheck('(Tmp_T2.*)')}
in der Commandozeile ergibt diese Ausgabe
(Tmp_T2.*): devspec Tmp_T2 (OK)
reagiert also auf Änderungen im Device Tmp_T2, genau das will ich ja.

Wenn ich
define nt.Tmp_T2 notify Tmp_T2:temperature:.*)
verwende, wird ja eine Änderung in "Humidity" nicht getriggert. Dann müsste ich ein zweites Notify aufsetzen, denke ich. Bringt das wirklich einen Vorteil ?
EDIT: Oder so wie CoolTux vorschlägt, das klingt gut.

ZitatUnd ich will Dir zeigen wie Du fitter wirst, also lies bitte den Link oben zum Wiki und verstehe ihn.
Gelesen habe ich, verstanden ... leider bei weitem nicht.
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: CoolTux am 05 November 2022, 11:52:29
Schau Dir bitte noch mal mein Post eins über Deinen letzten an
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Nobbynews am 05 November 2022, 11:56:31
Zitat von: JueFi am 05 November 2022, 11:49:41
verwende, wird ja eine Änderung in "Humidity" nicht getriggert. Dann müsste ich ein zweites Notify aufsetzen, denke ich. Bringt das wirklich einen Vorteil ?
Nö, das geht auch in einem notify:
define nt.Tmp_T2 notify Tmp_T2:(temperature|humidity):.*


Edit: CoolTux war schneller.....
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Otto123 am 05 November 2022, 14:41:54
Das wird der Thread der schludrigen Klammern  ::) ;D
Also das ist die Variante für schreibfaule
define nt.Tmp_T2 notify Tmp_T2:(temperature|humidity):.* {}
Soweit ich weiß, ist die Variante besser fürs System:
define nt.Tmp_T2 notify Tmp_T2:temperature:.*|Tmp_T2:humidity:.* {}

Die gewünschten Werte stehen dann auch schon im $EVENT ($EVTPART1) man kann sich ReadingsNum() sparen. Mit etwas Geschick kann man den Code auch generalisieren. Der erste Ansatz  im ersten Beitrag abgewandelt:
fhem ('set myCCU var CUxD.CUX9002001:1.SET_'.uc($EVTPART0).' '.$EVTPART1)

Gruß Otto
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 05 November 2022, 17:04:55
Wie es aussieht ist die Realität leider doch anders ...

Es kommen nur diese Events von den Thermometern
Events (Filter: Tmp_T2.*)
2022-11-05 16:53:58 TRX_WEATHER Tmp_T2 T: 17.8 H: 56 BAT: ok
2022-11-05 16:54:39 TRX_WEATHER Tmp_T2 T: 17.9 H: 57 BAT: ok
2022-11-05 16:56:01 TRX_WEATHER Tmp_T2 T: 18 H: 56 BAT: ok
2022-11-05 16:57:23 TRX_WEATHER Tmp_T2 T: 18.2 H: 60 BAT: ok
2022-11-05 16:58:04 TRX_WEATHER Tmp_T2 T: 19.3 H: 71 BAT: ok
2022-11-05 16:58:45 TRX_WEATHER Tmp_T2 T: 19 H: 70 BAT: ok
2022-11-05 16:59:26 TRX_WEATHER Tmp_T2 T: 19.3 H: 78 BAT: ok
2022-11-05 17:00:07 TRX_WEATHER Tmp_T2 T: 19.3 H: 80 BAT: ok
2022-11-05 17:00:48 TRX_WEATHER Tmp_T2 T: 19.2 H: 79 BAT: ok
2022-11-05 17:01:29 TRX_WEATHER Tmp_T2 T: 19.1 H: 76 BAT: ok
2022-11-05 17:02:10 TRX_WEATHER Tmp_T2 T: 19 H: 75 BAT: ok
2022-11-05 17:02:51 TRX_WEATHER Tmp_T2 T: 19 H: 72 BAT: ok
2022-11-05 17:03:32 TRX_WEATHER Tmp_T2 T: 18.9 H: 71 BAT: ok
2022-11-05 17:04:13 TRX_WEATHER Tmp_T2 T: 18.9 H: 69 BAT: ok


D.h. ja dann, ich muss den Notify auf notify Tmp_T2.* setzen, wenn ich das richtig sehe.

Trotzdem vielen Dank für Eure Mühe

Viele Grüße

Jürgen
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Otto123 am 05 November 2022, 17:13:53
zeig mal ein list Tmp_T2
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 05 November 2022, 17:21:02
Internals:
   CODE       THGR228N_9e_2
   DEF        THGR228N_9e_2
   FUUID      5cf2bdc9-f33f-751b-9219-087753a97443d1ce
   IODev      TRX_0
   LASTInputDev TRX_0
   MSGCNT     458
   NAME       Tmp_T2
   NR         82
   STATE      T: 18.7 H: 60 BAT: ok
   TRX_0_MSGCNT 458
   TRX_0_RAWMSG 0a5201af9e0200bb3c0059
   TRX_0_TIME 2022-11-05 17:19:56
   TYPE       TRX_WEATHER
   eventCount 75
   READINGS:
     2022-11-05 11:59:18   IODev           TRX_0
     2022-11-05 17:19:56   battery         ok
     2022-11-05 17:19:56   batteryState    ok
     2021-09-25 21:17:38   battery_warning 1632597458.32888
     2022-11-05 17:19:56   humidity        60
     2022-11-05 17:19:56   state           T: 18.7 H: 60 BAT: ok
     2022-11-05 17:19:56   temperature     18.7
Attributes:
   IODev      TRX_0
   alias      Tmp_T2_Schlafen
   event-min-interval state:900
   event-on-change-reading state
   group      Dash-Temperatur
   room       Temperaturen


EDIT: und das Define
define Tmp_T2 TRX_WEATHER THGR228N_9e_2
setuuid Tmp_T2 5cf2bdc9-f33f-751b-9219-087753a97443d1ce
attr Tmp_T2 IODev TRX_0
attr Tmp_T2 alias Tmp_T2_Schlafen
attr Tmp_T2 event-min-interval state:900
attr Tmp_T2 event-on-change-reading state
attr Tmp_T2 group Dash-Temperatur
attr Tmp_T2 room Temperaturen
define FileLog_Tmp_T2 FileLog ./log/Tmp_T2-%Y.log Tmp_T2
setuuid FileLog_Tmp_T2 5cf2bdc9-f33f-751b-79b6-75882026dbe2063e
attr FileLog_Tmp_T2 logtype temp4hum4:Temp/Hum,text
attr FileLog_Tmp_T2 room Temperaturen
define SVG_Tmp_T2 SVG FileLog_Tmp_T2:SVG_Tmp_T2:CURRENT
setuuid SVG_Tmp_T2 5cf2bdc9-f33f-751b-02f4-bb10e449c46f464f
attr SVG_Tmp_T2 label "Tmp_T2 Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_Tmp_T2 room Plots


EDIT2: Ich sehe es schon - aber so wollte ich das im LOG, um es Plotten zu können - ist alles lange her ...
event-on-change-reading state
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: Otto123 am 05 November 2022, 18:28:39
Damit sollte es funktionieren:
attr Tmp_T2 event-on-change-reading state,temperature,humidity
Und das Log bleibt wie es ist.
attr FileLog_Tmp_T2 ignoreRegexp Tmp_T2:humidity:.*|Tmp_T2:temperature:.*
Titel: Antw:[gelöst] Oregon TRX_WEATHER THGR228N Werte zur CCU3 übertragen
Beitrag von: JueFi am 05 November 2022, 19:39:21
Gibt wohl nichts, was du nicht hinbekommst  ;)
Dankeschön  :D