Neues Modul ECOTOUCH für Wärmepumpen Typ Waterkotte ECOTOUCH mit WWPR2-Regler

Begonnen von LR66, 18 Januar 2016, 20:31:44

Vorheriges Thema - Nächstes Thema

nt86

Hallo zusammen,

wir haben eine Eco Touch Ai1 Geo und ich hätte zum Thema ebenso zwei Fragen:

a) die Meldung "too many users" scheint bei mir nun dauerhaft zu sein, Neustart wurde durchgeführt. Kann ich die Sessions irgendwo sehen und terminieren?

b) konnte jemand die Energiewerte ermitteln? (elektrische Leistung Verdichter); hierzu ist u.a. der Wert A452 notwendig, welcher aber nicht im Klartext den kWh Wert ausgibt sondern über ein parser für das Highchart aufbereitet wird. Hier (vermutlich) die betreffende Zeile aus dem Parser-Script:

idx    = 452; i32 = ((parseInt(analogs[idx]*10,10) <<16)>>>0) | ((parseInt(analogs[idx+1]*10,10)>>>0) & 65535); rval = IEEE754_Hex32ToDez(i32.toString(16), 1); console.log("rval", rval); (rval > 0) ? data5.push(['Warmwasser', Number(Number(rval)), Number(analogs[442])]) : console.log('Warmwasser no push');


VG


LR66

Hallo,
a) die Meldung kommt, wenn Du zu oft in kurzer Zeit mit dem einzig möglichen user auf die Pumpe zugreifst, d.h. über mehrere laufende Apps oder mehrere Fhem oder einfach zu oft hintereinander das Fhem-Modul neu startest (letzteres wird es sein). Ich schätze, dass nach 2...5...10 Minuten wieder Ruhe ist. Also mal warten und interval auf 60s setzen ... damit geht es bei mir. Ist das Interval zu groß, wird ein Login mit jedem Zugriff neu nötig... auch nicht gut. Müsste im Logfile zu sehen sein, ggf verbose Attribut höher setzen.
b) fein, dass Du das erforscht hast... habe keine geo - kannst Du aber selber versuchen: mit Editor die Datei 89_ECOTOUCH.pm öffnen, Du findest da z.b. eine Zeile
['A452','tag_A452'      ,'unknown'   ,1,3],    #'A452 wk_parse.js Z.532ff = 15277' diese und oder weitere ändern:  'unknown' auf geo setzen, tag_... mit Deinem Wunschreadingname versehen, die 3 auf 1 (lesen mit jedem interval) oder auf 2 setzen (lesen alle n Intervalle). Die 1 davor ist ein Wertmultiplikator - bei Analogwerten (Start mit A) ist das eigentlich dann 0.1. Vermute Du musst mehrere weitere Tags auf die Art aktivieren und ermitteln, was den Wert ergibt ... kenn mich da mit Java aus der App nicht so aus.
Grüße, Lutz

KiK

Hallo zusammen,

erst einmal: Vielen Dank für für das Modul "ECOTOUCH". Ich konnte damit (als Neuling) meine Heizung ins FHEM gut einbinden! Tolle Sache so was - Respekt!

Ich habe noch 3 userReadings hinzugefügt, damit das Modul für mich im Endeffekt bessere Anzeigen bringt. Falls jemand das braucht, hier der Code bzw. die Erklärung:

attr wtk userReadings heating_temp_return_mod:main_state:.* { if ((ReadingsVal("wtk","state",0) ne "measure") && (ReadingsVal("wtk","state_before",0) eq "measure")) {ReadingsVal("wtk","main_temp_return","X1")} else {ReadingsVal("wtk","heating_temp_return_mod","X2")}},  state_before:main_state:.* { ReadingsVal("wtk","state","???") },  heating_temp_return_mod:heating_temp_return:.* {ReadingsVal("wtk","heating_temp_return","X3")},  main_state_measure:main_state:.* { if (ReadingsVal("wtk","state",0) eq "measure") {"1"} else {"0"}}

Motivation: Alle 20 min (durch Installateur eingestellt) geht die Wärmepumpe in den "measure" mode, pumpt hier mit der Umwälzpumpe den Heizkreis für 2 min herum und misst so die aktuelle Temperatur. Das Reading "heating_remp_return" erhält diesen Messwert nicht, lediglich im Heizbetrieb ("heating") wird der Wert aktualisiert. Das ist bei der Darstellung als Plot nicht so "schön" - ich hätte gerne gesehen, wie die Temperatur langsam fällt, bis die Heizung wieder anspringt.

