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

Fox

@sust: Ich hab mich an der Version 2 orientiert, aber das ist ja erst mal nicht so wichtig (s.u.). Mich würden aber trotzdem deine Erfahrungen interessieren.

@freetz: Auch deine getesten Platinen werden vermutlich nicht helfen. Vielleicht hab ich das nicht verständlich ausgedrückt. Als letztes hatte ich mit dem Oszi direkt am Arduino TX Pin gemessen und abgesehen von einer steigenden Flanke bei der Initialisierung war kein Signal zu erkennen, d.h. es wurde nichts gesendet. Dabei war natürlich die BSB-Platine nicht gesteckt.

sust

Hallo Fox,

Ob man sich an der V3 oder V2 orientiert ist schon wichtig. Meine Probleme hätte ich mit Orientierung an der V3 nicht gehabt.

Bei der V2 musste ich einen Widerstand von 330K Ohm zwischen Basis und Emitter des Transistors Q1 ( Sendetransistor BC 547) löten.
In der Version 3 ist der Transistor standardmäßig vorgesehen.
Seitdem dem nachlöten läuft der Adapter so wie er soll. 

Wo greifst du die Signale für den Mega am Adapter ab? Nimmst du die für den Pi vorgesehen Ausgänge für die Hardwareserial?

Gruß
Sust

Fox

#4937
Ja ich würde die standard-pi Signale nehmen, aber wie gesagt, ich hab schon am Arduino TX-Pin keine Signale, deshalb ist die gesamte Sendeschaltung erst mal nicht relevant..

Edit: @freetz Was mir gerade noch einfällt und ich nicht so auf Anhieb gefunden hab, ich hatte mir zwischenzeitlich die Telegramme im serial Monitor anzeigen lassen, allerdings hab ich immer nur die Rohdaten gesehen, kann es sein, das die Telegramme erst dann dekodiert werden, wenn die Erkennung der Heizung erfolgreich war?

sust

 
Fox,

Ich verwende auch die V44 mit dem geänderten V2 Adapter. es funktioniert die Softwareserial als auch die Hardwareserial. Je nachdem was man in der config voreinstellt.
Bei dir seh ich , außer dem fehlenden Widerstand,nur 2 Fehlermöglichkeiten: Entweder hast du falsch gelötet oder der Mega Port ist kaputt...

Funktioniert die Softwareserial?


Sust


Fox

An der SoftSerial sehe ich mit dem Oszi immerhin Signale, allerdings hab ich an meiner Platine ja keine passenden Anschlüsse, so das ich das nicht ausprobieren kann.

Aber für meinen aktuellen Fehler kann ich zumindestens den Widerstand und falsch gelötet ausschließen, da ich ja schon ohne Platine keine Signale messen kann. Und den Portdefekt kann ich leider auch nicht so einfach auschließen, da ich keinen zweiten ATMega hab...

sust

Fox,

Ich kann nur das wiedergeben was ich erlebt hab, und wie ich bei diesem Problem vorgehen würde.
Und ich würde bei dem Problem was du schilderst jetzt einen Schritt zurückgehen und die Softwareserial testen.
Die läuft hardwaremäßig ständig parallel neben der Hardwareserial bei mir . Es gibt keine Konflikte deswegen.
Also machen" Doppelbelegungen" nichts negatives.
Wenn ich das richtig verstanden hab läuft die Empfangseite komplett durch den Adapter . Richtig?
Die Sendeseite hast du  prinzipiell auch schon getestet. Oder hab ich das mit dem "Lichtausgehen" wenn du mit dem Oszilloskop Tastkopf testest falsch
verstanden ? Wenn  zu dieser Frage hier kein Ja von dir kommt, funktioniert die Sendeschaltung prinzipiell.... Das ist doch schon mal was.
Ich würde jetzt die Softwareserial durch Draht hinzulöten und/oder Steckbrücken versuchen zu aktivieren....
Allein um ein Erfolgserlebnis zu haben.

Mehr kann ich nicht mehr dazu sagen.

Ich wünsch dir Erfolg. Hat ich nach einiger Zeit auch. Musste mich nur 4 Wochen durchbeißen....
Das System aus Mega+Adapter und BSB_Lan Software läuft seidem 2 Jahre absolut einwandfrei.


  Gruß sust

loetmeister

Zitat von: Fox am 25 November 2020, 07:05:59
Der RX-Pfad scheint auch ganz wunderbar zu funktionieren, da ich gelegentlich auch die Nachrichten zwischen Bedienteil & Kessel sehe. Allerdings bekomme ich ständig nur "query failed" wenn BSB-Lan versucht etwas ab zu fragen (schon beim Start, deshalb erkennt er die Heizung schon gar nicht). Ich bin dann erst mal von einem Lötfehler ausgegangen, konnte aber nichts finden und auch die Spannungen sahen ganz passend aus.
"query failed" kommt auch wenn der Bus nicht frei ist (oder als frei erkannt wird). Bus frei bedeutet es liegt Spannung an. Man kann also ohne Busspannung nix auf TX sehen (da erst RX abgefragt wird).
Um nicht an der Heizung zu experimentieren, hatte ich ca 10..12V über einen 600 Ohm Widerstand an den BSB Adapter gelegt. (die 600 Ohm oder auch etwas mehr, sind wichtig sonst brennt der BC547 auf der Busseite durch :)) )
Ohne Adapter müsste ein pull-up an RX reichen. Dann müsste zumindest auf TX was zu sehen und drei mal der selbe frame gesendet werden.
Gleiches gilt für Softwareserial...

Gruß,
Thomas

Fox

So ich hab jetzt noch mal ein wenig weiter experimentiert... Auch basierend auf den Erkenntnissen von dir @loetmeister. Allerdings kann ich das mit der Bus belegt Erkennung nicht so ganz bestätigen.

Im folgenden der Serial Monitor Mittschnitt vom Versuch eine Sendenachricht zu erwischen:

Size of cmdtbl1: 32334
Size of cmdtbl2: 20825
free RAM:4263
Reading EEPROM...
Starting SD..ok
192.168.178.88
Waiting 3 seconds to give Ethernet shield time to get ready...
query failed
query failed
query failed
query failed
query failed
query failed
Device family: 0
Device variant: 0
10614 DC 8A 00 0B 06 3D 0D 05 19 4F 8C DC 80 0A 0E 07 0D 3D 05 19 00 0A C8 08 04
12217 DC 8A 00 0B 06 3D 0D 05 19 4F 8C
12285 DC 80 0A 0E 07 0D 3D 05 19 00 0A C1 99 2D
22197 DC 8A 00 0B 06 3D 0D 05 19 4F 8C
22265 DC 80 0A 0E 07 0D 3D 05 19 00 0A C1 99 2D
32180 DC 8A 00 0B 06 3D 0D 05 19 4F 8C
32248 DC 80 0A 0E 07 0D 3D 05 19 00 0A BA 56 D1

Das Setup war dabei folgendes:
- SoftSerial (allerdings hierbei in der Datei BSB.cpp bei der Initialisierung der Schnittstelle der dritten Parameter (inverse Logik) von true nach false geändert
- RX verbunden mit der Busplatine
- TX nur am Oszi
- BSB-Bus an der Heizung angeschlossen

So wie ich das sehe hat das Empfangen funktioniert (bspw. die Nachricht mit 10614 am Anfang), daher sollte die Bus belegt Erkennung auch kein Problem haben. Allerdings sehe ich bei diesem Setup keine Sendenachricht auf dem TX-PIN.

Wenn ich den dritten Parameter der SoftSerial wieder auf true setze, so wie es original ist, dann sehe ich am TX-Pin  entsprechende Signal, auch wenn der RX-Pin frei ist.

sust

Dein Listing  Fox  zeigt, das der Sendeteil nicht funktioniert, bei den "Query failed" müsste die Abfrage der der Gerätefamilie und der Geräntevariante erfolgen.
Der Empfang von den Telegrammen des Kessels oder des Bediengerätes sieht alles normal aus., insofern ist dein Mega wohl heil...
Für den Sendepart vermute ich weiterhin einen Fehler im Adapter... Das die Orignalsoftware von freetz bei dir geändert werden muss wenn sie bei 99,9 % aller user "Out of the box" funktionierrt , halte ich für sehr  unwahrscheinlich.

Du schreibst in deiner Mail:
ZitatWenn ich den dritten Parameter der SoftSerial wieder auf true setze, so wie es original ist, dann sehe ich am TX-Pin  entsprechende Signal, auch wenn der RX-Pin frei ist.
Wenn du damit die Anschlusspins Arduino/Adapter meinst, dann steht fest, das dein Arduino ein Sendesignal abgibt. Damit ist dein Mega da wohl auch nicht kaputt.

Du hast ja ein Osziloskop, wenn der am BSB-bus hängt, und du ein TX Signal per Softwareserial sendest (mit nicht geänderter Originalsoftware von freetzt) wird das Signal von 13Volt auf ca. 1 Volt heruntergezogen? Wie ist die Flankensteilheit der Impulse?

Fox

Zitat von: sust am 26 November 2020, 08:50:20
Dein Listing  Fox  zeigt, das der Sendeteil nicht funktioniert, bei den "Query failed" müsste die Abfrage der der Gerätefamilie und der Geräntevariante erfolgen.
Die Testbeschreibung war vielleicht etwas missverständlich, mit "TX am Oszi" war gemeint, das der TX-Pin des Mega direkt am Oszi hing und !NICHT! an der Adapterplatine, deshalb war "query failed" hier auch erwartbar. Das Problem ist aber eher, das ich auf dem TX-Pin vom Mega eben keine Signale sehe (dauerhaft 5V), d.h. egal ob mein Aufbau korrekt ist, oder nicht, auf dem Bus wird nichts passieren.

Zitat von: sust am 26 November 2020, 08:50:20
Der Empfang von den Telegrammen des Kessels oder des Bediengerätes sieht alles normal aus., insofern ist dein Mega wohl heil...
Für den Sendepart vermute ich weiterhin einen Fehler im Adapter... Das die Orignalsoftware von freetz bei dir geändert werden muss wenn sie bei 99,9 % aller user "Out of the box" funktionierrt , halte ich für sehr  unwahrscheinlich.
Hier muss ich dir eindeutig widersprechen. Ich würde es für sehr unwahrscheinlich halten, wenn die Software ungeändert funktionieren würde und zwar aus folgendem Grund: Ich hab mir ja selbst eine Platine gebastelt, nur mit der Verdrahtung für HW-Serial (also mit zusätzlicher Invertierung) und an die Stellen wo die SWSerial angeschlossen werden müsste komme ich nicht so einfach dran, daher hängt die auch an den Anschlüssen für die HW-Serial und dann sind die Signale halt invertiert (bzw. nach der Änderung der Initialisierung müsste es eigentlich passen)

Zitat von: sust am 26 November 2020, 08:50:20
Du schreibst in deiner Mail:Wenn du damit die Anschlusspins Arduino/Adapter meinst, dann steht fest, das dein Arduino ein Sendesignal abgibt. Damit ist dein Mega da wohl auch nicht kaputt.
Ich meinte die Pins am Arduino direkt, ja. Aber das Sendesignal hab ich bisher nur rausgekriegt, wenn ich SoftSerial auswähle und auch die für meinen Aufbau falsche Polarität. Oder anders gesagt, ich hab es noch nicht geschafft sinnvolle Sendesignale zu erzeugen.

Schotty

Zitat von: Fox am 26 November 2020, 10:22:54
Hier muss ich dir eindeutig widersprechen. Ich würde es für sehr unwahrscheinlich halten, wenn die Software ungeändert funktionieren würde und zwar aus folgendem Grund: Ich hab mir ja selbst eine Platine gebastelt, nur mit der Verdrahtung für HW-Serial (also mit zusätzlicher Invertierung) und an die Stellen wo die SWSerial angeschlossen werden müsste komme ich nicht so einfach dran, daher hängt die auch an den Anschlüssen für die HW-Serial und dann sind die Signale halt invertiert (bzw. nach der Änderung der Initialisierung müsste es eigentlich passen)

Hi Fox,
also ich kann mich erinnern, die v2 auch am Mega mit Verwendung der HW-Serial getestet habe. Wenn ich mich recht erinnere, war dazu bei der Originalplatine von freetz eine Komplettbestückung nötig (also RPi-Komponenten mit verlöten), SJ1 (für Ardu) musste weiterhin gesetzt sein, SJ2&SJ3 (für RPi) hingegen nicht. Anschluss Adapter<->Arduino dann an 5V, GND sowie Pin 19(RX) und 18(TX) am Mega.
In der config.h mussten dann entspr die Pins 19/18 anstelle von 68/69 eingestellt werden (somit wurde 'programmintern' wohl die Invertierung des Signals vorgenommen - in meinen laienhaften Worten ausgedrückt, kann also durchaus falsch formuliert sein, ich bin kein Programmierer) - weitere Ein-/Umstellungen an anderen Stellen im Code selbst waren nicht nötig. Damit lief es.

Das Problem hier ist nunmal, dass niemand deine Schaltung kennt, möglicherweise hast du da irgendwo einen Fehler drin. (Btw: Verlötet? Steckbrett-Aufbau? Bei Steckbrettern kommt's auch gerne mal zu Wackelkontakten, da hatten schon einige mit zu kämpfen..)
Wenn du die optionale RPi-Bestückung vorgenommen hast, dann kann da irgendwo der Fehler liegen. Daher meine o.g. Hinweise bzgl SJ1 etc.

Fazit: Dein Einsatz bei der Fehlersuche in allen Ehren, aber investiere die Zeit doch sinnvoller und bau deine Schaltung einfach um bzw komplett neu auf, und zwar nur den Arduino-Teil aus dem Schaltplan im Handbuch. Dort ist extra nochmal der RPi-Teil gesondert markiert dargestellt, vielleicht ist der Schaltplan dann übersichtlicher als die Version, die im schematics-Ordner im Repo dabei ist. Vergiss die RPi-Komponenten und die HW-Serial. Wenn du kein PPS-System nutzt, dann bringt dir HW-Serial im Vergleich zu SW-Serial eh keinen Vorteil (wenn ich mich recht erinnere, war HWS nur bei PPS irgendwie schneller oder so). Bauteile benötigst du dann auch (deutlich) weniger.
Keine-Ahnung-wieviele-User verwenden v2 mit SW-Serial ohne Probleme; SW-Serial war bis auf den Umstieg auf den Due nunmal Standard. v2+HW-Serial kann zwar wie gesagt prinzipiell auch funktionieren, aber dann sollte man schon wissen, was man tut, speziell wenn man nicht die Originalplatine nutzt. Wenn's dann wie bei dir nicht funktioniert: Arduino-Version der v2 nachbauen und dann den Standard mit SW-Serial nutzen. Damit grenzt du zumindest mögliche Fehlerquellen schonmal deutlich ein..

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

sust

Hallo Fox,

Beherzige das was Schotty schrieb und bau den Adapter um oder neu nur mit dem Zugriff auf die Softwareserial.
Das ist einfach übersichtlicher. Wenn das funktioniert kannst du dich immer noch an deinen Wunschadapter Hardwareserial wagen.
Bei der Softwareserialversion der V2 brauchst auf der Arduinoseite nur 2 Widerstände dafür und das wars. 
Bei der Platine von Freetz ist es kein Problem bei bestücktem Raspi/Hardwareserialteil die Softwareserialpins "mittendrin" abzugreifen, wenn aber
ein Fehler in dem Hardwareserialteil bei dir drin ist kann dir kaum aus der Ferne geholfen werden.
Das du dich nur um Die Softwareserialvariante kümmerst war auch mein Anliegen gewesen, aber evtl. war das  etwas zu quer ausgedrückt.


Gruß Sust





Maista

#4947
Moin.

Welche Optokoppler werden den verwendet?
Stand das irgendwo?

Ich hatte damals ja auch Probleme mit meiner eigenen Schaltung und benutzten OK
In dem Artikel hätte ich auch beschrieben wie ich das erst einmal ohne BSB getestet hätte.

Gruß Gerd

freetz

In der jetzt aktuellen Master-Version gibt es eine Veränderung bezüglich der Schreibbarkeit der Parameter:

- Standardeinstellung in der _config.h ist weiterhin, dass das Definement
#define DEFAULT_FLAG FL_RONLY
alle Parameter auf Schreibschutz stellt.
Wer (seit Version 2.0) das auf
#define DEFAULT_FLAG FL_SW_CTL_RONLY
setzt, kann im Webinterface die Einstellung vornehmen, ob die Parameter schreibbar sind oder nicht, ohne dafür neu flashen zu müssen.
Im Webinterface hat sich jetzt allerdings die Einstellung für diesen Parameter geändert, so dass bestehende Nutzer hier einmal neu den Wert einstellen müssen. Hier gibt es nun bei "Write parameters to system" die Einstellungen
"Aus"
"Ein (Engineer)"
und
"Ein (Engineer + OEM)"

Damit ist dann auch ein Schreiben der Parameter möglich, die in der _defs.h als "FL_OEM" gekennzeichnet sind. Hintergrund ist, dass diese Parameter bei unterschiedlichen Herstellern unterschiedlich gekennzeichnet sind und wir da eine einfachere Zugriffsmöglichkeit geben möchten. Da weiterhin auch eine bewusste Änderung in der _config.h nötig ist, kann das auch nicht mal so nebenbei und aus Versehen passieren.

Alternativ ist es weiterhin möglich, die Einstellung
#define DEFAULT_FLAG FL_WRITEABLE
zu verwenden. Damit werden dann alle Parameter auf schreibbar gestellt, die nicht als FL_OEM oder FL_RONLY gekennzeichnet sind. Eine Änderung im Webinterface ist dann nicht möglich.
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

Sorry, erst jetzt die weiteren Beiträge zu dem Problem von Fox gelesen:

Also, wenn Du völlig ohne gesteckte Platine schon am Serial1-TX-Pin mit dem Oszi nichts messen kannst, am RX-Pin aber schon, dann ist ganz einfach Dein TX-Pfad auf dem Mega defekt. Das hat dann logischerweise gar nichts mit der Schaltung oder gar der Version der Platine zu tun. Und SoftwareSerial läuft auf anderen Pins, insofern logisch, dass da dann was zu sehen/messen ist. Nur weil aber dort der Pin geht, muss das nicht heißen, dass andere Pins wodurch auch immer keinen Schaden haben.

Als allererstes würde ich daher den Mega austauschen und dann schauen, ob es klappt - oder, wenn Du HardwareSerial verwendest, gleich auf den Due wechseln.
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