FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: frave am 26 Oktober 2016, 09:24:08

Titel: dummy Variable aus Readings berechnen
Beitrag von: frave am 26 Oktober 2016, 09:24:08
Hallo,

ich beiße mir momentan an einen relativ einfachen Thema die Zähne aus.
Aus einer SNMP-Device lese ich die Temperatur aus. Der Ausgelesene Wert ist nur um den Faktor 10 zu hoch, d.h. der ausgelesene Wert muss noch durch 10 geteilt werden.
Ich versuche nun über ein notify eine Dummy-Variable mit eben diesem Wert geteilt durch 10 zu beschreiben.
Hier mein Ansatz:

Die  per SNMP abgefragte (um Faktor 10 zu hohe) Variable steht in:
DZ.Teracom_tcw240bv:Temp_Vorlauf_Wärmetauscher

#Variablenefinition
define Temp_Vorlauf_WT_DZ dummy
define Temp_Vorlauf_WT_DZ_notify notify

#notify
DZ.Teracom_tcw240bv:Temp_Vorlauf_Wärmetauscher:.* set Temp_Vorlauf_WT_DZ {ReadingsVal("DZ.Teracom_tcw240bv","Temp_Vorlauf_Wärmetauscher","0")/10}

Im notify muss allerdings irgendwo ein Fehler sein, da sich der state der Dummy-Variable "Temp_Vorlauf_WT_DZ" zwar aktualisiert aber der Inhalt
"{ReadingsVal("DZ.Teracom_tcw240bv","Temp_Vorlauf_Wärmetauscher","0")/10}" bleibt.
Ich hätte da jetzt eigentlich eine Zahl erwartet und nicht die Definition.

Wäre für jede Hilfe sehr Dankbar!

Beste Grüße,
Florian
Titel: Antw:dummy Variable aus Readings berechnen
Beitrag von: igami am 26 Oktober 2016, 09:33:16
du musst komplett auf Perl-Ebene wechseln

... {fhem("set <name> ".(ReadingsVal(...) / 10)}
Titel: Antw:dummy Variable aus Readings berechnen
Beitrag von: frave am 26 Oktober 2016, 09:52:25
Hallo igami,

habe das jetzt so geändert, leider funktioniert so nicht mal mehr das notify.

Hier die Definition:

DZ.Teracom_tcw240bv:Temp_Vorlauf_Wärmetauscher:.*
{fhem("set Temp_Vorlauf_WT_DZ ".(ReadingsVal("DZ.Teracom_tcw240bv","Temp_Vorlauf_Wärmetauscher","0") /10)}

Besten Dank!
Titel: Antw:dummy Variable aus Readings berechnen
Beitrag von: igami am 26 Oktober 2016, 10:22:19
Gibt es eine Fehlermeldung?
Es fehlt eine ) am Ende, die den fhem Aufruf wieder schließt.
Titel: Antw:dummy Variable aus Readings berechnen
Beitrag von: frave am 26 Oktober 2016, 10:46:26
Hallo Igami,

eine Fehlermeldung kam leider nicht. Aber die fehlende Klammer wars tatsächlich.
Eine letzte Frage hätte ich aber noch, woher weiß ich denn, ob ich in Perl wechseln muss?

Besten Dank!
Florian
Titel: Antw:dummy Variable aus Readings berechnen
Beitrag von: igami am 26 Oktober 2016, 11:08:02
Zitat von: frave am 26 Oktober 2016, 10:46:26
Eine letzte Frage hätte ich aber noch, woher weiß ich denn, ob ich in Perl wechseln muss?
Weil ReadingsVal eine Perl funktion ist und fhem nicht rechnen kann :P
Mir fällt keine einfache Antwort auf die Frage ein.

Bitte den Thread noch mit einem gelöst markieren, aber nicht schließen, und die vollständige Lösung posten.
Titel: Antw:dummy Variable aus Readings berechnen - gelöst
Beitrag von: frave am 26 Oktober 2016, 11:22:10
Die vollständige Lösung:
DZ.Teracom_tcw240bv:Temp_Vorlauf_Wärmetauscher:.*
{fhem("set Temp_Vorlauf_WT_DZ ".(ReadingsVal("DZ.Teracom_tcw240bv","Temp_Vorlauf_Wärmetauscher","0") /10))}
Titel: Antw:dummy Variable aus Readings berechnen
Beitrag von: DeeSPe am 26 Oktober 2016, 11:24:08
Zitat von: frave am 26 Oktober 2016, 10:46:26
Eine letzte Frage hätte ich aber noch, woher weiß ich denn, ob ich in Perl wechseln muss?

Immer wenn Du mehr als nur die reinen FHEM Befehle wie set, get, setreading usw. verwenden willst musst Du auf Perl wechseln.
Also z.B. bei Einsatz von Funktionen wie Value, ReadingsVal, ReadingsNum usw.

Gruß
Dan