FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: theotherhalf am 06 Dezember 2018, 16:41:59

Titel: Kopieren eines Wert einer Variablen in eine andere
Beitrag von: theotherhalf am 06 Dezember 2018, 16:41:59
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!
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag von: Beta-User am 06 Dezember 2018, 16:50:57
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.
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag von: Wuppi68 am 06 Dezember 2018, 16:58:22
siehe commandref für set ...

set Lamp blink [blinkDummy:number] [r:blinkDummy:duration:d]

-->

set CCU var Temperatur_Pufferspeicher_max [Speicher_max:temperature]
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag von: theotherhalf am 06 Dezember 2018, 17:04:57
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.
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag von: Beta-User am 06 Dezember 2018, 17:15:08
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...
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag 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
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag von: Damian am 06 Dezember 2018, 18:11:15
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
Titel: Antw:Kopieren eines Wert einer Variablen in eine andere
Beitrag von: theotherhalf am 06 Dezember 2018, 20:23:48
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.