log files aus Dimplex Heizung in fhem

Begonnen von brodigy, 02 September 2013, 22:18:53

Vorheriges Thema - Nächstes Thema

brodigy

Hallo,

ich habe eine Dimplex Wärmepumpensteuerung, die über LAN ins Heimnetz eingebunden ist. Die Steuerung der Heizung und Ablesen der Werte funktioniert bestens über einen Webclient. Was mir dort etwas fehlt ist die grafische Auswertung über z.B. div. Temperaturverläufe.
Hat jemand eine fertige Lösung bereits parat? Ich bin leider noch ziemlicher Anfänger in der Thematik.

Aus meiner Sicht wäre am einfachsten das Logfile auszulesen das automatisch alle z.B. 30 sec  geschrieben wird (lastlog.csv). (Die einzelnen Parameter und das Intervall lassen sich im Wärmepumpenmanager bestimmen).

Kann mir jemand helfen das Logfile (siehe Anhang) der Wärmepumpe in ein in fhem darstellbares Format zu bringen?

Oder ist es einfache die Parameter direkt irgendwie auszulesen?

Vielen Dank im voraus,
brodigy

rudolfkoenig

FileLog mag keine Header (die ersten 4 Zeilen muessten weg), Datum wird als YYYY-MM-DD_HH:MM:SS geschrieben, und alle weiteren Felder werden mit leerzeichen getrennt. Danach koennte man ein FileLog mit falschen regexp auf die Datei zeigen lassen, und dann in FHEMWEB ein SVG Instanz generieren, und konfigurieren. Das Problem was ich sehe ist die kontinuierliche abholung der Daten, und nicht das einmalige Konvertieren. Das geht natuerlich auch relativ einfach, aber nicht ohne ein bisschen Programmierung.

brodigy

Danke erstmal für die schnelle Antwort. Ich schau mal ob sich das Logformat der Wärmepumpe entsprechend anpassen lässt.
Falls ich da nicht weiterkomme, benötige ich ein paar Programmiertipps für die Konvertierung...

oniT

Hallo brodigy,

die NWPM-Erweiterung vom Wärmepumpenmanager kann mit Modbus ausgelesen werden. Dies habe ich seit ca. 3 Monaten für die Analogwerte so laufen.

Ich wollte dies schon in's Wiki setzen, bin nur leiter im Moment noch nicht dazu gekommen. Wenn es nicht ganz dringend ist, werde ich dies dann in den kommenden Wochen tun.

Die Analogwerte werden in ein Logfile geschrieben und ausgewertet. Nachfolgend die Grafik.

Plotergebnis

Für die Digitalwerte habe ich es noch nicht geschafft. Da benötige ich noch Unterstützung aus diesem Forum ;-)

Gruß
TinoB
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

brodigy

Hallo Tino,

na das sieht ja mal sehr vielversprechend aus und scheint genau die Lösung zu sein, die ich suche. Ich denke auch etwas professioneller als ein csv-Logfile auszulesen.

Ich warte gespannt auf Deine Veröffentlichung...

Besten Dank für die Antwort - in freudiger Erwartung,

brodigy

oniT

Hallo brodigy,

da die Heizsaison so langsam beginnt, hier nun die Konfiguration.

Dank des Codes von Mopedpaul ist es möglich über Modbus IP die Werte auszulesen. Nicht wundern, in diesem stehen mit Sicherheit Dinge drin, welche nicht zum Auslesen der Werte benötigt werden. Die Datei ist ein Überbleibsel vom Auslesen eines Solarlog über Modbus, funktioniert aber ohne Probleme.

Zunächst muss in der Datei im Anhang die IP Adresse der Wärmepumpe eingetragen werden.


..
$remote =  $opt_s = '192.168.1.150';  # IP-Adresse der Wärmepumpe
...


Anschließend die Datei in das FHEM Verzeichnis kopieren und mit reload 99_myHeatPumpUtils.pm laden.

Dann nachfolgenden Code in eine entsprechende *.cfg Datei eintragen.


define HeatPumpTempValueTimer at +*00:01:00 {\
 Heatpump ("1","1","atemp")};;{\
 Heatpump ("2","1","rltemp")};;{\
 Heatpump ("3","1","wwtemp")};;{\
 Heatpump ("5","1","vltemp")};;{\
 Heatpump ("10","1","rttemp")};;{\
 Heatpump ("53","1","rlstemp")};;{\
 my $val1 = $value{"atemp"};;\
 fhem ("set atempval $val1");;\
 my $val2 = $value{"rltemp"};;\
 fhem ("set rltempval $val2");;\
 my $val3 = $value{"wwtemp"};;\
 fhem ("set wwtempval $val3");;\
 my $val5 = $value{"vltemp"};;\
 fhem ("set vltempval $val5");;\
 my $val10 = $value{"rttemp"};;\
 fhem ("set rttempval $val10");;\
 my $val53 = $value{"rlstemp"};;\
 fhem ("set rlstempval $val53");;\
 my $temp= "AT $val1 RLT $val2 WWT $val3 VLT $val5 RT $val10 RLS $val53";;\
  fhem("trigger Temp $temp");;\
}
attr HeatPumpTempValueTimer group Wärmepumpe
attr HeatPumpTempValueTimer room !Experiment


Dabei entspricht zum Beispiel die 2  bei ,,Heatpump ("2","1","rltemp")" dem Indize Rücklauftemperatur. Es müssen alle Indizes auf die eigene Anlage angepasst werden. Diese werden unter www.dimplex.de/wiki und dann NWPM zur Verfügung gestellt.

Das rltemp ,,Heatpump ("2","1","rltemp")" ist ein Dummy, wo die Rücklauftemperatur hingeschrieben wird.


########################################################
##  Wärmepumpe Dummy für Temperaturen
##  Erstellt........: 02.06.2013
##  Letzte Änderung.:
########################################################
define rltemp dummy
define rltempval dummy
attr rltempval alias Rücklauftemperatur
attr rltempval group Betriebsdaten
attr rltempval room Wärmepumpe
attr rltempval sortby 04
attr rltempval stateFormat {ReadingsVal("rltempval","state",0)." °C"}


Diese Dummys müssen auch auf die eigene Anlage angepasst werden. Oben stehen u.a. noch Außen-, Vorlauf-, Raum- oder auch Warmwassertemperatur.

Hiermit werden alle Temperaturen in eine Logdatei geschrieben und als Grafik ausgegeben.


##################################################################
##  Es werde alle Temperaturen in ein Logfile geschrieben
##  Erstellt........: 02.06.2013
##  Letzte Änderung.:
##################################################################
define Temp dummy
attr Temp alias Temperaturen
attr Temp group Wärmepumpe
attr Temp room z_unbenutzt

define A_WaermepumpeLog FileLog ./log/Waermepumpe-%Y-%m-%d.log Temp
attr A_WaermepumpeLog group Wärmepumpe
attr A_WaermepumpeLog logtype text
attr A_WaermepumpeLog room Log

define A_weblink_WPLog weblink fileplot A_WaermepumpeLog:dimplexwp:CURRENT
attr A_weblink_WPLog alias Wärmepumpe
attr A_weblink_WPLog label "Wärmepumpe Min $data{min1}°C, Max $data{max1}°C, Aktuell $data{currval1}°C"
attr A_weblink_WPLog plotsize 800,600
attr A_weblink_WPLog room Plot


Die Übergabe der Werte in die Logdatei erfolgt dabei bereits im ersten Code mit:


...
 my $temp= "AT $val1 RLT $val2 WWT $val3 VLT $val5 RT $val10 RLS $val53";;\
  fhem("trigger Temp $temp");;\
...


Das geht auch noch mit der Historie und den Statusmeldungen. Im Prinzip mit allen Analogwerten. Dazu bei Gelegenheit später mehr. Bitte versuche zunächst einmal dies auf Deine Anlage umzusetzen.

Ein Zugriff auf die Digitalwerte ist mir über Modbus bisher noch nicht gelungen. Da werde ich bei Gelegenheit noch an entsprechender Stelle hier im Forum nachfragen.

Das Endziel sollte sein, dies als "richtiges" Modul zur Verfügung zu stellen, damit es dann vielleicht offiziell eingecheckt werden kann.

Melde Dich wenn es klappt oder auch nicht ;-)

Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

brodigy

Servus Tino,
vielen Dank für den Code - ich werde es am Wochenende testen und berichten.
Aktuell bin ich noch in Russland, wo die Heizperiode Auch schon angefangen hat

brodigy

Hallo Tino,

es funktioniert!
Das einzige, was ich anpassen musste, war der Pfad zu das Logfile:

von:
define A_WaermepumpeLog FileLog ./log/Waermepumpe-%Y-%m-%d.log Temp

auf:
define A_WaermepumpeLog FileLog /var/log/fhem/Waermepumpe-%Y-%m-%d.log Temp


Vielen Dank für die sehr gute Anleitung!

brodigy

oniT

Hallo brodigy,

hier mal noch ein Teil wie Du die Historie abfragen kannst:


########################################################
##  Wärmepumpe Abfrage der Historie
##  Erstellt........: 15.08.2013
##  Letzte Änderung.:
########################################################
define HeatPumpHistValueTimer at +*01:00:00 {\
 Heatpump ("72","1","lvd1m")};;{\
 Heatpump ("74","1","lvenm")};;{\
 Heatpump ("75","1","l2wem")};;{\
 Heatpump ("76","1","lhupm")};;{\
 Heatpump ("77","1","lwupm")};;{\
 Heatpump ("78","1","lflhm")};;{\
 my $val72 = $value{"lvd1m"}*10;;\
 fhem ("set lvd1valm $val72");;\
 my $val74 = $value{"lvenm"}*10;;\
 fhem ("set lvenvalm $val74");;\
 my $val75 = $value{"l2wem"}*10;;\
 fhem ("set l2wevalm $val75");;\
 my $val76 = $value{"lhupm"}*10;;\
 fhem ("set lhupvalm $val76");;\
 my $val77 = $value{"lwupm"}*10;;\
 fhem ("set lwupvalm $val77");;\
 my $val78 = $value{"lflhm"}*10;;\
 fhem ("set lflhvalm $val78");;\
 my $his= "C $val72 V $val74 WE $val75 H $val76 W $val77 F $val78";;\
  fhem("trigger Historie $his");;\
 my $dwertww=(100*$val77/$val74);;\
  fhem("set DWA $dwertww");;\
 my $dwerthz=(100*($val74-$val77)/$val74);;\
  fhem("set DHA $dwerthz");;\
}
attr HeatPumpHistValueTimer alignTime 00:10
attr HeatPumpHistValueTimer group Wärmepumpe
attr HeatPumpHistValueTimer room !Experiment

########################################################
##  Wärmepumpe Dummy für Historie
##  Erstellt........: 29.05.2013
##  Letzte Änderung.: 15.08.2013
########################################################
define lvd1m dummy
define lvd1valm dummy
attr lvd1valm alias Verdichter
attr lvd1valm group Historie
attr lvd1valm room Wärmepumpe
attr lvd1valm sortby 01
attr lvd1valm stateFormat {ReadingsVal("lvd1valm","state",0)." h"}

define lvenm dummy
define lvenvalm dummy
attr lvenvalm alias Ventilator
attr lvenvalm group Historie
attr lvenvalm room Wärmepumpe
attr lvenvalm sortby 02
attr lvenvalm stateFormat {ReadingsVal("lvenvalm","state",0)." h"}

define l2wem dummy
define l2wevalm dummy
attr l2wevalm alias 2.Wärmeerzeuger
attr l2wevalm group Historie
attr l2wevalm room Wärmepumpe
attr l2wevalm sortby 03
attr l2wevalm stateFormat {ReadingsVal("l2wevalm","state",0)." h"}

define lhupm dummy
define lhupvalm dummy
attr lhupvalm alias Heizungsumwälzpumpe
attr lhupvalm group Historie
attr lhupvalm room Wärmepumpe
attr lhupvalm sortby 04
attr lhupvalm stateFormat {ReadingsVal("lhupvalm","state",0)." h"}

define lwupm dummy
define lwupvalm dummy
attr lwupvalm alias Warmwasserumwälzpumpe
attr lwupvalm group Historie
attr lwupvalm room Wärmepumpe
attr lwupvalm sortby 05
attr lwupvalm stateFormat {ReadingsVal("lwupvalm","state",0)." h"}

define lflhm dummy
define lflhvalm dummy
attr lflhvalm alias Flanschheizung
attr lflhvalm group Historie
attr lflhvalm room Wärmepumpe
attr lflhvalm sortby 06
attr lflhvalm stateFormat {ReadingsVal("lflhvalm","state",0)." h"}

########################################################
##  Durchschnittswerte Heizen/Warmwasser
##  Erstellt........: 02.06.2013
##  Letzte Änderung.:
########################################################
define DWA dummy
attr DWA alias Warmwasseranteil
attr DWA group Historie
attr DWA room Wärmepumpe
attr DWA sortby 07
attr DWA stateFormat {sprintf("%.0f",ReadingsVal("DWA","state",0))." %"}

########################################################
##  Durchschnittswerte Warmwasser/Heizen
##  Erstellt........: 02.06.2013
##  Letzte Änderung.:
########################################################
define DHA dummy
attr DHA alias Heizwasseranteil
attr DHA group Historie
attr DHA room Wärmepumpe
attr DHA sortby 08
attr DHA stateFormat {sprintf("%.0f",ReadingsVal("DHA","state",0))." %"}


Und in ein Logfile schreibst. Die Werte werden wieder mit dem Codeschnippsel von oben:


...
 my $his= "C $val72 V $val74 WE $val75 H $val76 W $val77 F $val78";;\
  fhem("trigger Historie $his");;\
...


in das Logfile geschrieben:


###########################################################
##  Historie in Logschreiben
##  Erstellt........: 29.05.2013
##  Letzte Änderung.: 25.06.2013
##  Durchschnittswerte für Warmwasser und Heizen ermitteln
##  gelöscht!!!!!!!!!!!1
###########################################################
define Historie dummy
define H_WaermepumpeLog FileLog /var/log/Waermepumpe_H-%Y-%m-%d.log Historie
attr H_WaermepumpeLog group Wärmepumpe
attr H_WaermepumpeLog logtype text
attr H_WaermepumpeLog room Log


Das ganze sieht dann so aus:

(siehe Anhang / see attachement)


Ich stelle Dir in Kürze mal noch die Abfrage der Digitalwerte ein. Solange ich dies noch nicht über Modbus gelöst bekomme, kann man inzwischen einen anderen Weg wählen.

Hast Du eine Wärmepumpe mit Wärmemengenzähler?

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

brodigy

funktioniert! Perfekt!

Vielen Dank,
brodigy

brodigy

Hallo Tino,

seit heute habe ich leider sehr viele Fehlermeldungen im Log file:

Use of uninitialized value $proto in socket at /usr/share/fhem/FHEM/99_myHeatPumpUtils.pm line 68.
Use of uninitialized value $fld[11] in pattern match (m//) at (eval 25137) line 1, <GEN103> line 37.

Hast Du eine Idee woran das liegen könnte?

VG,
brodigy

oniT

Hallo brodigy,

upps, schwierig für mich. Bei mir kommen keine Meldungen. Hast Du ein Update durchgeführt oder etwas anders geändert? Sind das die einzigen Meldungen?

Hast Du mal einen Neustart durchgeführt? Kommen die Meldungen dann immer noch? Hast Du nochmals die 99_myHeatPumpUtils.pm Datei eingespielt? Eventuell hat sich da etwas verändert, warum auch immer ;-)

Steht die Verbindung noch, also werden die Werte trotzdem alle aktuell angezeigt?

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

brodigy

Ein Restart von fhem hatte nichts gebracht - erst seit Neustart von der Fritzbox ist der Fehler wieder verschwunden...
Sorry für den Alarm :-)

VG,
brodigy

XBuschman

Hallo Zusammen,
auch ich bin im Besitz eine Dimplex Wärmepumpe mit NWPM Modul (genau genommen ist es eine Weishaupt Wärmepumpe, die aber auf die Dimplex Technik aufsetzt). Dank der hier gepostete Informationen ist es mir auch gelungen, Werte per FHEM auszulesen und anzuzeigen. Hier erstmal ein Dank an die Beteiligten.

Als nächsten Schritt würde ich gerne Werte über FHEM verstellen. Hat das schon mal jemand erfolgreich versucht?

Gruß, X


oniT

Hallo XBuschman,

ja das ist auch möglich. Allerdings, kann man darüber auch sehr viel 'Mist' einstellen, wenn man zum Beispiel ein falsches Register oder falschen Wert schreibt und das kann bei einer Wärmepumpe fatale Folgen haben. Dies ist somit mit Vorsicht zu genießen. Wenn man eh den Webzugriff mit der NWPM hat, würde ich die App bevorzugen. Schau mal unter http://www.dimplex.de/wiki/index.php/HeatPumpApp

Gruß,
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP