Arduino Raumgerät "light" für BSB-LAN-Adapter gesteuerte Heizungen

Begonnen von Andreas29, 08 Oktober 2018, 09:09:49

Vorheriges Thema - Nächstes Thema

Andreas29

Moin,

für meine Heizung, die mittels BSB-LAN-Adapter ans heimische Netzwerk angebunden ist habe ich mir basierend auf einem Arduino Uno eine Art Raumgerät "light" gebaut und programmiert.
Auf einem 4 x 20 LCD werden Betriebsstatus der Heizung, Fehlerstatus sowie die aktuellen Daten eines Temperatursensors angezeigt. Die Temperaturdaten werden alle 20 sec über LAN zur Heizung gesendet.
Weiterhin habe ich einen Taster, der die Präsenzfunktion simuliert (die Regelung akzeptiert nicht den Parameter zum setzen der Präsenztaste). Bei Betätigung des Tasters wird (unter bestimmten Bedingungen) die Heizung in den Komfortbetrieb gesetzt und bei erneuter Betätigung wieder zurück in den Automatikbetrieb geschaltet. Vergisst man dies wird die Heizung nach ca. zwei Stunden automatisch zurück in Automatikbetrieb geschaltet.

Wie gesagt, Kommunikation über LAN, lässt sich aber auch auf WLAN adaptieren. Das Arduino-Modell ist wohl auch variabel.

Sketch im Anhang.
Schaltplan mache ich mal bei Gelegenheit und wenn Interesse besteht.

Grüße

Andreas

Schotty

Zitat von: Andreas29 am 08 Oktober 2018, 09:09:49
Schaltplan mache ich mal bei Gelegenheit und wenn Interesse besteht.
Moin Andreas,
also das klingt wirklich gut, das würde ich gerne mal nachbauen - an einem Schaltplan, einer genauen Teileliste und generell mehr Infos besteht also auf jeden Fall Interesse! :D
Kannst du bei Gelegenheit auch mal ein oder zwei Bilder mit reinstellen?
Wenn optional noch die Verwendung eines ESP oder Wemos statt Ardu&LAN-Shield möglich wäre, dann könnte man ja so einige Raumgeräte basteln..hmmm...  8)
Gruß
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Andreas29

#2
Hi,

anbei zwei Bilder und ein Schaltplan.
Bei den Anschlüssen für LCD und Temperatursensor sind die Bezeichnungen wichtig, nicht die Nummerierung, die ist möglicherweise nicht richtig.
DAs Ethernetshield habe ich mir jetzt in der Darstellung gespart.
Der Taster ist zusätzlich mittels eines 100 kohm Widerstand als "pull-down" Widerstand gegen Masse geschaltet, so wird der Arduinoeingang mit einem definiertem Potential beaufschlagt, 0 ist dann 0V und 1 ist 5 V ohne den Widerstand kann es undefinierte Schaltzustände geben.

Man braucht noch mehrere zusätzliche Bibliotheken.
Die für den Temperatursensor ist bereits standartmäßig installiert.
Man braucht eine passende für die LCD-Anzeige. Die von mir verwendete LCD Anzeige wird über I2C angesteuert, verwendet habe ich dazu eine Bibliothek von hier: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads/ (die neueste).

Zusätzlich gibt es eine Bibliothek "TextFinder", diese findet man auf der Arduino-Seite mit der Suche oder hier: https://playground.arduino.cc/Code/TextFinder

Die Bibliotheken muss man installieren, dann den Sketch öffnen und IP-Adressen anpassen. Auch kann man natürlich den Korrekturwert für den Temperatursensor oder die Werte in den Zeitschleifen anpassen.

Dann auf den Arduino hochladen. Dann sollte eine Verbindung zur Heizung (bzw. zum BSB-LAN-Adapter) aufgebaut werden können und die Infos werden von der Heizung geholt und der Temperaturwert zur Heizung gesendet. Es ist KEIN Thermostat (das wollte ich so nicht) sondern es wird nur der Temperaturwert zur Heizung gesendet und dort im Regler unter Parameter 750 Raumeinfluss verwurstet.

Mit der Taste kann man die Heizung auf Komfortbetrieb (also heizen auf die Tagesraumtemperatur) schalten. Das bleibt solange man ein zweites mal die Taste betätigt oder nach ca. zwei Stunden automatisch, wenn man die Taste vergisst. Dann wird die Heizung zurück in den Automatikbetrieb geschaltet.
Zusätzlich gibt es noch ein paar Bedingungen, so schaltet die Heizung im Sommerbetrieb oder bei "TagesEco" nicht in den Heizbetrieb, oder wenn die Heizung sowieso im Automaikmodus im Komforbetrieb ist, auch dann nicht.

Sollte die Heizung einen Fehlercode senden so wird dies angezeigt (statt Heizung OK steht dann dort eben "Fehler") und als Status werden Sonne, Mond oder Schneeflocke für Komfort, Nachtabsenkung oder Frostschutz sowie zusätzlich Sommerbetrieb oder TagesEco angezeigt.

Teile:
Arduino Uno oder ähnlich
Ethernet Shield, ich verwendete dieses https://eckstein-shop.de/HIMALAYA-basic-w5100-Ethernet-Shield-fuer-Arduino
Temperatursensor DHT22, hier habe ich diesen: https://eckstein-shop.de/DHT22-AM2302-Digital-Temperatur-Feuchtigkeit-Sensor-Modul-Arduino-Raspberry-Pi
LCD-Display war ein I2C 4x20 Display ich nahm dieses: https://eckstein-shop.de/Character-20x4-LCD-Display-Module-2004-White-on-Blue-5V-I2C-Interface-HD44780
Mit dem Laden habe ich keine Verbindungen, ich hatte nur dort bestellt.
Taster und Widerstand aus der Bastelkiste.

Ich habe mir mal probehalber ein kleines Tft-Display bestellt, mit dem muss ich aber noch ein bisschen rumprobieren.

Ich habe aus verschiedenen gründen kein WLAN-Modul verwendet, aber eine Adaption für Arduinos mit WLAN-Modul ist grundsätzlich möglich. Man kann das dann so übernehmen, muss nur den Teil zum Aufbau der WLAN-Verbindung hinzufügen.

Grüße

Andreas

Schotty

Klasse, vielen Dank!

Wärst du damit einverstanden, wenn ich dein Projekt im BSB-LAN-Handbuch mit Hinweis auf diesen Thread erwähne? Nicht jeder liest hier im Forum mit, meist reicht das Handbuch als Informationsquelle und ich könnte mir vorstellen, dass es sicherlich der eine oder andere Nutzer ganz gut gebrauchen kann, zumal die Präsenztaste ja bei mehreren OEM-Reglermodellen keine Wirkung zu zeigen scheint.

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

Andreas29

#4
Hi,

ja klar, ist ja alles open source und wenn man was beitragen kann und davon dann andere user einen Nutzen haben ist doch gut.

Ich kann aber keine Garantie für irgendwas übernehmen.  :D

Bei mir läuft das alles wie beschrieben. Ich bin nicht der Arduino-Nerd (habe erst ein paar Programme "Erfahrung") aber ein ganz klein bisschen muss man schon die Arduino-Welt verstehen (z.B. um die Bibliotheken einzubinden). Aber man braucht m.M. nach keine Megaerfahrung um solch ein Teil an´s laufen zu bekommen.

Da die Regler und Parameter bei den diversen Heizungsmodellen gleich sind, sollte also bei allen Heizungen die den LVM14-Regler von Siemens nutzen und mit dem BSB-LAN-Adapter bereits ans heimische Netz angebunden sind die Funktion gegeben sein.

Viel Spaß beim Nachbauen.
Würde mich über Rückmeldungen dazu freuen.

Noch ein Hinweis: Je nachdem an welcher Stelle der Arduino gerade im Programm ist kann es ein paar Sekunden dauern bis er auf die Taste reagiert.
Das habe ich ihm noch nicht abgewöhnen können.
Hinweis zwei: Je nachdem wie man die Spannungsversorgung realisiert kann es bei Betätigung des Tasters zu seltsamen kurzfristigen zusätzlichen Sonderzeichen auf der Anzeige kommen.
Die stören nicht die Funktionalität, sind nur Optik.
Ob hier noch ein höherer Wert für den Pull-Down Widerstand oder noch eine etwas andere Verschaltung nötig ist, daran experimentiere ich noch rum.
Allerdings ist der Störfaktor derzeit nicht soo groß und meine Zeit begrenzt.

Ach so, da fällt mich noch etwas ein:
In der BSB-LAN-Adapter-Konfigurationsdatei muss man die Parameter auf "Schreibbar" setzen. Das Raumgerät "light" kommuniziert ja über diesen Adapter mit der Heizung und will ggf. ja Parameter der Heizungsregelung ändern können.

Grüße

Andreas

Schotty

Super, dann werde ich das demnächst mal mit reinnehmen. Sollte bei eigtl. allen (ISRplus-)Reglern entsprechend funzen, nicht nur LMS14..  ;)

Ich habe leider nicht wirklich Programmierkenntnisse, sonst hätte ich neben der optionalen WLAN-Möglichkeit noch ein oder zwei Ideen, die ich mit einbringen würde - bspw. 1.) optional auch DS18B20-Verwendung statt DHT22 und 2.) die Verwendung ohne Übermittlung der gemessenen Raumtemp an den Heizungsregler und somit auch ohne Raumeinfluss, also quasi nur als 'reine' Status-Anzeige und Betriebsartumschaltung/Präsenztaste.
Aber wenn ich mal ausreichend Zeit und Motivation habe, werde ich mich vielleicht mal dran versuchen, das im Skript umzusetzen - ich bin da zwar skeptisch, ob ich das hinbekomme, aber mal sehen.. ;)

Kann das mit der Verzögerung vielleicht auch daher kommen, dass BSB-LAN und/oder der Regler selbst evtl gerade mit einem anderen Befehl beschäftigt ist? Finde ich persönlich jetzt aber auch nicht so schlimm - Hauptsache, es funzt generell :)
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Andreas29

Hi,

da ich mich bemüht habe das Programm mit Unterprogrammen zu strukturieren braucht man nur den Aufruf zur Unterroutine SendeTemp auszukommentieren und die Subroutine SendeTemp ebenfalls oder ganz weglassen. Tataa schon wird die Raumtemperatur nicht mehr gesendet.  :D

Aber selbst wenn die Raumtemperatur gesendet wird. Diese hat erst dann eine Funktion, wenn man im Regler den Parameter 750 auf einen entsprechenden %Wert setzt. Bei 0 oder -- hat die Raumtemperatur null Einfluss.

Zum Temperatursensor: Ja, wenn man einen anderen nimmt muss man ggf. die Bibliothek anpassen (relativ am Anfang vom scribt) und evt., wenn die Datenübermittlung anders ist, das Auslesen auch. Aber mit einem DS18 hatte ich mich noch nicht beschäftigt.

Die Verzögerung bei der Taste kommt meist wenn das Teil gerade über LAN mit dem LAN-Adapter kommuniziert. Bei dem Frage/Antwortspiel ist der Arduino ziemlich beschäftigt, auch weil er ja die Antworten nach bestimmten Schlüsselzeichen durchsucht  :D
Aber für den Hausgebrauch....reicht´s  ;)

Grüße

Andreas

Schotty

Zitat von: Andreas29 am 08 Oktober 2018, 14:38:27
da ich mich bemüht habe das Programm mit Unterprogrammen zu strukturieren braucht man nur den Aufruf zur Unterroutine SendeTemp auszukommentieren und die Subroutine SendeTemp ebenfalls oder ganz weglassen. Tataa schon wird die Raumtemperatur nicht mehr gesendet.  :D
Super  :D

Zitat
Aber selbst wenn die Raumtemperatur gesendet wird. Diese hat erst dann eine Funktion, wenn man im Regler den Parameter 750 auf einen entsprechenden %Wert setzt. Bei 0 oder -- hat die Raumtemperatur null Einfluss.
Ja, das ist klar - aber u.U. hat man den Parameter zwar für ein anderes Raumgerät gesetzt, möchte aber bei deiner Fernbedien-Möglichkeit den Raumeinfluss nicht nutzen.. ;)
Oder man nutzt ihn generell nicht - mache ich bei meiner eigenen Heizung trotz vorhandenem Raumgerät auch nicht, da nutze ich eine feste Hysterese.

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

Andreas29

Hi,

ok, kann ich nachvollziehen.

Ich habe gerade mal alles bezüglich Temperaturanzeige, -Sendung und Senorik rausgenommen.
Der Sketch sieht dann so aus wie im Anhang. Ist aber nicht getestet  :o
Kompilieren geht ohne Fehlermeldung.

Man kann ja auch noch z.B. um einen Drehtaster oder zwei Taster + / - ergänzen um den Raumsollwert zu ändern.
Möglichkeiten gibt es so einige.
Da ich aber meine Familie kenne, habe ich bewusst keine weiteren Stellmöglichkeiten geschaffen  ;)

Grüße

Andreas

Gizmo_the_great

Ich finde es wirklich super das rund um das Thema BSB-LAN immer wieder weiter getüftelt und entwickelt wird.
Auch nochmal ein Riesenlob an Freetz und Schotty!

Ich habe meinen Raumfühler über einen Wemos D1 mini mit einem DHT22 realisiert.
Auf dem Wemos läuft ESPeasy.
In den Rules habe ich folgendes definiert:

//////////////

On System#Boot do    //When the ESP boots, do
SendToHTTP 192.168.178.11,80,/Passcode/I10000=[DHT#temperature]
  timerSet,1,45      //Set Timer 1 for the next event in 45 seconds
endon

On Rules#Timer=1 do  //When Timer1 expires, do
SendToHTTP 192.168.178.11,80,/Passcode/I10000=[DHT#temperature]
  timerSet,1,45       //Resets the Timer 1 for another 45 seconds
endon

////////////

Über ein OLED SSD1306 wird auch die aktuelle Temperatur von HK1 und HK2 angezeigt.


Grüße

Gizmo_the_great


Gesendet von iPad mit Tapatalk Pro
FHEM unter Debian auf RK3188, Homebridge, Apple TV3, Wemos D1 mini mit ESPeasy als RF433MHz-Transmitter, Raumsensor und OLED, Wemos D1 als Klingelsensor per Pushnachricht inkl. Remoteklingel-Funktion, Heizungsregelung Brötje WGB S und ISR SSR C mit BSB_Lan

Schotty

Zitat von: Andreas29 am 10 Oktober 2018, 11:03:54
Ich habe gerade mal alles bezüglich Temperaturanzeige, -Sendung und Senorik rausgenommen.
Der Sketch sieht dann so aus wie im Anhang. Ist aber nicht getestet  :o
Oh cool, danke! Dann kann ich die beiden Versionen ja gut vergleichen und sehe besser, wo was wofür ist. Prinzipiell finde ich die Tempanzeige schon gut, nur eben nicht zwingend mit Übermittlung. Mal sehen, bei Gelegenheit werde ich da mal dran gehen und auch versuchen, WLAN und einen DS18B20er zum Laufen zu bringen.  ;)
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Schotty

Zitat von: Gizmo_the_great am 10 Oktober 2018, 18:04:15
Ich finde es wirklich super das rund um das Thema BSB-LAN immer wieder weiter getüftelt und entwickelt wird.
Auch nochmal ein Riesenlob an Freetz und Schotty!
Hi Gizmo,
ja finde ich auch super - und wenn die Nutzer dann noch ihre individuellen Lösungen reinstellen, so wie Ihr jetzt mit Euren 'Raumgeräten', dann freut es mich umso mehr und es macht umso mehr Spaß  :D
Danke für's Lob ;)

Zitat
Ich habe meinen Raumfühler über einen Wemos D1 mini mit einem DHT22 realisiert.
Auf dem Wemos läuft ESPeasy.
In den Rules habe ich folgendes definiert:

//////////////

On System#Boot do    //When the ESP boots, do
SendToHTTP 192.168.178.11,80,/Passcode/I10000=[DHT#temperature]
  timerSet,1,45      //Set Timer 1 for the next event in 45 seconds
endon

On Rules#Timer=1 do  //When Timer1 expires, do
SendToHTTP 192.168.178.11,80,/Passcode/I10000=[DHT#temperature]
  timerSet,1,45       //Resets the Timer 1 for another 45 seconds
endon

////////////

Über ein OLED SSD1306 wird auch die aktuelle Temperatur von HK1 und HK2 angezeigt.
Hast du da noch Genaueres? Schaltplan oder sonstwas, was für einen Nachbau nötig/hilfreich/interessant wäre?
Auch deine Lösung würde ich gerne mit ins Handbuch reinnehmen, wenns dir recht ist.

Ich glaube, ich werde mal ein extra Kapitel machen, wo so individuelle Lösungen und Bastelprojekte bzgl BSB-LAN mit aufgeführt werden. Das kann für den einen oder anderen echt hilfreich und inspirierend sein! Wenn es mehr wird, könnte ich ja vielleicht auch bei GitHub beim Handbuch eine kleine Sammlung solcher Projekte mit reinstellen? ;)
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Andreas29

Hi,

@Schotty: Anbei Sketch mit Anzeige der Sensortemperatur (am Arduino angeschlossener Sensor (hier DHT22)) am LCD aber ohne Sendung zur Heizung.

Jetzt ist nur die Unterroutine SendeTemp und der Aufruf dazu verschwunden.

Wie gesagt, das ist beliebig umstellbar, man braucht nur die passende Unterroutine wegnehmen. Die eigentliche Hauptschleife holt sich nur die diversen Informationen und wertet die aus und setzt diverse Variablen als Merker.
Man hätte dieses Informationssammeln auch noch in Unterroutinen packen können, dann wäre es noch strukturierter.
Ich hatte mir aber zugegebenermaßen den sketch so aus den Ärmel in den Rechner geschüttelt ohne mir vorher irgendwelche Aufzeichnungen über Programmstrukturen zu machen, so sind diese Aktionen eben in der Hauptroutine gelandet und das andere habe ich dann in Unterroutinen gepackt.

Grüße

Andreas

Schotty

Zitat von: Andreas29 am 10 Oktober 2018, 20:53:47
@Schotty: Anbei Sketch mit Anzeige der Sensortemperatur (am Arduino angeschlossener Sensor (hier DHT22)) am LCD aber ohne Sendung zur Heizung.
Hi Andreas, das ist sehr nett von dir, vielen Dank!  :D
Handbuch zur BSB-LAN Hard- & Software (Anbindung v. Heizungsreglern, u.a. von Brötje & Elco):
https://1coderookie.github.io/BSB-LPB-LAN/

Gizmo_the_great

Hi,
ich erstelle gerade eine Doku über meine Automatisierung.
Die Raumfühler sind noch auf dem Status Quick'n'Dirty zusammen geklöppelt.
Kein Gehäuse, Kabelbinder, also nicht fotogen...

Sobald ich etwas habe was ich euch präsentieren kann, berichte ich darüber.

Greetz und schönen Sonntag

Gizmo


Gesendet von iPhone mit Tapatalk Pro
FHEM unter Debian auf RK3188, Homebridge, Apple TV3, Wemos D1 mini mit ESPeasy als RF433MHz-Transmitter, Raumsensor und OLED, Wemos D1 als Klingelsensor per Pushnachricht inkl. Remoteklingel-Funktion, Heizungsregelung Brötje WGB S und ISR SSR C mit BSB_Lan