FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: duffy6 am 14 November 2017, 17:18:44

Titel: Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 14 November 2017, 17:18:44
Hallo zusammen,

ich habe meine Weishaupt Heizung via FHEM Modul (https://forum.fhem.de/index.php?topic=17718.0) angebunden, weil das mit der Homematic CCU nicht geht.
Nun hätte ich die Werte aber gerne in meiner CCU bzw. Cuxd.
Es sind mehrere Dutzend Werte (Zahlen (meist Temperaturen) als auch Boolean).
Wie kriege ich die am besten rein in die Homematic Welt?

Danke udn Gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 14 November 2017, 17:21:25
Hallo,

ich selbst nutze (noch) keine CCU/CCU2 aber Homematic (alles direkt in fhem), evtl. hilft das weiter:

https://wiki.fhem.de/wiki/HMCCU#Weitere_Funktionen_des_Moduls_HMCCU

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: Thorsten Pferdekaemper am 14 November 2017, 18:05:29
Hi,
das müsste prinzipiell mit HM-Wired gehen. Du baust Dir ein HBW-Gerät wie hier beschrieben:
https://forum.fhem.de/index.php/topic,61780.msg532033.html#msg532033
...und fütterst die CCU mit dem dazugehörigen XML.
Dann halt noch der LAN-Adapter und vielleicht der Abschlusswiderstand (den man u.U. nicht braucht).
Gruß,
   Thorsten
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: zap am 14 November 2017, 20:16:45
Du hast mit HMCCU mehrere Möglichkeiten:

1. Du benutzt CCU Systemvariablen
2. Du legst in der CCU CUXD Devices an. Für diese dann entsprechende FHEM Devices vom Typ HMCCUCHN oder HMCCUDEV. Dann kannst Du die Datenpunkte der CUXD Devices mit "set datapoint" von FHEM aus beschreiben. Du musst halt einen passenden Typ von CUXD Device finden, der für dich passt.
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 14 November 2017, 21:24:02
Danke für eure Antworten!
Die beiden Wege von zap hören sich vielversprechend an!

Welcher Weg ist denn der bessere für viele Werte?

Gruß
Duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: zap am 15 November 2017, 07:35:41
Eher Systemvariablen. Du bist sonst CUXD Devices mit entsprechend vielen Datenpunkten finden (v.a. Beschreibbare Datenpunkte). Allerdings hat die CCU ein Limit für die Anzahl Variablen, weiss es aber gerade nicht
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 15 November 2017, 15:13:54
Kann man von den Systemvariablen dann auch Diagramme zeichnen lassen (CCU Historian)?
EDIT: das Erstellen von Diagrammen aus Systemvariablen mit CCU-Historian scheint zu klappen!

Nun zu dem Weg über die Systemvariablen: Könnt ihr mir da einen ersten Wink in die richtige Richtung geben, wie soetwas funktioniert?

Danke und Gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 15 November 2017, 15:28:04
Zitat von: duffy6 am 15 November 2017, 15:13:54
Nun zu dem Weg über die Systemvariablen: Könnt ihr mir da einen ersten Wink in die richtige Richtung geben, wie soetwas funktioniert?

Jep habe ich zwar schon gemacht aber gerne noch mal: https://forum.fhem.de/index.php/topic,79531.msg715470.html#msg715470

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 15 November 2017, 17:02:25
Danke @ MadMax-FHEM, den Link hatte ich  Mir zuvor schon angeschaut.

Leider steige ich da nicht so ganz durch.

Man kann ja Variablen setzen mit:

set d_ccu var Temperatur 20.5

Allerdings will ich ja die Variable nicht auf einen fest definierten Wert sitzen (im obigen Beispiel 20.5), sondern den dynamischen Wert des FHEM-Parameters einfach weitergeben an die CCU.

Könntest du mir da einen Codeschnipsel zeigen?

Danke und Gruß
Duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: zap am 15 November 2017, 18:33:02
Du wirst ja vermutlich notify verwenden, um bei Änderung der Werte die Variablen in der CCU zu setzen.

Schau dir halt mal die Dokumentation zu notify an. Da kannst du im set Befehl auch Variablen verwenden (EVTPaRT oder so).
Wenn du es geschickt anstellst, genügt ein Notify in der Art

set ccudev var Variable1 Variable2

Als Variable1 übergibst du den Readingname. Damit muss die Variable in der CCU wie das Reading heißen
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 15 November 2017, 18:36:15
Sorry Männer, ich bin ein absoluter FHEM Newbie und habe FHEM nur installiert, da meine Heizung in Homematich nicht unterstützt wird.

Könnt ihr mir ein paar mehr Details liefern?

Copy und Paste mäßig mit Notify und allem drum und dran.
Das wär lieb :-*

Danke und Gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 15 November 2017, 19:06:20
Zitat von: duffy6 am 15 November 2017, 18:36:15
Sorry Männer, ich bin ein absoluter FHEM Newbie und habe FHEM nur installiert, da meine Heizung in Homematich nicht unterstützt wird.

Könnt ihr mir ein paar mehr Details liefern?

Copy und Paste mäßig mit Notify und allem drum und dran.
Das wär lieb :-*

Danke und Gruß
duffy6

Ist eigentlich nicht Standard und ratsam...
...weil nur wenn man Dinge versteht kann man auch selber was ändern und im "Notfall" was korrigieren...

Aber evtl. findet sich was als "Startanschubbser"...
...allerdings braucht es dazu mehr Input.

Und ich sag mal so: wenn du anfängst den zu liefern bist du eigentlich schon (fast) am Ziel... ;)

Also zunächt musst du die Heizungssteuerung in fhem integrieren (hab jetzt nicht gelesen, ob schon passiert).

Dann sollte es da ja ein Device geben, welches Readings (Werte) hat, die du in der CCU sehen willst...

Wenn dem so ist, dann den EventMonitor öffnen (evtl. in Filter so einstellen, dass nur das interessierende Gerät kommt) und schauen was für Events kommen.

Einen auswählen und auf "Create/Modify" klicken und ein Notify anlegen (lassen).

Dann das so angelegte Notify entsprechend anpassen, also den gewünschten set-Befehl eintragen, dass das Datum "im" Event ($Event, $EVTPART0, $EVTPART1, ...) dann entsprechend gesetzt wird (siehe etwas weiter oben).

Was vom $Event bzw. welches $EVTPART du brauchst hängt davon ab wie der Event aussieht und was du davon übertragen haben willst.

Wenn du nicht weiter kommst, dann gerne wieder hier (oder neuer Thread) melden.

Allerdings um ein copy-paste Beispiel machen zu können brauchen wir den Event und was du davon wohin übertragen willst...
...und dann kannst du ja praktisch daraus den Notify auch schon selbst basteln ;)

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 15 November 2017, 21:00:21
Ich komme einfach nicht weiter :'(

Bringen diese Daten vielleicht etwas?
Ich habe ein 99er Modul der Heizung eingebunden und meine fhem.cfg sieht so aus:


define HzAnlage Wcmcom hostname=192.168.133.54
attr HzAnlage username fhem
attr HzAnlage passwd XXXX
attr HzAnlage AutoDeleteReadings 0
attr HzAnlage alias Heizung
attr HzAnlage devStateIcon HZ
attr HzAnlage devices GAS_F GAS_P HK1_P HK2_B HK2_P SOL_F SOL_P USER
attr HzAnlage disable 0
attr HzAnlage event-on-change-reading .*
attr HzAnlage group Weisshaupt
attr HzAnlage hostname 192.168.133.54
attr HzAnlage refresh-GAS 60
attr HzAnlage refresh-HK 1880
attr HzAnlage refresh-SOL 600
attr HzAnlage refresh-USER 600
attr HzAnlage room Heizung
attr HzAnlage setList Hk2-Betriebsart:Normal,Absenk,Sommer,Standby
attr HzAnlage username fhem
attr HzAnlage verbose 1
attr HzAnlage webCmd Hk2-Betriebsart

define HzAnlage_GAS_P_rg readingsGroup PID:<Ansicht>,Ansicht HzAnlage:<Status>,Fehler,UpdateTime-GAS_P  HzAnlage:<Betrieb>,Betriebsphase,Pumpe,Gasventil,BrennerEinAusZeit HzAnlage:<Laufzeit>,Brennerlaufzeit-heute,Gas-Verbrauch HzAnlage:!PUFFER,Temp-Puffer-oben,Temp-Puffer-unten,Temp-Solar-unten HzAnlage:!WW,Hk1-Betriebsart,Hk1-Normal-WW-Soll,Hk1-Warmwassertemperatur HzAnlage:!HZ,Hk2-Betriebsart,Hk2-Normal-VL-Soll,Hk2-Vorlauftemperatur,UpdateTime-USER
attr HzAnlage_GAS_P_rg alias Betriebszustand
attr HzAnlage_GAS_P_rg commands {'PID.Ansicht' => 'Ansicht:Fachmann,Normal', 'Hk1-Absenk-Raumtemp' => 'Hk1-Absenk-Raumtemp:', 'Hk1-Absenk-VL-Soll' => 'Hk1-Absenk-VL-Soll:', 'Hk1-Absenk-WW-Soll' => 'Hk1-Absenk-WW-Soll:', 'Hk1-Betriebsart' => 'Hk1-Betriebsart:', 'Hk1-Normal-Raumtemp' => 'Hk1-Normal-Raumtemp:', 'Hk1-Normal-VL-Soll' => 'Hk1-Normal-VL-Soll:', 'Hk1-Normal-WW-Soll' => 'Hk1-Normal-WW-Soll:', 'Hk1-Steilheit' => 'Hk1-Steilheit:', 'Hk2-Absenk-Raumtemp' => 'Hk2-Absenk-Raumtemp:', 'Hk2-Absenk-VL-Soll' => 'Hk2-Absenk-VL-Soll:', 'Hk2-Absenk-WW-Soll' => 'Hk2-Absenk-WW-Soll:', 'Hk2-Betriebsart' => 'Hk2-Betriebsart:', 'Hk2-Normal-Raumtemp' => 'Hk2-Normal-Raumtemp:', 'Hk2-Normal-VL-Soll' => 'Hk2-Normal-VL-Soll:', 'Hk2-Normal-WW-Soll' => 'Hk2-Normal-WW-Soll:', 'Hk2-Steilheit' => 'Hk2-Steilheit:', 'Hk1-Regelvariante' => 'Hk1-Regelvariante:', 'Hk2-Regelvariante' => 'Hk2-Regelvariante:'}
attr HzAnlage_GAS_P_rg group Heizungsanlage - Steuerung
attr HzAnlage_GAS_P_rg noheading 0
attr HzAnlage_GAS_P_rg nolinks 1
attr HzAnlage_GAS_P_rg nonames 1
attr HzAnlage_GAS_P_rg notime 1
attr HzAnlage_GAS_P_rg room Heizung
attr HzAnlage_GAS_P_rg valueFormat {'Brennerlaufzeit-heute' => '%d', 'Gas-Verbrauch' => '%.1f', 'Brennerlaufzeit-Gesamt' => '%d', 'Brennerlaufzeit-total' => '%d','Hk1-Warmwassertemperatur' => '%.1f', 'Hk2-Vorlauftemperatur' => '%.1f', 'Gas-Start' => '%d', 'Gas-End' => '%d', 'Gas-Diff' => '%d', 'Kalibrierung' => '%.3f', 'Min-Kalibrierung' => '%.3f', 'Max-Kalibrierung' => '%.3f',}
attr HzAnlage_GAS_P_rg valueIcon {'WW' => 'WW', 'HZ' => 'HZ', 'HzAnlage.KOMFORT' => 'KOMFORT', 'HzAnlage.ABSENK' => 'ABSENK', 'PUFFER' => 'sani_boiler_temp', 'Pumpe.ein' => 'sani_pump'}
attr HzAnlage_GAS_P_rg valuePrefix {'Laststellung' => 'akt ', 'Min-Laststellung' => 'min ', 'Max-Laststellung' => 'max ',  'Brennerlaufzeit-heute' => 'heute ', 'Gas-Verbrauch' => 'Gas ', 'Brennerlaufzeit-Gesamt' => '', 'Brennerlaufzeit-total' => 'total ', 'Temp-Puffer-oben' => 'oben ', 'Temp-Puffer-unten' => 'mitte ', 'Temp-Solar-unten' => 'unten ', 'Hk1-Warmwassertemperatur' => 'ist ',  'Hk2-Vorlauftemperatur' => 'ist ', 'Gas-Start' => 'start ', 'Gas-End' => 'ende ', 'Gas-Diff' => 'diff ', 'Kalibrierung' => 'akt ', 'Min-Kalibrierung' => 'min ', 'Max-Kalibrierung' => 'max ', 'Pumpe' => 'Pumpe ', 'Gasventil' => 'Ventil '}
attr HzAnlage_GAS_P_rg valueStyle {TempstoColorStyle("$READING","$VALUE")}
attr HzAnlage_GAS_P_rg valueSuffix {'BrennerEinAusZeit' => ' Uhr', 'Abgastemperatur' => ' °C', 'Laststellung' => ' %', 'Min-Laststellung' => ' %', 'Max-Laststellung' => ' %',  'Brennerlaufzeit-heute' => ' Minuten', 'Gas-Verbrauch' => ' cbm', 'Brennerlaufzeit-Gesamt' => ' h', 'Brennerlaufzeit-total' => ' h', 'Temp-Puffer-oben' => ' °C', 'Temp-Puffer-unten' => ' °C', 'Temp-Solar-unten' => ' °C', 'Hk1-Warmwassertemperatur' => ' °C', 'Hk1-Normal-WW-Soll' => ' °C', 'Hk1-Absenk-WW-Soll' => ' °C', 'Hk2-Vorlauftemperatur' => ' °C', 'UpdateTime-USER' => ' Uhr', 'Hk2-Normal-VL-Soll' => ' °C', 'Hk2-Absenk-VL-Soll' => ' °C',  'Gas-Start' => ' cbm', 'Gas-End' => ' cbm', 'Gas-Diff' => ' cbm', 'Kalibrierung' => '', 'Min-Kalibrierung' => '', 'Max-Kalibrierung' => '', 'Hk2-Normal-Raumtemp' => ' °C', 'Hk2-Absenk-Raumtemp' => ' °C', 'Hk2-Steilheit' => ' °C', 'WW' => ' Warmwasser', 'HZ' => ' Heizung', 'KOMFORT' => ' Normal', 'ABSENK' => ' Absenk', 'PUFFER' => "<a href='fhem?room=Solaranlage'> Puffer</a>"}


Und noch ein paar Angaben:

