FHEM Modul (70_HPSU.pm) ROTEX HPSU compact <--> ELM327

Begonnen von ahermann86, 19 Dezember 2019, 21:14:24

Vorheriges Thema - Nächstes Thema

ahermann86

Hallo Vorhand,

ZitatMeine Fragen waren einfach weg.
.. ich hatte mich schon gewundert, was du mit dem List von mir willst ;D

Zu Frage 1:
Ich sehe da kein Problem. Der LAN-Adapter macht im Prinzip das gleiche wie mein Modul. Außerdem kommt der CAN mit der Menge an Daten klar.

zu Frage 2:
wenn ich das alles beschreiben soll, wie ich das gemacht habe, würde ich ewig beschäftigt sein...
Eine grobe Umschreibung habe ich bereits hier gemacht: https://forum.fhem.de/index.php/topic,106503.msg1143773.html#msg1143773

Da dir die Info vermutlich nicht ausreicht, sende ich dir per PM einen Zugang (read only) von meinem System mit den für dich relevanten Räumen zum anschauen.

Gruß
Axel

Vorhand

Hallo Axel,
vielen Dank für den link. Das meiste verstehe ich noch nicht - muss mich da Stück für Stück rein arbeiten.
Vorab noch eine grundsätzliche Verständnisfrage: Ohne (original) Raumstation arbeitet die Regelung nur außentemperaturabhängig. Die Raumtemperatur, welche die Kurve verschiebt wird nur durch einen verstellbaren RaumWert vorgegeben.
Wie wirkt der Thermostateingang?
Bei EIN wird diese virtuelle RaumWert z.B. um 5° erhöht - bei AUS wieder gesenkt? Ich konnte das in der Gerätebeschreibung nicht finden.
Mein erster Versuch wird die Realisierung eines Thermostates mittels des Raumfühlers im Wohnzimmer.
Danke
Gruß Vorhand
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

ahermann86

Hallo Vorhand,

wenn ich weiß, dass du noch Zeit brauchst, lasse ich dir den Zugang noch eine Weile bestehen.

Eine Raumstation habe ich nicht, da ich über meinen KNX Bus mehr "weiß" als die Station in EINEM Raum.
Die Erfahrung konnte ich persönlich nun die letzten drei Heizperioden (solange habe ich meine HPSU und das Haus) sammeln.

Der Thermostateingang wirkt genauso wie wenn du die Heizung auf Sommer oder Heizen stellst - also Heizung Ein oder Aus. Mehr nicht.
Bei Ein wird auch nicht der Sollwert erhöht. Das wird nur mit den Smartgrid Eingängen gemacht.
Eine Besonderheit: Die Klemmen meines Raumthermostats sind nicht belegt, also offen.
D.h. ich verwende die Funktion invers: Also "set myHPSU HPSU.Raumthermostat on" bedeutet "Heizung aus"...

Gruß
Axel


Vorhand

Hallo Axel, das wäre nett wenn du den link noch offen hälts, danke.

Zur Funktion des Raumthermostates: Offensichtlich schaltet er nur um zwischen Heizen und Frostschutz. Bei Heizen=EIN wird der grundeingestellte Raumtemperatur-Sollwert von der der WP geregelt. Bei Heizen=AUS nur der eingestellte Frostschutz. (Kühlen mal außen vor).
Also muss die Anlage so eingestellt sein, dass - ohne Thermostat - etwas über dem Bedarf geheizt wird, damit der Thermostat auch noch ein offenes Fenster ausregeln kann. Mehr als auf Betriebsart Heizen stellen, kann er nicht.
Wenn alles gut eingestellt ist, ist normalerweise nur ein Abregeln bei "zu warm" wie Sonne, viele Menschen usw. erforderlich.
Wenn ich es ein wenig verstanden habe:
Dein Programmteil myHPSU_Control beinhaltet die eigentliche Thermostatsteuerung mit HEIZEN (set myHPSU HPSU.Raumthermostat off) und HEIZEN AUS (set myHPSU HPSU.Raumthermostat on).
Das ganze wird von der Summe Heizanforderungen bestimmt.
An welcher Stelle bildest du diese Anforderung?
Grüße Vorhand
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

ahermann86

Hallo Vorhand,

ich habe für jeden Raum ein Device mit Soll und Isttemperaturwerten. Die Daten hierzu kommen von meinem KNX Bus. Das jeweilige Device lasse ich durch ein Notify (NotTemperaturHeizaktor_xx) mit dem Reading "Heizanforderung" (...) "ergänzen":

Ein solches Device sieht dann z.B. so aus:

defmod Temperatur_EG_Arbeit KNX 2/2/1:dpt9:soll 2/2/2:dpt9:ist:get 2/2/30:dpt5.001:stell:get 2/2/50:dpt1.001:auf 2/2/55:dpt1.001:zu 2/2/0:dpt1.009:sollVersch
....
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 Faktor 1
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 Heizanforderung 0
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 HeizanforderungMax 0
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 IsFensterOffen 0
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 IsFensterOffenVerz 0
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 OffeneFenster 0
setstate Temperatur_EG_Arbeit 2021-07-06 22:47:00 auf-set off
setstate Temperatur_EG_Arbeit 2021-07-07 16:00:22 ist-get 23.50
setstate Temperatur_EG_Arbeit 2021-07-07 16:00:22 last-sender 1/1/67
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 soll-get 22.00
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 soll-max 22.5
setstate Temperatur_EG_Arbeit 2021-07-07 16:00:22 state 23.50
setstate Temperatur_EG_Arbeit 2021-07-06 13:01:36 stell-get 0 %
setstate Temperatur_EG_Arbeit 2021-07-06 22:47:00 zu-set on


Im Notify (NotTemperaturHeizaktor_xx) wird über eine Hysterese entschieden, wie die Heizanforderung des jeweiligen Devices gesetzt wird:

Temperatur.*(OG|EG|KG).*:(ist-get|stell-get).*
{
  my $h = $defs{"$NAME"};
  my $soll = ReadingsNum("$NAME", "soll-get", 0);
  my $diff = 0;
...
  readingsBeginUpdate($h);
...
  $diff = sprintf("%.2f", $soll-ReadingsNum("$NAME", "ist-get", 0));
  if ($diff <= 0.1)
  {
    readingsBulkUpdateIfChanged($h, "Heizanforderung", 0);
  }
  elsif ($diff > 0.2)
  {
    my $val = ReadingsNum("$NAME", "Faktor", 1);
    readingsBulkUpdateIfChanged($h, "Heizanforderung", $val);
  }
...
readingsEndUpdate($h, 1);
...


Aus den Readings "Heizanforderung" aller "Temperatur.*(OG|EG|KG).*" Devices wird mit einem DOIF_Reading im DOIF (myHPSU_Control) die Summe gebildet:

AnzHeizanforderung:[#sum:"^Temperatur":Heizanforderung]),


Weiterhin gibt es ein DOIF_Reading welches die (Mindest)Bedigung überprüft:

CondHeizanforderung:[$SELF:AnzHeizanforderung,0] > 4,


Im DOIF (myHPSU_Control) wird dann mit

## ---- Heizen
(
      [$SELF:CondHeizgrenze]          ##Temperatur unterschritte, damit geheizt werden darf...
  and [$SELF:CondHeizgrenzeWS]          ##...und auch von der WS -> Wetterstation
  and [diHPSUMorgensSperren:state] ne "on"
  and [$SELF:CondHeizanforderung]
  and [$SELF:CondHeizanforderung:sec] > 40*60
)
(set di_Heizaktor Automatik)
(set myHPSU HK_Funktion Witterung)
(set myHPSU HPSU.Raumthermostat off)
(set myHPSU HZ_Unterstuetzung off)
...
## ---- Heizen aus
DOELSEIF (
      [$SELF:CondHeizgrenze]
  and [$SELF:CondHeizgrenze:sec] > 10*60
  and [$SELF:state] ne "Sommer"
)
(set di_Heizaktor alleAus)
(set myHPSU HPSU.Raumthermostat on)
(set myHPSU Betriebsart Heizen)
(set myHPSU HZ_Unterstuetzung off)

## ---- Sommer
DOELSEIF ([+:01]) ## Trigger
(set di_Heizaktor alleAus)
(set myHPSU Betriebsart Sommer)
(set myHPSU HZ_Unterstuetzung off)


überprüft, ob eine Heizanforderung vorliegt und die mindestens schon 40 Minuten lang.

Gruß
Axel

Vorhand

Hallo Axel, vielen Dank für die Hilfe. Fürs richtige Verstehen müsste ich einen anderen fhem-Level haben.
Trotzdem Frage: Dein Device z.B. "Temperatur_EG_Arbeit" ist ein KNX Device. Ich vermute, dass da Raumthermostate für die Einzelregelung hinter stecken?
Ich habe weder KNX noch Einzelraumregelung mit Stellantrieben. Es gibt lediglich eine Temperatur pro Raum von einem DS18B20 sowie temphigh und templow Werte.
Ich möchte natürlich deine gesamte Struktur nutzen. Dazu müsste ich jedoch die Readings erzeugen, die dein Auswert-notify nutzt.
Die Werte für Fenster, Stellantrieb, Sollwert usw. müssten festgelegt werden. Hast du eine Idee, wie man so ein Quasi-KNX-Device erzeugen kann?
Danke
Grüße
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

ahermann86

Hallo Vorhand,

das mit dem fhem-Level ist so eine Sache, aber wenn man das einmal verinnerlicht hat, ist FHEM genial und man kann mit wenig Aufwand und Zeit einfach komplexe Dinge lösen  8)... aber genug abgeschweift.

.. jetzt muss ich doch weiter ausholen  :o:

Meine KNX Devices sind von MDT die "Glastaster II Smart" - nutze Sie aber "nur" zum Messen und zum einstellen des Sollwerts.
Das Messen hast du bereits, den Sollwert vorgeben würde ich an deiner Stelle als Reading in das jeweilige DS18B20 reinpacken.

Das könnte man nun einzeln für jeden DeinDS18B20Temperatursensor.* Device tun:


setreading DeinDS18B20Temperatursensor_EG_Wohnen Soll 23.0


Für dich ist es aber wichtig, dass du zunächst ein Notify wie mein "NotTemperaturHeizaktor_xx" bastelst:

Der Einfachkeit halber hoffe ich, dass deine Temperaturmessungen auch nach einem bestimmten Muster (wie bei mir Temperatur_EG.., Temperatur_OG..) benannt sind.
So wird es dann mit dem notify einfacher:

Erstellen in der Befehlszeile:

define NotTemperaturHeizaktor_xx notify DeinDS18B20Temperatursensor.*(OG|EG|KG).*:ReadingIstTemperatur.* ##


Dann das notify mit klick auf "DEF" mit Leben füllen:

DeinDS18B20Temperatursensor.*(OG|EG|KG).*:ReadingIstTemperatur.*
{
  my $h = $defs{"$NAME"};
  my $soll = ReadingsNum("$NAME", "Soll", -1);
  my $diff = 0;

  readingsBeginUpdate($h);
  if ($soll < 0) ##wenn noch kein "Soll" Reading im Device vorhanden ist
  {
    $soll = 22;  ##Default Temperaturwert.
    readingsBulkUpdate($h, "Soll", $soll);
  }

  $diff = sprintf("%.2f", $soll-ReadingsNum("$NAME", "ReadingIstTemperatur", 0));
  if ($diff <= 0.1)
  {
    readingsBulkUpdateIfChanged($h, "Heizanforderung", 0);
  }
  elsif ($diff > 0.2)
  {
    my $val = ReadingsNum("$NAME", "Faktor", 1);
    readingsBulkUpdateIfChanged($h, "Heizanforderung", $val);
  }

  readingsEndUpdate($h, 1);

  ## <-- das sind Kommentare
  ## nachfolgende Zeile aktivieren, um im Log zu sehen, ob das notify funktioniert...
  ##Log 1, "Das Device $NAME hat ausgeloest, der Event sah so aus: $EVENT";
}


Wenn das notify richtig funktioniert, wird nun bei jeder Temperaturänderung das Reading "Heizanforderung" generiert bzw. aktualisiert (falls nötig -> readingsBulkUpdateIfChanged).
Weiterhin entsteht für das jeweilige Device das Reading "Soll" mit 22, falls das noch nicht vorhanden ist. Das kann dann im Nachhinein für den jeweiligen Raum gesondert angepasst werden.


Hilfestellung für die redings..(..) Funktionen:
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#readingsBulkUpdate

Gruß
Axel


Vorhand

Hallo Axel, danke für deine Hilfe. Ich habe zunächst auf einer Testinstallation - mit echten Temperaturen - deine Bezeichnungen verwendet z.B. Temperatur_EG_Arbeit usw.
Außerdem ein paar setreading erzeugt.
Dann das notify nach Beispiel programmiert. Außerdem die readingsGroup aus deiner Original Seite kopiert.
Das ist der code:

############################ Heizung Test
define Temperatur_EG_Flur OWDevice 28.3EA37D040000 60
setuuid Temperatur_EG_Flur 60f04a03-f33f-1f55-91bd-0b5d2a77ef0285a2
attr Temperatur_EG_Flur model DS18B20
attr Temperatur_EG_Flur room Heizung,OWDevice
define Helligkeit readingsProxy DS18B20_A2D984001677
setuuid Helligkeit 60f054c6-f33f-1f55-50a8-1abee4f9f1f09a0d
attr Helligkeit room Heizung
define Temperatur_EG_Arbeit OWDevice 10.08C5C0000800 60
setuuid Temperatur_EG_Arbeit 60f057bf-f33f-1f55-e3b1-fb66bf6d90fb942b
attr Temperatur_EG_Arbeit model DS18S20
attr Temperatur_EG_Arbeit room Heizung,OWDevice
define Temperatur_EG_WohnenKueche OWDevice 10.22F0C0000800 60
setuuid Temperatur_EG_WohnenKueche 60f057bf-f33f-1f55-2d26-6242a41ba15f943e
attr Temperatur_EG_WohnenKueche model DS18S20
attr Temperatur_EG_WohnenKueche room Heizung,OWDevice
define Temperatur_KG_Arbeiten OWDevice 10.C9B3C0000800 60
setuuid Temperatur_KG_Arbeiten 60f057bf-f33f-1f55-dc05-b7f2f0a00e215c48
attr Temperatur_KG_Arbeiten model DS18S20
attr Temperatur_KG_Arbeiten room Heizung,OWDevice
define Temperatur_OG_Bad OWDevice 10.6B3AB7000800 60
setuuid Temperatur_OG_Bad 60f057bf-f33f-1f55-fabb-a75bc579ea7f33ae
attr Temperatur_OG_Bad model DS18S20
attr Temperatur_OG_Bad room Heizung,OWDevice
define Temperatur_OG_KindNord OWDevice 10.1BEDC0000800 60
setuuid Temperatur_OG_KindNord 60f057bf-f33f-1f55-dc66-bfbfacf8e332fdb0
attr Temperatur_OG_KindNord model DS18S20
attr Temperatur_OG_KindNord room Heizung,OWDevice
define Temperatur_OG_Schlafen OWDevice 10.0766C6000800 60
setuuid Temperatur_OG_Schlafen 60f057bf-f33f-1f55-2e89-4c34fbe8602b76ef
attr Temperatur_OG_Schlafen model DS18S20
attr Temperatur_OG_Schlafen room Heizung,OWDevice
define Temperatur_OG_WC OWDevice 10.0FC1C0000800 60
setuuid Temperatur_OG_WC 60f057bf-f33f-1f55-a9d9-9f67cc6ff5bf3518
attr Temperatur_OG_WC model DS18S20
attr Temperatur_OG_WC room Heizung,OWDevice
########### notify
define NotTemperaturHeizaktor_xx notify Temperatur.*(OG|EG|KG).*:ReadingIstTemperatur.*\
{\
  my $h = $defs{"$NAME"};;\
  my $soll = ReadingsNum("$NAME", "Soll", -1);;\
  my $diff = 0;;\
\
  readingsBeginUpdate($h);;\
  if ($soll < 0) ##wenn noch kein "Soll" Reading im Device vorhanden ist\
  {\
    $soll = 22;;  ##Default Temperaturwert.\
    readingsBulkUpdate($h, "Soll", $soll);;\
  }\
\
  $diff = sprintf("%.2f", $soll-ReadingsNum("$NAME", "ReadingIstTemperatur", 0));;\
  if ($diff <= 0.1)\
  {\
    readingsBulkUpdateIfChanged($h, "Heizanforderung", 0);;\
  }\
  elsif ($diff > 0.2)\
  {\
    my $val = ReadingsNum("$NAME", "Faktor", 1);;\
    readingsBulkUpdateIfChanged($h, "Heizanforderung", $val);;\
  }\
\
  readingsEndUpdate($h, 1);;\
\
  ## <-- das sind Kommentare\
  ## nachfolgende Zeile aktivieren, um im Log zu sehen, ob das notify funktioniert...\
  Log 1, "Das Device $NAME hat ausgeloest, der Event sah so aus: $EVENT";;\
}
setuuid NotTemperaturHeizaktor_xx 60f05c91-f33f-1f55-e7a8-70078f2800584c95
attr NotTemperaturHeizaktor_xx room Heizung

############ readingsGroup
define Temperaturen readingsGroup <%sani_heating>,<Soll>,<Ist>,<Stell.>,<Auf>,<Zu>,<Heizanf.>,<Heizanf. Max>,<O.Fenster>,<O.Fenster Verz.> \
Temperatur.*(OG|EG|KG).*:soll-get,ist-get,stell-get,auf-set,zu-set,Heizanforderung,HeizanforderungMax,OffeneFenster,IsFensterOffenVerz\
<hr>\
Temperaturen:<>,<>,<>,<>,<>,<>,$sum(:6)@SUM,$sum(:7)@SUM\
diHPSU_Control:,<>,<>,<>,<>,<>,AnzHeizanforderung,AnzHeizanforderungMax\

setuuid Temperaturen 60f062e7-f33f-1f55-a726-4fd7f0dad04211aa
attr Temperaturen alias Temperaturen
attr Temperaturen nameStyle style="font-weight:bold"
attr Temperaturen room Heizung
attr Temperaturen valueColumn { 'ist-get' => 2, 'Heizanforderung' => 6 }
attr Temperaturen valueFormat {'soll-get' => " %.1f&deg;;C ", 'ist-get' => " %.1f&deg;;C "}
attr Temperaturen valueIcon {'auf-set.on' => 'sani_heating_manual@orange', 'auf-set.off' => 'sani_heating_automatic@lightgreen', 'zu-set.on' => 'time_eco_mode@green', 'zu-set.off' => 'sani_heating_automatic@lightgreen', 'Heizanforderung' => (looks_like_number($VALUE) and $VALUE > 0)?'sani_floor_heating@red':'sani_floor_heating_off@green', 'HeizanforderungMax' => (looks_like_number($VALUE) and $VALUE > 0)?'sani_floor_heating@orange':'sani_floor_heating_off@green'}
attr Temperaturen valuePrefix { 'Temperaturen.SUM' =>'&Sigma;; ' }
attr Temperaturen valueStyle style="width:70px;; text-align:right"

Leider kein Output des notify.
Das ist ein list von Temperatur_EG_Arbeit

Internals:
   DEF        10.08C5C0000800 60
   FUUID      60f057bf-f33f-1f55-e3b1-fb66bf6d90fb942b
   IODev      OWS1
   LAST_READ_FAILED 0
   NAME       Temperatur_EG_Arbeit
   NOTIFYDEV  global
   NR         77
   NTFY_ORDER 50b-Temperatur_EG_Arbeit
   STATE      temperature: 21.75  alarm: 0
   TYPE       OWDevice
   READINGS:
     2021-07-16 11:30:08   IODev           OWS1
     2021-07-15 18:25:26   Soll            23.0
     2021-07-16 11:30:28   alarm           0
     2021-07-16 11:30:28   state           temperature: 21.75  alarm: 0
     2021-07-16 11:30:28   temperature     21.75
   fhem:
     address    10.08C5C0000800
     alerting   1
     bus        bus.2
     interfaces temperature
     interval   60
     getters:
       address
       crc8
       family
       id
       locator
       power
       r_address
       r_id
       r_locator
       temperature
       temphigh
       templow
       type
     polls:
       temperature
     setters:
       temphigh
       templow
     state:
       temperature
Attributes:
   model      DS18S20
   room       Heizung,OWDevice

Du verwendest im notify ReadingIstTemperatur.* die Thermometer geben als reading nur Temperatur aus.
Was mache ich falsch?
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

ahermann86

Hi Vorhand,

du musst dein notify korrigieren. Das Regex für den Trigger passt nicht.

Du hast aus meinem Beispiel noch
define NotTemperaturHeizaktor_xx notify Temperatur.*(OG|EG|KG).*:ReadingIstTemperatur.*

Für deinen Fall muss das aber so heißen
define NotTemperaturHeizaktor_xx notify Temperatur.*(OG|EG|KG).*:temperature.*

Das bedeutet: Wenn das Reading "temperature" getriggert wird, wird der Code des notify's ausgeführt.

Schau dir am besten Mal die Beschreibung für das notify in der commandref an.

Gruß
Axel

Vorhand

Hallo Axel,
das notify "NotTemperaturHeizaktor_xx" scheint jetzt zu funktionieren. Änderungen der Temperatur oder der Sollwerte führen zu Heizanforderungen. Ich habe das auch in einer reduzierten readingsGroup dargestellt. Die Symbole wechseln von grün auf rot. Nur die Summen zeigen keine Werte.
Die eigentlichen Signale an die HPSU für die Regelung erzeugt ja die "diHPSU_control". Zusammen mit deiner "diHPSU_AnzHeizanforderungMin" habe ich die beiden DOIFs aktiviert. Sie enthält allerdings noch Variable, die es bei mir nicht gibt.
Frage: würde auch nur die "diHPSU_control" genügen? Was müsste ich da rausnehmen?
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

hackepeter

Zitat von: ahermann86 am 29 März 2021, 23:19:03
Hierzu werde ich vorerst Mal ein paar Logs und Wiederholungen einbauen. So kann/muss ich den Ablauf für das Werte setzen nun in Angriff nehmen, was ich irgendwann eh mal machen wollte.

Werde mich melden, wenn ich dazu komme.

Gruß
Axel

Rückmeldung zum Thema dass mit meinem Adapter das setzen von Werten erst nach einem Reconnect klappt: Ich habe mir jetzt einen Günstigen Adapter besorgt, damit treten die Probleme nicht auf.

Vorhand

Hallo Axel,
jetzt habe ich mich nochmals über die Regelung "hergemacht". Die Heizanforderung wird generiert, aber dann wirken noch die anderen DOIFs mit, die ich nicht verstehe. Es fällt mir schwer, rückwärts über den Code, deren Zweckhaftigkeit bzw. deine Intension herauszufinden.
Könntest du evt. diese verschiedenen DOIFs mit einem Zweizeiler Erklärung ergänzen. Mir würde es schon genügen, wenn du das bei jedem DOIF in deinem Programm machst, was ich ja freundlicherweise einsehen darf.
Am wichtigsten wären mir: diHPSU_AnzHeizanforderungMin, diHPSU_AnfHeizBad, diHPSU_Control.
Vielen Dank.
Grüße
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

robert1986a

Hallo Axel,
Das FHEM-Modul und die Kopplung zu ioBroker läuft bei mir seit einiger Zeit total Stabil und es kommen auch keine " . " Werte mehr im ioBroker an. Nochmals vielen Dank für deine Unterstützung!

Mir ist aufgefallen, dass es bei einigen Readings in ioBroker zu einem Datentyp-Konflikt kommt (String, Number) und somit quasi sekündlich Log-Einträge in ioBroker geschrieben werden.
Bsp: "State value to set for "fhem.0.Rotex.HPSU~Heizgrenze_Tag" has to be type "string" but received type "number" "

Es scheint, als werden Messdaten wie "Ruecklauftemperatur" oder "TVBH" sauber übertragen (keine Log-Einträge, type: number, role: value.temperature).

Writable Werte wie "Min_T_Vorlauf" oder "Heizgrenze_Tag" hingegen kommen in iobrocker als String an und ioBroker erwartet type: Number. Man kann Role und Type in ioBroker zwar manuell abändern, aber nach einiger Zeit springt es wieder auf string zurück. Hast du eine Idee, woran das liegen kann oder soll ich die Frage eher an die ioBroker-FEHM-Adapter-Gruppe richten?

Danke und Gruß Robert

ahermann86

Hallo

@hackepeter:
Wenn du mit so damit klar kommst, würde ich vorschlagen das so zu lassen.

@Vorhand:
Das "diHPSU_Control" arbeitet so wie du das in deinem letzten Beitrag geschrieben hast.. das entscheidet, ob und wie die HPSU eingeschaltet wird.

"diHPSU_AnzHeizanforderungMin" und "diHPSU_AnfHeizBad" sind Spezialitäten. Man hätte die bestimmt in "diHPSU_Control" komplett mit Einbauen können, was das ganze noch unübersichtlicher gemacht hätte. Grundsätzlich benötigst du beide Modis nicht aber sie erhöhen den Komfort.

"diHPSU_AnzHeizanforderungMin" wird dann aktiv, wenn ein "Sonderbehandelter" Raum (Kueche, Bad_Boden, Bad, Kind_Nord, Kind_Sued) eine Heizanforderung "vorab" hat. Das sieht man auch an den "Cond_xx" in den DOIF_Readings. Da sind für die ausgewählten Räume noch engere Temperaturabweichungen definiert.
Wenn nun ein solcher Raum eine Heizanforderung hat und eine gewisse Anzahl anderer Räume nicht die "Max Temperatur" (Reading im jeweiligen Raum "soll-max") erreicht hat, dann schaltet das "diHPSU_Control" in den "HeizenMin" State.
In diesem "HeizenMin" State werden dann auch alle Räume mit einem festen Sollwert (28/29°C) mitgeheizt, obwohl die keine Heizanforderung haben aber die "soll-max" nicht erreicht ist. Das gewährleistet dann der HPSU einen großen Durchfluss und einen "warmen" Boden ohne den Raum "übertrieben" hochzuheizen.

"diHPSU_AnfHeizBad" wird dann aktiv, wenn das Warmwasser größer als 51.5°C ist und der Badboden kälter als 23.5 ist. Das Problem habe ich vorallem in der Übergangszeit wenn die Sonne scheint und das Wasser stark aufgeheizt wird aber im Bad (da Ostseite) wenig davon ankommt.

@Robert:
Das der Adapter stabil läuft ist schön zu hören - danke.  8)
Wegen dem anderen Problem würde ich dich gerne an das ioBroker Forum verweisen.
https://forum.iobroker.net/topic/5031/fhem-adapter

Gruß
Axel

Vorhand

Hallo Axel,
hab jetzt die Minimalversion auf einem TestPi laufen. Das Einschalten der HPSU funktioniert mit den Sollwerten und den Faktoren. Das Ausschalten hängt aber nicht von der Summe ab, sondern nur von der Außentemperatur < 15°.
Ich dachte, dass die Schaltung wie ein Thermostat funktioniert? Da ich keine Einzelraumregelung habe, sollte das System bei Fremdwärme abschalten. Bei dir macht das ja die Einzelraumregelung.
Spricht was dagegen, wenn ich bei nicht Heizanforderung, den Befehl Aus absetze?
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly