dummy Variable aus Readings berechnen

Begonnen von frave, 26 Oktober 2016, 09:24:08

Vorheriges Thema - Nächstes Thema

frave

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

igami

du musst komplett auf Perl-Ebene wechseln

... {fhem("set <name> ".(ReadingsVal(...) / 10)}
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

frave

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!

igami

Gibt es eine Fehlermeldung?
Es fehlt eine ) am Ende, die den fhem Aufruf wieder schließt.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

frave

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

igami

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.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

frave

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))}

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe