Hallo!
Ich möchte gerne den Wert eines One-Wire Sensors in eine Variable schreiben, die dann zur Homematic CCU gesendet wird.
Sensorname: Speicher_max
Zielvariable: Temperatur_Pufferspeicher_max
Meine Kenntnisse sind recht rudimentär, was die korrkete Syntax angeht. So wie hier unten funktioniert es leider nicht... :-[
{ fhem("set CCU var Temperatur_Pufferspeicher_max" . ReadingsVal("Speicher_max","temperature",""))}
Könnt ihr mir eine Hilfestellung geben wie es korrekt lauten muss? Danke!
Nicht ganz sicher, aber vermutlich solltest du den Übergabewert erst in eine Variable packen. So etwa:
{ my $MTemp = ReadingsVal("Speicher_max","temperature","");; fhem "set CCU var Temperatur_Pufferspeicher_max $MTemp"}
Anmerkung: wenn das bei jeder Aktualisierung sein soll, könntest du ein notify auf den Job ansetzen und dann mit $EVENT arbeiten.
siehe commandref für set ...
set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]
-->
set CCU var Temperatur_Pufferspeicher_max [Speicher_max:temperature]
Danke euch!
Habe es jetzt so programmiert:
define Speicher_max_Temperatur_zur_HomematicCCU_Systemvariable at +*00:05 { my $MTemp = ReadingsVal("Speicher_max","temperature","");; fhem "set CCU var Temperatur_Pufferspeicher_max $MTemp"}
Der Puffer ist ein träges Gebilde, alle 5 Minuten Übertrag sollten reichen.
Zitat von: theotherhalf am 06 Dezember 2018, 17:04:57
Der Puffer ist ein träges Gebilde, alle 5 Minuten Übertrag sollten reichen.
Ebend... Da sind schon 5 Min eher kurz, oder?
Grundsätzlich arbeitet FHEM eigentlich eher event-basiert, es wird also auf Input von außen reagiert (und am besten dann noch nur dann, wenn sich auch was geändert hat...).
Daher der folgende Vorschlag: nicht alle 5 Minuten stur schreiben (at), sondern alle 5 Minuten nur den Sensor abfragen (der hat ja irgendein Intervall, in dem er aktualisiert, oder?).
Dann noch einen Änderungsschwellwert drauf (event-on-change-reading mit 0.5-er Hysterese, ggf. "optimiert" mit mind. 1x pro Stunde Aktualisierung). Auf die Sensorwert-Änderung dann (statt des at) ein notify reagieren lassen, das den neuen Wert dann an die CCU weitergibt.
Selbes faktisches Ergebnis, aber weniger Schreibvorgänge bzw. effektives Datenhandling.
Nur als Anregung...
Und man kann (so oder so) auch den einfachen FHEM-Code nutzen (mit $EVENT im notify), wie wuppi68 zurecht angemerkt hat...
Hm, dafür gibt es doch notify. Und wer es kompliziert möchte nimmt doif.
Gesendet von iPhone mit Tapatalk
Grüße Jörg
Zitat von: JoWiemann am 06 Dezember 2018, 17:21:12
Hm, dafür gibt es doch notify. Und wer es kompliziert möchte nimmt doif.
Gesendet von iPhone mit Tapatalk
Grüße Jörg
Oder auch einfacher:
define di_var DOIF {fhem_set "CCU var Temperatur_Pufferspeicher_max ".[Speicher_max:temperature]}
Edit: P.S. ohne Attribute und der Event-Trigger ist auch schon definiert
Vielen Dank euch allen.
Für den Moment bin ich erst mal zufrieden dass alles läuft.
Ich werde mich aber die Tage gerne an die Optimierung begeben, dann habe ich sicher noch einige Fragen.