FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Heiner am 03 Mai 2014, 11:42:28

Titel: dummy und filelog
Beitrag von: Heiner am 03 Mai 2014, 11:42:28
Hi, ich habe eine Heizung die mir die Aussentemperatur als reading liefert, allerdings reichlich oft. Da ich den Intervall des Readings innerhalb Heizung nicht ändern will/kann hab ich mir überlegt das ich den Wert in ein dummy schreibe und diesen dummy dann ins Filelog uebernehme ( indem nur minimale Werte (also Aenderung ) auftauchen sollen.

Hier der Code:

define LuftTemp dummy
define LuftTempnotify notify (Heizung.AussenTemp.*) setstate LuftTemp $EVTPART1
attr LuftTemp event-on-change-reading 1
####klappt: Im Dummy wird im State die Temperatur angezeigt.

wuerde alternativ zum LuftTempnotify die Zeile unten das gleiche bewirken?
attr LuftTemp userReadings LuftTemp { ReadingsVal("Heizung","AussenTemp",0);; }

Nun zur eigentlichen Frage: Warum geht das Filelog hierzu nicht?

define Log_Temp FileLog ./log/Temp-%Y.log LuftTemp

Es wird ein leeres File erzeugt, aber obwohl sich der Wert in State aendert, wird nix ins filelog geschrieben.

Danke für eure Hilfe


Titel: Antw:dummy und filelog
Beitrag von: Puschel74 am 03 Mai 2014, 12:05:07
Hallo,

setstate löst mWn kein Event aus.
Ob Dummys generell Events auslösen kann ich dir auch nicht sagen aber versuch mal set LuftTemp $EVTPART1

Und wenn du die Code-Tags verwendest sieht der Text auch nicht schlecht aus  ;)

set LuftTemp $EVTPART1

grüße
Titel: Antw:dummy und filelog
Beitrag von: Heiner am 03 Mai 2014, 12:35:56
leider keine Aenderung.

was heisst "wenn ich CodeTags verwende"?
Titel: Antw:dummy und filelog
Beitrag von: Puschel74 am 03 Mai 2014, 12:40:15
Hallo,

Zitatwas heisst "wenn ich CodeTags verwende"?

Na nach 78 Beiträgen sollte man hier
http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
aber schon mal reingeschaut haben  ;)

Grüße

Edith:
define LuftTempnotify notify (Heizung.AussenTemp.*) setstate LuftTemp $EVTPART1
Wird das notify überhaupt getriggert?
Was sagt der EventMonitor zu Heizung.AussenTemp ?

define LuftTempnotify notify Heizung:AussenTemp.* setstate LuftTemp $EVTPART1
Da du uns leider das define für das Device vorenthälst muss ich erstmal raten.

Edith2: Oder anders gefragt - was steht im FHEM-Logfile?
Titel: Antw:dummy und filelog
Beitrag von: Heiner am 05 Mai 2014, 11:34:23
Hi, also ich versuchs noch einmal:

Also ich versuche ja alles richtig zu machen und hatte auch den Code den ich fuer relevant halte eingefuegt. Aber eben als Text in der Mail und nicht als sogenannten CodeTag, sorry. Nun hab ihc nochmal alle Buttons gecheckt und den richtigen gefunden.

Ich dachte der Code des originalen Geraetes der ein reading hat sei nicht relevant, da ich dieses Reading ja bereits in ein dummy schreiben kann, wie auch immer hier das oroiginal geraet
define Heizung THZ /dev/ttyUSB0@57600
attr Heizung userReadings AussenTemp { sprintf ('%1.f ',(split ' ',ReadingsVal("Heizung","sGlobal",0))[1])}


die zweite Zeile splited das Reading und reduziert die Dezimalstelle. Weil es ein extrakt eines groessene Readings ist das sich oft aendert bekomme ich mehrfach aenderungen der AussenTemp obwhol sich nominal nichts aendert.

Daher schreibe ich die AussenTemp in ein dummy und das klappt auch:
define LuftTemp dummy
define LuftTempnotify notify (Heizung.AussenTemp.*) setstate LuftTemp $EVTPART1


der Dummy LuftTemp hat nun im State immer die richtige Temperatur.
(see attached)

Was nicht geht ist dieser Filelog. eigentlich sollte doch mit jedem update des Lufttemp dummy ein Trigger fuer das Filelog entstehen. Klappt jedenfalls fals der Dummy als ein/aus Schalter benutzt wird.
define Log_Temp FileLog ./log/Temp-%Y.log LuftTemp.*

Wenn es gehen wuerde hoffe ich mit dem folgenden code die Anzahl der Aenderungen auf "wirkliche" wertaenderungen zu beschraenken:
attr LuftTemp event-on-change reading 1
aber so weit bin ich ja noch nicht.

Ach ja das LogFile: Das Temp-2014.log ist leer, und das fhem.log sagt gar nichts zu diesem Teil.

Ich habe dann einmal die Klammern weggelassen und mit rereadcfg hoffentlich den trigger angestossen, aber ich erkenne keine Aenderung.

Was mache ich falsch? Danke fuer die Hilfe.

Titel: Antw:dummy und filelog
Beitrag von: Puschel74 am 05 Mai 2014, 18:23:02
Hallo,

warum setzt du event-on-change-reading .* nicht auf das Device Heizung?

attr Heizung event-on-change-reading .*
sollte dir doch den Umweg über den Dummy ersparen  :o
Oder hab ich was verpasst?

Das
define LuftTempnotify notify (Heizung.AussenTemp.*) setstate LuftTemp $EVTPART1
sollte doch eigentlich so
define LuftTempnotify notify Heizung:AussenTemp.* setstate LuftTemp $EVTPART1
aussehen - hoffe ich mal.
Dazu wäre aber ein Eintrag aus dem EventMonitor recht interessant wenn Heizung etwas sendet resp. dort sieht man was FHEM an Events bekommt.

Grüße
Titel: Antw:dummy und filelog
Beitrag von: Heiner am 06 Mai 2014, 08:41:33
Zitatwarum setzt du event-on-change-reading .* nicht auf das Device Heizung?

1. weil das Reading in Heizung ein split aus dem folgenden Reading ist:
sGlobal: outsideTemp: 10.1 flowTemp: 26.1 returnTemp: 24.4 hotGasTemp: 37.1 dhwTemp: 42.1 flowTempHC2: -60 evaporatorTemp: 21.6 condenserTemp: 24 mixerOpen: 0 mixerClosed: 0 heatPipeValve: 0 diverterValve: 0 dhwPump: 0 heatingCircuitPump: 0 solarPump: 0 compressor: 0 boosterStage3: 0 boosterStage2: 0 boosterStage1: 0 highPressureSensor: 0 lowPressureSensor: 1 evaporatorIceMonitor: 0 signalAnode: 0 rvuRelease: 1 ovenFireplace: 0 STB: 0 outputVentilatorPower: 53 inputVentilatorPower: 0 mainVentilatorPower: 0 outputVentilatorSpeed: 42 inputVentilatorSpeed: 0 mainVentilatorSpeed: 0 outside_tempFiltered: 8.5 relHumidity: 0 dewPoint: 813 P_Nd: 8.13 P_Hd: 11.63 actualPower_Qc: 0 actualPower_Pel: 0 collectorTemp: -60 insideTemp: -60
In diesem Mega-reading aendert sich immer irgendwas, daher frage ich es alle 5 Minuten ab und daher geht
attr Heizung event-on-change-reading .* nicht.
2. die outsideTemp alleine aendert sich auch andauernd da sie in 0.1 Grad schritten gemessen wird. Mit dem split kann ich zwar die Dezimalstelle unterdruecken, das permanente update bleibt jedoch.

ob der Code so:
define LuftTempnotify notify (Heizung.AussenTemp.*) setstate LuftTemp $EVTPART1
oder so lautet:
define LuftTempnotify notify Heizung:AussenTemp.* setstate LuftTemp $EVTPART1
macht bei mir keinen Unterschied, beides liefert den Wert in den dummy.

Der Eventmonitor zeigt:
2014-05-06 08:37:27 at 5min_check
2014-05-06 08:37:28 THZ Heizung sGlobal: outsideTemp: 10.9 flowTemp: 23.6 returnTemp: 23.5 hotGasTemp: 30.9 dhwTemp: 41.8 flowTempHC2: -60 evaporatorTemp: 23.3 condenserTemp: 22.5 mixerOpen: 0 mixerClosed: 0 heatPipeValve: 0 diverterValve: 0 dhwPump: 0 heatingCircuitPump: 0 solarPump: 0 compressor: 0 boosterStage3: 0 boosterStage2: 0 boosterStage1: 0 highPressureSensor: 0 lowPressureSensor: 1 evaporatorIceMonitor: 0 signalAnode: 0 rvuRelease: 1 ovenFireplace: 0 STB: 0 outputVentilatorPower: 0 inputVentilatorPower: 0 mainVentilatorPower: 0 outputVentilatorSpeed: 0 inputVentilatorSpeed: 0 mainVentilatorSpeed: 0 outside_tempFiltered: 9.3 relHumidity: 0 dewPoint: 851 P_Nd: 8.51 P_Hd: 10.95 actualPower_Qc: 0 actualPower_Pel: 0 collectorTemp: -60 insideTemp: -60
2014-05-06 08:37:28 THZ Heizung AussenTemp: 11

aber nichts zu meinem LuftTempnotify allerdings zeigt dieser den update des Readings (siehe screenshot attached)
Titel: Antw:dummy und filelog
Beitrag von: Puschel74 am 06 Mai 2014, 17:09:31
Hallo,

sorry - grad erst gesehen  8)

setstate LuftTemp $EVTPART1
setstate macht das was es besagt - es setzt den state STATE des dummy und löst dabei KEIN Event aus.

set LuftTemp $EVTPART1
sollte besser passen.

Grüße

Edith: Grad nochmal in der commandref nachgeschaut http://fhem.de/commandref.html#setstate (http://fhem.de/commandref.html#setstate):
ZitatNo signals will be sent to the device, no events will be generated, and no eventMap or stateFormat translation will be done either.

Edith2: Auch grad gesehen - das hab ich ja schon geantwortet  :o

Edith3: Korrektur nach Hinweis.
Titel: Antw:dummy und filelog
Beitrag von: betateilchen am 06 Mai 2014, 17:19:58
Zitat von: Puschel74 am 06 Mai 2014, 17:09:31
setstate macht das was es besagt - es setzt den state den dummy und löst dabei KEIN Event aus.

Falsch. setstate setzt beim Dummy das Internal "STATE" und nicht das Reading "state" - denn ein solches Reading gibt es bei devices vom Typ dummy per default nicht.