Categories
IoT

#28 – Sind umgebaute Vintage Lautsprecher IoT-Devices?

Ich höre gerne und viel Musik. Daher habe ich auch immer noch eine Stereo-Anlage und betreibe einen Jellyfin Mediaserver auf meinem Docker-Host, der auch meinen IoT-Stack betreibt. Dazu kommt noch ein Faible für Linux und die Raspberry Pi’s.

Kürzlich war ich auf der Suche nach einem DAC für den Raspberry Pi – also einer Art Soundkarte, die die Musikausgabe auf dem Pi Qualitativ verbessert und habe dabei den sog. Hifiberry Beocreate 2.1 gefunden.

Bang und Olufson ist ein bekannter Dänischer Hifi Hersteller, der Geräte mit schickem Skandinavischen Design herausbringt. Von ca. Mitte der 1980er bis Anfang der 2000er Jahre haben dazu auch die Beovox CX50/75/100 Boxen gehört.
B&O hat aber nicht nur neue Produkte im Sinn sondern auch ein Faible für Nachhaltigkeit und Kreativität – https://github.com/bang-olufsen/create – eben den schon erwähnten Beocreate 2.1. …

Ausgangslage

Die Lautsprecher sind 20+ Jahre alt. Entsprechend haben sie Gebrauchsspuren. Kleine Kratzer, Verfärbungen, Abrieb von was auch immer… – Alles in Allem für 20CHF ein schönes kleines Lautsprecherpaar.

Selbst die Fronten sehen okay aus! Nicht umwerfend, aber okay.

Auf dem Weissen Gebäuse prangt ein Altweisser Zierstreifen…

Und der Schaumstoff bei den Tief/Mitteltönern ist durch und muss Ersetzt werden. Bei Audiofriends in den Niederlanden gibt es ein komplettes Set samt Kleber für ein Boxenpaar.

Restauration der Sicken

Auf der Homepage von Audiofriends bzw. YouTube findet man gute Videos, wie man die Reparatur angeht. Es beginnt mit dem vorsichtigen Entfernen des alten Schaumstoffs und des Latexklebers. Irgendwie habe ich nie in Betracht gezogen, dass man defekte Speaker auch reparieren kann. Aber offensichtlich geht es.

Nach einigen Minuten vorsichtigen Kratzens und Aufweichen mit Isopropanol hat man den Dreh raus und nach ca. 20 Minuten sieht die Kalotte so wie auf dem Bild aus und alle Klebereste sind entfernt.

Man beginnt auf der Kalotte und zieht vorsichtig eine Schicht Klebstoff rund um die Kalotte. Darauf drückt man die Schaumstoffsicke rundherum vorsichtig fest. Immer daran denken – das besteht aus Papier und dünnem Schaumstoff! Danach 24 Stunden den Klebstoff abbinden lassen.

Ich konnte bei beiden Lautsprechern den schmalen Ring aus Pappe retten und habe diesen benutzt um die Schaumstoffsicke zu fixieren. Vorsichtig mit einem dünnen stumpfen Werkzeug (Spatel, Eisstil) die Sicke hochklappen und den Klebstoff auf das Chassis aufbringen und danach die Sicke rundherum eindrücken. Dann den Klangtest machen und hören ob die Kalotte zentriert ist oder nicht (ist im Video gut beschrieben).

Danach die Sicke vorsichtig festdrücken. Ich habe dann noch Klebstoff auf den Ring aufgebracht und diesen schön zentriert aufgesetzt. Nochmals den Klangtest und dann das Ganze mit Klammern fixieren und 24 Stunden abbinden lassen.

Digitalisieren

Der Umbau der Elektronik geht einfach von statten. Hinten die zwei grossen Schrauben lösen und den Deckel abnehmen. Dann die Drähte direkt an der Spuhle bzw. dem Kondensator abkneifen. Das Ziel ist hier maximale Drahtlänge.

Diese Bauteile belasse ich in dem Speaker. Danach habe ich die beiden Pins des alten DIN-Lautsprechersteckers abgebrochen und durchgestossen.
Anschliessend habe ich das Loch mit einem ca. 6mm Bohrer aufgebohrt und dann auf 11mm aufgeweitet. Das Material der Rückwand scheint ABS zu sein. Es lässt sich einigermassen mit dem Messer schneiden und gut Bohren. Nicht zu schnell und wenig Druck. Der Bohrer soll ja schneiden und nicht das Material schmelzen.

In das so entstandene Loch kommt dann die 5.2mm Buchse für die Stromversorgung samt ca. 25cm Kabel.

Jetzt kann man den Raspberry Pi ( bei mir ein Model 3B) aufstecken. Dabei darauf achten, dass alle Pins verbunden sind.

Fixieren mit den Abstandshaltern nicht vergessen. Der Raspi ist sonst nicht gut supportet und die Leiterbahnen auf dem Beocreate Board könnten beschädigt werden, wenn man die Box mal unsanft absetzt.

Jetzt noch die Hifiberry OS Distribution hier herunterladen und wie üblich auf die SD Karte kopieren. Auf den Webseiten wird Balena Etcher empfohlen, aber ich habe das Raspberry Pi eigene Tool verwendet.
Man findet im auf raspberrypi.org eine entsprechende Anleitung für eigene Images. Keine WLAN Daten hinterlegen. DAS macht man in der Software selbst.

Jetzt noch eine Kunststoffplatte (2mm Polystyrol aus dem Modellbau) von 10cm x 15cm zuschneiden. Die Löcher anzeichnen und Durchbohren und dann das Board auf Abstandshalter einbauen. Anschliessend habe ich das mit zwei Streifen M3 Doppelklebeband in der Box fixiert. Alternativ kann man auch Sperrholz nehmen oder die STL Datei drucken (lassen).

Die Stromversorgung des Raspberry Pi’s erfolgt über die Verstärkerplatine des Hifiberry. Hier am Besten kurz die Polung am Netzteil überprüfen und dann das Kabel entsprechend an die beiden Lötpads anlöten. Bei mir im Bild ist es das weisse zweipolige Kabel oben Rechts. Plus ist der zentrale Pin und Minus die umgebende Kontakt.

Danach einfach den Strom einstecken und der Raspberry Pi bootet – ohne Tastatur und Bildschirm.

Ein PDF mit dem Vorgehen kann man auch auf dem GIT Hub von Bang & Olufson finden.

Inbetriebnahme

Jetzt kann man mit dem Smartphone, PC oder Tablett nach einem Netzwerk suchen. Bevor das eigene Homenetzwerk hinterlegt wurde, erzeugt die Hifiberry/Beocreate Software ein eigenen WLAN. Verbindet man sich mit diesem Netzwerk – bei mir mit http://beocreate.local – kann man mit einem Wizzard gesteuert die Daten des eigenen Homenetzwerk eingeben. Danach nicht vergessen, in das Netz zurückzukehren…

Auf den WLAN Router kann man nun nachschauen, wie die IP-Adresse des Hifiberry Beocreate lautet und sich dann in einem Webbrowser mit der Software verbinden lassen.

Folgende Services werden angeboten:

  • Airplay
  • Analoge input of the DAC+ ADC
  • Bluetooth (not on Raspberry Pi 3B or below)
  • DLNA
  • Logitech Media Server / Squeezebox
  • MPD for local music
  • Snapcast (experimental)
  • Spotify
  • Roon
  • Web radio stations

Wichtig ist nun, dass man hier die richtigen Presets für die Lautsprecher auswählt. Es sind einige Bang & Olufson Lautsprecher hinterlegt, aber es gibt auch einen generischen Lautsprecher.

Hier habe ich die Presets (Programme für den Digitalen Signal Prozessor (DSP) des Verstärkers) für die CX50 Box ausgewählt. Nach Abschluss des Wizzards und einem Reboot der Box/Beocreate/Raspberry Pi konnte ich mich per Apple Airplay auf meinem Musik auf die Boxen streamen!

B&O Sound im Homeoffice als Smarte Box – und JA – umgebaute Vintage Lautsprecher sind ganz klar IoT-Devices!

Werkzeug

  • Akkuschrauber mit 6mm und 11mm Bohrer
  • Philipps-/Kreuzschlitz-Schraubendreher mittlerer Grösse
  • Seitenschneider
  • Lötkolben, Elektronik-Lot
  • 2-Adriges Kabel für Stromversorgung
  • Elektro-Schraubendreher
  • Schrumpfschlauch und Feuerzeug
  • Bastelmesser und Polystyrolplatte

Bis auf den Lötkolben kein High-Endwerkzeug und wohl in jedem Haushalt zu finden. Für den Lötkolben lohnt sich ggf. ein Blick bei Amazon, ob es keine kleine Lötstation für den Akku des Akkuschraubers gibt. Da kann man für kleines Geld einen einfachen Lötkolben finden, der vollkommen ausreicht.

Categories
IoT

#27 – Gartenbewässerung

Ein alter Hut

Eigentlich ein alter Hut? Der Garten wird seit ca. 2.5 Jahren mit einer OpenSource basierten Lösung bewässert. Dazu habe ich einen Raspberry Pi 3B+ und ein 8-ch Relay Expansion Board von Waveshare verwendet, mit dem ich die Ventile von Hunter ansteuere. Geschaltet wurde das ganze via Node-Red und MQTT und mit Hilfe von https://github.com/leinir/relayboard-control als Steuersoftware, die auf MQTT Befehle reagiert. Soweit so gut dachte ich.

Zustand Freitag vor Pfingsten – Unter dem Installationskasten die Hunter Ventile
RPi mit Relais-Board und SSD

Vor kurzem haben wir dann festgestellt, dass wir Probleme mit Ghostswitching haben und wir dabei ein paar hundert Liter Wasser verschwendet haben, weil wir es nicht sofort bemerkt hatten. Nicht gut für eine Computer gesteuerte Bewässerung.

Debugging hat herausgebracht, dass der Raspberry Pi beim starten die Ventile auf “High” gezogen hat, obwohl die Software eigentlich “Low” als Safe-State definiert. Auf Grund von irgendwelchen Ungereimtheiten muss ich die Software einmal die Woche neu starten, sonst reagiert sie irgendwann nicht mehr. Dabei ist es dann passiert, dass die Ventile aufgegangen sind.

Ich habe mich dann versucht, in den Python Code der Steuerung einzuarbeiten, aber mit dem Zeitbudget und dem Sommer vor der Tür brauchte ich eine andere und vorallem schnellere Lösung.

Die Logo! Steuerung

Im Portfolio meines Brötchengebers befinden sich neben viel guter Software auch ein grosses Sortiment an Steuerungen. Ich habe mich für die Logo! Steuerung entschieden und mir ein Starter Paket gekauft.

Starter Paket

Nach dem Auspacken habe ich die Steuerung auf ein Testboard montiert, damit ich im Arbeitszimmer die Programmierung vornehmen konnte und nicht andauernd runter und raus in den Schuppen rennen musste.

Die Logo! auf dem Testboard

Programmierung

Nach dem ich im Netzwerk zwei fixe IP-Adressen bereitgestellt hatte, konnte ich die Netzwerk Konfiguration von Logo! Steuerung und TDE einfach via Display vornehmen.

Danach habe ich die Software LogoSoft Comfort installiert. Ich werde hier jetzt keine Einführung in die Programmierung der Logo! oder in die Logo! selbst anbieten. Das gibt es genug auf YouTube – z.B. bei Ronnie bzw. hier auf seiner Webseite. Da muss ich nichts mehr hinzufügen. Ich zeige hier nur auf, wie ich meine Herausforderung gelöst habe.

Die Software lässt sich – wenn der PC im gleichen Netzwerk ist – einfach mit der Logo! verbinden und man kann dann eigentlich sofort loslegen. Nach kurzer Orientierung ist man eingentlich sofort in der Lage, einen Input (Taster/Schalter) abzufragen und einen Output (Relais) zu schalten. Darüber hinnaus kann man noch ein paar Dinge addieren, auf die ich hier kurz eingehen möchte.

Fortsetzung folgt, wenn ich den anderen PC gestartet habe…

Bedienoberfläche im Browser

Login Screen
Bedienoberfläche auf dem Tablet

Installation im Schuppen

Nach ca. 4-5 Stunden sah das Programm für die Logo! so aus, als ob es als RC-V1 in Betrieb gehen könnte und ich habe mich daran gemacht, die Hardware im Schuppen einzubauen.

Der Grosse 24V Trafo ist zur Steuerung der Relais – vielleicht etwas gross, aber 6 Relais ziehen durchaus etwas Strom… . Daher auch die Trennung zur Logo! Stromversorgung.

Ich habe links der Steuerung noch einen 10A Sicherungsautomat eingebaut, welcher die Stromversorgung Absichert. So kann ich auch im Schuppen das Gerät ausschalten, ohne im Keller eine Sicherung ziehen zu müssen.

Nach dem Sicherungsautomat und der Stromversorgung ist die Logo! Steuerung zu erkennen. Da ich 6 Relais brauche um die Ventile zu steuern, habe ich mir noch eine Erweiterung für 8 weitere Relais gekauft. Damit kann ich noch die Beleuchtung in den Tastern schalten. Dazu später mehr.

Montieren der Logo! auf der DIN Schiene

Das Bild zeigt den Zustand, bevor ich die Ventile angeschlossen habe. Hier musste ich ein wenig rumtesten, bis ich die richtigen Kabelpaare für den richtigen Ausgang gefunden habe. Beim Ausbau habe ich die Paare immer mit Klebeband zusammengefasst.

Eigentlich sollte man jetzt wohl Kabelkennzeichnungen einsetzen. Wenn es noch ein paar Relais mehr werden, ist das mit Sicherheit sehr hilfreich. Im Professionellen Umfeld wäre das ein MUSS.

Integration der Logo! TDE in den Schaltkasten

Natürlich ist nicht vorgesehen, dass man einen TDE in einen solchen Sicherungs- oder Schaltkasten einbaut. Netterweise ist der aus ABS – einem Kunststoff, der sich gut sägen, schneiden und Bohren lässt. Kurz anzeichnen, aussägen und dann liess sich der TDE mit den beigelegten Befestigungen einfach fixieren.

Physikalische Taster

Im Garten habe ich eigentlich kein WLAN und daher wäre es schon nett, wenn man das Ventil nicht nur mit einem PC oder Smartphone oder Tablet sondern auch mit einem Schalter bzw. Taster AN und AUS schalten kann. Das macht die Sache einfacher und verständlicher.

Ich habe mir wasserdichte Taster mit beleuchtetem Kennring (RGB LED) gekauft, die über je einen Eingang an der Logo! abgefragt werden. Drückt man den Taster geht das Ventil auf. Drückt man den Taster nochmal geht das Ventil zu. Ist das Ventil auf, wird der Kennring beleuchtet, um eine Indikation zu haben. Man kann die Bewässerung mit dem Taster einschalten und per Software ausschalten und umgekehrt. Deswegen sind es Taster und keine Schalter.

IP67 Taster mit RGB LED Kennring

Technisch gesehen wird im Program der Eingang I1 abgefragt. Der Taster wird gedrückt und der Strom/Impuls wird von der Steuerung wahrgenommen. Daraufhin wird ein sog. Stromstossschalter ausgelöst. der Öffnet und Schliesst mit jedem Impuls.

Einmal drücken – AN – nochmal drücken – AUS – und so weiter.

Der Stromstossschalter schaltet seinerseits den Ausgang des Relais Q1 AN oder AUS. Ist der Strom ausgefallen und die Steuerung startet neu, ist AUS der Anfangszustand. Ich merke mir absichtlich NICHT den letzten Zustand, um hier keine Überschwemmung zu provzieren. Das hatten wir ja grade erst.

Natürlich kann man jetzt auch das Stromstossrelais mit einem weiteren Taster – einem Software-Taster – AN und AUS Schalten und so den gewünschten Effekt erreichen.

Die Taster sind in einem bzw. zwei IP67 Gehäusen untergebracht. Eines am Schuppen und eines mit einem langen Kabel an der Terasse. Man kann natürlich auch Taster parallel betreiben und so an verschiedenen Orten etwas ein bzw. ausschalten. Cool, wenn man mit nassen und dreckigen Fingern das Wasser AN und AUS schalten will.

Nachrichten und Bedienung auf dem TDE

Kommt später…

Categories
IoT

#25 – Uv Sensor

PV generiert Strom aus dem Sonnenlicht. Und es gibt Sensoren, die den Uv Index und die “Leistung” des Sonnenlichts messen.

Ein Sensor dieser Art ist der VEML6070 von Vishay Semiconductors. Dieser Sensor steht als Breakout Board unter anderem von Adafruit zur Verfügung und kann ganz einfach mit Tasmota und z.B. einem Wemos D1 Pro oder Mini eingesetzt werden.

Ich habe den Sensor bei Pi-Shop gekauft und mit einem Wemos D1 kombiniert.

https://www.pi-shop.ch/adafruit-veml6070-uv-index-sensor-breakout

VEML6070 auf WEMOS D1 Mini

Dazu habe ich den Sensor mit einer gekürzten 3er Pinleiste direkt auf den GND, D4 und D3 Pin gelötet. Eigentlich sollte der VEML6070 sowohl 3.3V als auch 5.0V tolerieren. Ich habe denoch mit einem Kupferlackdraht VIN auf 3.3V verbunden.

Das Adafruit Board stellt den Sensor auf dem I2C Bus zur Verfügung.

Die Wemos D1 Minis kann man einfach per USB Schnittstelle mit dem Tasmotizer oder ähnlichem mit Tasmota versehen. Wie Tasmota installiert wird, kann man z.B. auf SuperHouse TV von Jonathan Oxer nachvollziehen.

Tasmota Konfiguration

Sobald Tasmota auf dem Device / D1 Mini installiert ist und neu gestartet wurde, kann man auf der IP-Adresse des Geräts die Admin-Oberfläche von Tasmota aufrufen.

Wichtig ist noch, dass man die SENSOR Edition von Tasmota installiert. Siehe auch http://ota.tasmota.com/tasmota/release/ und dann unten die tasmota-sensors.bin.gz auswählen.

Es müssen WiFi, Modul, MQTT und weitere Parameter konfiguriert werden. Mit einem Klick auf “Configuration” gelangt man in Auswahl von dieser Parameter Gruppen. “Configuration Modul” erlaubt die Einstellung von Modul Parametern für dem Zugriff auf das VEML6070 Board bzw. den I2C Bus. Hier werden die Pins D3 und D4 auf die I2C Ausgänge SDA und SCL gemappt ab dann kann man die VEML6070 Werte auf der Eingangsseite ablesen. Die Pins müssen natürlich die Pins sein auf denen das Modul angeschlossen ist.

PIN Mapping

Anschliessen binde ich den Sensor in mein WLAN(WiFi) ein. Netzwerk und Passwort sollten zum eigenen Netzwerk passen. Den Hostnamen habe ich “Lichtsensor1” genannt.

WiFi Parameter

MQTT ist der Nachrichtenumgschlagplatz in meinem Netzwerk. Tasmota bietet von Haus aus eine Integration für MQTT an und publiziert bzw. hört auf alle Nachrichten, die auf dem MQTT-Server ein- und ausgehen.

Hier vergebe ich ebenfalls noch den gleichen Namen sowie den Parameter meines MQTT-Servers.

MQTT Parameter

Unter “Other” kann man noch das Admin-Passwort sowie den Device- bzw. Friendly-Name vergeben… .

“Other” Parameter

Zum Abschluss kann man auf der Console nachschauen, wie die Parameter der Sensoren alle 5 Minuten unter den Topics publiziert werden.

IoT Stack

Unter dem Bericht #2 oben unter IoT habe ich verlinkt, wie man schnell und effizient zu einem funktionierenden IoT Stack kommt.
Hier sind MQTT-Server, Grafana und InfluxDB installiert.

Node-Red

Das Ziel ist, die Sensorwerte, die alle 5 Minuten pubiziert werden, zu speichern und in einer Zeitreihe als Grafik in einem Dashboard darzustellen.

Das Dashboard werde ich in Grafana erstellen und die Speicherung in einer Zeitleiste geschieht in InfluxDB. Den Transfer der Sensorwerte nach InfluxDB übernimmt Node-Red.

Node-Red Flow

Mit dem Flow oben lauscht Node-Red auf die Nachrichten des MQTT-Server (siehe oben) und wandelt sie in ein JSON-Objekt um. Anschliessend isolieren vier Nodes die Werte für UvLevel, UvIndex, UvIndexText und UvPower und schreibt sie mit vier weiteren Nodes in InfluxDB.

In dem Moment wo eine Nachricht auf dem MQTT-Server aufläuft wird diese gelesen, zerlegt und in die InfluxDB geschrieben.

Damit InfluxDB die Daten aufnehmen kann, muss man lediglich eine Datenbank anlegen. Die Datenstrukturen werden automatisch angelegt. Die Handhabung von InfluxDB? Siehe oben: #2 IoT Stack…

Grafana

Grafana bietet die Möglichkeit, Daten aus verschiedenen Datenquellen zu visualisieren. UvIndex und UvIndexText, UvLevel und UvPower werden als Kurven bzw. Gauge (Uhr) dargestellt.

Grafana Dashboard

Grafana ist nicht ganz so simpel zu konfigurieren. Aber wenn man es man verstanden hat, geht es recht schnell von der Hand.

Zunächst legt man die Datenquellen (Verbindung zu InfluxDB) an. Dann konfiguriert man das Dashboard und anschliessend je Graph oder Graphen-Gruppe ein Panel. Innerhalb des Panels wird die Abfrage der Daten definiert sowie die Darstellung der Daten.

Datenquellen

Grafana: Data Sources (InfluxDB)

Panelkonfiguration

Definition der Abfrage

Die Abfrage ist die Herausforderung… Zuächst selektiert man im “FROM” die Messreihe, aus denen man die Daten konsumieren will.

