Desired-Temp bei FHTs regelmäßig auslesen

Begonnen von P_rhodan, 26 Dezember 2012, 14:32:54

Vorheriges Thema - Nächstes Thema

P_rhodan

Hallo,

Ich beschäftige mich seit kurzem mit FHEM. Zuerst mal kurz mein Setting:
Fritzbox 7390 mit Fhem 5.3 Development (von Freetz), über USB ein FHZ1300PC, 6 x FHT80b, 7 x FHT8V, 5 x Fensterkontakt (noch nicht angeschlossen).

Jetzt möchte ich gerne aber in den Plots neben measured temp und actuator auch den desired temp und Window Status angezeigt haben.
Problem ist allerdings, dass die FHTs den desired-temp Wert nur dann senden, wenn der sich ändert (manuell durch drehen am Rad oder automatisch durch Tagesprogramm).
Wenn ich in das FHT.gplot den Wert für desired-temp mit aufnehme, ist die Kurve (als steps) immer unterbrochen und passt beim Anfang eines neuen Tagesplot nicht, bis die erste Änderung am morgen kommt (hier meistens um 5:30 Uhr).

Idee war mit
define dt.FHT_280a at +*00:15:00 set FHT_280a report2 8
alle 15 min für jeden FHT den desired-temp Wert abzurufen. Report2 8 bringt nur diesen Wert als Rückgabe.
Allerdings habe ich nun das Problem, dass es zu fhtbuffer Meldungen kommt. Und zwar soviele, dass nun teilweise die Werte extrem zeitverzögert kommen oder manche FHTs sich gar nicht mehr melden.

Nun meine neue Idee für die ich Eure Hilfe brauche:
Könnte man nicht mit einem watchdog oder nötige jedesmal, wenn ein FHT seine Daten sendet überprüfen ob eine desired-temp mit dabei ist, wenn ja, dann nichts machen, da ja Wert im Logfile nun vorhanden. Wenn nein, den letzten Wert, der auch schon Stunden alt sein kann, ebenfalls in das Logfile schreiben, allerdings mit aktuellen Datum/Uhrzeit Werten.
Damit wäre dann ca. alle 15 Minuten ein kompletter Datensatz für das Plot vorhanden.
Wer kann mir helfen das zu realisieren? Leider habe ich zuwenig Perl und Regexp awk Erfahrung um das selber zu erledigen.


So sieht mein define für ein FHT aus:
define FHT_280a FHT 280a
attr FHT_280a alias Wohnzimmer
attr FHT_280a icon icoTempHausEG
attr FHT_280a loglevel 5
attr FHT_280a retrycount 3
attr FHT_280a room FHT

define FileLog_FHT_280a FileLog ./log/FHT_280a-%Y.log FHT_280a
attr FileLog_FHT_280a logtype fht:Temp/Act,text
attr FileLog_FHT_280a room FHT

define weblink_FHT_280a weblink fileplot FileLog_FHT_280a:fht_all:CURRENT
attr weblink_FHT_280a alias Wohnzimmer
attr weblink_FHT_280a group Heizung
attr weblink_FHT_280a label "Wohnzimmer Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr weblink_FHT_280a room Plots


Passend dazu die fht_all.gplot
############################
# Display the measured temp and the actuator.
# Corresponding FileLog definition:
# define <filelogname> FileLog /var/log/fhem/fht-%Y.log <fhtname>

set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set ytics nomirror
set y2tics
#set ytics
set title '<L1>'
set grid xtics y2tics

set y2label "Temperature in C"
set ylabel "Actuator (%)"

#FileLog 4:measured:0:
#FileLog 4:desired-temp:0:
#FileLog 4:actuator.*[0-9]+%:0:int
#FileLog 4:Window:0:$fld[3]=~"Open"?97:3

plot \
  "< awk '/measured/{print $1, $4}' <IN>"\
     using 1:2 axes x1y2 title 'Measured temperature' with lines,\
  "< awk '/desired/{print $1, $4}' <IN>"\
     using 1:2 axes x1y2 title 'Desired temperature' with steps,\
  "< awk '/actuator/ {print $1, $4+0}' <IN>"\
     using 1:2 axes x1y1 title 'Actuator (%)' with lines,\
  "< awk '{print $1, $4==\"Open\"? 100 : 0; }' <IN>"\
     using 1:2 axes x1y1 title 'Open/Closed' with steps\


Danke!


UliM

Zitat von: P_rhodan schrieb am Mi, 26 Dezember 2012 14:32Hallo,

Wenn ich in das FHT.gplot den Wert für desired-temp mit aufnehme, ist die Kurve (als steps) immer unterbrochen und passt beim Anfang eines neuen Tagesplot nicht, bis die erste Änderung am morgen kommt (hier meistens um 5:30 Uhr).


Schau mal hier:
http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden
Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

P_rhodan

Super! Vielen Dank!

Das scheint genau das zu sein, was ich suche (//images/smiley_icons/icon_smile.gif)

P_rhodan

Hallo nochmal,

hab es nun mit addLog getestet. Es funktioniert  (//images/smiley_icons/icon_smile.gif)  Nur noch nicht ganz so wie ich will  (//images/smiley_icons/icon_twisted.gif)

Wenn ich in fhem.cfg folgendes eintrage
define dt.FHT_280a at +*00:01:00 {addLog("FHT_280a","desired-temp")}
attr dt.FHT_280a room 99_system

Sehe ich folgendes im Live Event auf der Fhem Webseite
Events:
2012-12-26 20:22:25 FHT FHT_1e0a actuator: 61%
2012-12-26 20:22:34 FHT FHT_0a0a actuator: 31%
2012-12-26 20:23:03 FHT FHT_2f1f actuator: 0%
2012-12-26 20:23:10 FHT FHT_280a desired-temp: 22.0 << addLog
2012-12-26 20:23:10 Global global DELETED dt.FHT_280a
2012-12-26 20:23:10 Global global DEFINED dt.FHT_280a
2012-12-26 20:23:22 FHT FHT_280a actuator: 4%


Und im entsprechenden DeviceLog folgendes
2012-12-26_20:21:26 FHT_280a actuator: 4%
2012-12-26_20:23:10 FHT_280a desired-temp: 22.0      << addLog
2012-12-26_20:23:22 FHT_280a actuator: 4%


Es passt alles und funktioniert, aber halt nur als "at". Ich möchte gerne ein Notify, deshalb folgende Änderung:
define n.FHT_280a notify FHT_280a:actuator:.* {addLog("FHT_280a","desired-temp")}
attr n.FHT_280a room 99_system


Ich sehe dann im Live Event Log:
Events:
2012-12-26 20:48:30 FHT FHT_280a actuator: 4%
2012-12-26 20:48:30 FHT FHT_280a desired-temp: 22.0 << addLog
2012-12-26 20:48:43 FHT FHT_2f1f actuator: 0%


Allerdings wird der Eintrag NICHT ins DeviceLog mit übernommen:
2012-12-26_20:48:30 FHT_280a actuator: 4%
2012-12-26_20:50:26 FHT_280a actuator: 4%


Was mache ich falsch? Und warum steht in der "at" Version im Live Eventlog das hier drin?
2012-12-26 20:23:10 Global global DELETED dt.FHT_280a
2012-12-26 20:23:10 Global global DEFINED dt.FHT_280a


Danke!

UliM

Zitat von: P_rhodan schrieb am Mi, 26 Dezember 2012 20:55Allerdings wird der Eintrag NICHT ins DeviceLog mit übernommen:
Das ist seltsam. Kannst Du mal die Definition des dazugehörigen Filelog posten?

ZitatUnd warum steht in der "at" Version im Live Eventlog das hier drin?
2012-12-26 20:23:10 Global global DELETED dt.FHT_280a
2012-12-26 20:23:10 Global global DEFINED dt.FHT_280a

Is normal. Wenn ein at mit * defniert ist, wird es ausgeführt, gelöscht, und mit dem nächsten Ausführungszeitpunkt neu angelegt.

=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Puschel74

Hallo,

letzteres kann ich dir sagen.

Wenn du ein Ereigniss mit at definierst dann wird das, NACH der Ausführung gelöscht (delete) und danach
durch fhem neu angelegt (define).
Das macht fhem intern so.
at wird ausgeführt und gelöscht -- wenn widerkehrend neu angelegt sonst bleibt gelöscht.

So hab ich das jedenfalls verstanden.

Wenn du mit deinem desired-temp auslesen per addlog vorangekommen bist würde ich mich über einen kurzen Auszug deiner .cfg freuen.
Ich bin auch seit längerem, mit grösseren Unterbrechungen, am tüfteln wie ich die desired-temp schön im Plot zu sehen bekomme.

Grüße

P.S.: Zu spät (//images/smiley_icons/icon_sad.gif)(
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.

P_rhodan

Sorry hatte an der falschen Stelle geantwortet....  (//images/smiley_icons/icon_sad.gif)

Zrrronggg!

Zeigt das tatsächlich desired-temp und nicht measured-temp?
FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

P_rhodan

Wahnsinn, wie schnell man hier Antworten bekommt! Danke!  (//images/smiley_icons/icon_biggrin.gif)

Hier die Filelog Definition
define FileLog_FHT_280a FileLog ./log/FHT_280a-%Y.log FHT_280a
attr FileLog_FHT_280a logtype fht:Temp/Act,text
attr FileLog_FHT_280a room FHT


Dieses wurde übrigens mit autocreate von fhem selber so angelegt.

Danke!

P_rhodan

Du beziehst dich sicherlich auf die LOgFile Definition im fhem.cfg.
Dort in dem Log wird vom FHT auch die desired-temp mit rein geschrieben, wenn diese geändert wird.
Siehe dazu mein original Post.

Die gplot Datei habe ich so geändert das zusätzlich die desired-temp und der Window Status mit angezeigt wird.
Habe diese auch im original Post mit aufgeführt.

LG
P_rhodan

Puschel74

Hallo,

ich hatte schonmal per addlog versucht die desired-temp alle 2 Stunden abzufragen.
Beim Status meiner Wasserpumpe klappt das einwandfrei - die Einträge im Logfile der Wasserpumpe
sind schön brav mit << addLog versehen.
Nur die desired-temp wehrt sich mit Händen und Füßen sich alle 2 Stunden plotten zu lassen.
Ok. Plotten kann sie ja erst wenn der Eintrag im Logfile aufscheint und das klappt bei mir (auch?(//images/smiley_icons/icon_wink.gif) noch nicht.
Zumindest nicht bei der desired-temp eines! meiner FHT.
Andere Frage!
Das direkte auslesen der desired-temp aus dem FHT (so es den klappt) erzeugt doch auch Funklast die in die 1%-Regel mit eingeht?
Oder seh ich das mal wieder verkehrt?
Das wird dann bei mir mit 11 FHT´s alle 2 Stunden etwas eng vermute ich mal (hab nicht nachgerechnet).

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.

P_rhodan

Leider bin ich ganz neu mit fhem unterwegs, eigentlich erst seit etwa 5 Tagen  (//images/smiley_icons/icon_smile.gif)
Das mit der Funklast habe ich selber schon bemerkt, da mit dem Abruf von regelmäßigen report2 8 Reports von allen FHTs, ich Probleme bekam.
Zumd. senden alle meine FHTs die desired-temp, wenn diese geändert wird. Und zwar nur dann!
Also wenn ich z.B. manuell am FHT das Rad für die Temp von 16 Grad (Nachttemperatur) auf 24 Grad ändere. oder wenn eben laut Tagesprogramm um 5:30 Uhr von 16 Grad Nachttemperatur auf 21 Grad Tagtemperatur umgeschalten wird.
So habe ich ca. 2 -3 mal pro 24 Stunden ein Eintrag im Logfile. Allerdings erzeugt das dann eine unterbrochene Linie im Plot, den ich angepasst habe um alle Linien zu sehen.

Vorteil mit der addLog Lösung wäre ja, dass eben keinerlei Funklast erzeugt wird, sondern regelmäßig einfach ein desired-temp Eintrag ins Log geschrieben wird, der den letzten gültigen Wert enthält, der von dem FHT z.B. in der Früh um 5:30 Uhr gesendet wurde.
Damit gibt es dann keine Lücken in der Grafik mehr.

Ich möchte es nur nicht mit festen regelmäßigen Abständen machen, sondern immer dann wenn das FHT die measured-temp sendet, soll automatisch mit addLog auch ein desired-temp Eintrag erstellt werden.
Die Tests mache ich aber gerade noch auf Basis der Actuator Werte, da die viel häufiger kommen und ich nicht so lange warten muss.  (//images/smiley_icons/icon_biggrin.gif)