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

Schotty

Zwischendurch mal kurz etwas ganz anderes:
Ich habe ja mittlerweile auch eine englische Version des Handbuchs erstellt (bin aber noch nicht ganz fertig), Link s.u. in meiner Signatur. Im Zuge dessen habe ich auch bei der deutschen Version nicht nur das Layout der GitHub-Pages geändert, sondern auch inhaltlich einiges erweitert/geändert/umgestellt (ist aber auch noch nicht komplett fertig ;) ).

In Zukunft werde ich mich auf die Pflege der GitHub-Pages konzentrieren, die bisherige PDF-Version wird dabei durch eine aus den GitHub-Pages erstellte PDF-Version ersetzt. Sieht zwar nicht so gut aus, aber irgendwo muss ich leider Kompromisse machen..

Bei der 'generierten' PDF-Version funktionieren aber leider relative Links nicht (vom Inhaltsverzeichnis aus zu Unterkapiteln und Querverweise innerhalb des Dokuments), was den Lesekomfort natürlich einschränkt.
Falls hier ein Programmierexperte eine Lösung für das Problem hat, ich habe gerade hier einen Thread dazu eröffnet: https://forum.fhem.de/index.php/topic,106850.0.html

Danke & Gruß
 
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

freetz

@Schotty: Sorry, da fällt mir leider nichts zu ein :(...

Wegen der Readings: Ich würde in Zukunft das Auswerten via RegEx sowieso vermeiden, denn seit es den JSON-Export gibt, kann man über HTTPMOD die JSON-Struktur sehr einfach auswerten, in dem man als URL bei HTTPMOD folgendes angibt:
http://192.168.178.88/JQ=X,Y,Z
wobei X, Y, Z usw. dann für Parameternummern wie z.B. 700, 8700 usw. stehen.

Dann kann man es entweder ganz einfach machen und als einziges Attribut
extractAllJSON 1

setzen, um alle übertragenen JSON-Daten der abgefragten Parameter als Readings anzeigen zu lassen.

Oder, wenn man es etwas "aufgeräumter" haben möchte, dann legt man pro Parameternummer X zwei Attribute an:
reading01JSON X_value
reading01Name Klartextname

Statt X und Klartextname dann natürlich die Nummer bzw. den Namen des Parameters eintragen, wie man ihn gerne angezeigt haben möchte. Man kann das reading01Name auch weglassen, dann wird als Name X_value angezeigt. Das 01 in reading01... muss man dann natürlich pro Parameter um eins erhöhen.

Der Vorteil bei beiden Varianten ist, dass man sich bei Änderungen der Webseitenstruktur (die ich zwar versuche zu vermeiden) nicht um eine Anpassung der RegEx kümmern muss. Vor allem ist es aber für bisher ungeübte Nutzer einfacher, zu verstehen, wie die Werte in FHEM kommen, wenn sie bisher noch nicht mit RegEx in Berührung gekommen sind.
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

Schotty

Das Beispiel liest sich gut, ich werde die Beschreibung mal 1:1 so ins Handbuch übernehmen (ist doch 'verständlich' für Einsteiger, oder..?).
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

freetz

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

Maista

Moin,

mit JSON hab ich nun noch gar nix zu tun gehabt. Aber gelesen im Wiki das man hier einfacher an die Daten kommt.
Angeschaut hatte ich das in der Doku, aber per HTML kam mir das erst mal einfacher vor ;)

Mal sehen ob ich da durch blicke.

Danke @freetz für den Schubs. Das Modul von justme1968 nutzt das meine ich ja selbst.

Gruss Gerd

postman

Hallo zusammen,
Zitat von: Maista am 30 Dezember 2019, 11:16:33

Dein Attribut hat aber als Name noch das ".*"  mitbekommen. Ist das so gewollt?

Ja, ist es, mit den User-Attribut readingRegex0xxx funktionierte das bei mir nicht zufriedenstellend. Also habe ich einfach das Attribut aus der vorhandenen Liste genommen, ohne ein readingRegex neu zu definieren.
Es wird beim Anlegen eines HTTPMOD eben nur das readingRegex.* unter Attributen angeboten (das reicht mir so  ::)). Da ich bei den HTTPMOD immer nur einen Parameter abfrage, ist es wohl auch ok so. Alle Parameter auf einmal abfragen, war mir zu kompliziert (habe ich mit dem BSB-Modul probiert, da werden dann nur die Ziffern vor den Statustexten ausgegeben. Fand ich nicht so gut). Vor allen, da die Paramter ja verschiedene Werte (mal Text, wie bei Parameter 700, mal % oder Temp °C oder Drehzahl oder wie bei der Wartung Monate  ;)) ausgegeben werden.
Gruß Uwe


Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

Maista

@freetz

Wie sieht den der String aus der gesendet werden muss? Ich habe gerade den Arduino ins Nirvana geschickt und musste Spannung zum wiederbeleben ziehen.

Ist das
http://192.168.178.89/JS={"Parameter":"700", "Value":"1", "Type":"1"}

oder

http://192.168.178.89/JS{"Parameter":"700", "Value":"1", "Type":"1"}

Den genauen Befehlssatz zum Senden erschliesst sich mir aus der Doku leider nicht :(

Danke und Gruss Gerd

Maista

@postman

ZitatJa, ist es, mit den User-Attribut readingRegex0xxx funktionierte das bei mir nicht zufriedenstellend. Also habe ich einfach das Attribut aus der vorhandenen Liste genommen, ohne ein readingRegex neu zu definieren.

Wie man sich das Sinnvoll aus dem Drop-Down-Menue zusammen stellen soll erschließt sich mir bis heute nicht.
Aber ich meine das deine Attribut-Benennung mit den ".*" nur als Platzhalter und nicht als wirklicher Name gedacht war ;)
Aber Du kannst das ja alles über das Menü "RAW definition" eingeben.
@frank hat zum. bestätigt das deine Benennung nicht mehr aktuell ist ;)
Bein Berechnen stören Einheiten, aber zum Glück kann man in FHEM alles nach belieben machen, sofern man weis wie  ;D

So lange es funktioniert und man keine Musse das anders zu machen ist ja auch ok.

Gruss Gerd

Maista

#4178
Mit

http://192.168.178.88/JS{"Parameter":"700", "Value":"1", "Type":"1"}

Mein Ersatz-Arduino meldet in der Konsole dann das hier

Setting parameter 0 to ⸮O with type 0
Too few/many arguments for date/time!


Da musste ich auch wieder den Stecker ziehen ;)

Gruss Gerd

Maista

#4179

Edit
Funktioniert nun, siehe Folge Post
Gerd

Maista

#4180
Jetzt scheint es zu funktionieren :=)

defmod LMS14_1 HTTPMOD http://192.168.178.88/JQ=8700,8314,700,8000,6100 0
attr LMS14_1 userattr readingOExpr set01Data set01Hint set01IMap set01Max set01Min set01Name set01URL setHeader1
attr LMS14_1 comment Dient zum setzen der Betriebsart der BSB mit JSON, Holt Daten per JSON ab
attr LMS14_1 disable 0
attr LMS14_1 enableControlSet 1
attr LMS14_1 event-on-change-reading .*
attr LMS14_1 extractAllJSON 1
attr LMS14_1 group BSB
attr LMS14_1 readingOExpr $val=~s/[\r\n]//g;;$val
attr LMS14_1 room 0-Heizung,BSB,IO-HW->BSB
attr LMS14_1 set01Data {"Parameter":"700", "Value":"$val", "Type":"1"}
attr LMS14_1 set01IMap 0:Schutzbetrieb, 1:Automatik, 2:Reduziert, 3:Komfort
attr LMS14_1 set01Name Betriebsart
attr LMS14_1 set01URL http://192.168.178.89/JS
attr LMS14_1 setHeader1 Content-Type: application/json
attr LMS14_1 showError 1
attr LMS14_1 showMatched 1
attr LMS14_1 stateFormat 700_name = 700_desc > 8000_desc
attr LMS14_1 timeout 5
attr LMS14_1 verbose 5


Gab vermutlich ein Timeout weil das BSB-Modul Daten abgeholt hatte.
Und "JS" steht nun hinter der URL.

Edit:
attr LMS14_1 set01Hint 0,1,2,3
attr LMS14_1 set01Max 3
attr LMS14_1 set01Min 0

Entfernt und "set01IMap" eingefügt.

Gruss Gerd

Schotty

Männer, ich muss zugeben, ich bin leicht verwirrt.. Daher wäre es toll, wenn mir jemand (freetz?) bei Gelegenheit (eilt nicht) nochmal ein komplettes Beispiel für's Handbuch geben könnte, welches man per copy&paste dann einfach anpassen kann.. ;)
DANKE!
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

freetz

@Schotty: Also mein Beispiel kannst Du wie gesagt c&p übernehmen - das bezieht sich aber wohlgemerkt nur auf das Auslesen von Werten!

@Maista: Was Du da mit dem Setzen und /JS machst, verstehe ich z.T. nicht, aber es kann letztlich auch nicht funktionieren, denn /JS erwartet die JSON-Struktur mit den nötigen Parametern als HTTP-POST Request, den kann man nicht über eine URL-Zeile erzeugen. Für das Setzen macht JSON wenig Sinn, wenn man nicht eine andere Software verwendet, die das so unterstützt/erwartet. Da wird ja auch nichts geparst oder so, insofern bleibt für das Setzen per URL weiterhin /S der zentrale Aufruf, und das kann im Handbuch so bleiben, wie bisher.
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

Maista

#4183
@freetz
Ähm..HTTPMOD kann auch via JSON Daten setzen. Siehe letzte Post von mir.

Siehe auch
https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_define_a_set_command_and_send_data_to_a_device

Mein Beispiel Probiert?

freetz

Ich hatte mich auf Deinen ersten Post bezogen, wo Du schriebst, dass es nicht geht, und erst jetzt gesehen, dass da noch mehr dazu gehört - dass man Post Requests so erstellen kann, wusste ich nicht, aber ich sehe nicht so richtig den Vorteil gegenüber /S, denn die Struktur ist ja schon um einiges umfangreicher und schwerer zu lesen, oder?
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