FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Lorenz am 26 Juli 2014, 14:09:21

Titel: Buderus ems an fhem
Beitrag von: Lorenz am 26 Juli 2014, 14:09:21
Buderus ems an fhem

Da hier an anderer Stelle mit dem KM200 die Kommunikation mit dem ems-Bus von Buderus Heizungen gesucht wird, möchte ich Euch einmal über meine noch rudimentäre Lösung dieser Anbindung an fhem berichten:

Die physikalische Anbindung geschieht bei mir mit einer selbst erstellten Adapterplatine an einen AVR NetIO mit Ethersex. In Ethersex ist bereits der ems-Teil enthalten. Beschrieben ist das hier:
http://ems-gateway.myds.me/dokuwiki/doku.php?id=wiki:ems:net_io (http://ems-gateway.myds.me/dokuwiki/doku.php?id=wiki:ems:net_io) . Ein Raspberry Pi empfängt die Telegramme über Ethernet und sammelt und interpretiert diese. Das Ergebnis wird in einer SQL Datenbank gespeichert, aber auch als Stream über Port 7778 ausgegeben. Ein Webserver zur Visualisierung und Steuerung ist ebenfalls enthalten. Ich habe mich erst einmal entschieden am Port 7778 mit ECMD zu lauschen und somit die Informationen in fhem einzubinden. Mich interessiert dabei zur Visualisierung das logging und plotting, um die noch recht junge Heizung in ihren Einstellungen zu optimieren. Ein Steuern in die Heizung wäre auch möglich, wird von mir aber (z.Zt.) nicht umgesetzt. Dazu gäbe es einen separaten Port um bidirektional mit dem ems-client und dann auch mit der Heizung zu kommunizieren.

Ein Haken hat das Ganze noch: Meine Heizung GBH 172 hybrid ist Baujahr 2013 und mit einem Solarmodul SM10 und dem Bedienteil RC300 ausgestattet. Diese Teile nutzen nicht mehr die bisherigen ems-Telegramme, sondern die Erweiterungen ems-plus. Dies ist bislang in der Software nicht implementiert, daher kann man einige Informationen (noch) nicht auswerten. Ich hoffe aber, dass in gemeinsamer Arbeit an der Analyse dieser Erweiterung das irgendwann in die Software einfließt.
Derzeit stehen mir daher folgende Informationen aus der Heizung in fhem zur Verfügung:

systemtime 2014-07-20 17:54:42
outdoor currenttemperature 28.1
heaterpump currentmodulation 0
heater heaterstarts 8338
heater operatingminutes 135177
heater heatingminutes 110881
heater maintenancedue no
ww targettemperature 55
ww currenttemperature 49
warmwaterminutes 24296
warmwaterpreparations 2003
ww daymode on
ww onetimeload off
ww desinfectionactive off
warmwaterpreparationactive off
ww boostcharge off
warmwatertempok on
zirkpump daymode on
zirkpumpactive on
warmwatersystemtype tankless
heater targettemperature 5
heater currenttemperature 56.2
returnflow currenttemperature 36.2
burner targetmodulation 0
burner currentmodulation 0
flamecurrent 0
pressure -0.1
servicecode 0H
errorcode 203
flameactive off
heateractive off
ignitionactive off
heater pumpactive off
3wayonww on

Zum Verständnis der Anbindung habe ich die Modulansicht der Webseite ergänzt (siehe Anhang).

Natürlich hätte man auch andere Wege der Integration gehen können (Auswertung der SQL-DB oder Anbindung über die Webseite). Ich suchte aber eine schnelle und für mich beherrschbare Lösung. Daher telnet an ECMD. Die Vorarbeiten (Platine, AVR NetIO und Software auf dem Raspi) waren schon zeitintensiv. Auf der Kostenseite allerdings moderat (ca. 80€) gegenüber der Anschaffung zusätzlicher Buderus-Hardware (KM200, Servicekey etc.). Die für mich relevanten Readings mit ECMD einzubinden und daraus einen Plot zu erstellen war gegenüber den Vorarbeiten eine Kleinigkeit. Nur mit den Regulären Ausdrücken in der class.def für die Readings tue ich mich schwer, aber das liegt an mir und der seltenen Verwendung. Da brauche ich immer ein Buch an der Hand und ein paar Anläufe. Wahrscheinlich habe ich das auch in diesem Fall noch nicht optimal gelöst. Aber es läuft !

Ein Plot des ersten Tages füge ich bei.

Wer weitere Informationen haben möchte, einfach melden ...

LG

Lorenz
Titel: Antw:Buderus ems an fhem
Beitrag von: Starkstrombastler am 26 Juli 2014, 21:44:55
Glückwunsch für die gelungene Umsetzung und Danke für die ausführliche Darstellung,   Ich bin noch an der Platine.
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 26 Juli 2014, 22:15:15
@Starkstrombastler:
Die Platine auf Lochraster zu erstellen, war eine ordentliche Bastelei. Achte auf den bug in der Darstellung bei D1 und D3. Danach ist wichtig, den richtigen ATMega im NetIO zu nutzen. Ich hatte zuerst einen 644 anstatt des 644P bekommen - konnte damit aber nicht gehen, da der 2. UART fehlt.
Viel Erfolg!

LG


Gesendet von meinem iPhone mit Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: Starkstrombastler am 28 Juli 2014, 21:16:23
@Lorenz

Danke für die Hinweise. Es wird aber wahrscheinlich noch eine Weile dauern, bis ich soweit bin.

Gruß
Bernhard
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 09 August 2014, 18:09:49
Hallo, Mitstreiter!
Ich habe den EMS Bus erfolgreich am RasPi laufen und suche nun nach der Technik, daraus Readings zu machen für fhem.

Kannst Du Deinen Code hier veröffentlichen?

Ich habe leider (noch) keine Ahnung, was die class.def sein soll..
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 09 August 2014, 20:15:38
Ich habe das mit ECMD (quick and dirty) wie folgt umgesetzt. Das ist der erste Entwurf mit sicherlich noch Verbesserungspotenzial. Für mich ist das aber im Moment ausreichend. ECMD-Profis dürfen da wahrscheinlich nicht so genau hinsehen. Ich hatte dieses Modul bislang noch nicht genutzt.

Mir geht es damit z.Zt. um das Feintuning der Heizung und da habe ich anhand der plots schon gute Fortschritte gemacht.

Da bei mir noch ems-plus Telegramme kommen, habe ich noch nicht alle Readings umsetzen können. Bei anderen Heizungsmodulen muss man da ggf. noch anpassen. Kann man aber an den Events erkennen.

Auszug aus fhem.cfg (Bei mir läuft fhem auf dem Raspi auf dem auch der emsCollector läuft, daher telnet localhost)

define emsServer ECMD telnet localhost:7778
attr emsServer classdefs message=usr/local/fhem/message.classdef
define emsClient ECMDDevice message ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent
attr emsClient IODev emsServer
attr emsClient event-on-change-reading ww_currenttemp,heater_currenttemp,returnflow_currenttemp,outdoor_temp,heaterpump_currentmodulation,ww_targettemp,heater_targettemp,warmwaterpreparationactive,zirkpumpactive,flameactive,heateractive,ignitionactive,heater_pumpactive,3wayonww,ww_daymode,burner_targetmodulation,burner_currentmodulation,flamecurrent
define Filelog_emsClient FileLog /usr/local/fhem/log/emsClient-%Y-%m.log emsClient:(ww_currenttemp:|heater_currenttemp:|returnflow_currenttemp:|outdoor_temp:|heaterpump_currentmodulation:|ww_targettemp:|heater_targettemp:|warmwaterpreparationactive:|zirkpumpactive:|flameactive:|heateractive:|ignitionactive:|heater_pumpactive:|3wayonww:|ww_daymode:|burner_targetmodulation:|burner_currentmodulation:|flamecurrent:).*
define SVG_Filelog_emsClient_1 SVG Filelog_emsClient:SVG_Filelog_emsClient_1:CURRENT
attr SVG_Filelog_emsClient_1 plotsize 1024,480
attr SVG_Filelog_emsClient_1 room Heizung


Dazu gehört die Datei message.classdef (bei mir)  im fhem Verzeichnis:

params ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent
reading ww_currenttemp match "[ww currenttemperature ](\d+.\d)\n"
reading ww_currenttemp postproc { s/(ww\scurrenttemperature\s)(\d+.+)\n/$2/;; $2 }
reading heater_currenttemp match "[heater currenttemperature ](\d+.\d)\n"
reading heater_currenttemp postproc { s/(heater\scurrenttemperature\s)(\d+.+)\n/$2/;; $2 }
reading returnflow_currenttemp match "[returnflow currenttemperature ](\d+.\d)\n"
reading returnflow_currenttemp postproc { s/(returnflow\scurrenttemperature\s)(\d+.+)\n/$2/;; $2 }
reading outdoor_temp match "[outdoor currenttemperature ](\d+.\d)\n"
reading outdoor_temp postproc { s/(outdoor\scurrenttemperature\s)(\d+.+)\n/$2/;; $2 }
reading heaterpump_currentmodulation match "[heaterpump currentmodulation ](\d+)\n"
reading heaterpump_currentmodulation postproc { s/(heaterpump\scurrentmodulation\s)(\d+)\n/$2/;; $2 }
reading ww_targettemp match "[ww targettemperature ](\d+.\d)\n"
reading ww_targettemp postproc { s/(ww\stargettemperature\s)(\d+.+)\n/$2/;; $2 }
reading heater_targettemp match "[heater targettemperature ](\d+)\n"
reading heater_targettemp postproc { s/(heater\stargettemperature\s)(\d+)\n/$2/;; $2 }
reading warmwaterpreparationactive match "[warmwaterpreparationactive ](on|off)\n"
reading warmwaterpreparationactive postproc { s/(warmwaterpreparationactive\s)(on|off)\n/$2/;; $2 }
reading zirkpumpactive match "[zirkpumpactive ](on|off)\n"
reading zirkpumpactive postproc { s/(zirkpumpactive\s)(on|off)\n/$2/;; $2 }
reading flameactive match "[flameactive ](on|off)\n"
reading flameactive postproc { s/(flameactive\s)(on|off)\n/$2/;; $2 }
reading heateractive match "[heateractive ](on|off)\n"
reading heateractive postproc { s/(heateractive\s)(on|off)\n/$2/;; $2 }
reading ignitionactive match "[ignitionactive ](on|off)\n"
reading ignitionactive postproc { s/(ignitionactive\s)(on|off)\n/$2/;; $2 }
reading heater_pumpactive match "[heater pumpactive ](on|off)\n"
reading heater_pumpactive postproc { s/(heater\spumpactive\s)(on|off)\n/$2/;; $2 }
reading 3wayonww match "[3wayonww ](on|off)\n"
reading 3wayonww postproc { s/(3wayonww\s)(on|off)\n/$2/;; $2 }
reading ww_daymode match "[ww daymode ](on|off)\n"
reading ww_daymode postproc { s/(ww\sdaymode\s)(on|off)\n/$2/;; $2 }
reading burner_targetmodulation match "[burner targetmodulation ](\d+)\n"
reading burner_targetmodulation postproc { s/(burner\stargetmodulation\s)(\d+)\n/$2/;; $2 }
reading burner_currentmodulation match "[burner currentmodulation ](\d+)\n"
reading burner_currentmodulation postproc { s/(burner\scurrentmodulation\s)(\d+)\n/$2/;; $2 }
reading flamecurrent match "[flamecurrent ](\d+)\n"
reading flamecurrent postproc { s/(flamecurrent\s)(\d+)\n/$2/;; $2 }


und die gplot-Datei (bei mir SVG_Filelog_emsClient_1.gplot)

# Created by FHEM/98_SVG.pm, 2014-07-26 09:15:52
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'ems Buderus'
set ytics
set y2tics
set grid y2tics
set ylabel "Leistung in %"
set y2label "Temperatur"

#FileLog 4:emsClient.heater_currenttemp\x3a:.*:
#FileLog 4:emsClient.outdoor_temp\x3a:.*:
#FileLog 4:emsClient.returnflow_currenttemp\x3a:.*:
#FileLog 4:emsClient.ww_currenttemp\x3a:.*:
#FileLog 4:emsClient.zirkpumpactive\x3a:0:$fld[3]eq"on"?55:0
#FileLog 4:emsClient.warmwaterpreparationactive\x3a:0:$fld[3]eq"on"?25:0
#FileLog 4:emsClient.burner_currentmodulation\x3a:.*:
#FileLog 4:emsClient.heaterpump_currentmodulation\x3a:.*:

plot "<IN>" using 1:2 axes x1y2 title 'Kesseltemp' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Aussentemp' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Rücklauftemp' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'WWTemp' ls l5fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'ZirkPump' ls l8 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'WW Erzeugung' ls l5 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Brenner' ls l3fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Kesselpumpe' ls l7 lw 1 with steps


Achtung: Pfadangaben prüfen und ggf. anpassen.

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 09 August 2014, 21:51:54
Hi, das ist ja super!
Hat sofort alles geklappt, bis auf die gplot-Definition. Da habe ich erst Werte angezeigt bekommen, nachdem ich die .* nach den Werten entfernt habe, also so:

#FileLog 4:EMSClient.heater_currenttemp\x3a::

Danke!!!
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 09 August 2014, 22:17:00
Schön, dass es bei dir funktioniert. Vielleicht liegt das Problem mit der gplot Datei daran, da ich das logging und plotting auf einem 2ten fhem auf meinem NAS mache und das entsprechend angepasst habe. Für die Darstellung hier habe ich die Inhalte der beiden fhem.cfg wieder zusammengefügt.

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 10 August 2014, 21:15:35
Sag mal, hast Du im stdout auf dem fhem-host auch diese Meldungen ca. jede Sekunde?

Use of uninitialized value $s in substitution (s///) at fhem.pl line 3736.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3738.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3738.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3738.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3738.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3738.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3738.
Use of uninitialized value $s in substitution (s///) at fhem.pl line 3740.
Use of uninitialized value in concatenation (.) or string at ./FHEM/67_ECMDDevice.pm line 138.
Use of uninitialized value $value in concatenation (.) or string at ./FHEM/67_ECMDDevice.pm line 276.



Kann man das selbst beseitigen oder muss der ECMDevice-Developer ran?
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 August 2014, 21:39:28
Bei mir ist Ruhe auf der Konsole.
Schau mal auf die Versionen.
So sieht es bei mir aus:

# $Id: fhem.pl 6249 2014-07-13 10:41:00Z rudolfkoenig $
# $Id: 00_CUL.pm 5487 2014-04-08 11:29:41Z rudolfkoenig $
# $Id: 66_ECMD.pm 6144 2014-06-20 09:49:34Z borisneubert $
# $Id: 67_ECMDDevice.pm 5645 2014-04-25 17:26:56Z borisneubert $
# $Id: 01_FHEMWEB.pm 6090 2014-06-09 10:25:11Z rudolfkoenig $
# $Id: 92_FileLog.pm 5876 2014-05-16 19:54:51Z rudolfkoenig $
# $Id: 99_SUNRISE_EL.pm 5851 2014-05-13 19:39:03Z rudolfkoenig $
# $Id: 99_Utils.pm 5488 2014-04-08 11:32:17Z rudolfkoenig $
# $Id: 99_UtilsHourCounter.pm 2014-02-01 20:15:33 john $
# $Id: 98_dummy.pm 4934 2014-02-15 08:23:12Z rudolfkoenig $
# $Id: 99_myUtils.pm 2014-01-22 19:23:00 lg
# $Id: 91_notify.pm 6081 2014-06-07 16:31:18Z rudolfkoenig $
# $Id: 98_telnet.pm 4844 2014-02-08 07:54:03Z rudolfkoenig $

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 10 August 2014, 22:00:04
 Nach einem Update das gleiche Bild! Daran lag es nicht. Ich schreib mal den Autor an!


Gesendet von meinem iPad mit Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 11 August 2014, 19:12:59
Hallo Bernd,

ich war gestern etwas voreilig und habe in der falschen Konsole geschaut. Heute hab ich das korrigiert - und: Ich habe die gleichen Meldungen wie Du  :-\.
So wie es aussieht hat das was mit dem postprocessing von regexp in der class.def zu tun. Vielleicht habe ich da auch etwas falsch gemacht, nur ich sehe das (noch) nicht. Die Ausgabe mit verbose 5 sieht eigentlich gut aus und in $value steht ja auch was drin. Zur Zeit habe ich keine Lösung.

LG

Lorenz
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 12 August 2014, 19:23:19
Mittlerweile habe ich auch erfahren, wie gesprächig der EMS-Bus meiner Heizung ist. Das erzeugt gerade bei den etwas "pumpenden" internen Temperaturmessungen  eine ordentliche Flut an readings. Ich hatte die zyklischen Telegramme (ca. alle 10s) schon mit event-on-change-readings eingedämmt. Um das aber weiter zu reduzieren, habe ich jetzt noch einen treshold-Wert von 0.3 Grad eingefügt. Das wirkt sich schon sehr positiv aus und genügt m.E. nach für die Analyse der plots. Eventuell könnte man den Wert sogar noch erhöhen.

Wer´s nachmachen möchte:
In der fhem.cfg steht nun: attr emsClient event-on-change-reading ww_currenttemp:0.3,heater_currenttemp:0.3,returnflow_currenttemp:0.3,  --- der Rest bleibt unverändert  u.s.w...

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 13 August 2014, 22:21:21
Hallo, Lorenz!

Ich habe Deinen Vorschlag umgesetzt und auch das hat wieder gut funktioniert!

Dank Dir für Deine Hilfe!

Gruß, Bernd
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 16 September 2014, 22:41:46
Hallo, Lorenz! Hast Du in letzter Zeit mal ein Update fhem gemacht? Lass es lieber, es hat meinen Datenfluss über Telnet zum Erliegen gebracht. Keine Fehlermeldungen, aber auch keine Daten. Wenn Du irgendwann auch an den Punkt kommst, lass es mich wissen, vielleicht kann ich bei der Lösung helfen!


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 16 September 2014, 22:42:46
Ich habe die classdef im Verdacht, aber ich verstehe nur Bahnhof... Daymode klappt, alles andere nicht.


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 17 September 2014, 18:17:40
Hallo Bernd,

ich denke, es liegt an den letzten Änderungen an ECMD, wahrscheinlich an: http://forum.fhem.de/index.php/topic,21515.msg197863.html#msg197863 (http://forum.fhem.de/index.php/topic,21515.msg197863.html#msg197863) und der Aussage, dass der match auf die gesamte Sendung vom physikalischen Geräte passen muss. Das kann dann nicht funktionieren. Ich werde darüber nachdenken. Vielleicht ist es auch einfacher, ein kleines, spezielles Modul zu schreiben... Dann entkoppelt man sich von derartigen Einflüssen. Zwischenzeitlich werde ich die Updates für das Modul erst einmal sperren.

Gruss Lorenz
Titel: Buderus ems an fhem
Beitrag von: bgewehr am 18 September 2014, 06:41:06
Hallo, Lotenz,

ich habe das hier mit Boris diskutiert: http://forum.fhem.de/index.php?topic=27162

Mit dem Split \n Parameter kann man die Telegramme trennen. Ich krieg's trotzdem nicht hin, aber es soll angeblich funktionieren.

Das mit Split definierte Trennzeichen wird aus dem Telegramm entfernt.

Bin leider kein Regex Experte, kannst Du nochmal nachsehen, ob Du den Fehler erkennst?

Dank Dir!


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 18 September 2014, 17:04:08
Hallo Bernd,

nach den Hinweisen von Boris und Dir habe ich das getestet, die Attribute split \n und timeout 3 gesetzt und die classdef angepasst.
Wichtig war: Das Trennzeichen wird entfernt, daher muss das auch aus der classdef raus. Dabei habe ich auch die eckigen Klammern entfernt und noch einige kleine Korrekturen eingebracht.
Und mit dieser .classdef läuft es wieder:

params ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent heater_maintenancedue systemtime
reading ww_currenttemp match "ww currenttemperature (\d+.\d)"
reading ww_currenttemp postproc { s/ww currenttemperature (\d+.+)/$1/;; $_ }
reading heater_currenttemp match "heater currenttemperature (\d+.\d)"
reading heater_currenttemp postproc { s/heater currenttemperature (\d+.+)/$1/;; $_ }
reading returnflow_currenttemp match "returnflow currenttemperature (\d+.\d)"
reading returnflow_currenttemp postproc { s/returnflow currenttemperature (\d+.+)/$1/;; $_ }
reading outdoor_temp match "outdoor currenttemperature (\d+.\d)"
reading outdoor_temp postproc { s/outdoor currenttemperature (\d+.+)/$1/;; $_ }
reading heaterpump_currentmodulation match "heaterpump currentmodulation (\d+)"
reading heaterpump_currentmodulation postproc { s/heaterpump currentmodulation (\d+)/$1/;; $_ }
reading ww_targettemp match "ww targettemperature (\d+.\d)"
reading ww_targettemp postproc { s/ww targettemperature (\d+.+)/$1/;; $_ }
reading heater_targettemp match "heater targettemperature (\d+)"
reading heater_targettemp postproc { s/heater targettemperature (\d+)/$1/;; $_ }
reading warmwaterpreparationactive match "warmwaterpreparationactive (on|off)"
reading warmwaterpreparationactive postproc { s/warmwaterpreparationactive (on|off)/$1/;; $_ }
reading zirkpumpactive match "zirkpumpactive (on|off)"
reading zirkpumpactive postproc { s/zirkpumpactive (on|off)/$1/;; $_ }
reading flameactive match "flameactive (on|off)"
reading flameactive postproc { s/flameactive (on|off)/$1/;; $_ }
reading heateractive match "heateractive (on|off)"
reading heateractive postproc { s/heateractive (on|off)/$1/;; $_ }
reading ignitionactive match "ignitionactive (on|off)"
reading ignitionactive postproc { s/ignitionactive (on|off)/$1/;; $_ }
reading heater_pumpactive match "heater pumpactive (on|off)"
reading heater_pumpactive postproc { s/heater pumpactive (on|off)/$1/;; $_ }
reading 3wayonww match "3wayonww (on|off)"
reading 3wayonww postproc { s/3wayonww (on|off)/$1/;; $_ }
reading ww_daymode match "ww daymode (on|off)"
reading ww_daymode postproc { s/ww daymode (on|off)/$1/;; $_ }
reading burner_targetmodulation match "burner targetmodulation (\d+)"
reading burner_targetmodulation postproc { s/burner targetmodulation (\d+)/$1/;; $_ }
reading burner_currentmodulation match "burner currentmodulation (\d+)"
reading burner_currentmodulation postproc { s/burner currentmodulation (\d+)/$1/;; $_ }
reading flamecurrent match "flamecurrent (\d+)"
reading flamecurrent postproc { s/flamecurrent (\d+)/$1/;; $_ }
reading heater_maintenancedue match "heater maintenancedue (no|yes)"
reading heater_maintenancedue postproc { s/heater maintenancedue (no|yes)/$1/;; $_ }
reading systemtime match "systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)"
reading systemtime postproc { s/systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/$1/;; $_ }


Gruss Lorenz
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 18 September 2014, 17:20:32
Mist. Ihr seid alle besser als ich!!! Bleibt mir nur eins übrig:
DANKE!


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 18 September 2014, 17:39:01
Gerne - Du solltest es aber mit Deinem System noch ausgiebig testen, ich hatte nur ein paar Minuten Zeit. Mit Timeout 3 bin ich mir nicht sicher, dass habe ich so von Dir übernommen. Eventuell muss da noch justiert werden.

Gruss Lorenz
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 18 September 2014, 19:19:46
Läuft!
Ich musste aber meinen Define neu anpassen, weil Du inzwischen offensichtlich noch mehr readings verwendest.

Daher hier einmal der aktuell funktionierende Stand der Dinge:

Define:

define EMS ECMD telnet 192.168.178.45:7778
attr EMS classdefs ems_messages=./FHEM/emsmessages.classdef
attr EMS split \n

define EMSClient ECMDDevice ems_messages ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent heater_maintenancedue systemtime
attr EMSClient IODev EMS
attr EMSClient event-on-change-reading ww_currenttemp:0.3,heater_currenttemp:0.3,returnflow_currenttemp:0.3,outdoor_temp:0.3,heaterpump_currentmodulation,ww_targettemp:0.3,heater_targettemp:0.3,warmwaterpreparationactive,zirkpumpactive,flameactive,heateractive,ignitionactive,heater_pumpactive,3wayonww,ww_daymode,burner_targetmodulation,burner_currentmodulation,flamecurrent


emsmessages.classdef (als Datei in FHEM-Verzeichnis legen!):

params ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent heater_maintenancedue systemtime
reading ww_currenttemp match "ww currenttemperature (\d+.\d)"
reading ww_currenttemp postproc { s/ww currenttemperature (\d+.+)/$1/;; $_ }
reading heater_currenttemp match "heater currenttemperature (\d+.\d)"
reading heater_currenttemp postproc { s/heater currenttemperature (\d+.+)/$1/;; $_ }
reading returnflow_currenttemp match "returnflow currenttemperature (\d+.\d)"
reading returnflow_currenttemp postproc { s/returnflow currenttemperature (\d+.+)/$1/;; $_ }
reading outdoor_temp match "outdoor currenttemperature (\d+.\d)"
reading outdoor_temp postproc { s/outdoor currenttemperature (\d+.+)/$1/;; $_ }
reading heaterpump_currentmodulation match "heaterpump currentmodulation (\d+)"
reading heaterpump_currentmodulation postproc { s/heaterpump currentmodulation (\d+)/$1/;; $_ }
reading ww_targettemp match "ww targettemperature (\d+.\d)"
reading ww_targettemp postproc { s/ww targettemperature (\d+.+)/$1/;; $_ }
reading heater_targettemp match "heater targettemperature (\d+)"
reading heater_targettemp postproc { s/heater targettemperature (\d+)/$1/;; $_ }
reading warmwaterpreparationactive match "warmwaterpreparationactive (on|off)"
reading warmwaterpreparationactive postproc { s/warmwaterpreparationactive (on|off)/$1/;; $_ }
reading zirkpumpactive match "zirkpumpactive (on|off)"
reading zirkpumpactive postproc { s/zirkpumpactive (on|off)/$1/;; $_ }
reading flameactive match "flameactive (on|off)"
reading flameactive postproc { s/flameactive (on|off)/$1/;; $_ }
reading heateractive match "heateractive (on|off)"
reading heateractive postproc { s/heateractive (on|off)/$1/;; $_ }
reading ignitionactive match "ignitionactive (on|off)"
reading ignitionactive postproc { s/ignitionactive (on|off)/$1/;; $_ }
reading heater_pumpactive match "heater pumpactive (on|off)"
reading heater_pumpactive postproc { s/heater pumpactive (on|off)/$1/;; $_ }
reading 3wayonww match "3wayonww (on|off)"
reading 3wayonww postproc { s/3wayonww (on|off)/$1/;; $_ }
reading ww_daymode match "ww daymode (on|off)"
reading ww_daymode postproc { s/ww daymode (on|off)/$1/;; $_ }
reading burner_targetmodulation match "burner targetmodulation (\d+)"
reading burner_targetmodulation postproc { s/burner targetmodulation (\d+)/$1/;; $_ }
reading burner_currentmodulation match "burner currentmodulation (\d+)"
reading burner_currentmodulation postproc { s/burner currentmodulation (\d+)/$1/;; $_ }
reading flamecurrent match "flamecurrent (\d+)"
reading flamecurrent postproc { s/flamecurrent (\d+)/$1/;; $_ }
reading heater_maintenancedue match "heater maintenancedue (no|yes)"
reading heater_maintenancedue postproc { s/heater maintenancedue (no|yes)/$1/;; $_ }
reading systemtime match "systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)"
reading systemtime postproc { s/systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/$1/;; $_ }


Nochmals vielen Dank!
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 18 September 2014, 19:33:16
Ich habe mir das Auswerteverhalten noch einmal genauer angeschaut. Es gibt bei mir (fast) keine zerstückelten Informationen mehr. Auf der Konsole sind die Fehler auch weg. Allerdings habe ich das mit dem Timeout Attribut verwechselt. Boris meinte ja partial, timeout ist standardgemäß auf 3, also kann man das auch weglassen. Partial hatte ich aber nicht gesetzt, nur split wie angegeben. In ganz seltenen Fällen wird das reading von 3wayonww zerteilt. Ich habe zusätzlich jetzt partial 3 probiert -> keine Veränderung. Aber da die Information derart oft wiederholt wird, sollte das nicht stören. Letztendlich finde ich das Ergebnis viel besser als vorher. Das mag aber bei mehr readings anders aussehen?! Bei mir fehlt ja der ems-plus Teil noch, also keine Infos von hk1 und Solar.

Der andere Thread kann dann eigentlich auf gelöst ...

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: tommi am 09 Oktober 2014, 20:59:17
Moin,

hab das ganze mal nachgebaut und leider funktioniert es nur bedingt. Die grüne LED am EMS-Gateway blinkt regelmäßig -->  gutes Zeichen
Manueller Aufruf von collectord funktioniert und es kommen hex Zeichen an wie diese hier:

Zitat
sudo collectord -u ems -p ems -f -d all tcp:192.168.178.155:7950
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
Error: End of file

Mehr funktioniert leider nicht. Die div. Threads und zu dem Thema haben leider nicht geholfen. Jedoch habe ich auch keine RC 35 o.ä. Den Bus habe ich direkt am GB152 angeklemmt. Kann es sein dass es ohne RC 35 o.ä. gar  nicht funktioniert????

Titel: Antw:Buderus ems an fhem
Beitrag von: Peter am 10 Oktober 2014, 06:02:19
ZitatEMS-Gateway blinkt regelmäßig -->  gutes Zeichen

Hi tommi, wenns blinkt besteht keine Verbindung zum EMS - Bus.
LED muss grün dauerleuchten.

Gruß Peter
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 10 Oktober 2014, 09:42:28
Das kann ich so nicht bestätigen! Grün blinkt bei mir im Takt der eingehenden Daten! Hast Di die ethersex selbst gemacht oder das fertige Paket aus dem Forum verwendet?


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: tommi am 10 Oktober 2014, 12:46:30
Hab die ethersex anhand der Anleitung im EMS-Wiki selbst erstellt. Die grüne LED blinkt im Takt der Daten denke ich. So alle 3 - 6 Sekunden
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 10 Oktober 2014, 13:13:45
Es gab eine fertige Firmware im Forum, mit der läuft's bei mir.


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 10 Oktober 2014, 13:15:31
Das Blinken kann ich definitiv bestätigen! Sieht fürchte eher so aus, als würden die Telegramme nicht sauber decodiert -> ethersex!!


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 10 Oktober 2014, 13:58:53
fürchte --> für mich... (Immer diese Rechtschreibkorrektur!)


Sent from my iPhone using Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 Oktober 2014, 15:40:24
Übersetzt man die immer wiederkehrenden Telegramme von hex nach ASCII, dann steht da: ERROR: Connection blocked

Jetzt müsste man rausbekommen, wer diese Meldung erzeugt, welche Verbindung gemeint ist und warum ... Raten möchte ich nicht.

Die grüne LED auf meiner Platine zeigt empfangene Daten vom EMS-Bus an und blinkt daher in der Form, wie von Bernd beschrieben.

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 Oktober 2014, 15:48:46
Hab gerade mal im NetIO Forum von Mikrocontroller.net geschaut. Da hat jemand den Fehler beschrieben. Doppelte Instanz vom Collector - einfach mal nachlesen...

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: tommi am 10 Oktober 2014, 17:59:01
Danke Lorenz. Dass hat schon mal geholfen. Hab mal alle Prozesse gekillt und collectord manuell aufgerufen. Das sieht glaub ich schon eher nach EMS aus oder??

Zitat
IO: Got bytes 0xaa 0x55 0x2 00 00 00
MESSAGE[10.10.2014 17:57:19]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x00 0x00
IO: Got bytes 0xaa 0x55 0x1 0x4 0x4
MESSAGE[10.10.2014 17:57:24]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x04
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:57:37]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x4 0x8c 0xb 0xff 0x40 0x38
MESSAGE[10.10.2014 17:57:45]: source 0x8c, dest 0x0b, type 0xff, offset 64, data:
DATA: Unhandled message received(source 0x8c, type 0xff).
IO: Got bytes 0xaa 0x55 0x4 0xff 0xb 0xff 0x10 0x1b 0xaa 0x55 0x4 0x24 0xb 0xff 0xc8 0x18
MESSAGE[10.10.2014 17:57:48]: source 0xff, dest 0x0b, type 0xff, offset 16, data:
DATA: Unhandled message received(source 0xff, type 0xff).
MESSAGE[10.10.2014 17:57:48]: source 0x24, dest 0x0b, type 0xff, offset 200, data:
DATA: Unhandled message received(source 0x24, type 0xff).
IO: Got bytes 0xaa 0x55 0x2 0x2 0x84 0x86
MESSAGE[10.10.2014 17:57:48]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x02 0x84
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:57:48]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:57:51]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:57:54]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x1 00 00 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:57:55]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x00
MESSAGE[10.10.2014 17:57:55]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:57:55]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x1 0x86 0x86
MESSAGE[10.10.2014 17:57:56]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x86
IO: Got bytes 0xaa 0x55 0x5 0x2 0xff 0x4 0x43 0x81 0x3b
MESSAGE[10.10.2014 17:58:01]: source 0x02, dest 0xff, type 0x04, offset 67, data: 0x81
IO: Got bytes 0xaa 0x55 0x2 0x1 0x82 0x83
MESSAGE[10.10.2014 17:58:11]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x01 0x82
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 17:58:17]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x2 0x8 00 0x8
MESSAGE[10.10.2014 17:58:22]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0x08 0x00

Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 Oktober 2014, 18:53:40
Hi tommi,

schon besser, jetzt muss noch der ems-client laufen und dann sollte auf dem Telnet-Port etwas Lesbares ankommen - siehe Diagramm in meinem ersten Beitrag.

Ich habe auch immer noch das Problem, dass Teile meiner Heizung GBH172 ems-plus sprechen und somit einige Telegramme nicht interpretiert werden. Bei mir RC300 und der Solarteil... Bei Dir könnten das auch die Unhandled messages sein.

Von meinem Basiscontroller und den anderen ems Komponenten kommen die Werte meiner Readings.

Vielleicht wird das ja noch mal besser, aber so richtig geht es nicht voran und ich kann da nicht helfen.

LG

Titel: Antw:Buderus ems an fhem
Beitrag von: tommi am 10 Oktober 2014, 19:25:46
Also der Client läuft bei mir, spuckt aber auch nicht wirklich was aus. Zwei mögliche Fehlerquellen habe ich noch. Zum einen die fehlende RC 35 o.ä. (ich hab garnichts, sonder nur den BC am Kessel).

Zum anderen hatte ich beim Aufbau der Platine eine Differenz zwischen dem Schaltplan und dem Bild.

Was ist dass für ein Bauteil (dass grosse rote oben)??

(http://ems-gateway.myds.me/dokuwiki/lib/exe/fetch.php?cache=&media=wiki:ems:front.png)

Dass stand nicht auf der Einkaufsliste bei Reichelt. Somit bin ich direkt von dem Widerstand auf den Collector des Transistors gegangen. Danke schon mal für Deine Hilfe.
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 Oktober 2014, 19:35:45
Am Emitter und Kollektor vom T1 hängt der C3 mit 1,5 nF - das große rote Teil  :)

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 Oktober 2014, 19:41:03
Bei mir ist ja auch nur der BC der die rudimentären Daten vom Brenner, Vorlauf, Rücklauf etc. liefert. Ich denke, dass die 152er das auch so macht.

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: tommi am 10 Oktober 2014, 19:48:06
Ok. Fehlerquelle eins also ausgeschlossen, da es bei Dir auch ohne RC funktioniert. Also der 1,5 nF Kondensator. Der fehlt bei mir, und war übrigens auch nicht auf dem fertigen Einkaufskorb von Reichelt (wie vom Wiki verlinkt). Ist übrigens der zweite Fehler in der Einkaufsliste  >:(. Die Wannen- und Pfostenstecker waren auch falsch vom Rastermaß her.

Dann werd ich wohl noch mal basteln müssen!  ;)

Komme dann mit Bericht! :D

So einer ist dass dann wohl:

(https://cdn-reichelt.de/bilder/web/artikel_ws/B300/MKP10.jpg) Abb. ähnlich. ;)
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 10 Oktober 2014, 20:01:09
Ich habe gerade mal die alten Reichelt Rechnungen durchgesehen. Ich hatte auch nachgeordert: MKP-10-1600 1,5N. Da gab es ein Lieferproblem, vermutlich ist der dadurch aus dem Warenkorb geflogen ...

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: tommi am 10 Oktober 2014, 20:33:20
So, hab mal im Keller gekrammt, und leider nur eine 10 nF gefunden. Egal, mal kurz zwischen geklemmt, und siehe da..

Zitat
IO: Got bytes 0xaa 0x55 0x1 0xff 0xff
MESSAGE[10.10.2014 20:20:18]: source 0x00, dest 0x00, type 0x00, offset 0, data: 0xff
IO: Got bytes 0xaa 0x55 0x4 0xfb 0xb 0xff 0xec 0xe3
MESSAGE[10.10.2014 20:21:42]: source 0xfb, dest 0x0b, type 0xff, offset 236, data:
DATA: Unhandled message received(source 0xfb, type 0xff).
IO: Got bytes 0xaa 0x55 0x4 0xf6 0xb 0xff 0xa6 0xa4
MESSAGE[10.10.2014 20:21:48]: source 0xf6, dest 0x0b, type 0xff, offset 166, data:
DATA: Unhandled message received(source 0xf6, type 0xff).
IO: Got bytes 0xaa 0x55 0x4 0xd7 0xb 0xff 0xec 0xcf
MESSAGE[10.10.2014 20:23:39]: source 0xd7, dest 0x0b, type 0xff, offset 236, data:
DATA: Unhandled message received(source 0xd7, type 0xff).
IO: Got bytes 0xaa 0x55 0x4 0xe9 0xb 0xff 0xf2 0xef
MESSAGE[10.10.2014 20:23:42]: source 0xe9, dest 0x0b, type 0xff, offset 242, data:
DATA: Unhandled message received(source 0xe9, type 0xff).
IO: Got bytes 0xaa 0x55 0x4 0x98 0xb 0xff 0x5c 0x30
MESSAGE[10.10.2014 20:28:48]: source 0x98, dest 0x0b, type 0xff, offset 92, data:
DATA: Unhandled message received(source 0x98, type 0xff).

Ist zwar immer noch ein wenig "Datenmüll", aber die Werte sehen plötzlich ganz anders aus. Bin guter Hoffnung mit dem richtigen Kondensator könnte es was werden. :)

Titel: Antw:Buderus ems an fhem
Beitrag von: moped am 18 November 2014, 17:49:03
Hallo
Mein 1.Raspberry läuft mit FHEM und überwacht die Heizungstemperaturen und schaltet die Solareheizungsunterstützung. Der 2. Raspberry soll meine Buderus Heizung über das Webinterface steuern aber ich habe ein problem den collector auf dem Raspberry zu installieren. Ich bräuchte eine schritt für schritt anleitung wenn das möglich wäre. Habe es schon 2 mal probiert ihn zu installieren aber leider ohne erfolg :'( .

Vielen Dank

Stephan
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 19 November 2014, 17:46:20
Hallo Stephan,

ich hatte da auch meine Mühe, aber letztlich hat die Paketinstallation aus dem Thread von Lars Rosenberg vom 14.07.2014 im Forum www.mikrocontroller.net (http://www.mikrocontroller.net/topic/318364?goto=3890578#3724953) funktioniert.

LG 
Titel: Antw:Buderus ems an fhem
Beitrag von: Rohan am 25 November 2014, 14:03:08
Hallo,

Frage an die Runde, da ich durch diesen Thread mal wieder auf meinen Buderus-GBXYZ-Heizkessel aufmerksam geworden bin:

Es gibt in dem Reichelt-Warenkorb die Anreihklemmen und die Wannen-Steckerleiste im Rastermaß 2,5, alle anderen Teile, also auch die Platine, sind RM 2,54. Ergo dürfte 2,54 das über alle Teile richtige Maß sein, oder? Ich frage nur nach, weil ich jetzt nicht weiß, ob der Net-IO Pfostenstecker auch 2,54 hat.

Gruß
Thomas

P.S. Danke schon mal für die hier gegebenen Infos, die dürften mir den Anfang stark erleichtern. Werde mal schauen, ob das mit meinem (nur) vorhandenen ERC statt RC3X auch funktioniert.

Edith hat Typos gesehen.
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 25 November 2014, 15:43:07
Hallo Thomas,

die WSL 10G von Reichelt habe ich benutzt. Die hat ein Rastermaß von 2,54...

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 17 Januar 2015, 12:24:39
Hallo, Leute, wie wäre es mit Schritt 2 - dem Bedienen der Heizung über FHEM?

Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 18 Januar 2015, 11:44:40
Ich sehe momentan für mich keinen Bedarf.
Was ich an der Buderus noch bediene, ist lediglich Winter- und Sommerbetrieb und Urlaub und das geht über die RC300 ganz gut.
Den Rest habe ich an der Regelung und Steuerung mit den Zeitprogrammen mit den Erkenntnissen aus dem Plot der Werte so optimiert, dass mir kein weiterer Eingriff sinnvoll erscheint.

Alle Räume haben Fußbodenheizung mit Einzelraumregelung, hier wird raumweise noch bedient, aber das betrifft die Heizung ja nur indirekt.
Viel wichtiger wäre für mich die Implementierung der ems-plus Telegramme, da ich einige Parameter, wie z.B. den Solarteil noch nicht sehe. Aber das ist eine andere Baustelle und da kann ich nicht wirklich helfen.
Wenn ems-plus mal gehen sollte, dann könnte sich meine Meinung zum Bedienen vielleicht ändern, um weiter zu optimieren.

Andererseits möchte ich nicht elementare Bestandteile des Hauses von fhem abhängig machen. Das Haus soll auch ohne fhem funktionieren. So scheidet für mich generell ein automatisierter Eingriff in die zentrale Heizungssteuerung aus.

Einzig ein heute nicht möglicher Fernzugriff auf z.B. den Absenkbetrieb wäre denkbar, ist aber bei einem so trägen System wie der Fußbodenheizung für mich auch zu verschmerzen. Außerdem kann man das auch mit einem Zugriff auf die Einzelraumregelung lösen.

LG
Titel: Antw:Buderus ems an fhem
Beitrag von: bgewehr am 18 Januar 2015, 12:01:46
Ja, das ist eine klare und verständliche Position.

Ich muss zugeben, dass ich einen Hang zur Vollständigkeit habe und darüber gelegentlich die Notwendigkeitsfrage in den Hintergrund gerät.

Mit fällt ein, die Anwesenheitsüberwachung mit fhem mit EMS zur Absenkung zur nutzen, dazu müsste aber erstmal eine zuverlässige Anwesenheitsüberwachung in fhem entwickelt werden, alles bisherige ist ja lückenhaft.

Ansonsten ist ja immer der Rückgriff auf das PHP Webinterface im fhem iFrame möglich, den aber bekomme ich dann nicht über alternative Frontends direkt gesteuert.

Ich gebe Dir Recht, dass eine Heizung kein Gegenstand der ständigen Einstellung ist, sondern eher ein Gegenstand der ständigen Überwachung (wenn man Freude daran hat).

Also gut, lassen wir es erstmal dabei.


Gesendet von iPhone mit Tapatalk
Titel: Antw:Buderus ems an fhem
Beitrag von: nexulm am 06 April 2015, 12:04:05
Hallo,

ich habe meine Bruders (RC35) Steuerung erfolgreich mit dem EMS-Adapter an einem AVR-Net-IO wie hier beschrieben laufen:
http://ems-gateway.myds.me/dokuwiki/doku.php?id=wiki:ems:net_io

Der ems-collector Daemon läuft bei mir auf einem BeagleBon Black mit dem letzten Stand von "Moosy" von hier:
https://github.com/moosy/ems-collector

Das dazugehörige Webfrontend von Mossy läuft auch fehlerfrei.
Nun habe ich die direkte Anbindung in FHEM versucht und wundere mich gerade darüber, dass ich keine Daten in der Logdatei sehe und auch mein Plot leer ist/bleibt.

Leider kann ich den Fehler in der Config noch nicht entdecken, deshalb füge ich sie nochmal bei und würde mich über Tipps und Hinweise freuen:
heizung.cfg
define EMS ECMD telnet localhost:7778
attr EMS classdefs ems_messages=/opt/fhem/emsmessages.classdef
attr EMS split \n

define EMSClient ECMDDevice ems_messages ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent heater_maintenancedue systemtime
attr EMSClient IODev EMS
attr EMSClient event-on-change-reading ww_currenttemp:0.3,heater_currenttemp:0.3,returnflow_currenttemp:0.3,outdoor_temp:0.3,heaterpump_currentmodulation,ww_targettemp:0.3,heater_targettemp:0.3,warmwaterpreparationactive,zirkpumpactive,flameactive,heateractive,ignitionactive,heater_pumpactive,3wayonww,ww_daymode,burner_targetmodulation,burner_currentmodulation,flamecurrent

define Filelog_emsClient FileLog /var/log/fhem/emsClient-%Y-%m.log emsClient:(ww_currenttemp:|heater_currenttemp:|returnflow_currenttemp:|outdoor_temp:|heaterpump_currentmodulation:|ww_targettemp:|heater_targettemp:|warmwaterpreparationactive:|zirkpumpactive:|flameactive:|heateractive:|ignitionactive:|heater_pumpactive:|3wayonww:|ww_daymode:|burner_targetmodulation:|burner_currentmodulation:|flamecurrent:).*
define SVG_Filelog_emsClient_1 SVG Filelog_emsClient:SVG_Filelog_emsClient_1:CURRENT
attr SVG_Filelog_emsClient_1 plotsize 1024,480
attr SVG_Filelog_emsClient_1 room Heizung


emsmessages.classdef
params ww_currenttemp heater_currenttemp returnflow_currenttemp outdoor_temp heaterpump_currentmodulation ww_targettemp heater_targettemp warmwaterpreparationactive zirkpumpactive flameactive heateractive ignitionactive heater_pumpactive 3wayonww ww_daymode burner_targetmodulation burner_currentmodulation flamecurrent heater_maintenancedue systemtime
reading ww_currenttemp match "ww currenttemperature (\d+.\d)"
reading ww_currenttemp postproc { s/ww currenttemperature (\d+.+)/$1/;; $_ }
reading heater_currenttemp match "heater currenttemperature (\d+.\d)"
reading heater_currenttemp postproc { s/heater currenttemperature (\d+.+)/$1/;; $_ }
reading returnflow_currenttemp match "returnflow currenttemperature (\d+.\d)"
reading returnflow_currenttemp postproc { s/returnflow currenttemperature (\d+.+)/$1/;; $_ }
reading outdoor_temp match "outdoor currenttemperature (\d+.\d)"
reading outdoor_temp postproc { s/outdoor currenttemperature (\d+.+)/$1/;; $_ }
reading heaterpump_currentmodulation match "heaterpump currentmodulation (\d+)"
reading heaterpump_currentmodulation postproc { s/heaterpump currentmodulation (\d+)/$1/;; $_ }
reading ww_targettemp match "ww targettemperature (\d+.\d)"
reading ww_targettemp postproc { s/ww targettemperature (\d+.+)/$1/;; $_ }
reading heater_targettemp match "heater targettemperature (\d+)"
reading heater_targettemp postproc { s/heater targettemperature (\d+)/$1/;; $_ }
reading warmwaterpreparationactive match "warmwaterpreparationactive (on|off)"
reading warmwaterpreparationactive postproc { s/warmwaterpreparationactive (on|off)/$1/;; $_ }
reading zirkpumpactive match "zirkpumpactive (on|off)"
reading zirkpumpactive postproc { s/zirkpumpactive (on|off)/$1/;; $_ }
reading flameactive match "flameactive (on|off)"
reading flameactive postproc { s/flameactive (on|off)/$1/;; $_ }
reading heateractive match "heateractive (on|off)"
reading heateractive postproc { s/heateractive (on|off)/$1/;; $_ }
reading ignitionactive match "ignitionactive (on|off)"
reading ignitionactive postproc { s/ignitionactive (on|off)/$1/;; $_ }
reading heater_pumpactive match "heater pumpactive (on|off)"
reading heater_pumpactive postproc { s/heater pumpactive (on|off)/$1/;; $_ }
reading 3wayonww match "3wayonww (on|off)"
reading 3wayonww postproc { s/3wayonww (on|off)/$1/;; $_ }
reading ww_daymode match "ww daymode (on|off)"
reading ww_daymode postproc { s/ww daymode (on|off)/$1/;; $_ }
reading burner_targetmodulation match "burner targetmodulation (\d+)"
reading burner_targetmodulation postproc { s/burner targetmodulation (\d+)/$1/;; $_ }
reading burner_currentmodulation match "burner currentmodulation (\d+)"
reading burner_currentmodulation postproc { s/burner currentmodulation (\d+)/$1/;; $_ }
reading flamecurrent match "flamecurrent (\d+)"
reading flamecurrent postproc { s/flamecurrent (\d+)/$1/;; $_ }
reading heater_maintenancedue match "heater maintenancedue (no|yes)"
reading heater_maintenancedue postproc { s/heater maintenancedue (no|yes)/$1/;; $_ }
reading systemtime match "systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)"
reading systemtime postproc { s/systemtime (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)/$1/;; $_ }


gplot
# Created by FHEM/98_SVG.pm, 2014-07-26 09:15:52
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'ems Buderus'
set ytics
set y2tics
set grid y2tics
set ylabel "Leistung in %"
set y2label "Temperatur"

#FileLog 4:emsClient.heater_currenttemp\x3a:.*:
#FileLog 4:emsClient.outdoor_temp\x3a:.*:
#FileLog 4:emsClient.returnflow_currenttemp\x3a:.*:
#FileLog 4:emsClient.ww_currenttemp\x3a:.*:
#FileLog 4:emsClient.zirkpumpactive\x3a:0:$fld[3]eq"on"?55:0
#FileLog 4:emsClient.warmwaterpreparationactive\x3a:0:$fld[3]eq"on"?25:0
#FileLog 4:emsClient.burner_currentmodulation\x3a:.*:
#FileLog 4:emsClient.heaterpump_currentmodulation\x3a:.*:

plot "<IN>" using 1:2 axes x1y2 title 'Kesseltemp' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Aussentemp' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Ruecklauftemp' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'WWTemp' ls l5fill lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'ZirkPump' ls l8 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'WW Erzeugung' ls l5 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Brenner' ls l3fill lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Kesselpumpe' ls l7 lw 1 with steps


Danke + Gruss
Michael
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 06 April 2015, 12:36:26
Hallo Michael,

so direkt sehe ich keine Probleme. Aber man sollte immer zuerst in die Logdatei schauen. Steht da so etwas :
xxxx.xx.xx xx:xx:xx 3: Opening emsServer device localhost:7778
xxxx.xx.xx xx:xx:xx 3: emsServer device opened
Genaueres sieht man durch Hochsetzen des Loglevel...
Dann wäre ein Blick auf die Readings im Client gut.
Wenn Readings da sind, sollte man die auch im Eventmonitor sehen.
Bei Fehlern kann man mit dem Attribut logTraffic 5 dem ECMD auf die Finger schauen, um das einzugrenzen.

Viele Grüße

Lorenz
Titel: Antw:Buderus ems an fhem
Beitrag von: nexulm am 06 April 2015, 14:05:52
Hallo Lorenz,

Danke für die schnelle Rückmeldung.
Ich habe nochmal systematisch den fhem Logfile angeschaut und den Fehler gefunden. Nun läuft der emsServer und emsClient auch in meiner FHEM Umgebung.
Sowas passiert, wenn man mit zufielen unterschiedlichen Configs und Parametern rumspielt. :-)

Gruss
Michael 
Titel: Antw:Buderus ems an fhem
Beitrag von: rspecht am 19 Oktober 2015, 16:44:35
Wie Debugge ich das ganze?
Bis zum geöffneten telnetstream komme ich. Aber wie stoße ich ein request des EMSClients an?

Gruß

--------
Tante Edit: Stoppt die Pferde... ich war auf dem falschen Port. 7777 statt 7778 - Also auf der Commandline statt dem Datenausgang
Titel: Antw:Buderus ems an fhem
Beitrag von: Lorenz am 22 Januar 2016, 08:46:46
Liebe Leute,

bei der Erstellung der .classdef hatte ich doch tatsächlich nicht berücksichtigt, dass die Außentemperaturen auch mal ins Minus rutschen können.
Die aktuellen Witterungsbedingungen haben mich jetzt auch im Münsterland eines Besseren belehrt  ;)

Zur Abhilfe müssen in der emsmessages.classdef 2 Zeilen für das matching und den postproc angepasst werden:

reading outdoor_temp match "outdoor currenttemperature ((\+|-)?\d+.\d)"
reading outdoor_temp postproc { s/outdoor currenttemperature ((\+|-)?\d+.+)/$1/;; $_ }


LG
Titel: Antw:Buderus ems an fhem
Beitrag von: Gruenbacher am 18 März 2016, 17:44:11
Hallo zusammen,
habe gerade alles installiert und sieht auch soweit gut aus.

Wenn ich auf Everything und dann auf EMSClient gehe, sehe ich die aktuelle Temperatur und alle anderen Eigenschaften.

Leider ist emsclient-..... .log leer (0 Bytes), dementsprechend ist auch das Diagramm leer.

Kann mir jemand helfen und sagen wie ich den Fehler finde,
muss leider dazu sagen, das ich FHEM heute erst installiert habe und ein totaler newby bin.

Danke
Titel: Antw:Buderus ems an fhem
Beitrag von: Gruenbacher am 19 März 2016, 12:05:57
Hallo,

ich meinen Fehler gefunden.

Ich habe die Configs von nexulm aus Post 47 genommen.

Leider ist dort ein Fehler in der Logdatei (fhem.cfg):
define EMSClient ECMDDevice ems_messages ......
....
define Filelog_emsClient FileLog /var/log/fhem/emsClient-%Y-%m.log emsClient:............

Fehler!
es muss lauten:

define Filelog_emsClient FileLog /var/log/fhem/emsClient-%Y-%m.log EMSClient:

mfg.
Sven