log files aus Dimplex Heizung in fhem

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

Vorheriges Thema - Nächstes Thema

XBuschman

Hallo Tino,
danke für die Antwort. Ich denke du hast Recht. Das Risiko ist zu Groß, dass man da Mist baut. Die App habe ich schon installiert.

Noch 2 Sachen:

Wenn die Aussentemperatur unter 0 Grad fällt, wird der Wert nicht als singed interpretiert und entsprechend falsch angezeigt. Obwohl ich keine Ahnung von perl habe, hatte ich mal ein wenig rumprobiert. Am Schluss habe ich eine Abfrage eingebaut bei der ich den Wert umrechne und entsprechend formatiert ausgebe. Sieht dann so aus:

...
if ($Werte == "1") {
   if ($data[0] > 32767) {
      $Ergebnis = sprintf("-%0.1f", ((65536-$data[0])/10)) ;
   }
   else {
      $Ergebnis = sprintf("%0.1f", ($data[0]/10)) ;
   }
  }
...


Keine Ahnung ob das der "eleganteste" Weg ist, aber er funktioniert.

Zweites: Gibt es schon etwas neues bzgl. dem Lesen von Digital Werten?

Danke und Gruß,
X.

oniT

Hallo XBuschmann,

ja das ist richtig. Dies hatte ich auch in den letzten Tagen festgestellt, allerdings mich noch nicht weiter damit beschäftigt. Deine Erweiterung des Codes habe ich bei mir eingefügt und es funktioniert.

Die Digitalen Werte hatte ich bisher über eine XML Struktur ausgelesen. Allerdings finde ich die Variante mit Modbus persönlich geschickter. Ich hatte hierzu mit Uwe (Alias Mopedpaul) bereits gesprochen, da der bisherige Code vom Solar-Log übernommen wurde und er sich damit auseinander gesetzt hat. Allerdings wusste er auch keine Lösung.

Inzwischen habe ich mich weiter damit auseinandergesetzt und eine Lösung gefunden. Sollte es so funktionieren wie ich es denke, werde ich die Lösung in den kommenden Tagen hier einstellen. Dann könnt Ihr die Codeschnippsel testen.

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

oniT

Hallo,

wie versprochen findet ihr im Anhang die beiden benötigten Dateien. Die 99_myModbusUtils.pm habe ich auf unsere Bedrüfnisse angepasst. Ursprung dieser Datei ist die Wago Diskussion von ChrisD.

Eine begonne Dokumentation habe ich ins fhemwiki eingestellt. Ich werde diese in den kommenden Tagen noch genauer anpassen. Für das zwischenzeitliche Testen sollte es zunächst ausreichen ;-)

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

XBuschman

Hallo Tino,
vielen, vielen Dank für deine Arbeit. Habe das neue Modul getestet und es funktioniert alles super.
Werde in den nächsten Tagen mal schauen, dass ich die digitalen Signale auch geplottet bekomme.

Danke und Gruß,
X.

mago0211

Hallo zusammen,

es hat sich hier zwar schon seit Dezember nicht mehr getan, dennoch hoffe ich noch eine Antwort zu bekommen.

Ich habe gelesen das man auch Einstellungen verändern kann. (Davon wird aber eher abgeraten)

Ich würde gerne etwas Flexiblere Sperr bzw. Warmwassertemperaturen einstellen welche ich mit dem Standard Bedienteil nicht machen kann. Jetzt ist die Frage ob das über Fhem sinnvoll ist oder das Risiko zu hoch ist etwas zu zerschießen?

Gruß
Markus

oniT

Hallo Markus,

möglich ist es schon. Das Risiko besteht halt nur darin, dass wenn man beim Testen eine falsche Adresse beschreibt und dies nicht wieder rückgängig macht, die Auswirkungen nicht unerheblich sein können. Wenn es allerdings richtig gemacht ist, gibt es kein Risiko. Wichtig ist halt das die Adressen stimmen.

Wie tief möchtest Du in die Materie "flexibilität" einsteigen? Bitte schicke einmal noch ein paar Infos was Du wann und warum schalten möchtest. Dann versuche ich Dir zu helfen.

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

mago0211

Hallo,

also mein Vorhaben ist eigentlich recht einfach gestrickt.
Und zwar will ich einfach mehr verschiedene Warmwasserzeiten einstellen können. Dieses Heizprogramm (so nenne ich es jetzt mal) soll einmal definiert werden und dann eigentlich nicht mehr groß verändert werden wenn die Einstellungen passen.
Ich mache mal ein kleines Beispiel.

Montag – Freitag 06:00 bis 10:00 Warmwassertemp.= 44 C°
Montag – Freitag 10:00 bis 17:00 Warmwassertemp.= 35 C°
Montag – Freitag 17:00 bis 20:00 Warmwassertemp.= 44 C°
Montag – Freitag 20:00 bis 06:00 Warmwassertemp.= 30 C°

Samstag – Sonntag 08:00 bis 10:00 Warmwassertemp. = 44 C°
Samstag – Sonntag 10:00 bis 17:00 Warmwassertemp. = 35 C°
Samstag – Sonntag 17:00 bis 20:00 Warmwassertemp. = 44 C°
Samstag – Sonntag 20:00 bis 06:00 Warmwassertemp. = 30 C°

Das ist jetzt mal eine einfach Übersicht wie ich mir das vorstelle evtl. muss es noch etwas erweitert werden. Da wir noch einen Externen Wärmetauscher haben der direkt in den Warmwasserspeicher hineinfährt. Deshalb kommt es ab und zu zu Überschneidungen und wenn die WP zu früh das Warmwasser aufheizt bringt der Externe Tauscher keine Leistung mehr rein.

Im Prinzip würde es also reichen wenn ich die Solltemperatur verändern könnte. So müsste an den Sperrzeiten nicht rumgespielt werden.

Ich Dachte mir ich könnte einen Dummy definieren welcher als Status immer den aktuellen Sollwert hat. Sobald der Wert geändert wird soll die Änderung an die WP gesendet werden.
Und einfach per at befehle die Dummy Temp. Anpassen wie ich es gerade brauche. So könnte man auch wenn man mal außerplanmäßig was braucht den Wert kurzfristig und einfach anpassen.

Ich habe das LAN Gateway noch nicht. Ich wollte mich vorab informieren ob so eine Steuerung sinnvoll ist oder ob du eher davon abraten würdest.

Gruß
Markus

oniT

Hallo Markus,

ja das dürfte kein Problem sein. In diesem Fall muss man die internen Zeitprogramme nicht nutzen und auch den Wert nicht am Ende wieder zurückschreiben. So wie Du es möchtest, muss man immer nur jeweils zu Begin der Zeit die Warmwassersolltemperatur einfach neu setzen. Lies bitte mal den Softwarestand in den Betriebsdaten aus. Da steht meist irgendwas mit "Regler" -> Software -> WPM_H oder J oder L und stell diesen hier bitte ein.

Ich stelle Dir dann ein Beispiel ein wie Du den Wert schreiben kannst.

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

mago0211

Hallo Tino

sorry für die etwas verspätete Antwort bin zurzeit etwas im Stress   :-\

ProgV: WPM_H_H62
Boot: 0403
BIOS: 0410

Gruß
Markus

oniT

#24
Hallo Markus,

die Warmwassersolltemperatur kann mit

{write_modbus(5022,$settemp)}

eingestellt werden. Dabei muss $settemp mit der gewünschten Solltemperatur ersetzt werden. Voraussetzung sind die beiden für Modbus TCP benötigten Dateien.

Achtung, das Register 5022 ist nur gültig für den Wärmepumpenmanager mit Softwarestand WPM_H50 bis WPM_H63!

Ich habe dies einmal mit WeekDayTimer umgesetzt. Der Code sieht dann so aus

# Auswahl Warmwassersolltemperatur
define hp_hotwater_settemp dummy
attr hp_hotwater_settemp alias Warmwassertemperatur
attr hp_hotwater_settemp group Zeitprogramm Warmwasser
attr hp_hotwater_settemp room !Experiment
attr hp_hotwater_settemp setList state:30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45
attr hp_hotwater_settemp sortby 01
attr hp_hotwater_settemp stateFormat {ReadingsVal($name,"state",0)." °C"}
attr hp_hotwater_settemp webCmd state



# Auswahl Tages-/Wochenprogramm
define hp_hotwater_setday dummy
attr hp_hotwater_setday alias Tages-/Wochenprogramm
attr hp_hotwater_setday group Zeitprogramm Warmwasser
attr hp_hotwater_setday room !Experiment
attr hp_hotwater_setday setList state:Mo,Di,Mi,Do,Fr,Sa,So,Mo-Fr,Sa-So,Sa-Fr
attr hp_hotwater_setday sortby 02
attr hp_hotwater_setday webCmd state



# Auswahl der Startzeit
define hp_hotwater_sethour dummy
attr hp_hotwater_sethour alias Zeit
attr hp_hotwater_sethour group Zeitprogramm Warmwasser
attr hp_hotwater_sethour room !Experiment
attr hp_hotwater_sethour setList state:time
attr hp_hotwater_sethour sortby 03
attr hp_hotwater_sethour webCmd state



# Notify zum Setzen und Löschen von WeekDayTimer
define hp_hotwater_timer notify hp_hotwater_sethour {my $sethour = ReadingsVal("hp_hotwater_sethour", "state", "undef");;\
my $settemp = ReadingsVal("hp_hotwater_settemp", "state", "undef");;\
my $setday = ReadingsVal ("hp_hotwater_setday", "state" , "undef");;\
my $Day = $setday ;;\
$Day = s/-/_/g ;;\
fhem ("define $Day.$sethour.$settemp.schalten WeekdayTimer $Day$settemp $setday|$sethour|$settemp {write_modbus(5022,$settemp)}");;\
fhem ("attr $Day.$sethour.$settemp.schalten room !Experiment");;\
fhem ("attr $Day.$sethour.$settemp.schalten alias Warmwassertemperatur $settemp°C wird am $setday um $sethour eingeschalten");;\
fhem ("attr $Day.$sethour.$settemp.schalten group Zeitprogramm $settemp°C");;\
fhem ("attr $Day.$sethour.$settemp.schalten devStateIcon .*:time_timer");;\
fhem ("define Termin_von.$settemp.$Day.um.$sethour dummy");;\
fhem ("attr Termin_von.$settemp.$Day.um.$sethour group Zeitprogramm $settemp°C");;\
fhem ("attr Termin_von.$settemp.$Day.um.$sethour alias $settemp°C Warmwassertemperatur wird am $setday um $sethour eingeschalten");;\
fhem ("attr Termin_von.$settemp.$Day.um.$sethour room !Experiment");;\
fhem ("attr Termin_von.$settemp.$Day.um.$sethour devStateIcon .*:message_garbage");;\
fhem ("attr Termin_von.$settemp.$Day.um.$sethour webCmd loeschen");;\
fhem ("define Termin_$settemp.$Day.$sethour.loeschen notify Termin_von.$settemp.$Day.um.$sethour:loeschen delete $Day.$sethour.$settemp.schalten,Termin_$settemp.$Day.$sethour.loeschen,Termin_von.$settemp.$Day.um.$sethour");;\
fhem ("attr WEB longpoll 0");;\
fhem ("attr Termin_von.$settemp.$Day.um.$sethour alias Zeitprogramm $settemp°C am $setday um $sethour löschen");;\
}


Und so sieht die Einstellung dann aus.
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

mago0211

Hallo Tino,

erstmal danke für deine mühe.  :D

Wie ich schon sagte habe ich das Lan Interface noch nicht besorgt aber so bald ich es habe und Zeit finde gebe ich dir bescheid.

Danke
Gruß
Markus

qwert4u

Hallo,
ich habe eine Dimplex WP mit H Software
wie in der Anleitung beschrieben habe ich die 2 Dateien in das FHEM Verzeichnis kopiert.. die IP Adresse angepasst..
in der fhem.cfg den Code eingefügt ich denke soweit auch auf die H-Software angepasst. jedoch erscheinen bei den werten in FHEM nur ???
Was kann das sein?


########################################################
##  Wärmepumpe Abfrage der Temperaturen
##  Erstellt........: 15.08.2013
##  Letzte Änderung.: 16.03.2014
########################################################
define HeatPumpAnalogValueTimer at +*00:01:00 {\
  my $val27 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(27)))/10);;\
  my $val29 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(29)))/10);;\
  my $val30 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(30)))/10);;\
  my $val31 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(31)))/10);;\
  my $val8 = sprintf("%0.1f", ((((WORD_TO_INT(read_modbus_zaehler(8)))-100)*345)/8000));;\
  my $val10 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(35)))/10);;\
  my $val53 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(53)))/10);;\
  my $val101 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(101)))/10);;\
   fhem ("set atempval $val27");;\
   fhem ("set rltempval $val29");;\
   fhem ("set wwtempval $val30");;\
   fhem ("set vltempval $val31");;\
   fhem ("set highpreval $val8");;\
   fhem ("set rttempval $val10");;\
   fhem ("set soltempval $val24");;\
   fhem ("set rlstempval $val53");;\
   fhem ("set lowpreval $val101");;\
  my $temp= "AT $val27 RLT $val29 WWT $val30 VLT $val31 RT $val10 RLS $val53";;\
   fhem("trigger Temp $temp");;\

oniT

Hallo quert4u,

kannst Du bitte einmal in das Logfile sehen. Dort muss doch irgend eine Meldung dazu stehen und den Ausschnitt hier posten. Oder aber was steht im Monitor? Die Werte werden ja jede Minute abgefragt.

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

9876543212

Hallo Tino,
auch ich habe mich an die Darstellung der Messwerte anhand Deiner Anleitung gewagt.
Ich habe eine Dimplex WP mit J Software und habe, wie in der Anleitung beschrieben, beiden Dateien in das FHEM Verzeichnis kopiert.. die IP Adresse angepasst..
In der fhem.cfg habe ich Codes angepasst. Jedoch erscheinen bei den Werten in FHEM nur ??? bzw. Nullen.


Grafik: Cannot read ./www/gplot/dimplexwp.gplot - Pfad stimmt <> Datei nicht existent
Tabellen:

define HeatPumpAnalogValueTimer at +*00:01:00 {\
Heatpump ("1","1","atemp")};;{\
Heatpump ("2","1","rltemp")};;{\
Heatpump ("3","1","wwtemp")};;{\
Heatpump ("5","1","vltemp")};;{\
Heatpump ("11","1","rttemp")};;{\
Heatpump ("53","1","rlstemp")};;{\
  my $val1 = $value{"atemp"};;\

  my $val2 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(2)))/10);;\
  my $val3 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(3)))/10);;\
  my $val5 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(5)))/10);;\
  my $val8 = sprintf("%0.1f", ((((WORD_TO_INT(read_modbus_zaehler(8)))-100)*345)/8000));;\
  my $val10 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(11)))/10);;\
  my $val53 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(53)))/10);;\
  my $val101 = sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(101)))/10);;\
   fhem ("set atempval $val1");;\
   fhem ("set rltempval $val2");;\
   fhem ("set wwtempval $val3");;\
   fhem ("set vltempval $val5");;\
   fhem ("set highpreval $val8");;\
   fhem ("set rttempval $val11");;\
   fhem ("set rlstempval $val53");;\
   fhem ("set lowpreval $val101");;\
  my $temp= "AT $val1 RLT $val2 WWT $val3 VLT $val5 RT $val11 RLS $val53";;\
   fhem("trigger Temp $temp");;\
}
attr HeatPumpAnalogValueTimer group At
attr HeatPumpAnalogValueTimer room z_Wärmepumpe

Den kursiv gehaltenen Teil des Listings habe ich eingefügt bzw. auch mal weggelassen (hier existieren im Thread unterschiedliche Varianten) - ohne erkennbare Änderung.
Was kann das sein?

Gruß Matthias

oniT

Hallo Matthias,

da passt etwas nicht. Stehen im Logfile weitere Fehlermeldungen?

Ich gehe davon aus, dass Du ein Reload der 99_myModbusUtils.pm durchgeführt hast und das ein Dummy atempval angelegt ist.

Fange einmal klein an und kürze zunächst einmal den Code bis auf diese paar Zeilen runter:


define HeatPumpAnalogValueTimer at +*00:01:00 {
fhem("set atempval ".sprintf("%0.1f", (WORD_TO_INT(read_modbus_zaehler(1)))/10));
}


Achtung, Du musst den Code nicht in der fhem.cfg ändern, besser ist dies direkt im DEF zu erledigen.

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