Läuft: Heizung mit eBus-Schnittstelle

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

Vorheriges Thema - Nächstes Thema

john30

Zitat von: metserver1 am 28 Dezember 2020, 14:54:25
Für den ersten Fall, also um die Telegramme zu entziffern, suche ich nach einer Möglichkeit, ein ebusctl grab result decode für ein anzugebendes Telegramm oder Teile davon aufzurufen. Etwa so:


ebusctl "fff65000054573b413a5 / 0b002f00000000000000cf00" decode

das geht laut Hilfetext wie folgt:
ebusctl help decode
usage: decode [-v|-V] [-n|-N] DEFINITION DD[DD]*
Decode field(s) by definition and hex data.
  -v          increase verbosity (include names/units/comments)
  -V          be very verbose (include names, units, and comments)
  -n          use numeric value of value=name pairs
  -N          use numeric and named value of value=name pairs
  DEFINITION  field definition (type,divisor/values,unit,comment,...)
  DD          data byte(s) to decode


Also brauchst Du die Felddefinition (nicht die Def. der ganzen Message!) und die entsprechenden Datenbytes, z.B.:
decode "d2b" 002f
47.000


Möglicherweise suchst Du aber auch nach dem hier:
ebusctl grab result decode
author of ebusd

john30

Zitat von: chri123 am 07 Januar 2021, 20:31:59
Leider werden die Werte der PrFuelSum, -SumHc und SumHwc nur 24stündlich aktualisiert.
Ist das so?
Kann man die Anlage ermuntern, stündlich upzudaten?
du kannst das Polling Feature von ebusd verwenden oder einfach via cronjob so oft du magst ein read auslösen, z.B. mit
ebusctl read FuelSumHcThisMonth

Zitat von: chri123 am 07 Januar 2021, 20:31:59
Und sind das reale physikalische Werte oder nur ge-time-te Zähler?
no idea
author of ebusd

metserver1

Prost Neujahr und danke für Deine Rückmeldung.

Zitat von: john30 am 10 Januar 2021, 10:22:38
Möglicherweise suchst Du aber auch nach dem hier:
ebusctl grab result decode
Nein, das Kommando war ja Ausgangspunkt meiner Frage. Mein Problem damit ist, dass man damit mit Decodierungen ALLER noch ungelösten Nachrichten zugeworfen wird. Das kann sehr unübersichtlich sein.

Dein Vorschlag
Zitat von: john30 am 10 Januar 2021, 10:22:38
decode "d2b" 002f
47.000

hilft nur weiter, wenn man die Lösung - hier "d2b" - schon hat. DEFINITION ist ja genau das Element, was ich nicht habe. Nach meinem Verständnis muss man in Fleißarbeit alle verfügbaren Datentypen/Templates durchprobieren um zu sehen, was passen könnte.



Ich könnte mir folgenden Ablauf als praktisch vorstellen:

ebusctl grab result

um zu sehen, welche ungelösten Nachrichten es noch gibt. Aus der Auflistung sucht man sich eine Nachricht aus und lässt sie dekodieren.

Beispielsweise so:

ebusctl decode "fff65000054573b413a5 / 0b002f00000000000000cf00"



Hierbei greift decode auf alle Standard-Datentypen - und wünschenswert - auf alle definierten Templates zurück und listet die entsprechenden Vorschläge auf. Im Prinzip - ich wiederhole mich - wie ein um Templates erweitertes


ebusctl grab result decode


aber nur für eine einzige angebbare Nachricht oder einen Teil davon.


Gruß,

Jochen



Weishaupt WTC 15 A -> ebus-Adapter V1.6 -> USB
ebusd 3.4.v3.3-51-g57eae05
Ubuntu Server 20.04 (metserver1)
rrdtool -> apache

chri123

Zitat von: john30 am 10 Januar 2021, 11:41:14
du kannst das Polling Feature von ebusd verwenden oder einfach via cronjob so oft du magst ein read auslösen, z.B. mit
ebusctl read FuelSumHcThisMonth

Ja, das mach ich sowieso, sogar mit -f (forza!)...
Scheint wohl nicht implementiert zu sein.

Gruss
Christoph

chri123

Zum Thema realer Verbrauch: nach 2 Wochen mitschreiben und relativ konstantem Verbrauch (ca 30m³/d) zeigt der PrFuelSum 290 Dingsda/d. Kann aber erst korrelieren, wenn der Verbrauch mal etwas schwankt.

Zitat von: john30 am 10 Januar 2021, 11:41:14
du kannst das Polling Feature von ebusd verwenden oder einfach via cronjob so oft du magst ein read auslösen, z.B. mit

Ich habe das Wiki nochmal durchgelesen, bin aber nicht sicher, wie das Polling genau funktioniert:
   Welche Parameter werden gepollt und wo steht das drin?
   Kann man zB PrFuelSum einmal am Tag pollen und speichern und zB die relevanten Temperaturen alle 3 Minuten?
   Ich habe --pollinterval=180 in den EBUSD_OPTS stehen, die Webpage server:8888/data zeigt aber beim Vergleich des lastup: Feldes eine Differenz von 5 Minuten. Habe ich etwas übersehen?

Ich lasse mehrere Cronjobs laufen, die den ebusd abfragen und speichere die Antworten per MQTT in eine Datenbank. Konfiguration des ebusd läuft über Autoconfig.

Gruss
Christoph

Wardancer

ZitatNach meinem Verständnis muss man in Fleißarbeit alle verfügbaren Datentypen/Templates durchprobieren um zu sehen, was passen könnte.
Ja, ich denke so ist es ... und man muss evtl. auch Datentypen anpassen, wenn gar nichts passt.
Ich habe meine Weishaupt-Config auf basis der Vorarbeit von Jok3r etwas erweitert. Bei Bedarf kann ich sie gerne einmal rüberschmeissen. Vollständig ist die aber auch nicht. Ich habe irgendwann aufgehört, da meine Anforderungen alle damit erfüllt werden konnten.


baumhous3

Hallo,

ich hoffe hier kann mir geholfen werden  ;)
Ich habe mich zuletzt in die ganze ebus Thematik hereingefuchst, da ich gerne einige Werte aus Heizung und Lüftung haben möchte.

Ich habe meine Vaillant Heizung (Flexotherm VWF 57/4) via eBus über den eBUS Koppler Ethernet von esera im Netzwerk und nutze auf einem Raspberry 4 ebusd. Das habe ich soweit nun auch alles ans laufen bekommen und er zieht sich die richtigen Config-Files und gibt die Daten via MQTT weiter.

pi@raspberrypi:~ $ ebusctl info
version: ebusd 3.4.v3.3-51-g57eae05
update check: revision v3.4 available, vaillant/hcmode.inc: different version available
signal: acquired
symbol rate: 42
max symbol rate: 128
min arbitration micros: 27
max arbitration micros: 377
min symbol latency: 9
max symbol latency: 28
reconnects: 0
masters: 4
messages: 481
conditional: 0
poll: 0
update: 10
address 01: master #6, ebusd
address 03: master #11
address 06: slave #6, ebusd
address 08: slave #11, scanned "MF=Vaillant;ID=HMU00;SW=0307;HW=0403", loaded "vaillant/08.hmu.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=72000;SW=0118;HW=7703", loaded "vaillant/15.720.csv"
address 71: master #9
address 76: slave #9, scanned "MF=Vaillant;ID=VWZ00;SW=0307;HW=0403"


Nun habe ich neben der Heizung noch eine Lüftung der Fa. Wolf - Wolf CWL 300 excellent.
Sobald ich diese jedoch mit an den eBus anschließe, funktioniert es nicht mehr richtig. Er erkennt zwar, dass die CWL300 angeschlossen wurde, aber findet dann die Vaillant 720 nicht mehr.

pi@raspberrypi:~ $ ebusctl info
version: ebusd 3.4.v3.3-51-g57eae05
signal: acquired
symbol rate: 51
max symbol rate: 80
min arbitration micros: 23
max arbitration micros: 107
min symbol latency: 9
max symbol latency: 237
reconnects: 0
masters: 4
messages: 64
conditional: 0
poll: 0
update: 10
address 01: master #6, ebusd
address 03: master #11
address 06: slave #6, ebusd
address 08: slave #11, scanned "MF=Vaillant;ID=HMU00;SW=0307;HW=0403", loaded "vaillant/08.hmu.csv"
address 37: master #18
address 3c: slave #18, scanned "MF=ENCON;ID=  ;SW=-;HW=-"
address 71: master #9
address 76: slave #9, scanned "MF=Vaillant;ID=VWZ00;SW=0307;HW=0403"


pi@raspberrypi:~ $ ebusctl scan result
08;Vaillant;HMU00;0307;0403;21;19;34;0010016420;0001;005288;N6
3c;ENCON;  ;-;-;??;??;??
76;Vaillant;VWZ00;0307;0403


An Einstellungen verwende ich nachfolgende:
EBUSD_OPTS="-d 192.168.178.50:5007 --mqtthost=127.0.0.1 --mqttport=1883 --mqttjson  --scanconfig=full --configpath=/etc/ebusd --address=01"

Ich hab nun schon überall geschaut ob ich eine Lösung finde, aber habe nichts passendes gefunden. Jemand eine Idee woran das liegen kann oder was ich umstellen muss?

Vielen Dank :)

MFG



cs-online

...nur dass ich das richtig verstehe, du hast beide Geräte an nur einem EBUS-Adapter angeschlossen ? Also beide Busse parallel gleichzeitig ?

Grüße

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

baumhous3

Genau, korrekt.
Ist das beim ebus nicht möglich?

cs-online

vermutlich nicht... soweit ich weiß (aber ich lass mich gerne eines besseren belehren) geht das nicht und sicherlich nicht, wenn es sich auch noch um zwei verschiedene Hersteller geht....
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

john30

Zitat von: chri123 am 21 Januar 2021, 23:32:45
Ich habe das Wiki nochmal durchgelesen, bin aber nicht sicher, wie das Polling genau funktioniert:
   Welche Parameter werden gepollt und wo steht das drin?
   Kann man zB PrFuelSum einmal am Tag pollen und speichern und zB die relevanten Temperaturen alle 3 Minuten?
   Ich habe --pollinterval=180 in den EBUSD_OPTS stehen, die Webpage server:8888/data zeigt aber beim Vergleich des lastup: Feldes eine Differenz von 5 Minuten. Habe ich etwas übersehen?
ob ein Parameter gepollt wird, steht in der Definition. Das ist die Ziffer 1-9 als Priorität hinter dem "r"=read der ersten Spalte.
Das kann auch zur Laufzeit z.B. mit ebusctl read -p 1 ... geändert werden.
Genauen Einfluss darauf, wann am Ende wirklich der Poll gemacht wird, hat man durch die Prioritäten nicht. Man kann nur festlegen, was einem wichtiger oder weniger wichtig ist.
Wenn Pollinterval auf 1 Minute steht und es gibt 10 Nachrichten derselben Priorität (und sonst keine), wird 1x pro Minute 1 dieser 10 Nachrichten gepollt. Dementsprechend ist der Zyklus nach 10 Minuten durch und es geht von vorne los.
D.h. in diesem Fall hat jede Nachricht ein Alter von 9 bis 10 Minuten, ergo würde die Abfrage mittels ebusctl r ... nie aus dem Cache beantwortet werden können, nur mit ebusctl r -m 600 ...
author of ebusd

john30

Zitat von: baumhous3 am 23 Januar 2021, 19:09:10
Genau, korrekt.
Ist das beim ebus nicht möglich?
Das ist schon möglich, aber heikel und würde ich bei 2 unterschiedlichen Herstellern auf gar keinen Fall empfehlen. Selbst beim gleichen Hersteller ist das ein zweischneidiges Schwert und geht sowieso nur, wenn auf beiden Bussen alle Geräte unterschiedliche Adressen haben (was oft nicht der Fall ist). Zudem schließt man damit zwei Stromquellen kurz. Das kann wirklich arg in die Hose gehen und ich würde es tunlichst lassen. Ich selbst habe 3 Vaillant Busse und mich nie getraut, die zusammen zu klemmen. Bei zweien ginge es allein schon nicht wegen der Adresskollisiion.
author of ebusd

john30

Zitat von: metserver1 am 10 Januar 2021, 15:02:45

ebusctl grab result decode


aber nur für eine einzige angebbare Nachricht oder einen Teil davon.
ab der nächsten Version (bzw. mit eigenem Compilat) geht ebusctl grab result decode all
author of ebusd

baumhous3

Zitat von: john30 am 24 Januar 2021, 09:04:57
Das ist schon möglich, aber heikel und würde ich bei 2 unterschiedlichen Herstellern auf gar keinen Fall empfehlen...

Okay, danke für die Infos. Wieder was dazu gelernt.
Ich hatte den Adapter 3 ohnehin schon reserviert. Dann werden ich wenn ich dort an der Reihe bin diese nehmen für die Lüftung und beides getrennt aufbauen.

Danke :)

jkret

Hallo an das Forum!
Ich bin seit einem Monat dabei mich und Teile meines Hause smart zu machen.
Bei der suche nach Unterstützung für den ebus bin ich auf dieses Forum gestoßen, in welchem ein sehr angenehmer Ton vorherrschend ist. Das finde ich Klasse.
Zu meinem Problem:
Ich habe eine Vaillant-Gasheizung VC206 mit Regelung calormatic 470/3.
Über eine ESERA USB ebus-Adapter möchte ich die Heizung über einen RaspberryPi4 auslesen.
Die dev vom ebusd Orange mit MQTT habe ich installiert:
pi@raspberrypi:~ $ ebusctl info
version: ebusd 21.1.v21.1
update check: version 3.4 available
signal: acquired
symbol rate: 23
max symbol rate: 145
min arbitration micros: 585
max arbitration micros: 9640
min symbol latency: 0
max symbol latency: 23
reconnects: 0
masters: 3
messages: 462
conditional: 3
poll: 1
update: 9
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0604;HW=5502", loaded "vaillant/bai.308523.inc", "vaillant/08.bai.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=47000;SW=0348;HW=9502", loaded "vaillant/15.470.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd


Ich bekomme aber nur diese Daten zurück:

pi@raspberrypi:~ $ ebusctl find -d
470 YieldThisYear = 0;0;0;0;0;0;0;0;0;0;0;0
bai DateTime = valid;14:42:13;25.01.2021;0.562
bai SetMode = auto;79.0;-;-;0;0;0;0;0;0
bai Status01 = 47.5;42.5;0.562;-;51.5;on
bai Status02 = auto;60;65.0;70;70.0
broadcast outsidetemp = 0.562
broadcast vdatetime = 14:41:33;25.01.2021
scan.08  = Vaillant;BAI00;0604;5502
scan.08 id = 21;13;50;0010011642;0001;010937;N7
scan.15  = Vaillant;47000;0348;9502
scan.15 id = 21;13;40;0020171208;0082;028014;N8

Meine Neulings-Fragen, bei denen ich etwas auf dem Schlauch stehe und Tipps brauche:
Wie bekomme ich mehr Daten über den ebus, sind das die richtigen csv-Dateien für meine Heizung?
Wie schalte ich MQTT im Hintergrund scharf?
Ich benutze die Standard-Config dieser Installation, muß ich diese ändern?
Wenn ich es richtig verstanden habe, muß ich sobald ich Änderung machen will eine Copy im (noch nicht vorhandenen) Verzeichnis ebusd anlegen und mit make und make compile meine eigene Version auf dem RSP erzeugen.
Daran kann ich dann meine Änderungen machen...
Welche Infos braucht ihr noch?

Danke
Jens