Läuft: Heizung mit eBus-Schnittstelle

Begonnen von Prof. Dr. Peter Henning, 29 November 2014, 13:36:59

Vorheriges Thema - Nächstes Thema

cs-online

@R2D2:
Die Heizung war in die Nachtabsenkung gegangen, die Therme zeigte bei D.29 Null an, kein Rauschen mehr in den Rohren, Ebusd zeigte "200000", also auch hier Null in Dezimal. Also ist der untere Punkt sozusagen mit den Koordinaten (0:0), bei den oberen Punkten habe ich ein wenig experimentiert, am genauesten wurde die Geradengleichung mit dem (1,02:1798), da passen alle anderen Messungen bis auf max 0,02 m³/h, also auf 20 Liter pro Stunde, drauf. Das ist glaube ich gar nicht schlecht.

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

alpha1974

Hallo miteinander,

ich versuche gerade, den ebusd über FHEM auszulesen, was dank des hervorragenden Wikis auch schon gangt gut klappt. Allerdings läuft die im Wiki beschriebene Systemüberwachung unter FHEM nicht ganz rund. Das dort beschriebene Perl-Programm für 99_myUtils.pm (sub EBUSrecover($$)...) liefert bei mir folgende Logmeldung:
2016.02.12 16:42:50 1: [EBUS] Recover triggered from EBUSrecover, attempt No. 1
2016.02.12 16:42:50 3: define EBUSrecoverdly at +00:00:05   
            {EBUSrecover('EBUSrecover',2)} : EBUSrecoverdly already defined, delete it first
2016.02.12 16:42:50 3: EBUSrecoverdly: EBUSrecoverdly already defined, delete it first


In einem älteren Post von pah ist der Perl-Code auch etwas anders, er enthält zusätzlich noch ein delete device:

Zitat von: Prof. Dr. Peter Henning am 26 Januar 2015, 05:45:15

       fhem("delete EBUSrecoverdly")
          if($defs{"EBUSrecoverdly"});


Muss der Wiki-Code noch entsprechend ergänzt werden?

Danke und Gruß
alpha1974
FHEM/Z-Wave USB-Dongle + div. Devices

amunra

Hallo alpha1974,
danke für den Hinweis, ich habes es angepasst.
Viele Grüße
Arthur

alpha1974

#1488
Werte ebusd-Freunde,

leider sind die CSV-Dateien für meine Therme (Wolf CGB-2-14) noch etwas unvollständig, weshalb ich mich wild entschlossen daran machen wollte, das zu ändern. Problem: Ich bin wohl zu blöd dafür!  :(

Um es langsam angehen zu lassen, will ich folgende Nachricht in eine CSV-Zeile "übersetzen":

2016-02-13 16:21:41.804 [update notice] unknown MS cmd: 3008502203cc0d00 / 029c01
2016-02-13 16:22:43.124 [update notice] unknown MS cmd: 3008502203cc0d00 / 029c01
2016-02-13 16:23:43.733 [update notice] unknown MS cmd: 3008502203cc0d00 / 029c01
2016-02-13 16:24:44.693 [update notice] unknown MS cmd: 3008502203cc0d00 / 029b01
2016-02-13 16:25:47.484 [update notice] unknown MS cmd: 3008502203cc0d00 / 029b01
2016-02-13 16:26:46.648 [update notice] unknown MS cmd: 3008502203cc0d00 / 029a01
2016-02-13 16:27:47.636 [update notice] unknown MS cmd: 3008502203cc0d00 / 029b01
2016-02-13 16:28:48.567 [update notice] unknown MS cmd: 3008502203cc0d00 / 029e01
2016-02-13 16:29:49.548 [update notice] unknown MS cmd: 3008502203cc0d00 / 02a601
2016-02-13 16:30:52.501 [update notice] unknown MS cmd: 3008502203cc0d00 / 02a901
2016-02-13 16:31:51.514 [update notice] unknown MS cmd: 3008502203cc0d00 / 02ad01
2016-02-13 16:32:52.405 [update notice] unknown MS cmd: 3008502203cc0d00 / 02b801


Dank openhab bilde ich mir ein, dass es sich um ein Kommando des Reglers an die Therme zur Abfrage der Kesseltemperatur handelt. Denn unter diesem Link liest man u.a. Folgendes:
      "comment": "<Regler> Kromschröder/Wolf: Kessel-Temperatur IST",
"device": "Wolf CSZ-2 > CGB-2 > HCM-2/GBC-e, FW: 1.6",
"id": "temp_vessel",
"class": "heating_kw",
"command": "50 22",
"data": "CC 0D 00",

"values": {
"temp_vessel": {"type": "word", "pos": 12, "label": "Kessel Ist", "factor": 0.1, "min": 1, "max": 100 }


Wenn ich die Nachricht "3008502203cc0d00 / 029c01" damit vergleiche, bedeutet das wohl(?): "30 schickt an 08 des Herstellers 50 (Wolf) den Befehl 22 mit 03 Bit-Länge und Inhalt CC 0D 00." Die Antwort "029c01" könnte dann die Kesseltemperatur sein, wozu auch passen könnte, dass sich der Wert ändert.

Wie komme ich jetzt mit diesen Erkenntnissen (sofern sie zutreffen) zu einer CSV-Zeile, die die Nachricht übersetzt?

Grübelnde und für jeden Denkanstoß dankbare Grüße
alpha1974
FHEM/Z-Wave USB-Dongle + div. Devices

Sven77

Soweit schon fast richtig! :)
Die 50 für den Hersteller ist aber schon das Primary Byte des Befehls, die 22 das Secondary Byte. Da es eine "custom" Nachricht ist, hat sich aber offenbar eingespielt, dass die Hersteller ihre Herstellernummer als PB nutzen - bei Vaillant analog B5.
Die 02 aus der Antwort entspricht der Länge der Antwort und wird von ebusd automatisch gehandhabt, ebenso wie die 03 als Länge der Informationen (ID) zur PBSB-Nachricht.
Die einfachste CSV-Zeile dazu wäre dann wohl:

# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates,divider/values,unit,comment,,,
r,,Kesseltemp,,,08,5022,CC0D00,,,UIN,8,°C,,,,

Den Datentyp müsstest Du mal prüfen, vor allem mit zu den Hexwerten bekannten Temperaturen. Ich habe jetzt mal die 0x019C..0x01B8 durch 8 geteilt, was Temperaturen von 51,5-55,0°C enspräche. Eventuell gehört ja auch nur das erste Byte zur Temperatur (durch 2 geteilt dann 78-92°C) und das zweite ist ein Status (01=an?) - die openhab-Definitionen kenne ich nicht und habe es deshalb mal ignoriert. Wenn das zweite Byte eine andere Bedeutung hat, dann einfach die Datentypen hintereinander schreiben (hier auch gleich benannt, um sie einzeln auszulesen):
r,,KesseltempStatus,,,08,5022,CC0D00,Temp,,UCH,8,°C,,Status,,UCH,,,,,,
VG, Sven

alpha1974

#1490
Zitat von: Sven77 am 13 Februar 2016, 22:30:48
Die 50 für den Hersteller ist aber schon das Primary Byte des Befehls, die 22 das Secondary Byte. Da es eine "custom" Nachricht ist, hat sich aber offenbar eingespielt, dass die Hersteller ihre Herstellernummer als PB nutzen - bei Vaillant analog B5.
Die 02 aus der Antwort entspricht der Länge der Antwort und wird von ebusd automatisch gehandhabt, ebenso wie die 03 als Länge der Informationen (ID) zur PBSB-Nachricht.
Super, vielen Dank! Deine Erläuterungen und die von dir vorgeschlagenen CSV-Zeilen bringen mich schon weiter.

Die ausgelesene Kesseltemp (nur das erste Byte geteilt durch 4) liegt zwar 2,5 Grad über derjenigen, die über die schon vorhandenen CSV-Dateien via broadcast ausgelesen werden. Aber die müssen nicht unbedingt stimmen, zumal das Bedienmodul der Therme nochmals andere (leicht abweichende) Werte anzeigt. Da muss ich vielleicht nochmal etwas an den CSV-Dateien "nachjustieren", aber das ist sicher einfacher, wenn die Therme nicht im Betrieb ist und sich die Temperaturen nicht ständig ändern.

Wenn das klappt, wage ich mich einmal an die anderen noch unbekannten Befehle, soweit ich dazu im Netz nähere Informationen finde (openhab hat ja schon ein paar Befehle "entziffert").

Gruß
alpha1974

EDIT:
So ergibt es die richtige Kesseltemperatur (=diejenige, die auch am Bedienmodul BM-2 angezeigt wird):
r,,temp_burner,Kesseltemperatur (30->08),,08,5022,CC0D00,,,UIN,10,°C,,,,,,,,,,
FHEM/Z-Wave USB-Dongle + div. Devices

cs-online

@R2D2: Hast Du inzwischen überprüfen können, ob das bei Dir auch passt ?

@John: Wie kann ich das denn evtl. in die bai.CSV  V1.X.X hineinbekommen ? Für den Anfang würde mir reichen, wenn ich den hex-Wert in den find-d-Werten mit drin hätte.

Und noch ein Wunsch: gibt es schon eine Möglichkeit D.14 zu setzen ?

Grüße Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

john30

Zitat von: cs-online am 15 Februar 2016, 20:22:17
@John: Wie kann ich das denn evtl. in die bai.CSV  V1.X.X hineinbekommen ? Für den Anfang würde mir reichen, wenn ich den hex-Wert in den find-d-Werten mit drin hätte.
na klar geht das. sollte auch einfach durch einfügen der zeile klappen
author of ebusd

cs-online

Zitat von: john30 am 16 Februar 2016, 07:45:51
auch einfach durch einfügen der zeile klappen

Hi John,

ich fragte, weil das ja mit write abgefragt wird und ich da nicht sicher war, wie ich das dann in die CSV umsetzen muss... Kannst Du mir da aufs Pferd helfen ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

Reinhart

Zitat von: cs-online am 15 Februar 2016, 20:22:17
Und noch ein Wunsch: gibt es schon eine Möglichkeit D.14 zu setzen ?

Ja, einfach in die 08.bai.xxxx eintragen (bei Version 2.x), ich hab es mit "w" gemacht statt "wi".

r;w,,PumpPowerDesired,d.14 Leistung Heizungspumpe Soll,,,,0A04,,,UCH,0=auto;1=53;2=60;3=70;4=85;5=100,%,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
r,,PumpPower,d.15 Leistung Heizungspumpe,,,,7300,,,UCH,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
r,,RegulationMode,d.17 Regelungsmodus,,,,0C04,,,UCH,0=flow;1=return,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
r,,PumpMode,d.18 Pumpenbetriebsart,,,,4904,,,UCH,0=aftertime;1=continous;2=winter;3=intermittent,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
r,,PumpMode2,d.19 Pumpenbetriebsart 2. Pumpe,,,,0B04,,,UCH,0=aftertime;1=continous;2=winter;3=intermittent,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
r,,StorageTempSetMax,d.20 Maximale Speichersolltemperatur,,,,4304,,,temp,, °C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

hier sind noch ein paar die dir vermutlich fehlen!


pi@raspberry2 /etc/init.d $ ebusctl w -c bai pumppowerdesired 1
done

pi@raspberry2 /etc/init.d $ ebusctl r -f pumppowerdesired
53

pi@raspberry2 /etc/init.d $ ebusctl w -c bai pumppowerdesired 0
done

pi@raspberry2 /etc/init.d $ ebusctl r -f pumppowerdesired
auto

Test den d.14 zu schreiben!

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

cs-online

Hi Reinhart,

das mit d.14 ist richtig cool, das fehlte mir noch und ich habs auch für EBUSD 1.1.0 hinbekommen (einfach das % und die überzähligen Komata gelöscht und voila...)

aber wie bekomme ich nun "w -h 08b509030dfb00" in eine CSV-Zeile ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266/32 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20+S26,Shelly1/2/2.5, Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV+Speicher, alles auf einem RPI und da geht noch mehr

hasenhirn

Hallo und guten Abend,

ich bin neu hier in dem ganzen Thema und habe mir ( dank den Platinen von Helmut aus dem Mikrocontroller-Forum und der Hilfe eines Freundes ) 3 Platinen für den Ebus zusammen gelötet.
Es sind bei mir eine geoTHERM VWL 9C mit  einem VR60 Mischermodul als Erweiterung und noch 2 VR90 Fernbediengeräte an einem Ebuskoppler angeschlossen.
An dem zweiten Ebuskoppler ist eine auroMATIC 620 angebunden welche nur noch die Solarsteuerung übernimmt.
Als Nummer drei ist noch ein recoVAIR Wohnraumlüftungsgerät verbaut ( dafür habe ich noch keine passende CSV-Datei ).
Alle Geräte sind von Vaillant und hängen an ttyUSB0-2 eines RasPi. Ich habe FHEM auf dem RasPi aufgesetzt und kann auch schon ein paar Werte auslesen, aber leider habe ich keine Ahnung wie ich dem ebusd beibringe 3 Instanzen zu starten mit z.B. Telnet-Port 6666 / 7777 und 8888 so dass ich alle drei Geräte ansprechen kann.

Ich wäre da für einen Tip sehr dankbar ;D

hier noch ein paar Infos zu meiner Configuration:

Vaillant geoTHERM VWL 9C:

ebusctl info
version: ebusd 2.0.0ea7efc
signal: acquired
symbol rate: 51
masters: 5
messages: 857
address 03: master #3
address 08: slave #3, scanned "MF=Vaillant;ID=EHP00;SW=0341;HW=7201", loaded "vaillant/08.ehp.csv"
address 10: master #6
address 15: slave #6, scanned "MF=Vaillant;ID=UIH00;SW=0226;HW=6901", loaded "vaillant/15.uih.csv"
address 17: master #9
address 1c: slave #9, scanned "MF=Vaillant;ID=RC C ;SW=0321;HW=6201", loaded "vaillant/1c.rcc.4.csv"
address 23: slave, scanned "MF=Vaillant;ID=EHP00;SW=0341;HW=7201", loaded "vaillant/23.ehp.cc.csv"
address 25: slave, scanned "MF=Vaillant;ID=EHP00;SW=0341;HW=7201", loaded "vaillant/25.ehp.hwc.csv"
address 37: master #14
address 3c: slave #14, scanned "MF=Vaillant;ID=RC C ;SW=0321;HW=6201", loaded "vaillant/3c.rcc.5.csv"
address 50: slave, scanned "MF=Vaillant;ID=EHP00;SW=0341;HW=7201", loaded "vaillant/50.ehp.mc.csv"
address 52: slave, scanned "MF=Vaillant;ID=MC2  ;SW=0500;HW=6301", loaded "vaillant/52.mc2.4.csv"
address 53: slave, scanned "MF=Vaillant;ID=MC2  ;SW=0500;HW=6301", loaded "vaillant/53.mc2.5.csv"


auroMATIC 620:

ebusctl info
version: ebusd 2.0.0ea7efc
signal: acquired
symbol rate: 39
masters: 3
messages: 491
address 10: master #6
address 15: slave #6, scanned "MF=Vaillant;ID=UI   ;SW=0508;HW=6201", loaded "vaillant/15.ui.csv"
address 23: slave, scanned "MF=Vaillant;ID=SOLSY;SW=0500;HW=6301", loaded "vaillant/23.solsy.cc.csv"
address 25: slave, scanned "MF=Vaillant;ID=SOLSY;SW=0500;HW=6301", loaded "vaillant/25.solsy.hwc.csv"
address 26: slave, scanned "MF=Vaillant;ID=SOLSY;SW=0500;HW=6301", loaded "vaillant/26.solsy.hc.csv"
address 3f: master #15
address 44: slave #15, scanned "MF=Vaillant;ID=SOLSY;SW=0500;HW=6301"
address 50: slave, scanned "MF=Vaillant;ID=SOLSY;SW=0500;HW=6301", loaded "vaillant/50.solsy.mc.csv"
address ec: slave, scanned "MF=Vaillant;ID=SOLSY;SW=0500;HW=6301", loaded "vaillant/ec.solsy.sc.csv"


recoVAIR:

ebusctl info
version: ebusd 2.0.0ea7efc
signal: acquired
symbol rate: 72
masters: 2
messages: 13
address 10: master #6
address 15: slave #6, scanned "MF=Vaillant;ID=VAI00;SW=0124;HW=8901"
address c0: slave, scanned "MF=Vaillant;ID=WTW04;SW=0123;HW=9001"



Grüße

Thomas


Sven77

Zitat von: hasenhirn am 16 Februar 2016, 20:12:30
Alle Geräte sind von Vaillant und hängen an ttyUSB0-2 eines RasPi. Ich habe FHEM auf dem RasPi aufgesetzt und kann auch schon ein paar Werte auslesen, aber leider habe ich keine Ahnung wie ich dem ebusd beibringe 3 Instanzen zu starten mit z.B. Telnet-Port 6666 / 7777 und 8888 so dass ich alle drei Geräte ansprechen kann.
Hast Du wirklich 3 separate Busse? Dann interpretiere ich "Ebuskoppler" wohl falsch... Müssen sich die Geräte nicht untereinander unterhalten??

Aber wie auch immer, Du kannst ebusd als Startparameter wohl das Device, als auch den Port mitgeben. Damit es auch 3x richtig startet, würde ich das Startskript einfach kopieren (aber Vorsicht: bin nicht sicher, ob das die eleganteste Lösung wäre):
# cp -p /etc/init.d/ebusd /etc/init.d/ebusd1
# cp -p /etc/init.d/ebusd /etc/init.d/ebusd2
# update-rc.d ebusd1 defaults
# update-rc.d ebusd2 defaults

Und natürlich in den kopierten Skripten das PIDFILE ändern in "ebusd1.pid" bzw. "ebusd2.pid" und am Ende der Start-Zeile hinter "-- $EBUSD_OPTS" anfügen: " -d /dev/ttyUSB1 -p 7777" bzw. " -d /dev/ttyUSB2 -p 6666".

HTH, Sven
VG, Sven

hasenhirn

Hallo Sven,

danke für deine schnelle Antwort.
Ich werde das morgen mal ausprobieren und dann hier das Ergebnis einstellen.

Gruß

Thomas

Reinhart

ich habe da dieselbe Idee wie Sven77 gehabt und das schon ausprobiert, geht aber bei mir nicht (ebusd2 startet nicht). Ich glaube da hat John einmal in der Binary was eingebaut das ebusd nicht 2 x startet, bin mir aber nicht sicher.

Was mir aber komisch vorkommt, das deine Geräte nicht untereinander mit dem eBus verbunden sind. Das ist ja der Sinn und Zweck von einem gemeinsamen Datenbus um eben miteinander zu kommunizieren. Oder hat der Installateur das schlicht vergessen oder weiß er das es nicht funktioniert? Doch Auromatic 620 haben ja einige hier im Forum.

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa