Hauptmenü

dummy und filelog

Begonnen von Heiner, 03 Mai 2014, 11:42:28

Vorheriges Thema - Nächstes Thema

Heiner

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


Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Heiner

leider keine Aenderung.

was heisst "wenn ich CodeTags verwende"?
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Puschel74

#3
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
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?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Heiner

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.

Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Heiner

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)
Heiner
--------------------------------
fhem auf Pi3+
CUL 868MHz, Signalduino 434MHz, HM-CFG-USB
HM, THZ, Kostal, Somfy, Conbee, Pytonbinding, FritzBox, FTUI, MQTT2

Puschel74

#7
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:
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.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!