Dann mit dem “SELECT” Statement den Feldwert und mit mean() oder last () die Werte. Dannach noch mit “GROUP BY” die Darstellung als Zeitleiste und die Anweisungen leere Werte (null) aufzufüllen. Die Formatierung als Zeitreihe ist selbsterklärend.

Das “SELECT” Statement ist wichtig für die Art der Darstellung.

Definition der Darstellung

Mit der Darstellung kann man die Art der Visualisierung, die Achenbeschriftung und Farbgebung etc. beeinflussen. Einfach mal rumspielen… .

Titel…

Zum Schluss noch einen Titel und das Panel auf dem Dashboard zur Darstellung der UV-Werte ist fertig.

Aussicht

Was fehlt ist noch eine Stromversorgung und ein Gehäuse. Im Moment liegt der Wemos D1 Mini mit der Platine auf der Fensterbank und wird aus einem USB Lader mit Strom versorgt. Eigentlich möchte ich ein Wasserdichtes Gehäuse verbauen und mir noch etwas für die Stromversorgung “Draussen” ausdenken. Vielleicht etwas mit einem Solarpanel?! Dazu später mehr.

Categories
IoT

#8: Luftqualitäts-Sensor

Während meiner Auseinandersetzung mit IoT, MQTT und Tasmota bin ich irgendwann über SuperHouse.tv des Australiers Jonathan Oxer gestolpert.

Er zeigt im Beitrag #38, wie man einen Luftqualitäts-Sensor vorgestellt, der mit Hilfe eines Laserscatter Sensors, Partikel verschiedener Grössen in einem Volumen von Luft bestimmt und diese Werte via einem ESP8266 nach MQTT und dann nach InfluxDB zu schreiben.

Warum einen Luftqualitäts-Sensor bauen? Die ganze Covid-Pandemie hat ja durchaus aufgezeigt, welchen Sinn oder Unsinn das Wissen über Luftqualität haben kann. Kombiniert mit einem CO2 Sensor kann so ein Partikel-Sensor durchaus hinweise darauf geben, ob man Lüften sollte oder nicht.

Schaut man sich bei Adafruit um findet man diesen Artikel (siehe auch die Abbildung), der Aufzeigt, was man mit dem PMS5003 Partikelsensor so alles messen kann.

Adafruit über PMS5003

Viren kann man zwar keine mit dem Sensor detektieren – oder besser gesagt Partikel in der Grösse von Viren, aber ich denke, wenn man einen deutlichen Anstieg von Partikeln an der unteren Messauflösung feststellt, könnte man mal Lüften… . Das ist mal meine Annahme.

Concentration Units (standard)
---------------------------------------
PM 1.0:
PM 2.5:

Concentration Units (environmental)
---------------------------------------
PM 1.0:
PM 2.5:
PM 10:

---------------------------------------
Partikel > 0.3um / 0.1L Luft:
Partikel > 0.5um / 0.1L Luft:
Partikel > 1.0um / 0.1L Luft:
Partikel > 2.5um / 0.1L Luft:
Partikel > 5.0um / 0.1L Luft:
Partikel > 10 um / 0.1L Luft:
---------------------------------------

0.3 um sind schon recht klein.

Konzept

Der Sensor selbst besitzt keinen Micocontroller oder Kommunikations-schnittstelle sondern muss über seinen Schnittstellenstecker mit Strom versorgt und an die Serielle Kommunikation angebunden werden.

Hier muss man etwas aufpassen! Power (VCC) ist 5.0V und alle Logik ist 3.3V (Rx, Tx). Mit den 3.3V ist man dann bei eine ESP8266 als Micocontroller gut bedient. Der kann WLAN, Bluetooth und lässt sich mit Tasmota als Firmware flashen. Damit steh der Umsetzung wie in der folgenden Grafik gezeigt nichts im Weg.

PMS5003 Sensor und IoT Stack (Bild: Axel T.)

Der Sensor sammelt vom EPS8266 getrieben alle paar Minuten die Messdaten ein. Dabei ist er in ein abgeschottetes virtuelles Netzwerk integriert und liefert so seine Daten an den IoT Stack – genauer gesagt an den MQTT Server. Von dort sammelt Node-RED die Daten ein und füllt sie in der InfluxDB ab. Aus dieser bedient sich Grafana für die Visualisierung der Werte über die Zeit.

Bau

Auf Grund der guten Beschreibung von Jonathan Oxer war es ein leichtes, schnell mal eben die notwendigen Komponeten wie der PMS5003 und der ESP8266 plus ein OLED Display auf eine Platine zu bringen.

Platine Air Quality Sensor (Bild Axel T.)

Die Produktion mit Versand der Platine hat 5 Tage gedauert. Danach hatte ich die selbstgezeichnete Platine auf dem Schreibtisch liegen und konnte loslegen.

Komponenten (Bild Axel T.)

Alle Komponenten, die auf der Platine Platz finden. Die Platine selbst könnte man wahrscheinlich noch deutlich kompakter aufbauen, aber für DIY ist so aus meiner Sicht völlig ausreichend. Auf dem Beschriftungslayer habe ich die notwendigen Informationen untergebracht, die das Montieren vereinfachen.

Plantower PMS 5003 (Bild Axel T.)

Der besagte Sensor in seiner blauen Schutzfolie, die man noch entfernen sollte/muss, damit man den Sensor mit Doppelklebeband auf die Platine kleben kann.

OLED Display (Bild Axel T.)

Das OLED Display ist ein ganz einfaches xxxx basiertes Display, was einen Teil der Messwerte anzeigt und mit einem Taster an bzw. ausgeschaltet werden kann. Je nach Ort der Aufstellung, kann das Display recht nervig leuchten. Wenn man den Sensor z.B. im Schlafzimmer nutzen möchte, stört mich das blau leuchtende Display.

Wemos D1 Mini – ESP8266 mit externer Antenne (Bild Axel T.)

Der Wemos D1 Mini Pro mit einer externen Antenne ist die Komandozentrale für den Luftqualitäts-Sensor. Über die USB Schnittstelle kann man den Baustein einfach mit der Tasmota Firmaware flashen und über die Pinleiste lässt sich das Ding einfach in die Sockel stecken.

Die USB Schnittstelle übernimmt auch die Stromversorgung aller Komponenten auf der gesamte Platine.

Software

Für die Software hat man mehrere Möglichkeiten.

Entweder lädt man sich den Code von Jonathan Oxer (siehe oben) herunter und passt den auf die eigenen Gegebenheiten an, oder man verwendet Tasmota in der Version für “Sensoren”.

Ich verwende PlattformIO und VCode von Microsoft und habe mir den Code für Tasmota heruntergeladen.

VCode mit Tasmota (Auswahl für Sensor)

To be continued…

Categories
IoT

#4: Shelly & Tasmota

Ich hatte ja schon geschrieben, dass ich keine Hersteller Cloud Lösungen für Automation mag, OpenSource gut finde und man für eine Optimierung der Solaranlage in der Lage sein sollte, Verbraucher AN oder AUS zu schalten, wenn bestimmte Bedingung erfüllt sind…

Es gibt Unternehmen, die beides Anbieten. Für den Anwender mit wenig oder keinen Programmierkenntnissen und genug Vertrauen in die Hersteller gibt es eine Cloud Lösung und für alle anderen die Möglichkeit, eigene Firmware auf die Produkte des Unternehmens zu spielen!

Klingt gut? Shelly ist dieser Herteller mit Herz für “Selber machen” und Tasmota von Theo Arends ist die geniale Firmware, die sich auf alle ESP8266 anpassen und aufspielen lässt.

Nicht weiterlesen, wenn man nicht gewillt ist zu basteln und zu lernen! / Screenshot von der Tasmota Webseite

Die obige Warnung passt auch gut zum ganzen Rest dieser Webseite. Wer nicht lernen will, kann hier aufhören zu lesen. Ich kann und will keinen Support leisten. Wer jedoch lernt und herumprobiert, wird mit einem funktionierenden Automationssystem belohnt, was sonst nur mit sehr viel mehr Geld zu realisieren ist!

Tasmota unterstützt eine grosse Vielzahl von Devices – also Aktoren und Sensoren und die Webseite listet diverese Hinweise auf, wie man die Verschiedenen Devices flashen kann.

Was ich am Shelly 1 mag, ist die Grösse. Das Ding passt hinter jeden Lichtschalter und sich problemlos montieren und konfigurieren.

WARNUNG: 240V kann tötlich sein. Manipulationen an der Hausinstallation sind Sache vom Fachmann! Wer nicht verseht, was getan werden muss, sollte einen Fachmann beauftragen!
ICH LEHNE JEDE HAFTUNG AB!


Ich habe mir eine Reihe von Shelly 1 bei Bastelgarage.ch gekauft. Dort findet man auch den passenden FTDI-Adapter zum flashen.

Zunächst habe ich einige der Shelly 1 mit Hilfe von Tasmotizer geflashed. Jonathan Oxer beschreibt das auf seiner Webseite Superhouse.tv sehr gut und nachvollziebar.

Dieses Vorgehen hat aber für mich einen Nachteil – keinen Einfluss auf den Code und aufspielen von vorcompilierten Images. Damit wäre ich nicht wirklich viele weiter als ich mit der orginalen Firmware wäre.

Glücklicherweise bin ich dann über ein Tutorial von Andreas Speiss gestolpert, der PlattformIO für die ESP8266 Entwicklung vorgestellt hat. Wer es bis her noch nicht erraten hat? Shelly 1 basiert auf dem ESP8266 Microcontroller!

Nach Durchsicht des Tutorials habe ich mir VisualStudio Code von Microsoft und PlatformIO sowie Tasmota heruntergeladen und seither konfiguriere ich mir den Inhalt “meiner” Firmware selbst unter VisualCode und kann so bei Bedarf ganze Funktionselemente weglassen, die ich für ein Device nicht brauche.

Eine Funktion, die nicht exisitert kann nicht kompromitiert werden – logisch oder?


Nach dem man VisualCode installiert hat und das Plugin von PlatformIO hinzugefügt hat, ist die Infastruktur soweit parat. Ich habe mir die aktuelle Version von Tasmota aus Github geclont und auf ein Nextcloud Verzeichnis gelegt und dann den Ordner in VisualCode geöffnet.

Tasmota Version(s) Selection in VisualCode (Screenshot Axel T.)

Hier kann ich in der Datei “Platformio_override.ini” z.B. die Version von Tasmota wählen, die ich compilieren will oder auch durch weitere Manipulationen vom Source Code Einfluss darauf nehmen, was ich in meinem Binary verwenden will.

Im Screenshot sieht man, dass ich die Version “Tasmota sensors” gewählt habe. Für den klassischen Einsatz eines Shelly 1 als Lichtschalter reicht auch die Auswahl der Version “Tasmota”. Dort ist alles drin, was es braucht. Die Sensor Version habe ich deshalb gewählt, weil für ein anderes Projekt (Luftqualitäts-Sensor) andere Funktionalität haben wollte.

FTDI-Adapter (3.3Volt) für Shelly Programmier – Foto Axel T.

