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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Zitat$EVTPART0/1/2/3 eq "aus" (oder "Brenner aus") ? 0 : 1
Wo soll diese Zeile denn hin?
Direkt in den Notify?
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 ...
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
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
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
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
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... :-[
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
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?
Vielleicht so:
{fhem(,,set ccu var Betriebsphase ".ReadingsVal("HzAnlage","Laststellung","0")}
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?