Internals:
   DEF        hostname=192.168.133.54
   IOBufferCount 0
   IODev
   NAME       HzAnlage
   NR         22
   READCOUNT  0
   STATE      fehlerfrei
   TYPE       Wcmcom
   hostname   192.168.133.54
   initIO     0
   passwd     *****
   username   fhem
   IOBuffer:
   Readings:
     2017-11-15 20:45:12   Abgastemperatur 47
     2017-11-13 07:54:22   Anlagenfrostschutz 5
     2017-11-15 20:28:00   Aussentemperatur 7
     2017-11-15 20:14:12   Betriebsphase   Brenner in Betrieb
     2017-11-13 07:54:30   Betriebsstunden-Brenner 7100
     2017-11-13 07:54:22   Brenner-Taktsperre 5
     2017-11-15 20:14:12   BrennerEinAusZeit 20:14
     2017-11-14 23:50:54   Brennerlaufzeit-Gesamt 5.59
     2017-11-15 20:54:03   Brennerlaufzeit-heute 342.139499999998
     2017-11-14 23:50:54   Brennerlaufzeit-total 5.59
     2017-11-14 11:27:11   Fehler          fehlerfrei
     2017-11-15 20:14:12   Flamme          ein
     2017-11-14 23:50:54   Gas-Diff        0
     2017-11-14 23:50:54   Gas-End         0
     2017-11-14 23:50:54   Gas-Verbrauch   0
     2017-11-15 20:14:12   Gasventil       ein
     2017-11-15 20:14:12   Gasventil2      ein
     2017-11-13 08:08:37   Hk1-Absenk-WW-Soll 20
     2017-11-13 07:54:30   Hk1-Betriebsart Programm-1
     2017-11-15 18:47:46   Hk1-Gemischte-Aussentemperatur 7.2
     2017-11-13 08:08:37   Hk1-Normal-WW-Soll 45
     2017-11-13 08:08:37   Hk1-Regelvariante Witterungsführung
     2017-11-15 18:47:46   Hk1-Soll-Temp   55.9
     2017-11-15 20:10:12   Hk1-Soll-Temp-System 55.0
     2017-11-15 20:41:12   Hk1-Warmwassertemperatur 44.0
     2017-11-13 07:58:24   Hk2-Absenk-Raumtemp 0
     2017-11-13 07:58:24   Hk2-Absenk-VL-Soll 0
     2017-11-13 07:58:24   Hk2-Absenk-WW-Soll 0
     2017-11-13 07:58:24   Hk2-Betriebsart 0
     2017-11-13 07:58:24   Hk2-Normal-Raumtemp 0
     2017-11-13 07:58:24   Hk2-Normal-VL-Soll 0
     2017-11-13 07:58:24   Hk2-Normal-WW-Soll 0
     2017-11-13 07:58:24   Hk2-Regelvariante 0
     2017-11-13 07:58:24   Hk2-Steilheit   0
     2017-11-13 07:58:24   Kalibrierung    0
     2017-11-13 07:54:22   Korrektur-Außenfühler 0
     2017-11-15 20:24:12   Laststellung    32
     2017-11-15 20:28:00   Max-Aussentemperatur 9
     2017-11-15 20:28:00   Max-Kollektortemperatur 0
     2017-11-15 13:29:05   Max-Laststellung 85
     2017-11-13 07:58:24   Max-Volumenstrom 0
     2017-11-15 20:28:00   Min-Aussentemperatur 0
     2017-11-13 07:58:24   Min-Kollektor   0
     2017-11-15 20:28:00   Min-Kollektortemperatur 0
     2017-11-15 09:23:00   Min-Laststellung 4
     2017-11-13 07:58:24   Min-Leistung    0
     2017-11-13 07:58:24   Min-Volumenstrom 0
     2017-11-13 07:54:30   Pumpe           ein
     2017-11-13 07:58:24   Regeldifferenz  0
     2017-11-13 07:58:24   Schaltdifferenz-Aus 0
     2017-11-13 07:58:24   Schaltdifferenz-Ein 0
     2017-11-13 07:54:22   Schaltdifferenz-VL 3
     2017-11-13 07:54:30   Schaltspielzahl-Brenner 75000
     2017-11-13 07:58:24   Sol-Überschuss 0
     2017-11-13 07:58:24   Solar-Prio-HK   0
     2017-11-13 07:58:24   Solar-Prio-WW   0
     2017-11-13 19:31:41   Solar-Projection 0
     2017-11-13 07:54:22   Sondernieveau-Heizbetrieb 60
     2017-11-14 11:00:42   Temp-Kollektor  0
     2017-11-14 11:27:38   UpdateTime-GAS_F 11:27 14.11.2017
     2017-11-15 20:54:03   UpdateTime-GAS_P 20:54 15.11.2017
     2017-11-14 11:27:38   UpdateTime-HK2_B 11:27 14.11.2017
     2017-11-14 11:27:38   UpdateTime-SOL_F 11:27 14.11.2017
     2017-11-15 20:28:00   UpdateTime-SOL_P 20:28 15.11.2017
     2017-11-15 20:47:57   UpdateTime-USER 20:47 15.11.2017
     2017-11-15 20:53:37   Vorlauftemperatur 58
     2017-11-15 14:23:06   Zeit-letzte-Wartung 540
     2017-11-15 15:22:06   ged-Aussentemperatur 8
     2017-11-13 07:54:22   max-Ladezeit    50
     2017-11-13 07:54:22   max-Leistung-Hz 80
     2017-11-13 07:54:22   max-Leistung-WW 80
     2017-11-13 07:54:22   max-VL-Soll     78
     2017-11-13 07:54:22   min-VL-Soll     8
Attributes:
   AutoDeleteReadings 0
   alias      Heizung
   devStateIcon HZ
   devices    GAS_F GAS_P HK1_P HK2_B HK2_P SOL_F SOL_P USER
   disable    0
   group      Weisshaupt
   hostname   192.168.133.54
   passwd     XXX
   refresh-GAS 60
   refresh-HK 1880
   refresh-SOL 600
   refresh-USER 600
   room       Heizung
   username   fhem
   verbose    1
   webCmd     Hk2-Betriebsart


Entschuldigt bitte, dass ich mich so blöd anstelle! Sehe gerade den Wald vor lauter Bäumen nicht :-\

Danke und Gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 15 November 2017, 22:04:22
Welche Readings sollen denn zur CCU "transferiert" werden?

Schon mal den EventMonitor geöffnet und wie geschrieben geschaut was für Events kommen?

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 16 November 2017, 08:36:03
Hallo zusammen,

hab den EventMonitor gestern mal laufen lassen und diese Meldungen bekommen:


2017-11-16 00:09:07 Wcmcom HzAnlage Betriebsphase: Brenner aus
2017-11-16 00:11:06 Wcmcom HzAnlage Vorlauftemperatur: 56
2017-11-16 00:19:06 Wcmcom HzAnlage Abgastemperatur: 46
2017-11-16 00:23:06 Wcmcom HzAnlage Abgastemperatur: 47
2017-11-16 00:25:06 Wcmcom HzAnlage Aussentemperatur: 8
2017-11-16 00:25:06 Wcmcom HzAnlage Hk1-Soll-Temp-System: 54.0
2017-11-16 00:25:06 Wcmcom HzAnlage Vorlauftemperatur: 57
2017-11-16 00:27:06 Wcmcom HzAnlage Hk1-Warmwassertemperatur: 35.0


Davon sollen nun die Werte


Betriebsphase: Brenner aus/Brenner ein
Vorlauftemperatur
Abgastemperatur
Hk1-Warmwassertemperatur


an die CCU "transferiert" werden.

Hat da jmd eine Vorgehensweise/Codeschnipsel für mich?

Danke und viele Grüße
duffy6

Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 16 November 2017, 08:57:08
Zitat von: duffy6 am 16 November 2017, 08:36:03
Hallo zusammen,

hab den EventMonitor gestern mal laufen lassen und diese Meldungen bekommen:


2017-11-16 00:09:07 Wcmcom HzAnlage Betriebsphase: Brenner aus
2017-11-16 00:11:06 Wcmcom HzAnlage Vorlauftemperatur: 56
2017-11-16 00:19:06 Wcmcom HzAnlage Abgastemperatur: 46
2017-11-16 00:23:06 Wcmcom HzAnlage Abgastemperatur: 47
2017-11-16 00:25:06 Wcmcom HzAnlage Aussentemperatur: 8
2017-11-16 00:25:06 Wcmcom HzAnlage Hk1-Soll-Temp-System: 54.0
2017-11-16 00:25:06 Wcmcom HzAnlage Vorlauftemperatur: 57
2017-11-16 00:27:06 Wcmcom HzAnlage Hk1-Warmwassertemperatur: 35.0


Davon sollen nun die Werte


Betriebsphase: Brenner aus/Brenner ein
Vorlauftemperatur
Abgastemperatur
Hk1-Warmwassertemperatur


an die CCU "transferiert" werden.

Hat da jmd eine Vorgehensweise/Codeschnipsel für mich?

Danke und viele Grüße
duffy6

Vorgehensweise mehrfach genannt: im EventMonitor die gewünschte Zeile markieren und dann "Create/Modify" -> Notify erzeugen und den set Befehl ergänzen.

Dann sollte etwas in der Art rauskommen:

define ccuVorlaufNotify notify HzAnlage:Vorlauftemperatur:.* set WIE_IMMER_DAS_BEI_DIR_HEIßT var WIE_IMMER_DEINE_SYSTEMVARIABLE_HEIßT $EVTPART1

(wobei ob nun $EVTPART0 oder $EVTPART1 etc. musst du kucken)

Ungetestet, klar, hab ja kein HMCCU und auch kein was mit der Vorlauftemperatur von dir...

Aber wie geschrieben: du bist doch schon fast fertig...
Was hindert dich daran einfach mal einen Event im EventMonitor zu markieren und dir ein Notify generieren zu lassen.
Jetzt ist es eh schon sooo einfach.
(Früher musste man sich noch selbst ein Regex "zusammenbasteln")

Siehe:

https://wiki.fhem.de/wiki/Event_monitor

https://wiki.fhem.de/wiki/Notify

Und nat commandref zu notify...

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 16 November 2017, 14:36:59
heeeeey! Danke Euch allen!

Es funktioniert!!!

Here we go (für andere Nachahmer) :)

fhem.cfg:
#Anbindung an CCU konfigurieren (devicename=ccu)
define ccu HMCCU 192.168.133.40
attr ccu stateFormat rpcstate/state

#Notify für Weiterleitung an CCU (devicename=ccu)
define ccuVorlauftemperaturNotify notify HzAnlage:Vorlauftemperatur:.* set ccu var Vorlauftemperatur $EVTPART1
define ccuLaststellungNotify notify HzAnlage:Laststellung:.* set ccu var Laststellung $EVTPART1
define ccuAbgastemperaturNotify notify HzAnlage:Abgastemperatur:.* set ccu var Abgastemperatur $EVTPART1


Danke nochmal und Gruß an alle
duffy6

Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 16 November 2017, 14:43:11
Eine Frage hätte ich aber noch:

Ein Parameter ("Betriebsphase") kann verschiedene String-Werte annehmen ("Brenner aus", "Brenner in Betrieb").

2017-11-16 14:38:07 Wcmcom HzAnlage Betriebsphase: Brenner aus

Wie kann ich denn bei der Übergabe an die CCU diese Werte in 0 (Brenner aus) und 1 (Brenner an) ändern?

Danke und Gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 16 November 2017, 16:16:52
Evtl. so:

$EVTPART0/1/2/3 eq "aus" (oder "Brenner aus") ? 0 : 1

oder mit if (perl)

oder mit IF (fhem)

oder

oder

Wird Zeit für ein wenig perl oder fhem ;)

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 16 November 2017, 16:24:32
Zitat$EVTPART0/1/2/3 eq "aus" (oder "Brenner aus") ? 0 : 1

Wo soll diese Zeile denn hin?
Direkt in den Notify?
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: zap am 16 November 2017, 16:43:26
Zitat von: duffy6 am 16 November 2017, 14:36:59
#Anbindung an CCU konfigurieren (devicename=ccu)
#Notify für Weiterleitung an CCU (devicename=ccu)
define ccuVorlauftemperaturNotify notify HzAnlage:Vorlauftemperatur:.* set ccu var Vorlauftemperatur $EVTPART1
define ccuLaststellungNotify notify HzAnlage:Laststellung:.* set ccu var Laststellung $EVTPART1
define ccuAbgastemperaturNotify notify HzAnlage:Abgastemperatur:.* set ccu var Abgastemperatur $EVTPART1


Die ganzen Notifies kannst Du durch ein einziges ersetzen:


attr ccu stripchar :
define ccuWerte notify HzAnlage:.* set ccu var $EVTPART0 $EVTPART1


Die Variablen in der CCU müssen in dem Fall den gleichen Namen haben wie die Readings in FHEM. In $EVTPART0 steht der Readingname drin, blöderweise mit einem : am Ende. Das Attribut stripchar sorgt dafür, dass das : entfernt wird. Den Wert HzAnlage:.* musst Du noch durch einen geeigneten regulären Ausdruck ersetzen, der alle Readings einfängt, die du als Variablen in der CCU haben möchtest. z.B. HzAnlage:(Vorlauftemperatur|Abgastemperatur):.* oder HzAnlage:.*temperatur.* oder ...

Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 17 November 2017, 11:28:00
Sorry, muss nochmal stören  8)

Ich habe eine Variable Brennerlaufzeit, die bei Betriebszustand "ein" aufsummiert wird.
Nun würde ich um 23:59 Uhr eines jeden Tages diesen aufsummierten Wert gerne an eine Homematic-Variable übergeben.
Man beachte dabei, dass es natürlich sein kann, dass um genau 23:59 Uhr der Brenner evtl. gerade nicht läuft.

Wie kann ich denn um genau diese Uhrzeit einen Parameter übergeben?

Danke und Gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 17 November 2017, 12:41:06
Zitat von: duffy6 am 17 November 2017, 11:28:00
Sorry, muss nochmal stören  8)

Ich habe eine Variable Brennerlaufzeit, die bei Betriebszustand "ein" aufsummiert wird.
Nun würde ich um 23:59 Uhr eines jeden Tages diesen aufsummierten Wert gerne an eine Homematic-Variable übergeben.
Man beachte dabei, dass es natürlich sein kann, dass um genau 23:59 Uhr der Brenner evtl. gerade nicht läuft.

Wie kann ich denn um genau diese Uhrzeit einen Parameter übergeben?

Danke und Gruß
duffy6

indem du ein 'at' für genau diese Uhrzeit anlegst:

define aSummeUebertragen at *23:59:00 set ...

https://wiki.fhem.de/wiki/At

oder wie immer: commandref...

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 17 November 2017, 12:44:42
Soweit bin ich auch, aber dann?

hab das hier probiert, das funktioniert aber nicht:

define Brennerdauer at *11:16:00 { define Brennerlaufzeit-heuteNotify notify HzAnlage:Brennerlaufzeit-heute:.* set ccu var Brennerlaufzeit_gestern $EVTPART1 }

gruß
duffy6
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 17 November 2017, 12:55:00
Wozu brauchst du das notify?

Also entweder Notify, dann Reaktion auf einen Event...
...oder 'at' dann eben zu einer bestimmten Zeit.

Du musst nur das set Kommando absetzen, welches ich nicht kenne und nicht genau weiß wie sich der zu übertragende Wert zusammensetzt/aufbaut.

Evtl. brauchst du halt noch sowas wie ReadingsVal / ReadingsNum...
...zum Auslesen von Werten anderer Readings (anderer Geräte)...
...bevor du frägst: ja man kann auch damit "rechnen" etc. ;)

Und dann wird es (langsam) wirklich Zeit sich mit den Dingen zu beschäftigen...
...zum einen fehlen die Infos für copy/paste "code" und zum anderen ist das nicht Sinn und Zweck (des Forums)...

...zumindest meine Meinung.

Denn wenn mal irgendwas umgestellt wird, sich ändert, ...
...dann kannst du (wieder) nichts machen (außer hier fragen nach neuem copy/paste "Code" fragen)...

Wenn du es selbst erstellst/lernst kannst du selber erweitern, umbauen, optimieren, ...

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 17 November 2017, 13:13:57
Schon klar, was du meinst - ich gelobe Besserung sobald ich beruflich etwas mehr Zeit habe!

Ich verstehe wie ich mittels set Befehl einen Wert in der CCU setzen kann:

set ccu var Brennerlaufzeit 20.5

aber wenn ich den Wert eines Parameters aus FHEM in einen Paramter in der CCU schreiben will, dann steh ich auf dem Schlauch... :-[

Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: MadMax-FHEM am 17 November 2017, 13:44:51
Wie geschrieben:

ReadingsVal / ReadingsNum

Beispiel:

define aSummeUebertragen at *23:59:00 set ccu var Brennerlaufzeit {ReadingsNum("GERÄTENAME", "READINGSNAME", ErsatzWert)}

Ob "setMagic" (oder wie das heißt) auch geht weiß ich nicht, nutze ich (bislang noch) nicht:

define aSummeUebertragen at *23:59:00 set ccu var Brennerlaufzeit [GERÄTENAME:READINGNAME]

Wie geschrieben lässt sich damit auch rechnen und auch mit Werten aus verschiedenen Geräten etc.

Gruß, Joachim
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 18 November 2017, 17:02:35
Mit ReadingNum klappt es wunder bar! Danke!

Ich habe einen ähnlichen Parameter, an dem ich mir die Zähne ausbeiße: Betriebsphase
Es gibt mehrer Zustände, die allesamt längere Strings sind wie bspw. "Brenner befindet sich in Abkühlphase", also aus mehreren Worten besteht.

Diesen String möchte ich an eine Systemvariable weitergeben, was einfach nicht klappen will.

Das habe ich probiert:

set ccu var Betriebsphase {ReadingsVal("HzAnlage","Betriebsphase","0")}

In Homematic sehe ich nun, dass die dortige Systemvariable den Wert "Betriebsphase: {ReadingsVal(" angenommen hat.

Wenn ich es mit  "setMagic" probiere:

set ccu var Betriebsphase [HzAnlage:Betriebsphase]

nimmt die Homematic-Variable den Wert "Betriebsphase: Brenner" an.

Was mache ich denn hier falsch?



Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: zap am 19 November 2017, 11:31:02
Vielleicht so:

{fhem(,,set ccu var Betriebsphase ".ReadingsVal("HzAnlage","Laststellung","0")}
Titel: Antw:Heizungs-Werte nach Homematic bringen?
Beitrag von: duffy6 am 04 Februar 2020, 11:23:31
Hallo zusammen,

ich habe das Skript seit längerem in Gebrauch und hab siedend heiß festgestellt, dass ich ja gar keinen Solarkollektor habe und das Skript die Minimal-Laststellung berechnet.
Das führt momentan bspw. dazu, dass die berechnete Laststellung 43% beträgt, was viel zu hoch ist (was ich an den DIagrammen Wärmeanforderung/Vorlauf sehe).

Kann ich das Skript betreiben NUR um die Werte auszulesen OHNE irgendwelche Werte zu berechnen?

Oder was mir auch schon helfen würde: Den Parameter "Min-Laststellung" manuell auf 32% zu setzen.

In der Datei "99_myUtilsHeizung.pm" gibt es in Zeile 1598 den Bereich:


# Mit alten Werten vorbelegen, falls in foreach - Schleife keine Zuweisung erfolgte
$flamme = $rhash->{'Flamme'}{VAL};
$last   = $rhash->{'Laststellung'}{VAL};

# nun spezielle Werte berechnen
if ( $flamme =~ m/1|ein/ ) {
if ($lasttime) {
my $diffbrenn =
  ( $lastlast / 100 ) * ( ( $akttime - $lasttime ) / 60 );
$brennerzeit += $diffbrenn;
readingsBulkUpdate( $hash, 'Brennerlaufzeit-heute', $brennerzeit,
1 );
readingsBulkUpdate( $hash, 'Gas-Verbrauch', $brennerzeit * $kalib,
1 )
  if ( $kalib > 0 );
$rhash->{'.lastlast'}{VAL} = $last;
$rhash->{'.lasttime'}{VAL} = $akttime;
}
else    # Flamme ein, aber gerade erst gestartet
{
$rhash->{'.lasttime'}{VAL} = $akttime;
$rhash->{'.lastlast'}{VAL} = $last;
readingsBulkUpdate( $hash, 'BrennerEinAusZeit', Wcmcom_EventZeit(2),
1 );
if ( open( BRENNERFILE, $filename ) ) {
printf( BRENNERFILE "%s Flamme ein\n", Wcmcom_EventZeit(3) );
close BRENNERFILE;
}    # File schreiben

# ev. in Kollektorfile eintragen
if (   $kollektorlog
&& $kollektorfilename
&& open( KOLLEKTORFILE, $kollektorfilename ) )
{
printf( KOLLEKTORFILE
  "%s\tBrenner ein\t\t%s °C\t%s °C\t%s °C\t\t%.1f kWh\n",
Wcmcom_EventZeit(2),
$rhash->{'Temp-Puffer-oben'}{VAL},
$rhash->{'Temp-Puffer-unten'}{VAL},
$rhash->{'Temp-Solar-unten'}{VAL},
$brennerzeit * $rhash->{'Kalibrierung'}{VAL} * 10
);
}    # if Kollektorfile
}    # if Flamme erstmalig  ein

# Hier noch die max und mins für die Laststellung berechnen
my $minlast = 100;
$minlast = $rhash->{'Min-Laststellung'}{VAL}
  if ( exists( $rhash->{'Min-Laststellung'} ) );
my $maxlast = 0;
$maxlast = $rhash->{'Max-Laststellung'}{VAL}
  if ( exists( $rhash->{'Max-Laststellung'} ) );
readingsBulkUpdate( $hash, 'Max-Laststellung', $last, 1 )
  if ( $last > $maxlast );
readingsBulkUpdate( $hash, 'Min-Laststellung', $last, 1 )
  if ( ( $last > 0 ) && ( $last < $minlast ) );
}       # if flamme
else    # Flamme aus, aber letzter Slice noch nicht verarbgeitet
{
if ( $lasttime > 0 ) {
my $diffbrenn =
  ( $lastlast / 100 ) * ( ( $akttime - $lasttime ) / 60 );
$brennerzeit += $diffbrenn;
readingsBulkUpdate( $hash, 'Brennerlaufzeit-heute', $brennerzeit,
1 );
readingsBulkUpdate( $hash, 'Gas-Verbrauch', $brennerzeit * $kalib,
1 )
  if ( $kalib > 0 );
$rhash->{'.lastlast'}{VAL} = 0;
$rhash->{'.lasttime'}{VAL} = 0;
readingsBulkUpdate( $hash, 'BrennerEinAusZeit', Wcmcom_EventZeit(3),
1 );

# aktriem brenner
if ( open( BRENNERFILE, $filename ) ) {
printf( BRENNERFILE
"%s Flamme aus, gew. Brennerzeit: %d letzte-Laststellung: %d\n",
Wcmcom_EventZeit(3), $brennerzeit, $lastlast );
close BRENNERFILE;
}

# ev. in Kollektorfile eintragen
if (   $kollektorlog
&& $kollektorfilename
&& open( KOLLEKTORFILE, $kollektorfilename ) )
{
printf( KOLLEKTORFILE
  "%s\tBrenner aus\t\t%s °C\t%s °C\t%s °C\t\t%.1f kWh\n",
Wcmcom_EventZeit(2),
$rhash->{'Temp-Puffer-oben'}{VAL},
$rhash->{'Temp-Puffer-unten'}{VAL},
$rhash->{'Temp-Solar-unten'}{VAL},
$brennerzeit * $rhash->{'Kalibrierung'}{VAL} * 10
);
close KOLLEKTORFILE;
}    # if Kollektorfile
}    # letzten slice berechnen

  # Brennerlaufzeit-heute und Max/Min-Werte  gegen Mitternacht zurücksetzen
my ( $sec, $min, $hour ) = localtime( time() );
if (   ( ( $hour >= 23 ) && ( $min >= 50 ) )
|| ( ( $hour < 1 ) && ( $min < 15 ) ) )
{
if ( $rhash->{'.reset'}{VAL} ne 'done' ) {
Log3( $name, 3, "Wcmcom_BrennerDaten: Werte zurücksetzen." );
my $br = 0;
$br = $rhash->{'Brennerlaufzeit-heute'}{VAL}
  if ( exists( $rhash->{'Brennerlaufzeit-heute'} ) );
$br = sprintf( "%.2f", $br / 60 );
my $brennerlaufzeit_total = 0;
$brennerlaufzeit_total =
  sprintf( "%.2f", $rhash->{'Brennerlaufzeit-total'}{VAL} )
  if ( exists( $rhash->{'Brennerlaufzeit-total'} ) );
Log3( $name, 3,
"Wcmcom BrennerDaten:  heute in h: $br total: $brennerlaufzeit_total"
);
readingsBulkUpdate( $hash, 'Brennerlaufzeit-total',
$brennerlaufzeit_total + $br, 1 );
my $brennerzeitges = 0;
$brennerzeitges = $rhash->{'Brennerlaufzeit-Gesamt'}{VAL}
  if ( exists( $rhash->{'Brennerlaufzeit-Gesamt'} ) );
Log( 3,
"Wcmcom BrennerDaten:  heute in h: $br ges: $brennerzeitges"
);
readingsBulkUpdate( $hash, 'Brennerlaufzeit-Gesamt',
$brennerzeitges + $br, 0 );

# Gasverbrauch zurücksetzen und zum Gas-End addieren
my $gasverbrauchheute =
  ReadingsVal( $name, 'Gas-Verbrauch', 0 );
my $gasend = ReadingsVal( $name, 'Gas-End', 0 );
readingsBulkUpdate( $hash, 'Gas-End',
$gasverbrauchheute + $gasend, 0 );
my $gasdiff = ReadingsVal( $name, 'Gas-Diff', 0 );
readingsBulkUpdate( $hash, 'Gas-Diff',
$gasverbrauchheute + $gasdiff, 0 );
readingsBulkUpdate( $hash, 'Gas-Verbrauch',         0, 0 );
readingsBulkUpdate( $hash, 'Brennerlaufzeit-heute', 0, 0 );

   # ev. laufende Flamme zurücksetzen -> neu Elektrolurch 23.1.2015
$rhash->{'.lastlast'}{VAL} = 0;
$rhash->{'.lasttime'}{VAL} = 0;
my $akttemp = $rhash->{Aussentemperatur}{VAL};
readingsBulkUpdate( $hash, 'Min-Aussentemperatur', $akttemp,
0 );
readingsBulkUpdate( $hash, 'Max-Aussentemperatur', $akttemp,
0 );

# Temperatur in WetterPuchheim zurücksetzen
# ReadingsVal('WetterPuchheim','Max-Temperatur',-100);
my $whr = $defs{WetterPuchheim}{READINGS};
$whr->{'Max-Temperatur'}{VAL}  = -100;
$whr->{'Min-Temperatur'}{VAL}  = 100;
$whr->{'Max-Temperatur'}{TIME} = TimeNow();
$whr->{'Min-Temperatur'}{TIME} = TimeNow();
$akttemp = $rhash->{'Temp-Kollektor'}{VAL};
readingsBulkUpdate( $hash, 'Max-Kollektortemperatur', $akttemp,
0 );
readingsBulkUpdate( $hash, 'Min-Kollektortemperatur', $akttemp,
0 );

# Laststellungen
delete( $rhash->{'Max-Laststellung'} );
delete( $rhash->{'Min-Laststellung'} );

# readingsBulkUpdate($hash,'Max-Laststellung',0,0);
# readingsBulkUpdate($hash,'Min-Laststellung',100,0);
Log3( $name, 4,
"Wcmcom_BrennerDaten: Brennerdaten zurückgesetzt" );
Wcmcom_ResetSolarDatenTmps($hash);
$rhash->{'.reset'}{VAL} = "done";
}    # if reset Min/Max Werte
}         # if Mitternacht
else {    # nicht Mitternacht
$rhash->{'.reset'}{VAL} = 'not done';
}    # else nicht Mitternacht
}    # Flamme aus

# updatezeit vermerken
readingsBulkUpdate( $hash, 'UpdateTime-GAS_P', Wcmcom_EventZeit(3), 1 );
readingsEndUpdate( $hash, 1 );
return undef;
}    # end Wcmcom_UpdateBrennerDaten


Könnt ihr mir helfen diesen zu editzieren, das Min-Laststellung immer 32% (weniger kann meine Weishaupt nicht) ist?