Wichtig ist, dass man den FTDI-Adapater auf 3.3V einstellt, sonst wird der ESP8266 Chip zerstört!

Shelly 1 – Foto Axel T.

Der Shelly 1 hat einen Durchmesser von knapp 4.3cm und passt von daher perfekt hinter jeden Lichtschalter…

Shelly1 während der Programierung – Foto Axel T.

Hinter der länglichen Abdeckung versteckt sich die Buchsenleiste für den FTDI-Adapter und für die Programmierung muss beim Einstecken des USP-Steckers in den PC der Pin (bei mir Grün) auf “GND” (bei mir Blau) gezogen werden.

Categories
IoT

#2: IoT Stack

Oder – wie erreiche ich Automation?

IoT – Meine Interpretation (Grafik Axel T.)

Schaut man sich nochmal meine IoT Grafik an, wird schnell klar, dass es etwas komplexer ist, als man im ersten Moment vermutet und gleichzeitig nicht zu komplex ist, dass man es nicht mehr versteht.

Um etwas zu schalten oder zu automatisieren kann man jetzt verschiedenen Strategien wählen.

  1. Je Topic oder Geräte-Typ kann man die vom Hersteller bereitgestellte App verwenden und über dessen Cloud-Angebot auf die Geräte zugreifen und je Hersteller dessen Automation nutzen.
    Bsp.: Shelly oder Sonoff Produkte in Verbindung mit der Hersteller Cloud.
  2. Je Funktions-Gruppe (Haustechnik, Licht, …) kann man versuchen einen Hersteller oder Standard finden und innerhalb dieser Funktions-Gruppe die Automationsaufgaben lösen.
    Bsp.: KNX mit einer Server-Installation für die Haustechnik und Apple-Home für z.B. die Lichtsteuerung
  3. Alle Funktions-Gruppen werden auf einem einzigen Layer (Message Broker) für den Informations-Austausch integriert. Über diesen Layer werden die Automations-Aufgabe durch Sensor- und Aktor Nachrichten (Telemetrie) und mit einem geeigneten Automations-System gelöst.
    Bsp.: MQTT als Telemetrie Protokoll und Node-Red als Entwicklungswerkzeug für die Automation

Schaut man sich diese drei Möglichkeiten an, so könnte man argumentieren, dass die erste Möglichkeit vielleicht als die am einfachsten umzusetzende Möglichkeit erscheint, aber wenig oder keine Automation Horizontal – also über die Grenzen eines Geräte-Typs oder Herstellers erlaubt.

Die zweite Möglichkeit ist besser, da sich Funktions-Gruppen zusammenfassen und eine Horizontale Integration so möglich wird, jedoch zum Preis einer propietären Lösung, für deren Konfiguration man Software kaufen muss. Bei Apple-Home gibt es die Möglichkeit, mit OpenSource Software eine Brücke zu schlagen.

Die dritte Möglichkeit bietet mit Hilfe von MQTT vertikale (Anzahl Geräte) und horizontale (Geräte Typen) Integration und Skalierbarkeit, da es als Industrie-Standard auf Masse und Robustheit sowie Sicherheit ausgelegt ist. Der Preis ist jedoch, dass man für jeden Geräte-Typ eine MQTT-Integration haben muss, was aber für dass, was man im Homeautomation Umfeld machen möchte, gegeben ist.

Meine gesamte Homeautomation basiert auf dem MQTT zentrierten Ansatz.

Was braucht es jetzt? Wie die Überschrift schon vermuten lässt – einen IoT-Stack – also eine Softwarelandschaft, die auf einem (kleinen) Server 24h * 7Tage im Betrieb ist.

MQTT-Stack R-Pi (Grafik Axel T.)

Den MQTT-Stack habe ich mir nicht selbst ausgedacht. Das haben andere Entwickler aus der OpenSource Community übernommen. Unter folgendem Link findet man alles Lesenswerte, was man für einen ersten eigenen IoT-Stack benötigt.

https://sensorsiot.github.io/IOTstack/

Unbedingt sehenswert sind die folgenden Videos von Anderas Spiess aus der Schweiz:

Was braucht es hier zu? Eingentlich nicht viel. Neugier, Willen etwas Neues zu lernen, ein wenig Linux und Computer Kenntnisse und ca. 150CHF an Hardware. Ich würde mit einem Raspberry Pi starten, der von einer SSD bootet anstatt der SD-Card.

Mein Test- und Experimentier-Setup sieht wie folgt aus:

Raspberry Pi 3, PoE HAT (B) und SSD Shield / Foto Axel T.

Die Implementation für meine produktive Homeautomation habe ich mit einem HP Microserver Gen8 Umgesetzt. Mit einem Gehäuse von knapp 30cm x 30cm x 30cm passt der noch gut überall hin und ist dabei noch grade so erträglich vom Lärm.

MQTT-Stack HP Microserver Gen8 (Grafik Axel T.)

Als Betriebssystem läuft auf beiden Systemen ein Linux System.

Docker

Docker ist eine Container Management Software und damit ein Sicherheits-Feature, auf das ich nicht verzichten möchte. Docker sperrt Software in einen Container und regelt den Zugriff auf andere Container, den Host oder Ressourcen wie Netzwerk. Und es senkt in diesem Fall die Komplexität massiv, wie man im Video von Andreas schön sehen kann!

Portainer

Portainer managed und verwaltet die Container. Es hilft beim Einarbeiten in diese Materie. Portainer selbst sitzt in einem Docker-Container, hat aber weitreichende Rechte.

Mosquitto

Nein – kein Stechmücke sondern der Message-Brocker – also die Nachrichtendrehscheibe, an der sich alle Beteiligten Softwaren beteiligen und bedienen.

An dieser Stelle unbeding der folgende Buch-Tip: “Das MQTT-Praxisbuch – Mit ESP8266 und Node-Red” von Walter Trojan (Link zu Amazon). Es erschlägt gleich drei Fliegen mit einer Klappe! Es erklärt MQTT, Node-Red und die ESP8266 Microcontroller Familie in einem gut gemachten Buch (Ja richtig – die Dinger aus Papier…).

InfluxDB

InfluxDB ist ein Datenbanksystem speziell ausgerichtet für das Speichern von Zeitreihen. Also das Sammeln von Datenpunkten über der Zeitlichen Verlauf. Ich sammel damit Temperaturen, Wasserstände, Bewegungsmeldungen, Stromverbräuche, etc. – Diese Datenbestände sind die Grundlage für jede Auswertung und Darstellung. Wie war noch mal der Stromverbrauch letzten Jahr im November? Wissen Sie es? Nein? Dann hilft InfluxDB.

Grafana

Ich liebe Grafiken und Darstellungen von Datenpunkten. Grafana ist ein geniales Werkzeug zur Darstellung der Zeitreihen in InfluxDB. Also in meinem Fall dann auch für die Darstellung des Stromverbrauchs, der Stromproduktion, dem Delta, der Einspiesung etc. . Klar – bekommt man auch vom Hersteller des Wechselrichters. Aber was ist, wenn das Internet NICHT funktioniert? You get the Idea… . Cloud ist gut, aber in diesem Fall ist on premise besser.

Node-Red

Node-Red ist ein Programmiersystem, was durch Grafische Darstellung von Funktionsbausteienen und deren Verknüpfung erlaubt diverse Funktionen er realisieren. In meinem Fall übernimmt es zum einen das Auslesen von Sensoren und Speichern von Daten in InfluxDB, aber auch Automationsaufgaben (Licht auf der Auffahrt im Zeitraum zwischen Sonnenuntergang und Sonnenaufgang einschalten, wenn der Bewegungsmelder XY ausgelöst wurde und dann nach 5 Minuten wieder Licht auszuschalten.) Da die Sonne nicht jeden Tag gleich auf und untergeht, ist es nicht ganz trivial mit z.B. PHP oder C/C++ zu realisieren.
Node-Red bietet die passenden Bausteine.

Das alles ist der IoT-Stack, den ich verwende.

Categories
IoT

#1: IoT – Wieso?

IoT – also das, was sich hinter dem Stichwort Internet of Things verbirgt und PV gehören für mich zusammen und das lässt sich recht einfach erklären.

Viele der Komponenten einer PV-Anlage sind für sich gesehen IoT-Devices – also Geräte, die man mit Internet Technologie ereichen und steuern kann. Ob das der Battery-Controller, der Wechselrichter oder was auch immer ist – viele dieser Geräte können via Netzwerk mit dem Cloundsystem des Anbieter komunizieren oder sich via App vom SmartPhone oder Tablett abfragen und monitoren.

Prinzip-Schema PV-Anlage / Axel T.

Also, all dass, was im Bild oben mit dem Punkt “Anlagen Überwachung” verbunden ist, sind IoT Devices.

Wenn man nicht nur den Strom aus einer PV-Anlage erzeugen und einspeisen will sondern den Strom intelligent nutzen will, brauch man die Fähigkeit, alle möglichen Dinge im Haushalt zu steuern und zu automatisieren.

Also banal ausgedrückt – “Schalte die Waschmaschine ein, nach dem die Auto- oder Hausbatterie geladen ist, aber nur, wenn genügend Leistung vorhanden ist, so das eingespeist wird.”

Das kann ich auf diverse Arten erreichen. Zum Beispiel mit “klassischer” Automationstechnik wie sie für Werkzeugmaschinen oder in der Gebäude Technik genutzt wird. Hier gibt es diverse Standards, wie z.B. KNX.

Alle haben den gleichen Nachteil, dass man auf einige weniger Hersteller in einem propietären System mit – für den Heimgebrauch doch recht hohen Kosten gefangen ist. DAS will ich aus verschiedenen Gründen NICHT.

Um aus dieser Situation heraus zu kommen, habe ich mich für eine Automation auf Basis der Internet-Technologien entschieden. Mit dem Nachteil, dass ich ein funktionierendes Netzwerk im Haus (WLAN/LAN) benötige. Das brauche ich aber aus diversen anderen Gründen sowieso – also ist das nur im Fehlerfall und auch nicht in jeder Situation ein Problem. Und – Internet of Things oder Internet-Technologien bedeutet NICHT, dass ich eine permanente Verbindung zum Internet benötige. Es funktioniert auch alles ohne das Internet. Wenn man die notwendigen Komponenten bereitstellt.

Wenn man diesen Weg geht, sollte man sich jedoch bei der Auswahl der Komponenten ein paar Gedanken machen und statt des billigen WLAN-Routers vielleicht doch Hardware in Industrie-Qualität verwenden und bei der Software auf “OpenSource” achten und sich den Quellcode lokal speichern. Meine Homeautomation ist NICHT von Aussen erreichbar und alles, was aus und in das Internet geht, muss meine Firewall passieren.

Ausserdem habe ich mehr als nur ein Netzwerk installiert um die verschiedenen Systeme (PC, Laptops, Tablets, SmartPhones) von IoT-Devices (Sensoren, Aktoren) zu trennen. IoT-Devices dürfen bei mir NICHT ins Internet.