Autor Thema: Kopieren eines Wert einer Variablen in eine andere  (Gelesen 190 mal)

Offline theotherhalf

  • Full Member
  • ***
  • Beiträge: 126
Kopieren eines Wert einer Variablen in eine andere
« 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!
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4714
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #1 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.
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | VCCU mit einiger HM-Hardware | MySensors seriell (2.3.1-beta@RS485, div. konkrete Hardware, u.a. einige DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Offline Wuppi68

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1773
  • Wuppertaler Wimpelbeauftragter
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #2 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]
Jetzt auf nem I3 und primär Homematic

kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

Offline theotherhalf

  • Full Member
  • ***
  • Beiträge: 126
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #3 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.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4714
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #4 am: 06 Dezember 2018, 17:15:08 »
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...
Server: HP-T5740 mit Debian stretch (i386) + aktuellem FHEM | ConfigDB | VCCU mit einiger HM-Hardware | MySensors seriell (2.3.1-beta@RS485, div. konkrete Hardware, u.a. einige DS18B20) | Milight@ESP-GW@MQTT2 | zigbee2mqtt@MQTT2 | SIGNALduino | MapleCUN

Online JoWiemann

  • Tester
  • Hero Member
  • ****
  • Beiträge: 2479
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #5 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
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

Online Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5830
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #6 am: 06 Dezember 2018, 18:11:15 »
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
« Letzte Änderung: 06 Dezember 2018, 18:26:28 von Damian »
Programmierte FHEM-Module: DOIF mit uiTable, DOIF-Perl, THRESHOLD, FHEM-Befehl: IF

Offline theotherhalf

  • Full Member
  • ***
  • Beiträge: 126
Antw:Kopieren eines Wert einer Variablen in eine andere
« Antwort #7 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.
FHEM Anfänger
HM CCU2 mit diversen Komponenten als Steuerung
FHEM mit Floorplan auf Raspi 3 (Raspbian Jessie)  zur Visualisierung (Heizung, Zustände, etc.) und angeschlossenen One-Wire Sensoren
Schnittstelle CCU2 - FHEM mit HMCCU
EBUSD Applikation auf Raspi 2 mit Anbindung an Vaillant Heizung