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

gero

Zitat von: Schotty am 15 Februar 2016, 13:51:24
1.) Hattest du meine Anmerkung zu den Programmnummern gesehen (http://forum.fhem.de/index.php/topic,29762.msg401946.html#msg401946)? Wie gesagt, weiß nicht, ob das irgendwie relevant ist, aber falls das untergegangen ist..
Sorry. Das ist irgendwie untergegangen. Zur Erklärung: Bei den Zeitprogrammen unterscheidet sich die Bedienung/Anzeige im Bedienteil von der Struktur der wirklich an die Heizung gesendeten Kommandos. In meinem Programmcode entspricht eine Bedienzeile immer einem Kommando. Um keine größeren Klimmzüge machen zu müssen, versuche ich dies beizubehalten. Leider habe ich die Texte nur für HK1 angepasst. In der nächsten  Programmversion, werde ich die restlichen Texte auch noch anpassen.

Zitat von: Schotty am 15 Februar 2016, 13:51:24
2.) Das finde ich eine super Idee! Dann muss man nicht immer den Arduino resetten (steht ja evtl. nicht bei jedem in Reichweite) wenn man mal Werte aufruft, die evtl. bei der eigenen Therme gar nicht vorhanden sind oder wenn die Therme zwecks Wartung mal ausgeschaltet wird.
Ich sammle gerade Verbesserungen für die nächste SW-Version.

Zitat von: Schotty am 15 Februar 2016, 13:51:24
3.) Noch eine Frage zu deinem HTTPMOD-Device, was du als Beispiel angeführt hattest: Die Zeile [ attr ELCOSTATUS readingExpr $val=~s/[\r\n]//g;;$val ] verstehe ich nicht so ganz. Ich hatte bei den Temp-Sensoren readingStatus mit der Werte-Formatierung eingefügt damit mir die Werte angezeigt werden - 'ersetzt' das readingExpr quasi den readingStatus?
Ich stehe gerade etwas auf dem Schlauch: Mit der readingRegEx extrahiere ich den Teil der Antwort, den ich haben will:
z.B.

reading1Name SolarVorlauf
reading1Regex temp\[1\]:[ \t]+([-]?[\d\.]+)

Die readingExpr wird quasi nachträglich angewandt, um die Werte zu evaluieren. Für den Fall der DS18B20 Sensoren, für die ich ein HTTPMOD Device verwende, sieht das bei mir wie folgt aus:

readingExpr {my $oldval=ReadingsVal($name,$_[2],17.0);Log3 NULL,5,"ds18b20 $name: $val $oldval"; if($val==85.0){Log3 NULL,0,"invalid ds18b20 value for $name";$val=$oldval} return $val}

(Es geht mit Sicherheit auch einfacher)
Aber was meinst du mit readingStatus?

Zitat von: Schotty am 15 Februar 2016, 13:51:24
4.) Du hattest mal geschrieben, dass man sich den Bus mit anderen Teilnehmern teilt. Wenn jetzt der Adapter angeschlossen ist und ständig in kurzen Intervallen bestimmte Werte abgefragt werden, kommt es dann eigtl. zu Problemen, wenn man dann an der Therme selbst steht und am verbauten Regler was nachschaut/verändert/einstellt?
Die Kommunikation über BSB ist im Normalfall schnell genug. Ich habe noch nicht versucht z.B. alle verfügbaren Werte abzufragen und gleichzeitig am Bedienteil herumzuspielen.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Schotty

Achso, mir war es nur im Vergleich der Parameter in deinem readme-file mit dem Prog.Handbuch aufgefallen - dann isses ja quasi egal.. ;)

Zitat von: gero am 15 Februar 2016, 15:02:22
Ich stehe gerade etwas auf dem Schlauch: Mit der readingRegEx extrahiere ich den Teil der Antwort, den ich haben will:
z.B.

reading1Name SolarVorlauf
reading1Regex temp\[1\]:[ \t]+([-]?[\d\.]+)

Die readingExpr wird quasi nachträglich angewandt, um die Werte zu evaluieren. Für den Fall der DS18B20 Sensoren, für die ich ein HTTPMOD Device verwende, sieht das bei mir wie folgt aus:

readingExpr {my $oldval=ReadingsVal($name,$_[2],17.0);Log3 NULL,5,"ds18b20 $name: $val $oldval"; if($val==85.0){Log3 NULL,0,"invalid ds18b20 value for $name";$val=$oldval} return $val}

(Es geht mit Sicherheit auch einfacher)
Aber was meinst du mit readingStatus?

Oh verdammt, erst nachgucken, dann schreiben..  ::)
Ich hab was durcheinander gebracht und mich falsch ausgedrückt: Ich meinte 'stateFormat' (nicht readingStatus, totaler Quatsch), damit mir die entsprechenden Werte im Dashboard bei dem Device angezeigt werden (oder geht das auch anders als mit 'stateFormat'?).

Bzgl. DS18B20-Abfrage&Anzeige im Dashboard sah es bei mir so aus:

reading01Name Wohnzimmer
reading01Regex (?s)temp\[1\]..([\d\.]+)
stateFormat {sprintf("%s °C", ReadingsVal($name,"Wohnzimmer",0))}


Aber ich tue mich eh noch ein wenig schwer mit den Kommandos etc. , ist halt nicht ganz so leicht für nen Nicht-Programmierer/blutigen Anfänger  ::)

Wenn der Adapter bei mir funktioniert, werde ich deinen Code erstmal z.T. so probieren und sehen, was dabei herauskommt. Wie gesagt, ich dachte, ich muss ein 'stateFormat' haben, damit mir die Werte im Dashboard auch angezeigt werden.


Bzgl. möglicher Probleme bei der Überschneidung dachte ich an folgendes Beispiel: FHEM/Adapter fragt bspw. alle 10Sek die Kesseltemp ab (wg. Taktverhalten-Monitoring), alle 30Min TWW. Irgendwann stehe ich an der Therme um bspw. Parallelverschiebung, Kennliniensteilheit o.ä. zu verändern und während ich das tue, fragt der Arduino weiterhin munter ab (was er ja auch soll). Unter Umständen kommt es dann dabei ja zu zeitlichen Überschneidungen bzw. gleichzeitiger Anfrage an die Steuerung (z.B. auch der automatischen Abfrage des Arduinos von Kesseltemp und TWW oder eben der automatischen Abfrage und meiner manuellen am Thermenregler) - nicht, dass dann die Steuerung hinüber geht oder so.. (Ich weiß, diesbezüglich bin ich echt ein Schisser.. ;) )

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

Schotty

Als der Adapter angeschlossen war, hatte die LED ja hin und wieder geflackert - hast du eigtl. mal gecheckt, was die Therme da dann so sendet? Evtl. könnte man da ja auch was von abgreifen und könnte FHEM somit bestimmte Abfragen sparen..? Nur noch so ein Gedanke..
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

gero

Zitat von: Schotty am 15 Februar 2016, 16:04:07
Ich hab was durcheinander gebracht und mich falsch ausgedrückt: Ich meinte 'stateFormat' (nicht readingStatus, totaler Quatsch), damit mir die entsprechenden Werte im Dashboard bei dem Device angezeigt werden (oder geht das auch anders als mit 'stateFormat'?).

Bzgl. DS18B20-Abfrage&Anzeige im Dashboard sah es bei mir so aus:

reading01Name Wohnzimmer
reading01Regex (?s)temp\[1\]..([\d\.]+)
stateFormat {sprintf("%s °C", ReadingsVal($name,"Wohnzimmer",0))}


Aber ich tue mich eh noch ein wenig schwer mit den Kommandos etc. , ist halt nicht ganz so leicht für nen Nicht-Programmierer/blutigen Anfänger  ::)
Das Dashboard habe ich vor langer Zeit mal ausprobiert. Zur Zeit verwende ich nur noch Floorplan und readingsGroups. Zum Dashboard kann ich dir also gerade nicht weiterhelfen.
Lassen sich readingsGroups nicht auch im Dashboard  anzeigen?

Zitat von: Schotty am 15 Februar 2016, 16:04:07
Bzgl. möglicher Probleme bei der Überschneidung dachte ich an folgendes Beispiel: FHEM/Adapter fragt bspw. alle 10Sek die Kesseltemp ab (wg. Taktverhalten-Monitoring), alle 30Min TWW. Irgendwann stehe ich an der Therme um bspw. Parallelverschiebung, Kennliniensteilheit o.ä. zu verändern und während ich das tue, fragt der Arduino weiterhin munter ab (was er ja auch soll). Unter Umständen kommt es dann dabei ja zu zeitlichen Überschneidungen bzw. gleichzeitiger Anfrage an die Steuerung (z.B. auch der automatischen Abfrage des Arduinos von Kesseltemp und TWW oder eben der automatischen Abfrage und meiner manuellen am Thermenregler) - nicht, dass dann die Steuerung hinüber geht oder so.. (Ich weiß, diesbezüglich bin ich echt ein Schisser.. ;) )
Ich erwarte keine Probleme. Das Bus-Protokoll ist so ausgelegt, dass jeder Sender erst prüft, ob nicht ein anderer gerade sendet, und ggfls. wartet. Ich bin gerade zu faul, die maximale Sendezeit eines Telegramms auszurechnen. Aber es ist so kurz, dass du keine Verzögerung sehen wirst.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

gero

Zitat von: Schotty am 15 Februar 2016, 16:31:29
Als der Adapter angeschlossen war, hatte die LED ja hin und wieder geflackert - hast du eigtl. mal gecheckt, was die Therme da dann so sendet? Evtl. könnte man da ja auch was von abgreifen und könnte FHEM somit bestimmte Abfragen sparen..? Nur noch so ein Gedanke..
Soweit ich mich erinnere, hat noch niemand diese Broadcast Nachrichten decodiert. Und ich habe mir auch keine Mühe gemacht, da ich jeden Wert auch ohne Probleme abfragen kann. Es wäre aber schon interessant, um z.B. das Ein- und Ausschalten des Brenners quasi in Echtzeit mitzubekommen. Du kannst dich gerne neben deine Heizung setzen, das Display beobachten und gleichzeitig die Daten im Serial Monitor mitschneiden ;) Evtl. findest du einen Zusammenhang zwischen den Nachrichten und den Aktivitäten der Heizung.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Schotty

Zitat von: gero am 15 Februar 2016, 16:48:48
Das Dashboard habe ich vor langer Zeit mal ausprobiert. Zur Zeit verwende ich nur noch Floorplan und readingsGroups. Zum Dashboard kann ich dir also gerade nicht weiterhelfen.
Lassen sich readingsGroups nicht auch im Dashboard  anzeigen?
Das mit den readingsGroups hatte ich nicht hinbekommen, daher hab ich irgendwann nach langem Rumprobieren frustriert jeden einzeln als Device angelegt und schöne Icons zugeordnet.. ;)

Zitat von: gero am 15 Februar 2016, 16:48:48
Ich erwarte keine Probleme. Das Bus-Protokoll ist so ausgelegt, dass jeder Sender erst prüft, ob nicht ein anderer gerade sendet, und ggfls. wartet. Ich bin gerade zu faul, die maximale Sendezeit eines Telegramms auszurechnen. Aber es ist so kurz, dass du keine Verzögerung sehen wirst.
Achso, na dann bin ich beruhigt. Die Verzögerung ist mir egal, wollte nur nochmal nachhaken, ob das keine negativen Auswirkungen auf die Steuerung haben kann. Danke!
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

frank

ZitatSoweit ich mich erinnere, hat noch niemand diese Broadcast Nachrichten decodiert.
bei meiner kamen wohl nur uhrzeit/datum und aussentemperatur.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Schotty

Zitat von: gero am 15 Februar 2016, 16:53:28
Soweit ich mich erinnere, hat noch niemand diese Broadcast Nachrichten decodiert. Und ich habe mir auch keine Mühe gemacht, da ich jeden Wert auch ohne Probleme abfragen kann. Es wäre aber schon interessant, um z.B. das Ein- und Ausschalten des Brenners quasi in Echtzeit mitzubekommen. Du kannst dich gerne neben deine Heizung setzen, das Display beobachten und gleichzeitig die Daten im Serial Monitor mitschneiden ;) Evtl. findest du einen Zusammenhang zwischen den Nachrichten und den Aktivitäten der Heizung.

Ja, das kann ich dann gerne mal machen! Ähm - wenn du mir sagst, wie ich die Daten im Serial Monitor mitschneide und was das eigtl. ist..? *kopfkratz* ::)  - Ich werde mal googeln..  ;)

Oh, laut frank kam/kommt da ja nicht so viel.. :(
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Schotty

Kennt eigtl. jemand das Passwort für die OEM-Ebene? Gerne per PN.. ;)
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

gero

Mit Serial Monitor mehr ich das Terminal Programm der Arduino IDE. Du kannst auch ein anderes Terminal Programm nehmen. Wenn du dann die Monitor Funktionalität über die Weboberfläche aktivierst, solltest du alle Telegramme der Heizung als Hexdump sehen.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

freetz

Hallo zusammen,

Zitat von: gero am 15 Februar 2016, 10:32:51
Ich habe jetzt verschiedene Datenblätter mit verschiedenen Pin-Nummerierungen gefunden. Das einzige, was ich gerade sagen kann/möchte, ist, dass nach dem Umdrehen des Transistors auf Schottys Adapter alles funktioniert. Ich werde mir heute Abend die Schaltung nochmal genauer ansehen, und dann hoffentlich einen korrigierten Schaltplan zur Verfügung stellen.

Da ich vor der letzten Posting-Flut ;-) ja sehr von Eurer aller Mithilfe profitiert habe, hier auch noch mal von mir die Bestätigung, dass ich die Schaltung exakt nach Geros Schaltplan nachgebaut habe, mit besagtem TO-18 (BC107A) Transistor. Funktioniert nach fast einem Jahr immer noch reibungslos :)...

Gero, falls Du noch Verbesserungsvorschläge suchst, hattest Du im letzten Frühjahr eine in Deinen Worten "unschöne" Lösung für den Temperatur-Sensor gefunden (http://forum.fhem.de/index.php/topic,29762.msg286342.html#msg286342). Wie gesagt, das geht so alles prima, nur falls Du da noch mal ran wolltest und es vergessen haben solltest, wollte ich es nur noch mal erwähnen.

Danke auf jeden Fall noch mal für all' Dein Engagement und viele Grüße


F.
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

gero

@freetz: Danke für deine Rückmeldung. Das "unschön" bezog sich nur auf den Programmcode und der muss keinen Schönheitspreis gewinnen. Ich ja kann es mit trotzdem nochmal ansehen.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

freetz

...dann hat das natürlich keine Priorität, ich wusste nur nicht, ob das zukünftigen Erweiterungen o.ä. im Wege stehen könnte, aber wie gesagt: Es läuft seit Monaten ohne Unterbrechung und tadellos :)...
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

gero

Zitat von: frank am 15 Februar 2016, 17:05:47
bei meiner kamen wohl nur uhrzeit/datum und aussentemperatur.
Danke für die Info. Ich frage mich nur, wo die Display-Einheit die Info für die Anzeige des Flammensymbols (Brenner läuft) hernimmt. Zumindest habe ich kein regelmäßiges Polling gesehen.
Odroid C1 - CULV3-868, JeeLink
16 x TX 29 DTH
MAX!: 15x Heizkörperthermostat+, 2x Wandthermostat, 14x Fenserkontakt, 1x Ecotaster
FS20 S4A, FS20IRF, BSB-Heizungssteuerung über Atmega2560
Z-Wave: ZME_UZB1, Fibaro Wall Plug + Motion Sensor

Schotty

Zitat von: gero am 15 Februar 2016, 21:59:15
Danke für die Info. Ich frage mich nur, wo die Display-Einheit die Info für die Anzeige des Flammensymbols (Brenner läuft) hernimmt. Zumindest habe ich kein regelmäßiges Polling gesehen.

..und da ist dann auch schon die nächste Idee (neben Standalone-Logger ;) ) für eine mögliche SW-Erweiterung: Der Anschluss eines Displays zwecks Anzeige best. Werte (z.B. Kesseltemp, TWW-Temp, ...) direkt am Arduino - und dann hast du ein neues RGT erfunden!  ;D
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/