FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MiWe58 am 18 November 2013, 18:39:34

Titel: Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: MiWe58 am 18 November 2013, 18:39:34
Hallo,

nachdem ich nun ca 30 Aktoren und Sensoren erfolgreich zum Laufen bekommen habe, funktioniert die zeitabhängige Steuerung schon sehr schön.

Nun möchte ich den nächsten Schritt gehen und in Abhängigkeit von Sensorwerten zu steuern beginnen.
Mit dem "notify" als ausführende Struktur habe ich mich schon ein wenig vertraut gemacht.

Bei der Suche nach einer Befehlsfolge, die mir den jeweils aktuellsten Sensorwert zur Weiterverarbeitung zwischenspeichert, komme ich trotz intensiven Suchens nicht weiter. Mir fehlt offenbar der entscheidende Hinweis.

Nutzen möchte ich das "dummy" Modul um den aktuellen Wert des Temperatursensors zur Weiterverarbeitung zu speichern
Der Temperatursensor ist ein HM-WDS40-TH-I
der Logfileauszug hierzu sieht folgendermaßen aus:

2013-11-12_18:56:04 T_Sensor_EG_WZ T: 23.1 H: 55
2013-11-12_18:58:25 T_Sensor_EG_WZ temperature: 23.1
2013-11-12_18:58:25 T_Sensor_EG_WZ humidity: 55
2013-11-12_18:58:25 T_Sensor_EG_WZ T: 23.1 H: 55
2013-11-12_19:00:32 T_Sensor_EG_WZ temperature: 23.1
2013-11-12_19:00:32 T_Sensor_EG_WZ humidity: 55
2013-11-12_19:00:32 T_Sensor_EG_WZ T: 23.1 H: 55
2013-11-12_19:03:28 T_Sensor_EG_WZ temperature: 23.2
2013-11-12_19:03:28 T_Sensor_EG_WZ humidity: 54


im dummy "WZTemperatur" soll nun der jeweils letzte Wert des Sensors, siehe Zeile "temperature: 23.2" (also der Wert 23.2) gespeichert werden


Wie gehe ich hierzu vor?

define WZTemperatur dummy

Nun soll "WZTemperatur" der jeweils aktuellste Wert der Zeile "temperature" zugeordnet werden



Vielen Dank für einen Hinweis. Gerne auch alternative Möglichkeiten

GRuß
Michael
Titel: Antw:Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: UliM am 18 November 2013, 18:49:53
define abc notify HM-WDS40-TH-I:temp.* set WZTemperatur ReadingsVal('HM-WDS40-TH-I','temperature','error')
bzw.
define abc notify HM-WDS40-TH-I:temp.* fhem(" 'set WZTemperatur '.ReadingsVal('HM-WDS40-TH-I','temperature','error') ")
Titel: Antw:Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: justme1968 am 18 November 2013, 19:51:35
bevor du damit anfängst überleg dir aber noch mal kurz warum du den wert überhaupt zwischenspeichern möchtet.

entweder reagierst du im notify direkt auf den aktuellen sensor wert oder du kannst den wert jederzeit mit ReadingsVal abfragen.

du solltest vermeiden alle möglichen readings in dummys zu duplizieren. das ist fast nie nötig.

gruss
  andre
Titel: Antw:Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: MiWe58 am 19 November 2013, 12:07:15
Vielen Dank für die schnelle Unterstützung

Leider funzt es bisher noch nicht.
Hier nun meine finalen Zeilen in der fhem.cfg

define WZTemperatur dummy
define Read_WZ_Temp notify T_Sensor_EG_WZ:temp.* set WZTemperatur ReadingsVal('T_Sensor_EG_WZ','temperature','error')


Ziel ist es, den dummy "WZTemperatur" mit der aktuellen Temperatur vorzubelegen.
Hier das Ergebnis aus der Wertebelegung von WZTemperatur:

dummy
WZTemperatur  ReadingsVal('T_Sensor_EG_WZ','temperature','error')

Hier hätte ich nun den Temperaturwert erwartet. Statt dessen wird der dummy mit dem Befehlsstring gefüllt

Merkwürdigerweise zeigt das Logfile folgende z.T. Fehler, die bisher nicht aufgetreten sind:

2013-11-19_11:41:15 T_Sensor_EG_WZ ResndFail
2013-11-19_11:41:15 T_Sensor_EG_WZ MISSING ACK
2013-11-19_11:43:59 T_Sensor_EG_WZ temperature: 21.3
2013-11-19_11:43:59 T_Sensor_EG_WZ humidity: 51
2013-11-19_11:43:59 T_Sensor_EG_WZ T: 21.3 H: 51
2013-11-19_11:44:01 T_Sensor_EG_WZ ResndFail
2013-11-19_11:44:01 T_Sensor_EG_WZ MISSING ACK
2013-11-19_11:46:25 T_Sensor_EG_WZ Activity: unknown
2013-11-19_11:46:32 T_Sensor_EG_WZ temperature: 21.3
2013-11-19_11:46:32 T_Sensor_EG_WZ humidity: 51
2013-11-19_11:46:32 T_Sensor_EG_WZ T: 21.3 H: 51
2013-11-19_11:46:34 T_Sensor_EG_WZ ResndFail
2013-11-19_11:46:34 T_Sensor_EG_WZ MISSING ACK
2013-11-19_11:48:48 T_Sensor_EG_WZ temperature: 21.3
2013-11-19_11:48:48 T_Sensor_EG_WZ humidity: 51
2013-11-19_11:48:48 T_Sensor_EG_WZ T: 21.3 H: 51
2013-11-19_11:50:52 T_Sensor_EG_WZ temperature: 21.3
2013-11-19_11:50:52 T_Sensor_EG_WZ humidity: 51
2013-11-19_11:50:52 T_Sensor_EG_WZ T: 21.3 H: 51



Die 2. Variante von UliM bringt das gleiche Ergebnis
Irgendwo ist noch der Wurm drin.

Gruß
Michael
Titel: Antw:Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: Puschel74 am 19 November 2013, 14:14:25
Hallo,

die Langversion:
define abc notify T_Sensor_EG_WZ:temp.* {
  my $temp=ReadingsVal("T_Sensor_EG_WZ","temperature","error");
  fhem("set WZTemperatur .$temp");
}

Ungetestet und evtl. fehlerhaft aber ...
Wie justme1968 schon angemerkt hat:
Zitatdu solltest vermeiden alle möglichen readings in dummys zu duplizieren. das ist fast nie nötig.
Wofür soll das gut sein??

Grüße

P.S.:Diesen Code direkt in die fhem.cfg kopiert bringt mit Sicherheit Fehlermeldungen da \ und ;; fehlen.
Ich bearbeite nur! die DEF eines notify und arbeite seltenst direkt in der fhem.cfg daher kümmere ich mich um Zeilenenden und Zeichenschutz nicht.
Titel: Antw:Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: MiWe58 am 19 November 2013, 18:42:42
Leider funktioniert dieser Ansatz auch nicht.
wie bei den bisherigen varianten enthält der dummy nicht den Wert der Variablen, sondern den entsprechenden String

hier .$temp

Gibt es noch Ideen, wie das funktionieren könnte?

Gruß
Michael
Titel: Antw:Einen Sensorwert weiter verarbeiten zur Steuerung
Beitrag von: Puschel74 am 19 November 2013, 18:51:31
Hallo,

fhem("set WZTemperatur ".$temp);

Grüße

Edith: Grad bei mir gesehen. Ich weiß die Werte so einem Dummy zu:

fhem("set WZTemperatur $temp");