Idee: Nach einem Messzyklus ("measure" mode springt auf einen anderen mode, z.B. "ready"), wird der aktuelle Wert "main_temp_return" mit verarbeitet, da dieser in diesem Moment die aktuelle Temperatur des Heizkreis' darstellt:

state_before: hier speichere ich den vorherigen state, um mitzukriegen, wann der measure-state beendet ist.

heating_temp_return_mod: der interessante Wert: beim Übergang von "measure" in einen anderen state wird der Wert = "main_temp_return" gesetzt, im state "heating" wird der Wert = "heating_temp_return" gesetzt. Hiermit stellt "heating_temp_return_mod" ziemlich gut den Temperaturverlauf im Heizkreis dar.

main_state_measure: ich stelle in einem Plot die verschiedenen 0/1 Zustände (Heizbetrieb, Kühlung, Alarm, Wasser etc.) gleichzeitig dar (jeweils mit offset).  Da der Messbetrieb auch interessant wäre, es davon aber keine 0/1 Zustandsvariable gab, habe ich diese als userReadings erstellt.

....nur falls das jemanden interessiert und vor den gleichen Problemen steht....

Gruß
KiK

Phili

Super Idee. Ich fand das auch immer blöd das die Plots immer nur Werte anzeigen wenn geheizt wird.

Kannst du deinen letzten Absatz näher erklären bzgl. der Zustände. Das interessiert mich auch.

Danke!

Philipp


Gesendet von iPhone mit Tapatalk

KiK

Hallo,
meinst du den Plot mit den Zuständen? Den hänge ich an, dann dürfte es klarer sein.
Gruß

Phili

Besten Dank! Gute Idee für die Umsetzung in einem Chart!


Gesendet von iPhone mit Tapatalk

Phili

Wie hast du die 0/1 Zustände übereinander bekommen? Hast du manuell was drauf addiert?


Gesendet von iPhone mit Tapatalk


Phili

Perfekt Danke. Mache es mit dblog da geht es mit
:::$val=($val*0,8+5)
Für eine Addition mit 5.

Danke für den Denkanstoß!


Gesendet von iPhone mit Tapatalk

LR66

Hi,
freut mich ja, dass das rudimentäre Modul eine Eigendynamik entwickelt. Hatte zw. Weihn. und Neujahr eigentlich weiter dran ar beiten wollen, aber bisher nur Umstellung auf Hashes für die Module einer Anlage und Nonblocking Nutzung angefangen. Das Abfragen der jew. Readings und Parsing je nach Modul und Aktivität hängt noch in der Warteschleife... werde mir Eure Themen ansehen bzw. könnt auch gern beitragen. Momentan werde ich für jedes Teil der Anlage ein Sub-Device anlegen, damit man das im Floorplan etc. besser anzeigen kann. Das zwischen den Messungszyklen (bei mir auch ~20min) keine (brauchbaren) Werte vorliegen, ist dem Prinzip geschuldet: es wird zwar ein Temp-Wert gemessen, aber da kein Wasserfluss taugt der Wert nix. Mal sehen, ob ich mal Zeit finde... es wird aber m.E. sinnvoll sein, weiterhin nur Werte für Heizung, Kühlung ... zu holen, wenn das jeweilige aktiv ist. Der Vor- und Rücklauf der Quelle (Luft oder Geo...) ist dann auch nur für den jew. Modus gültig.
Vg Lutz

Phili

Hi Lutz,

Wenn die Messung läuft, dann läuft doch auch die Umwälzpumpe und "schaufelt" Wasser durch die FuBo um zu messen wir warm das Wasser im Kreislauf ist. Deshalb finde ich es schon interessant zu sehen, wie sich die Temperatur langsam absenkt bis die Heizung wieder einsetzt.

Ich habe auf dem Gebiet aber auch nur gefährliches Halbwissen. [emoji6]

Vg,
Philipp

LR66

Hi Philipp,
hast Du ganz korrekt geschrieben - nur wenn Umwälzpumpe läuft, sind die Vor- oder Rücklaufwerte bzgl. Heizung oder Kühlung korrekt ... sonst liefert der Wert nur die Temp. des stehenden Wassers da wo der Sensorstandort ist - demnach nicht entsprechend dem, wie es sich in den Rohren der Räume entwickelt hat.
Ich lasse im Plot einfach vom letzten Hochheizzeitpunkt eine Linie runter zum neuen Startpunkt (bei heizen = niedrigerem) ziehen - da sieht man dieses Verhalten ganz gut: s. Anlage

