Schlagwort-Archive: RaspberryPI

Die Wärmepumpe (NEURA) in das Smarthome einbinden

Loading

Ein Smarthome ist heute keine Seltenheit mehr und sehr weit verbreitet. Es gibt unzählige Systeme am Markt, die das eigene Zuhause „Smart“ machen. Die digitalen Sprachassistenten von Google, Amazon und co. in Verbindung mit Smarten Glühlampen zählen zu den einfach und schnell zu installierenden Systemen. Aber es gibt auch komplexe Smart Home Systeme, bei denen in den Hausverteilern Aktoren für jede Lampe und Steckdosen verbaut sind. Die Fenster und Türen sind mit Meldekontakten ausgestattet und sichern das Eigenheim oder melden, wenn einmal auf das Schließen der Fenster nach dem Stoßlüften vergessen wird. Das diese Systeme bei vernünftiger Programmierung auch zur Energieoptimierung beitragen ist selbstverständlich. Auch ich betreibe Smarthome Komponenten unterschiedlichster Hersteller.

Dazu gehört seit Jahren das HomeMatic System, das sowohl kabelgebunden als auch über das Bidcos-Protokoll mit seinen Aktoren und Sensoren kommuniziert. Das HUE – System von Phillips spricht dabei über ZigBee mit seinen smarten Lampen und Steckdosen. Die Gateways dieser Systeme sind an ein LAN Netzwerk angeschlossen und jedes System bringt seinen eigenen Webserver mit, über den es dann zu steuern und einzustellen ist. Ein Wechselrichter von Photovoltaikanlagen kann seine Daten über unterschiedlichste Schnittstellen (RS485, CAN, RS232) zur Verfügung stellen. Um alle auf eine zentrale Darstellungsebene zu bringen, habe ich mich für das NodeRed System entschieden. Der Dazu notwendige NodeRed Server läuft auf einem Raspberry PI. (Auf der CCU3 mit dem Raspbian Image ist noch genug Platz um den NodeRed Server laufen zu lassen – der ist sogar als eigenes Plugin für die CCU verfügbar und wird „RedMatic“ genannt).  Mit dieser Konfiguration lässt sich fast alles im Bereich Homeautomation „erschlagen“. Mit ESP32 und Raspberry lassen sich über MQTT (Message Queueing Telemetry Transport) bequem Statusinformationen übertragen. Dies wende ich beispielsweise bei den kleinen Einspeise Wechselrichtern einer Balkon PV-Anlage an, als auch bei den PV-Wechselrichtern einer Offgrid-Anlage. Hier werden die Daten über unterschiedliche Bussysteme im Raspberry oder ESP32 empfangen und in das MQTT-Protokoll umgesetzt. Der MQTT Broker sammelt die Daten der einzelnen Geräte und über NodeRed lassen sie sich dann in eine Datenbank schreiben, im Browser oder am Smartphone visualisieren und auch einfach, je nach Bedarf, im HomeMatic System verarbeiten.

Beispiel eines Smarthomenetzwerks

Somit ist es möglich, nahezu alle Systeme miteinander Smart zu vernetzen und, für mich wichtig auf EINER Plattform zu visualisieren. Ein einziges System fehlte bisher noch. Das ist meine alte Neura Heizungswärmpepumpe. Die Firma Neura ist schon seit einigen Jahren nicht mehr existent und der von „b.i.t.“ entwickelte auf Webserver „webidalog“ wurde nie mehr aktualisiert. Die Wärmepumpe hat also einen Webserver auf einem kleinen mit Linux-Rechner onboard und baut die Webapplikation mit einer uralten Java Version. Für die Bedienung muss am PC eine Java Runtime installiert sein, die nur mit einigen Tricks auf einem aktuellen Windows Rechner läuft (Stichwort: Virtualisierung). Für die Bedienung über ein Smartphone ist eine html – Version mit eingeschränkter Funktionalität verfügbar. Mein Plan war es nun, eine Schnittstelle zu finden, mit der ich die Daten der Wärmepumpe zumindest einmal auslesen kann, um Vorlauf- Rücklauftemperaturen der Fußbodenheizung, Kesseltemperatur, etc. auch in meinem NodeRed System zur Verfügung habe. Da zu dem System aber so gut wie keine Dokumentation zu finden ist und ein Reverse-Engineering ein wenig kritisch ist, wenn das System weiter laufen soll, kam mir folgende Idee:

Mit einem „headles browser“ sollte es ja möglich sein, die html-Version der Neura WebDialog Website zu parsen und die relevanten Daten zu finden und über Variablen in MQTT-Topics zu verwandeln. Und hier muss ich einen besonderen Dank an meinen Kollegen Mario Wehr aussprechen, der mir die Softwarestrukur zum parsen der Website gebaut hat. Die Software ist in PHP geschrieben und läuft schlussendlich auf einem Raspberry PI. Hier sind lediglich eine php8-cli runtime und ein paar Module notwendig. Die Software funktioniert so, dass bei jedem Aufruf ein Login auf der Wärmepumpenwebsite ausgeführt wird, danach werden die Daten geparsed und zu MQTT-Broker gesendet. Das kontinuierliche Aufrufen des php-Skriptes habe ich dann einfach mit einem cronjob gelöst, der jede Minute ausgeführt wird.

 

>sudo crontab -e

und der job sieht dann so aus:

* * * * * sudo php /home/neura2mqtt/neura2mqtt.php -c

(wenn man sich die files  ins  /home/ verzeichnis legt…). Das Projekt habe ich auf github unter:  https://github.com/ingmarsretro/neura2mqtt veröffentlicht.

Neura Daten am NodeRed Dashboard

 

 

 

 

IR-Thermokamera an Raspberry PI

Loading

Lepton Camera Module

Ein vielleicht interessantes kleines Projekt ist, ein Lepton Kameramodul mit einem Raspberry zu betreiben.  In meinem Fall verwende ich ein Lepton Modul mit 80×60 Pixeln bei einer Pixelgröße von 17µm und einer spektralen Empfindlichkeit im langwelligen Infrarot Bereich von 8µm bis 14µm. Die Framerate beträgt maximal 8,6 Hz. Das Kameramodul wird in ein Breakout-Board gesteckt und dieses mit dem Raspberry PI verbunden. Die Infos dazu gibt‘s weiter unten. Es gibt auch im Entwicklerbereich der Website flir.lepton.com eine Anleitung wie das Breakoutboard mit dem Raspi betrieben wird.

Camera Module mit Breakout Board V1.4

Benötigt wird ein Raspberry PI (in diesem Beispiel habe ich einen Raspberry PI4 verwendet), ein Lepton Thermal Kamera Breakout Board V1.4 und ein wenig Drahtwerk für die Verbindungsleitungen. Die genaue Teileliste (um auch alles Aufbauen und in Betrieb nehmen zu können) ist unten angeführt:

  • Raspberry PI (Modell 2,3 oder 4)
  • Micro SD-Karte (ab 8GB)
  • USB-Steckernetzteil mit Micro USB (oder USB-C) Kabel (je nach Raspberry PI Modell)
  • LAN-Kabel und Zugang zu einem Switch oder Router mit bestehender Internetverbindung
  • Idealerweise einen Rechner mit (SD-Karten-Slot) um das Image für den Raspberry vorzubereiten
  • Ein Monitor für den Raspberry PI mit HDMI oder MINI-HDMI-Kabel
  • USB-Tastatur, Maus
  • Lepton Thermal Kamera Breakout Board

Ist alles vorhanden, dann ist die Verdrahtung des Kamera Moduls mit dem PI herzustellen. Am einfachsten verwendet man die Jumper-Kabel (Female-Female) die in der Modulbastelwelt sehr beliebt sind. Ein Lötkolben ist für viele Demo- und Testaufbauten nicht mehr notwendig… Die folgende Skizze zeigt die herzustellende Verdrahtung:

Klicken zum Vergrössern

Das Pinning ist hier nochmals angeführt:

  • Raspi GPIO PIN01 (3V3)     –>    Lepton Pin VIN
  • Raspi GPIO PIN03 (SDA)    –>     Lepton Pin SDA
  • Raspi GPIO PIN05 (SCL)      –>    Lepton Pin SCL
  • Raspi GPIO PIN06 (GND)   –>     Lepton Pin GND
  • Raspi GPIO PIN19(MOSI)  –>     Lepton Pin MOSI
  • Raspi GPIO PIN21(MISO)  –>     Lepton Pin MISO
  • Raspi GPIO PIN23(CLK)      –>     Lepton Pin CLK
  • Raspi GPIO PIN24(CEO)     –>     Lepton Pin CS

Als Betriebssystem für den Raspberry Pi habe ich Raspbian installiert. Das geht entweder über den Download des RASPBIAN Images von der Webseite https://www.raspberrypi.org/downloads/raspbian oder auch über den NOOBS Installer. Mit dem Tool „etcher“ oder „win32diskimager“ kann die Image Datei auf die SD-Karte geschrieben werden. Wer mit NOOBS arbeitet braucht nur die zip-Datei auf die FAT32 formatierte SD-Karte zu entpacken. Ist das erledigt, dann einfach die SD-Karte in den Raspberry stecken, Monitor, Keyboard und Maus an den PI anstecken und zum Schluss die Stromversorgung aktivieren. Wenn NOOBS auf der Karte ist, dann wird nach dem Start eine Auswahl an zu installierenden Betriebssystemen angezeigt. Hier am besten auch RASPIAN auswählen und die Installation starten. Ist das abgeschlossen, dann ist je nach gewähltem Image entweder nur eine Konsole oder eben ein Desktop zu sehen. Im letzten Fall ist dann ein Terminal zu öffnen, damit in der Konsole weitergearbeitet werden kann.

Mit sudo raspi-config ist nach dem login in die Konsole das Raspberry PI Config – Tool zu öffnen. Darin sind folgende Services zu aktivieren:

  • SPI (unter Advanced Options)
  • SSH (unter Advanced Options)
  • I2C (unter Advanced Options)
  • Enable Camera (im Hauptmenu des raspi-config tools)

Danach ist der Raspberry zu rebooten. Nach dem erneuten Start und login (als User pi mit default Passwort raspberry) muss das Paket openCV installiert werden. Mit sudo apt-get install python-opencv ist das erledigt.

Auf GitHub habe ich eine Python Library von brandoncurtis und kekiefer für das Lepton Board gefunden. Die Library nennt sich pylepton und ist auf https://github.com/groupgets/pylepton zu finden.

Mit git clone https://github.com/kekiefer/pylepton.git legen wir das Repository  an und wechseln danach in das Verzeichnis cd pylepton. Jetzt kann das Setup Skript ausgeführt werden: sudo python setup.py install.

Mit dem folgenden kleinen Codebeispiel wird die Lepton Kamera ausgelesen, das 80×60 Pixel große Bild auf 800% skaliert und angezeigt.

 

 import numpy as np  
 import cv2  
 from pylepton import Lepton  
 with Lepton() as lepi:  
  a,_ = lepi.capture()  
 cv2.normalize(a, a, 0, 65535, cv2.NORM_MINMAX) # extend contrast  
 np.right_shift(a, 8, a) #daten in 8bit anpassen 
 cv2.imwrite("thermobild.jpg", np.uint8(a)) #bild schreiben 
 img=cv2.imread('thermobild.jpg')  
 cv2.imshow('Thermobild', img)  
 print('Originalabmessungen: ',img.shape)  
 scale_percent = 800  
 width = int(img.shape[1] * scale_percent / 100)  
 height = int(img.shape[0] * scale_percent / 100)  
 dim = (width, height)  
 resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)  
 print('Achtfach vergroessert: ',resized.shape)  
 cv2.imshow("Thermobild 8x", resized)  
 cv2.waitKey(0)  
 cv2.destroyAllWindows()  
 exit()  

Das Ergebnis sieht dann zum Beispiel so aus:


 

 

Raspberry Pi – mechanische Beanspruchung extrem

Loading

Der Raspberry Pi ist als universell einsetzbarer Einplatinencomputer in vielen Hobby- und Heimanwendungen zu finden. Ob als Webserver, TV- oder Radio- Streaming Server, Spielekonsolenemulator oder Steuerungen im Bereich Robotik und Automation, der Raspberry PI kann diese Aufgaben erfüllen. Auch als mobiler Datenlogger lässt er sich aufgrund der kompakten Bauform und geringen Stromaufnahme ideal nutzen. In einem früheren Blogbeitrag habe ich ein Beispiel mit Wetterdatensensoren, angeschlossen an einen batterieversorgten Raspberry Pi, aufgebaut. Der „Logger“ zeichnete die Daten der Sensoren auf einer Speicherkarte auf. So ein Logging-System lässt sich auch wunderbar in ferngesteuerte Fahr- oder Flugmodelle einbauen. 

Was jedoch passiert, wenn so ein Flug- oder Fahrmodell von seiner Momentangeschwindigkeit in einem sehr kurzen Moment auf Geschwindigkeit Null verzögert wird, kann man sich vorstellen. Wie jedoch das Logging-System darin dann aussieht, vielleicht nicht. Aber ich kann hier mit Bildmaterial helfen.

Hier war einst die CPU

Die USB-Buchsen sind noch vorhanden. Der LAN-Anschluss fehlt.

Die Zweiteilung des Raspberry Boards haben die ihn überholenden, schwereren Komponenten (Batterien), die hinter ihm angeordnet waren verursacht. 

Selbst der Mini-USB Stick verformte sich so stark, dass der Speicherchip in zwei Teile zerbrach. Ein Auslesen der Daten war somit auch nicht mehr möglich.