LAN-Anbindung für BSB-Bus (Brötje, Elco Thision etc.)

Begonnen von justme1968, 29 November 2014, 19:50:40

Vorheriges Thema - Nächstes Thema

Madmaxx126

@freetz,

Ein paar Zeilen ganz Hinten in der Datei sind mir aufgefallen...

Wegen dem Setzen: hast recht, das könnt was mit dem ersten Datenbyte zu tun haben:

06 0D 07 59 3D 0B A2 00 50 18 E3
90091939 DC 8A 00 0B 06 3D 05 07 B0 A4 8C
90092010 DC 80 0A 0D 07 05 3D 07 B0 00 19 6D 58
90102011 DC 8A 00 0B 06 3D 05 07 B0 A4 8C
90102082 DC 80 0A 0D 07 05 3D 07 B0 00 19 6D 58
GET /2604/S2870=81 HTTP/1.1/2604/S2870=81
set ProgNr 2870 = 81
setting line: 2870 val: 06 51
Duration: 80
RGT1->HEIZ SET 2870 Wärmepumpe -  Verdichtermodulation Max: --- %
DC 86 00 0D 03 3D 59 0B A2 06 51 83 F6
HEIZ->RGT1 NACK 2870 Wärmepumpe -  Verdichtermodulation Max: BYTE len error len!=2: 06
DC 80 06 0C 05 59 3D 0B A2 06 88 DF
set failed NACK
My address: 6
Destination address: 0
Duration: 2
Duration: 74
Duration: 157


Hier mal am Beispiel des Raumeinfluss, auch in %.
Werte setzen geht prinzipiell, aber ein Wert von 0 also "---" im Display wird nicht angenommen.
Grad erst draufgekommen.


GET /2604/S750=0.00 HTTP/1.1
/2604/S750=0.00
set ProgNr 750 = 0.00
setting line: 750 val: 06 00
Duration: 80
RGT1->HEIZ SET  750 Heizkreis 1 -  Raumeinfluss: --- %
DC 86 00 0D 03 3D 2D 06 03 06 00 EE 88
HEIZ->RGT1 NACK  750 Heizkreis 1 -  Raumeinfluss: BYTE len error len!=2: 03
DC 80 06 0C 05 2D 3D 06 03 03 20 E4
set failed NACK
My address: 6
Destination address: 0
Duration: 76

HEIZ->RGT1 ANS  750 Heizkreis 1 -  Raumeinfluss: 80 %
DC 80 06 0D 07 2D 3D 06 03 00 50 E8 F4
91697266 DC 8A 00 0B 06 3D 05 07 B0 A4 8C
91697336 DC 80 0A 0D 07 05 3D 07 B0 00 19 6D 58
GET /2604/S750=10 HTTP/1.1
/2604/S750=10
set ProgNr 750 = 10
setting line: 750 val: 06 0A
Duration: 79
RGT1->HEIZ SET  750 Heizkreis 1 -  Raumeinfluss: --- %
DC 86 00 0D 03 3D 2D 06 03 06 0A 4F C2
HEIZ->RGT1 ACK  750 Heizkreis 1 -  Raumeinfluss:
DC 80 06 0B 04 2D 3D 06 03 03 7C
My address: 6
Destination address: 0
Duration: 73
RGT1->HEIZ QUR  750 Heizkreis 1 -  Raumeinfluss:
DC 86 00 0B 06 3D 2D 06 03 3E D5
HEIZ->RGT1 ANS  750 Heizkreis 1 -  Raumeinfluss: 10 %
DC 80 06 0D 07 2D 3D 06 03 00 0A 13 4B
91707257 DC 8A 00 0B 06 3D 05 07 B0 A4 8C
91707328 DC 80 0A 0D 07 05 3D 07 B0 00 19 6D 58

####Setzen Raumeinfluss 0% am Bedienteil, (ich hoff ich hab die richtige seqzenz erwischt)###
91760372 DC 80 0A 0E 07 2D 3D 05 FD 00 04 80 C2 2A
91761218 DC 8A 00 0B 06 3D 2D 06 40 57 C5
91761289 DC 80 0A 0E 07 2D 3D 06 40 00 FF 40 F2 D8
91762101 DC 8A 00 0B 06 3D 21 06 63 36 A5
91762171 DC 80 0A 0E 07 21 3D 06 63 00 03 C0 CB 05
91763057 DC 8A 00 0B 06 3D 21 06 62 26 84
91763128 DC 80 0A 0E 07 21 3D 06 62 00 09 00 8B 36
91764140 DC 8A 00 0B 06 3D 2D 06 03 2F 62
91764210 DC 80 0A 0D 07 2D 3D 06 03 00 0A A6 5B
91767190 DC 8A 00 0B 06 3D 2D 06 03 2F 62
91767261 DC 80 0A 0D 07 2D 3D 06 03 00 0A A6 5B
91770263 DC 8A 00 0B 06 3D 2D 06 03 2F 62
91770334 DC 80 0A 0D 07 2D 3D 06 03 00 0A A6 5B
91776375 DC 8A 00 0D 03 3D 2D 06 03 05 01 4C 84
91776459 DC 80 0A 0B 04 2D 3D 06 03 51 17
91776539 DC 8A 00 0B 06 3D 2D 06 03 2F 62
91776609 DC 80 0A 0D 07 2D 3D 06 03 01 0A 95 6A
91779581 DC 8A 00 0B 06 3D 2D 06 03 2F 62
91779650 DC 80 0A 0D 07 2D 3D 06 03 01 0A 95 6A
91782651 DC 8A 00 0B 06 3D 2D 06 03 2F 62
91782721 DC 80 0A 0D 07 2D 3D 06 03 01 0A 95 6A


lg

freetz

Die Fehlermeldungen mit der Länge sind etwas irreführend, denn die NACK Antwort besteht nur aus einem Byte (drittletztes Byte), es würden aber bei einem korrekten SET eine Antwort mit (in diesem Fall) zwei Byte erwartet. Leider gibt die NACK-Antwort keine (für uns bekannte) Begründung, warum das Setzen fehlgeschlagen ist. Es könnte daran liegen, dass der Parameter nicht mit 06 sondern mit 00 gesetzt wird, aber dann würde sich der Datentyp von anderen, an sich gleichen, unterscheiden.

Der Wert "0" ist übrigens nicht identisch mit "---". Letzteres steht für "disabled" und wird beim Setzen über URL mit
/Sxxx=
gesetzt, also ohne Wert. Hintergrund ist, dass z.B. ein Wert "0" durchaus ein "aktiver" Wert sein kann (z.B. 0% Modulation oder 0 Grad Celsius). "Deaktiviert" bedeutet aber, dass die Funktion gar nicht verwendet/berücksichtigt wird. Anderes Beispiel wäre z.B der Beginn eines Ferienprogramms - das könnte 0:00 Uhr sein, oder eben gar nicht aktiv.

Was Du da mit dem Raumgerät gemacht hast, ist mir unklar, da wird zuerst der Wert abgefragt (00 0A = 10%), dann nutzt Du anscheinend ein INF-Telegramm, um den Wert 05 01 zu setzen, aber abgesehen davon, dass 05 01 kein gültiger Prozentwert ist (1025%), müsste das erste Byte 00 sein, um den Raumeinfluss aktiv zu halten. Die 05 wird anscheinend (wie die 01) wie ein "disable" gewertet, weshalb die Antwort auf die Anfrage in den letzten Zeilen 01 0A ist - 01 für disabled und 0A für die (nicht geänderten) 10%.
Interessant ist aber, dass bei Dir das Setzen des Raumeinflusses am Raumgerät klappt. Denn eigentlich interessiert dieser Wert nur die Regelung in der Heizung. Was für ein Raumgerät hast Du denn da verbaut?
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

freetz

#3182
Zitat von: uriel2006 am 20 Januar 2019, 17:31:08
Hab dann noch was gefunden was ich nicht ganz raus bekomme.
Die 0x2D3D0231
{0x2D3D0231,  CAT_USER_DEFINED,     VT_UNKNOWN,       10458, STR10200, 0,                    NULL,         FL_RONLY, DEV_ALL}, // Brute force detected Command ID, data payload on LMU74.100A136: 00 00 BF 04 02 01 0D / on RVS43.222: 00 00 63 24 02 01 0D
Sendet auf den ersten 2 bytes immer 00 00 egal was ich versuche.
danach kommen 2 bytes mit irgend einer Uhrzeit die sich minütlich ändert.
Dann 1 Byte 01 oder 02 (01 ist Nacht betrieb 02 Tag betrieb
Die letzten 2 Bytes ist der Zustand
also  00 05 ist standby bzw. power off
        01 1D ist Manuel
        01 0D ist Auto im Tagbetrieb, 00 0D ist Auto im Nachtbetrieb

Danke, sehr interessant! In der Tat ändern sich bei mir die Bytes 3+4 auch beständig, das scheinen die Sekunden bis zum nächsten Betriebsart-Wechsel zu sein. Müsste man noch mal schauen, ob die auch zählen, wenn man nicht im Automatik-Modus ist?

Interessant zu wissen wäre noch, ob bzw. wie sich Byte 5 auch noch verändert, wenn die Heizung auf Standby oder Power-Off oder Frostschutz geht, denn da gibt es dann ja eigentlich keinen Tag/Nacht-Betrieb.

Bleibt die Frage, ob uns die Info wirklich mehr sagt, als z.B. Parameter 8000 bzw. 700. Man weiß halt, in welchem Zyklus sich die Heizung befindet, ohne die Zeitprogramme gegen die Uhrzeit zu prüfen. Für die grafische Anzeige auf einer Benutzeroberfläche vielleicht schon interessant...

EDIT: Den gleichen Parameter gibt es ja noch für HK2 und 3/P, da ändert sich zumindest bei mir bei HK2 auch Byte 2 auf 02. Parameter wären 10476 und 10494.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Madmaxx126

@freez,

Wegen Datentyp war das genau meine ursprüngliche Überlegung, soviele Möglichkeiten bei 2-Byte Telegrammen gibts nicht.
Gängige Werte von dem enable-Byte sind, wenn ich das richtig lese, 0x00, 0x01 und ux06, wobei aber 0x01 unwahrscheinlich ist, weil da de Wert /2 geteilt wird.
Kann ich das gefahrlos mit 0 als Enable-byte testen?

Wegen dem Disabled-Wert ist mir das jetzt auch klar, ich dachte die Steuerung macht aus 0 automatisch ---.
Damit wär der Dump dann eh hinfällig, da geht eh alles.
(Ich hab den Wert am Bedienteil auf --- gesetzt, dann die Seite nochmal am PC reloaded um zu sehen ob der Wert übernommen wurde, und dadurch versehentlich nochmal den Wert 10 gesetzt.)
Mein Bedienteil ist eines für Gehäuseeinbau, mit Drehregler und 5 Druckknöpfen.

lg

freetz

#3184
Enabled-Bytes sind nur 0x00 und 0x06. 0x01 bzw. 0x05 sind disabled. Bei einigen Parametern mussten wir das mangels passender Heizung raten. Wer eine Heizung hat, wo es den Parameter gibt, kann das aber ganz einfach rausfinden, indem man eben einmal den Wert ändert und das entsprechende SET-Telegramm mitschneidet. Da sieht man dann eben am ersten Byte der Payload, ob da 0, 1, 5 oder 6 steht.

Zwei-Byte-Telegramme, bei denen das 2. Byte nicht 0, 1 oder 255 ist, wären in der Tat dann vielleicht ähnlich "einfach" zu dekodieren, wie Temperaturen. Bei 0, 1 oder 255 könnte es auch VT_ONOFF sein, und da weiß man halt beim besten Willen nicht, was da jetzt gerade ein- oder ausgeschaltet wird.

EDIT: Und nicht jeder 1-Byte-Wert wird durch zwei geteilt, VT_PERCENT wird 1:1 übernommen, VT_PERCENT5 durch 2 geteilt (oder mit 0.5 multipliziert, ich muss die Benennung da mal beizeiten etwas vereinheitlichen).
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Madmaxx126

@freez,

Noch was ist mir aufgefallen, wenn man ein VT_DWORD im Web setzen will, springt er ab 32k auf minus <Zahl> um. Ich denke das Webinterface behandelt den Wert den es entgegennimmt als signed Integer. Bis 32767 funktioniert das problemlos.

lg
Madmaxx


freetz

Das sollte eigentlich auf den Parameter-Typ ankommen, denn manche Werte können ja auch ins Negative gehen (Temperaturen z.B.). Um welchen Wert geht es da genau?
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Madmaxx126

Das war OEM2, ich wollte den mal 1:1 setzen und mitloggen.
dann stand der auf -21000irgendwas.

Madmaxx126

Also genauer Parameter 6235 und der hatte dann beim Setzen von 44444 auf einmal -21092.

freetz

Hm, das ist seltsam, zwar wird bei den 32Bit langen Werten wegen der Divisoren mit den vorzeichenbehafteten Datentypen "long" und "double" gearbeitet, aber die können ja mehrere Millionen ins Plus bzw. Minus gehen.
Du könntest in der set()-Funktion bei case VT_DWORD einmal auf dem SerMo den Inhalt der Variable "val" ausgeben lassen, sowie nach den entsprechenden Zuweisungen den Inhalt von t, sowie param[1] bis [4]. Da der Parameter bei mir nicht funktioniert, kann ich das hier nicht testen...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

uriel2006

Ich habe mal noch etwas das brute-force laufen lassen,
05: 0-65536
06: 0-5000
0D: 0-4096
11: 0-4096
21:0-4096
22: 0-4096
2D: 0-4096
2E: 0-4096

Zeitprogramm Heizkreis 1 ist in 2D zb:
78 1A 06 00 0C 02 00 14 07 2D 3D 0A 8C 12 0A 14 00 15 00 16 00 17 00 17 32 E9 94
500 Zeitprogramm Heizkreis 1 - Mo: 1. 18:10 - 20:00 2. 21:00 - 22:00 3. 23:00 - 23:50


Zeitprogramm Heizkreis 2 ist in 2E mit dem selben Aufbau.

An der RVA hängen zur zeit keine Sensoren. das Ding liegt auf meinem Schreibtisch nur mit angeschlossenen 230v und LPB.
Daher können alle Temperaturwerte 00 00 oder --- sein.

cu.

Schotty

Zitat von: uriel2006 am 22 Januar 2019, 13:26:02
An der RVA hängen zur zeit keine Sensoren. das Ding liegt auf meinem Schreibtisch nur mit angeschlossenen 230v und LPB.
Daher können alle Temperaturwerte 00 00 oder --- sein.
Falls das zu Störungen/Fehlermeldungen führt, kannst du die TempFühler mit entspr Widerständen imitieren bzw Temps vorgaukeln, habe ich hier bei mir auch so gemacht. Beim RVA kamen teilweise noch die 'Exoten' NI1000 zum Einsatz (später dann nur noch NTC1k für AT und ansonsten meist NTC 10k für Speicher etc), da müsstest du nochmal bei Fühlerwerttabellen gucken, welche Widerstandswerte welchen Temps entsprechen.
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Andreas29

Hi,

mal zwei Rückmeldungen zu älteren Diskussionen zwischendurch:

Das originale LAN-Shield V2 (das ist das derzeit aktuelle) läuft bisher absolut stabil. Das shield ist nun seit knapp zwei Monaten im Dauerbetrieb an BSB-LAN und im Gegensatz zu meinem Clone-Shield welches in einer solchen Zeit mindestens ein bis zwei Ausfälle gehabt hat hat das originale Shield bisher klaglos seinen Dienst versehen.

Die Energiemengenmessung meiner Therme die bei mir völlig daneben rechnete läuft nun ziemlich zuverlässig. Genau genommen muss ich noch einen Ausgleichsfaktor von 1,06 parametrieren, dieser ist aber nun nach einiger Zeit des Beobachtens und Vergleichens Konstant. Ausschlaggebend sind zwei Parameter bei meinem Regler (LMS14). Hier hat mich MHG (der Hersteller der Therme) entsprechend (per mail) unterstützt.

Die angepasste custom.h mit der Auswertung der MAX!-Thermostate (bei mir sind es sieben) und der Übermittlung der Soll-Ist Werte läuft zuverlässig. Der Heizkomfort und auch die Bedienung ist über die MAX!-Thermostate einfach, meine Familie ist begeistert.

Grüße

Andreas 

Schotty

Super, danke für die Rückmeldung @Andreas29. Dann lohnt sich der Aufpreis des originalen Shields wohl doch u.U... ;)
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

uriel2006

ZitatFalls das zu Störungen/Fehlermeldungen führt, kannst du die TempFühler mit entspr Widerständen imitieren bzw Temps vorgaukeln

Ja hab ich gleich mal behoben und ein paar Wiederstände angeschlossen. alle Fehlermeldungen sind weg.
Dabei hab ich gleich mal die Zeile ausgewertet.
{0x053D006B,  CAT_FEHLER,           VT_UNKNOWN,       6701,  STR10200, 0,                    NULL,         FL_RONLY,     DEV_ALL}, // Brute force detected Command ID, data payload on LMU74.100A136: 00 00 / same on RVS43.222 // first byte error code, second byte FA Phase?
78 10 06 00 0C 02 00 14 07 05 3D 00 6B 00 00 F2 72 (keine Fehler)
78 10 06 00 0C 02 00 14 07 05 3D 00 6B A0 06 F2 72 (Aussentemperatur-Fühler)
78 10 06 00 0C 02 00 14 07 05 3D 00 6B 14 09 F2 72 (Kesseltemperatur-Fühler)
für das vorletzte byte habe ich folgende Tabelle:
Vom Bus Anzeige auf Display

00 Leer Kein Fehler
A0 10 Aussentemperatur-Fühler
14 20 Kesseltemperatur-Fühler
1C 28 Abgastemperatur-Fühler
1E 30 Vorlauftemperatur-Fühler
28 40 Rücklauftemperatur-Fühler
32 50 Brauchwassertemperatur-Fühler an B3
34 52 Brauchwassertemperatur-Fühler an B31
3A 58 Brauchwasserthermostat
3D 61 Störung Raumgerät
3E 62 Falsches Raumgerät
46 70 Pufferspeichertemperatur-Fühler B4
47 71 Pufferspeichertemperatur-Fühler B41
49 73 Kollektortemperatur-Fühler
51 81 LPB-Kurzschluss
52 82 Adresskollision auf dem LPB (mehrmals gleiche Adresse)
56 86 PPS-Kurzschluss
64 100 Zwei Uhrzeitmaster vorhanden
8C 140 Unzulässige LPB-Geräte- oder Segmentnummer
92 146 Unzulässige Anlagenkonfiguration
96 150 Allg. Fehler BMU
A2 162 Fehler H2-Kontakt


das letzte Byte ist glaube der Alarmausgang. da bin ich mir aber nicht sicher.

cu.