Beim Warmwasserspeicher, Außentemp. (und viell. auch Pool, ext. Speicher, Raumsensor) stehen ständig aktuelle Werte an.

Vg Lutz

bioklima

Zitat von: KiK am 28 Januar 2018, 22:39:04
Hallo zusammen,

erst einmal: Vielen Dank für für das Modul "ECOTOUCH". Ich konnte damit (als Neuling) meine Heizung ins FHEM gut einbinden! Tolle Sache so was - Respekt!

Ich habe noch 3 userReadings hinzugefügt, damit das Modul für mich im Endeffekt bessere Anzeigen bringt. Falls jemand das braucht, hier der Code bzw. die Erklärung:

attr wtk userReadings heating_temp_return_mod:main_state:.* { if ((ReadingsVal("wtk","state",0) ne "measure") && (ReadingsVal("wtk","state_before",0) eq "measure")) {ReadingsVal("wtk","main_temp_return","X1")} else {ReadingsVal("wtk","heating_temp_return_mod","X2")}},  state_before:main_state:.* { ReadingsVal("wtk","state","???") },  heating_temp_return_mod:heating_temp_return:.* {ReadingsVal("wtk","heating_temp_return","X3")},  main_state_measure:main_state:.* { if (ReadingsVal("wtk","state",0) eq "measure") {"1"} else {"0"}}

...
state_before: hier speichere ich den vorherigen state, um mitzukriegen, wann der measure-state beendet ist.
...
Gruß
KiK

Hallo KiK,
Danke für die Umsetzung der userreadings, bei mir wird jedoch immer exakt der gleiche Wert in state_before eingetragen wie in state.  Ist das bei Dir auch so?
Gruß
Andreas
Raspi2B mit FHEM Razberry-ZWave/CUL-FS20 (noch Reste)/Homebridge/Landroid-S, Airupnp(Airplay für Sonos),HueBridge2,...

KiK

Hallo Andreas,
jetzt war ich länger nicht mehr ihm Forum - sorry.
Ich habe wohl diese userReadings in den letzten Jahren verändert. Aktuell sind die userReadings bei mir
state_before:measure\b
  {
  # Save state before measure
  # state = measure
  return(OldValue("wtk"));
  },
heating_temp_return_mod:main_temp_return:.*
  {
  # During heating: copy value main_temp_return 
  if (ReadingsVal("wtk","state",0) eq "heating")
   {
   ReadingsNum("wtk","main_temp_return",-999)
   }
  else
   {
   ReadingsNum("wtk","heating_temp_return_mod",-998)
   }
  },
heating_temp_return_mod:ready\b
  {
  # After measurement cycle: copy value main_temp_return (if the measurement was not directly after state "water")
  # state = ready
  if ((OldValue("wtk") eq "measure") && (ReadingsVal("wtk","state_before",0) ne "water"))
   {
   ReadingsNum("wtk","main_temp_return",-997)
   }
  else
   {
   ReadingsNum("wtk","heating_temp_return_mod",-996)
   }
  },
cooling_temp_return_mod:main_temp_return:.*
  {
  # During cooling: copy value main_temp_return 
  if (ReadingsVal("wtk","state",0) eq "cooling")
   {
   ReadingsNum("wtk","main_temp_return",-995)
   }
  else
  {
  ReadingsNum("wtk","cooling_temp_return_mod",-994)
  }
},
cooling_temp_return_mod:ready\b
  {
  # After measurement cycle: copy value main_temp_return (if the measurement was not directly after state "water")
  # state = ready
  if ((OldValue("wtk") eq "measure") && (ReadingsVal("wtk","state_before",0) ne "water"))
   {
   ReadingsNum("wtk","main_temp_return",-993)
   }   
  else
   {
   ReadingsNum("wtk","cooling_temp_return_mod",-992)
   }
  }

Vielleicht bringt dich das weiter. Ich verwende also für die Anzeige im SVG die Readings

  • cooling_temp_return_mod (im Sommer interessant)
  • heating_temp_return_mod (im Winter interessant)
...das Ergebnis passt bei mir.
Gruß

bioklima

Raspi2B mit FHEM Razberry-ZWave/CUL-FS20 (noch Reste)/Homebridge/Landroid-S, Airupnp(Airplay für Sonos),HueBridge2,...