FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: c3rebro am 05 März 2020, 22:09:19

Titel: EBus Telegramm / Übersetzungshilfe
Beitrag von: c3rebro am 05 März 2020, 22:09:19
Hallo liebe Community,

nachdem leider keine fertige EBus Platine mehr verfügbar war, habe ich mir letze Woche eine zusammengebaut nach dem V2.0 Schaltplan. Danke für den Schaltplan an der Stelle - Senden und Empfangen funktioniert.

Nun habe ich leider ein Problem mit der korrekten Konfiguration eines Telegramms in Ebusd. Es handelt sich um das Telegramm eines SM2 Solarreglers der Fa Wolf. Ich möchte gern den 2. Solarfühler erfassen. Um das zu erreichen habe ich mit "ebusctl raw" folgendes Telegramm aufgezeichnet:

<0776502203fc35008e00024e029300

Zu dem Zeitpunkt hatte der Fühler 59,0 °C was dem Hexwert 24e entspricht. Sender ist mein BM (07) Empfänger mein SM2 (76). Also habe ich folgende Zeile in meiner 76.csv hinzugefügt:

r,SM2,SF2,Solarkollektorfühler,,76,5022,fc3500,fuehler1,,S3N,,°C,Solarfühler1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Das geschah unter der Annahme das der Wert 00024e wäre - also ein 3 Byte Signed Integer. Wenn ich jetzt versuche damit ein ebusctl r SF2 auszuführen bekomme ich folgenden Logeintrag:

[update error] unable to parse update-read SM2 SF2 from 0776502203fc3500 / 024e02: ERR: invalid position

(Falsch. Der Logeintrag ist wohl beim kontrollieren der Temperatur am BM entstanden.)

Daraufhin habe ich S3N in SIN geändert. Daraufhin erhalte ich dann ein

2020-03-05 21:53:09.297 [bus error] send to 76: ERR: read timeout, retry
2020-03-05 21:53:09.428 [bus error] send to 76: ERR: read timeout, retry
2020-03-05 21:53:09.559 [bus error] send to 76: ERR: read timeout, retry
2020-03-05 21:53:09.690 [bus error] send to 76: ERR: read timeout
2020-03-05 21:53:09.690 [bus error] send message part 0: ERR: read timeout

was in der raw log so aussieht:

2020-03-05 21:55:15.649 >3176502203fc3500b2<00023d023b
2020-03-05 21:55:15.780 >3176502203fc3500b2<00023d023b
2020-03-05 21:55:15.911 >3176502203fc3500b2<00023d023b
2020-03-05 21:55:16.042 >3176502203fc3500b2<00023d023b

Kann mir jemand helfen die korrekte Zeile für meine CSV Datei zu erstellen?
Titel: Antw:EBus Telegramm / Übersetzungshilfe
Beitrag von: JimKnopf am 19 August 2020, 23:18:14
Hallo Zusammen!

Ich habe jetzt auch meinen Converter selbst gebastelt und ebusd installiert. Soweit läuft alles, nur die Telegramme sind alle unbekannt.
Mir liegen etliche Daten zur Entschlüsselung vor aber was wird in welche CVS Datei eingetragen. Nach etlichem suchen konnte ich für die CVS Datein keine Dokumentation finden.
Beispiel:f1 fe 08 00 08 00 05 4d 1a 00 00 00 0a
f1= QQ Heizungsregler
fe= ZZ Broadcast
08= Primär Service
00 = Sekundär Sollwertübertragung
08 = Anzahl der Datenbytes
00 05 = Kesselsollwert
4d 1a = Außentemperatur
00 = Leistungszwang
00 = Status Bit1 BWR aktiv, Bit 2 Heizkreis aktiv
00 0a = Brauchwasser Sollwert

Was trage ich in welche Datei ein. Es ist eine Wolf anlage.

Gruß,
Burkhard
Titel: Antw:EBus Telegramm / Übersetzungshilfe
Beitrag von: Prof. Dr. Peter Henning am 20 August 2020, 17:39:51
Bitte mal im contrib-Ordner unter EBUS nachsehen.

LG

pah
Titel: Antw:EBus Telegramm / Übersetzungshilfe
Beitrag von: JimKnopf am 21 August 2020, 11:30:25
Vielen Dank für die Antwort.

Welcher Ordner ist denn der contrib-Ordner? EDIT: ok, ich vermute damit ist der Ordner bei Github gemeint.
Fang ich mal mit dem an was ich inzwischen weiß: broadcast.csv ist für alle Meldungen ZZ=fe. 08.csv ist für Medlungen PB=08 usw. Liege ich da richtig?
--scanconfig kann ich nicht nutzen, da mit --configpaht=http://ebusd.eu/config/ viele Dateien nicht gefunden werden, evtl. identifiziert sich meine Wolf Anlage auch nicht anständig.
Also das eigene config-Verzeichnis einrichten. Wenn ich jetzt die große Sammlung mit Wolf, Vailant unc Co in den configordner kopiere, welche Datei wird denn dann genutzt.
Ich habe jetzt diese Frage umgangen, da ich nur noch den Wolf Ordner übrig gelassen habe. Aber: im Stammordner /etc/ebusd/de befindet sich eine broadcast.cvs, ebenso im Ornder /etc/ebusd/de/wolf.
In den Anleitungen die ich gefunden habe geht es gleich ans Eingemachte, die Frage, in welcher Datei man eigentlich arbeiten sollte wird nicht erwähnt.

Templates: wenn ich das richtig deute ist ein Template eine Ausschnitt eines CVS eintrages, quasi als Makro:
kesselsolltemp,,temp2,,,Kesselsollwert (Template: temp2,D2B,,°C,Temperatur)
=
kesselsolltemp,,D2B,,°C,Kesselsollwert
Ist das so richtig?
Das bedeutet, dass der Eintrag nicht einfach eingefügt wird, sonder die Zwischenräume zwischen den Kommata entsprechend des Templates gefüllt werden. Was ist, wenn man da bereits was eingetragen hat, wird das überschrieben oder hat das Vorrang?
Aber: D2B umfasst ja zwei Bytes. Erkennt ebusd am Typ dass es zwei Bytes verarbeiten muss? EDit: gefunden, ja der Datenty wird berücksichtigt. Deswegen wohl Felder und nicht Bytes alt Titel.

An vielen Stellen in den CVS Dateien sieht man ",,,,," und vielfache davon. Ich denke das soll bedeuten, das die Werte dieser Felder ignoriert werden sollen (Edit: gefunden, ja das ist richtig). Ist es richtig, dass es egal ist, wenn am Ende mehr Kommata stehen das das Telegram Bytes hat? Ich habe 5'er Gruppen durch "Unbekannt1, HEX,,,Unbekannt1" ersetzt und dann Fehlermeldungen "invalid position" beim parsen bekommen.

Gruß,
Burkhard
Titel: Antw:EBus Telegramm / Übersetzungshilfe
Beitrag von: JimKnopf am 21 August 2020, 19:56:46
Hi!

Hier eine konkrete Frage:
Das Telegram:
2020-08-21 19:46:03.783 [update notice] received unknown MS cmd: 0776502203bafb02 / 02f201    (49,8 Grad)
2020-08-21 19:29:11.742 [update notice] received unknown MS cmd: 0776502203bafb02 / 02fc01             (50,8 Grad)
2020-08-21 19:27:02.700 [update notice] received unknown MS cmd: 0776502203bafb02 / 02fd01            (50,9 Grad)
enthält hinten mit f2/fc/fd die Rücklauftemperatur des Solarkreises. Das lowNibble folgt den dezimalstellen der Temperatur.
Edit: ich habe alle Teperaturdatentypen/Templates getestet, keiner passt. Wie verarbeite ich einen neuen Datentyp wenn ich ihn entschlüsslet habe?

Meine /Wolf/50.cvs sieht wie folg aus:
type (r;w;u;1-9),class,name,comment,QQ,ZZ,PBSB,ID,field1,part (m;s),type / templates,divider / values,unit,comment,field2,part (m;s),type / templates,divider / values,unit,comment,field3,part (m;s),type / templates,divider / values,unit,comment,field4,part (m;s),type / templates,divider / values,unit,comment,field5,part (m;s),type / templates,divider / values,unit,comment,field6,part (m;s),type / templates,divider / values,unit,comment,field7,part (m;s),type / templates,divider / values,unit,comment
*w,solar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
w,,ertraege,,,,5018,,leistung,,D2B,,,Solarleistung,ertraglow,,UCH,,,ErtragTagLow,ertraghigh,,UCH,,,ErtragTagHigh,ertragsummelow,,UCH,,,SummeErtragLow,summertraghigh,,UCH,,,SummeErtragHigh,ertragsumme,,UCH,,,SummeErtragM,,,,,,
w,,temp,,,,5017,,pumpe,,UCH,0xbc=off;0xbd=on,,SolarPumpe,,,IGN:1,,,,kollektortemp,,temp,,,Kollektortemperatur,wwsolartemp,,temp,,,WW Solartemperatur,,,,,,,,,,,,,,,,,,
w,,regler,,,,5014,,status,,HEX,,,StatusSolar,,,IGN:1,,,,mischersolltemp,,temp2,,,MischerSolltemperatur,raumtemp,,temp1,,,Raumtemperatur,wwsolltemp,,temp1,,,SollWarmwasser,,,,,,,,,,,,
w,,solar2,,,,5022,,unknow1,,HEX,,,unknow1,unknow2,,HEX,,,unknow2,unknow3,,HEX,,,unknow3,unknow4,,HEX,,,unknow4,SolRückl,,temp2,,,SolRückl,unknow5,,HEX,,,unknow5

Trotzdem bleiben die Telegramme unbekannt. Wo liegt der Fehler? Das die Temperatur sicher noch falsch ausgewertet wird ist klar.
EDIT: habe den letzten Eintrag in:
r,solar1,RuecklRequ,,07,76,5022,bafb,Unknow,,HEX,,,Unknown,Unknow2,,HEX,,,Unknown2
abgeändert.
Ausgabe: received read solar1 RuecklRequ: cd;01
das Telegram war :  07 76 50 22 03 ba fb 02 / 02 cd 01
Die ID hatte ich ja mit                    ba fb      definiert, was ist mit der 02? die habe ich in der Definition ignoriert. Will ich sie auswerten kommt "wrong possiton (oder so)". Wird nach einer ID alles bis zum Slash ignoriert? Ich habe dazu keinen Hinweis gefunden.

Gruß,
Burkhard