Die Aufgabe dieser Ausarbeitung besteht darin, im Rahmen des Smarthomes ein Energiemanagementsystem auf der Basis von Raspberry Pi zu entwickeln, um den Energieverbrauch der Heizung in privaten Haushalten zu optimieren. Außer der Kontrolle und der Überwachung sollen die ermittelten Daten von dem System gesammelt, in einer Datenbank gespeichert und so aufbereitet werden, dass sie dem Verbraucher über einen webbasierten Client zur Verfügung gestellt werden können. Um die Mobilität zu gewährleisten, wird auch eine Applikation für Smartphones entwickelt. Laut der aktuellen Marktforschung hat Android einen Marktanteil von 87,5 %, deshalb wird die App in dieser Arbeit nur auf die Geräte mit diesem Betriebssystem ausgerichtet. Das Energiemanagementsystem wird mit unterschiedlichen Modi ausgestattet und soll über die verschiedenen Clients gesteuert und bedient werden können.
Inhaltsverzeichnis
Abkürzungsverzeichnis
Abbildungsverzeichnis
Quelltextverzeichnis
1 Die Einführung
2 Der Stand der Technik
2.1 Ein Einblick in die Gebäudeautomatisierung
2.2 Die Anforderungen an ein Smarthomesystem
3 Das Energiemanagement
3.1 Der Gebäudewärmebedarf
3.2 Die Regelung
4 Die Entwicklung des Systems auf dem Raspberry Pi
4.1 Die Hardware
4.1.1 Die Einrichtung der Java-Laufzeitumgebung
4.1.2 Das Auslesen der Signale mit Analog-Digital-Wandler
4.2 Die Anwendungssoftware
4.2.1 Die Entwicklung eines Heizungsreglers
4.2.1.1 Die Untersuchung der Regelstrecke
4.2.1.2 Die Programmierung des Reglers
4.2.1.3 Die Klasse PWM
4.2.2 Die Datenverwaltung mit einer Datenbank
4.2.3 Die Website auf dem Webserver
4.2.4 Die Visualisierung der Messdaten
4.2.5 HTTP-Server – der zentrale Knotenpunkt
5 Die mobile Anwendung auf dem Smartphone
5.1 Die Erstellung der App
5.2 Die Benachrichtigung für das Smartphone
5.3 Das Benachrichtigungsverfahren auf dem Server
6 Eine zusammenfassende Betrachtung der Ergebnisse
7 Das Fazit
Literaturverzeichnis
Anhang
Abkürzungsverzeichnis
Abbildung in dieser Leseprobe nicht enthalten
Abbildungsverzeichnis
Abbildung 3.1: Typisches Blockschaltbild einer Regelung
Abbildung 4.1: Command Bytes und das Konvertierungsergebnis
Abbildung 4.2: Konzeptübersicht
Abbildung 4.3: Sprungantwort der Heizung
Abbildung 4.4: Blockschaltbild der geschlossenen Strecke mit PI-Regler
Abbildung 4.5: Sprungantwort der Strecke mit PI-Regler
Abbildung 4.6: Regelstrecke mit dem Regler
Abbildung 4.7: Sprungantwort der Strecke mit dem optimierten PI-Regler
Abbildung 4.8: Darstellung der Webseite ‚schlafz.php’
Abbildung 4.9: Eingeblendete Bedienelemente auf der Webseite
Abbildung 4.10: Ausschnitt des Diagramms für die Raumtemperatur
Abbildung 5.1: App auf dem Smartphone
Abbildung 5.2: Push-Benachrichtigung und Modalfenster
Abbildung 6.1: Referenzmessung
Quelltextverzeichnis
Quelltext 4.1: Auszug aus der Klasse ‚MCP3008’, Zeilen 11-55
Quelltext 4.2: Auszug aus der Klasse ‚Regler’, Zeilen 21-126
Quelltext 4.3: Auszug aus der Klasse ‚Regler’, Zeilen 128-173
Quelltext 4.4: Auszug aus der Klasse ‚Regler’, Zeilen 178-189
Quelltext 4.5: Auszug aus der Klasse ‚PWM’, Zeilen 16-84
Quelltext 4.6: Auszug aus der Klasse ‚PWM’, Zeilen 94-163
Quelltext 4.7: Auszug aus der Klasse ‚Datenbank’, Zeilen 10-65
Quelltext 4.8: Auszug aus der Klasse ‚Datenbank’, Zeilen 69-102
Quelltext 4.9: Auszug aus der Datei ‚schlafz.php’, Zeilen 209-222
Quelltext 4.10: Auszug aus der Datei ‚socket.php’, Zeilen 36-104
Quelltext 4.11: Auszug aus der Datei ‚chartdata.php’, Zeilen 1-38
Quelltext 4.12: Auszug aus der Klasse ‚SHServer’, Zeilen 59-222
Quelltext 4.13: Auszug aus der Klasse ‚SHServer’, Zeilen 248-287
Quelltext 4.14: Auszug aus der Klasse ‚SHServer’, Zeilen 340-455
Quelltext 5.1: Auszug aus der Datei ‚activity_main.xml’, Zeilen 24-30
Quelltext 5.2: Auszug aus der Datei ‚MainActivity.java’, Zeilen 30-86
Quelltext 5.3: Auszug aus der Klasse ‚SHServer’, Zeilen 23-421
Quelltext 5.4: Auszug aus der Datei ‚socket.php’, Zeilen 79-146
1 Die Einführung
In der heutigen Zeit ist Digitalisierung aus unserem Alltag nicht mehr wegzudenken. Innovative Technologien werden in nahezu allen Lebensbereichen eingesetzt. So halten sie auch in der Gebäudeautomatisierung immer mehr Einzug. Insbesondere in der Industrie ist die selbsttätige Überwachung und Steuerung der Versorgungtechnik notwendig. Die meisten Lösungen sind daher industrieorientiert und behandeln diese Problematik unter dem ökologischen Aspekt oder im Hinblick auf die Nachhaltigkeit. Ein effektives Energiemanagement spielt, gerade in einer Zeit immer knapper werdender Ressourcen, auch eine wichtige Rolle. Aufgrund der Nutzung progressiver Technologien können viele Daten über einen langen Zeitraum gesammelt, gespeichert und ausgewertet werden. Anhand der Auswertungsergebnisse werden Energiemanagementsysteme geschaffen, die den Verbrauch präzise erfassen, kontrollieren und gezielt steuern können.
Auch die privaten Haushalte haben ein großes Sparpotenzial. „Private Haushalte sind nach Verkehr und Industrie der drittgrößte Energieverbraucher in Deutschland. Rund ein Viertel des gesamten Endenergieverbrauchs entfällt auf sie.“ [1] Es lohnt sich also auch der Energieeinsparung im Heimwesen Beachtung zu schenken. Das Bundesministerium für Wirtschaft und Energie bietet für umweltbewusste Eigenheimbesitzer zwar viele Förderprogramme an. Trotzdem stößt der Interessent aber schnell an die Grenzen, die durch die Anschaffungskosten und den Umbauaufwand bedingt sind. Ferner können noch einige unkomplizierte Vorkehrungen zur Reduzierung der Energieverluste getroffen werden, z. B. die Heizung entlüften, die Temperatur richtig einstellen, Stoßlüften usw. [2]. Für eine effektive Energienutzung sind alle diese Maßnahmen jedoch unzureichend, weil sie über den Verbrauch keine Auskunft geben und keine Kontrolle erlauben.
Es sind etliche Studien über den Energieverbrauch der privaten Haushalte und die damit verbundenen Kosten veröffentlicht. In einer Untersuchung heißt es: „26 % des Endenergieverbrauchs in Deutschland geht auf das Konto von Haushalten (2014).“ [1] Wichtig ist also den entstehenden Verbrauch sowie die dadurch verursachten Kosten nicht nur in Industrie- und Großgebäuden, sondern auch in den privaten Haushalten zu reduzieren. Das kann mit einem fortschrittlichen Energiemanagementsystem erreicht werden. „Ein effizientes Energie-Management-System kann Kostensenkungspotenziale schnell aufdecken.“ [3]
Die Hausautomatisierung umfasst mehrere Bereiche, z. B. die Beleuchtung, die Klima- und die Lüftungsanlagen, die Haushaltsgeräte, die Sicherheitsanlagen usw., die hier aus Platzgründen nicht alle abgehandelt werden können. Auch die Betrachtung aller Energieverbrauchsquellen in einem Haushalt würde den Rahmen dieser Arbeit sprengen. Es muss also eine sinnvolle Auswahl getroffen werden. In Anbetracht der Angabe, dass 35 % des Energieverbrauchs in Deutschland auf die Wärmeversorgung von Gebäuden fallen [4], erscheint es sinnvoll den Fokus speziell auf die Heizung zu richten, denn „85 % der Energie im Haushalt wird für Heizung und Warmwasser gebraucht.“ [1] Dies wird durch eine weitere Quelle bekräftigt, dort heißt es: 75 % der Energie im Haushalt wird verheizt [5].
Eine andere Studie hat ergeben, dass wenn die Raumtemperatur um nur 1 °C abgesenkt wird, werden bereits 6 % Energie gespart [2]. Schon kleine Änderungen können also Großes bewirken. Wenn solche Maßnahmen aber in der Praxis eine Wirkung zeigen sollen, müssen den Verbrauchern genaue und übersichtliche Informationen über ihren Nutzerverhalten bereitgestellt werden. Mehrere Untersuchungen beweisen – „Mieter, die monatlich über ihren Heizungsverbrauch informiert werden, benötigen im Durchschnitt 16 Prozent weniger Energie als Mieter, die keine regelmäßige Heizinformation erhalten.“ [6] Solche Informationen kann ein Energiekontrollsystem bereitstellen aber „ohne die richtige Software-Unterstützung ist kaum ein effizientes Energie-Controlling möglich.“ [3]
Die Aufgabe dieser Ausarbeitung besteht darin, im Rahmen des Smarthomes ein Energiemanagementsystem auf der Basis von Raspberry Pi zu entwickeln, um den Energieverbrauch der Heizung in privaten Haushalten zu optimieren. Außer der Kontrolle und der Überwachung sollen die ermittelten Daten von dem System gesammelt, in einer Datenbank gespeichert und so aufbereitet werden, dass sie dem Verbraucher über einen webbasierten Client zur Verfügung gestellt werden können. Um die Mobilität zu gewährleisten wird auch eine Applikation für Smartphones entwickelt. Laut der aktuellen Marktforschung hat Android einen Marktanteil von 87,5 % [7], deshalb wird die App in dieser Arbeit nur auf die Geräte mit diesem Betriebssystem ausgerichtet. Das Energiemanagementsystem wird mit unterschiedlichen Modi ausgestattet und soll über die verschiedenen Clients gesteuert und bedient werden können.
2 Der Stand der Technik
Obwohl die Hausautomatisierung in privaten Haushalten bereits schon einige Zeit ein aktuelles Thema ist, bleibt dieser Bereich weiterhin weitgehend unbedeckt. Es werden zwar verschiedene Lösungen aus aller Welt angeboten, sie alle weisen jedoch viele Mängel auf. Die Technologieeinheitlichkeit fehlt und die Kompatibilität untereinander ist auch nicht gegeben, weil jeder Hersteller versucht eigene Produkte auf dem Markt zu schützen. Die Divergenz in der Technologie ist eine weltweit verbreitete Problematik. Die Funkspezifikation in dem jeweiligen Land spielt dabei eine große Rolle. 868 MHz ist z. B. ein verbreiteter Standard für Smarthome Funkgeräte in Europa. In den USA wird diese Frequenz für das Mobilnetz verwendet, deshalb müssen die Geräte an das amerikanische 915 MHz Netz angepasst werden [8].
Außer den funkgebundenen werden auch fest verkabelte Systeme angeboten. Der Hersteller Busch-Jaeger, der für seine Gebäudeautomatisierungssysteme und Montagekomponenten bekannt ist, bietet eine Hausautomatisierung mit einem Zweidraht-Bussystem an, welches bis zu 64 Teilnehmer verbinden kann. Der Anschluss über ein Funknetz ist ebenfalls erlaubt. Dieses System kann alle Komponenten innen und außen überwachen und regeln [9]. Solche vollständigen Lösungen aus einer Hand, die ein gesamtes Haus abdecken können, werden von nur wenigen Herstellen angeboten.
2.1 Ein Einblick in die Gebäudeautomatisierung
In der Gebäudeautomatisierung kommen mehrere Bussystemstandards vor, die meist verbreiteten und bekannten sind KNX, LON, Z-Wave und EnOcean. Diese können in drei Kategorien aufgeteilt werden: zentrale, dezentrale und halbdezentrale Bussysteme. Das zentrale System besteht aus einem Kontroller, der eine feste Verbindung zu allen anderen Bestandteilen aufbaut. Bei dem dezentralen System haben die jeweiligen Komponenten, z. B. Aktoren, Sensoren oder Kommunikationsmodule ihre eigenen Kontrollmittel. Wenn die Unterteilung nicht eindeutig erfolgen kann, werden beide Systeme kombiniert und bilden ein halbdezentrales Bussystem [10]. Sie können zu den gewöhnlichen Netztopologien (Linien-, Stern- und Baumverdrahtung) ausgebaut werden, was eine gewisse Flexibilität bei der Montage bietet. Je nach Zielsetzung und in der Abhängigkeit von den vorhandenen technischen Möglichkeiten wird entschieden, aus welcher Kategorie ein Bussystem am besten geeignet ist.
Die Entscheidung, welches Bussystem konkret verwendet werden soll, hängt von der vorhandenen Gebäudetechnik, der Komplexität der Verkabelung und der Anzahl der Teilnehmer ab. Bei KNX z. B. beträgt die maximale Teilnehmeranzahl 14400 und die Leitungslänge einer Strecke von der Spannungsversorgung bis zum Teilnehmer – 1 km. Weitere wichtige Aspekte des KNX-Bussystems sind die Kommunikationsmethode (Funk oder Festverkabelung), die Art der Verkabelung (2- oder 4-adriges Kabel) und der Spannungspegel (21 V bis 29 V) für die Stromversorgung der Teilnehmer [11].
Alternativ zu der herkömmlichen Verkabelung kann die Powerline Technologie verwendet werden. Die Datenübertragung erfolgt dabei über das Stromkabel, wodurch die zusätzliche Verkabelung vermieden wird. Ein LON-Bussystem z. B. verwendet diese Art der Kommunikation. Neben Powerline unterstützt das LON-Bussystem noch viele andere Übertragungsmedien, wie Lichtwellenleiter, Koaxialleiter, Funk, LAN und Zweidrahtleitung. Zugelassen sind 32000 Teilnehmer und eine Leitungslänge von bis zu 2 km. Die Unterstützung vieler Teilnehmer sowie mehrere Übertragungsmethoden und Verkabelungsmöglichkeiten machen die genannten Bussysteme sehr attraktiv für die Nutzung in Industrie- und Großgebäuden [12].
Mit der Popularisierung der Einplatinencomputer sind jüngst Projekte entstanden, die nun auch eine Hausautomatisierung ganz oder teilweise ermöglichen. Die Frameworks gestatten bestimmte Funkgeräte an diese Computer anzuschließen und zu steuern. Die Open Source Projekte Pilight[1] oder FHEM[2] lassen z. B. den Anschluss von kabellosen Geräten, wie Heizkörperthermostate, Lichtschalter oder Steckdosenschalter zu. FHEM ist sehr flexibel und unterstützt mehrere Automatisierungsstandards, wie KNX, Z-Wave, EnOcean u. a. Außerdem kann das Framework noch weitere Geräte, wie Smart TVs, Verstärker und Musikanlagen von verschiedenen Herstellern verbinden und über die Weboberfläche zur Steuerung bereitstellen. Nachteilig dabei ist die Unterstützung von nur den Funkstandards und eine mühsame Anbindung, wobei die Schwierigkeiten nicht unbedingt bei der Software, sondern eher bei den anzuschließenden Geräten liegen, weil sie wegen den gewissen Spezifikationen nur für den Gebrauch mit den Gerätschaften des gleichen Herstellers konzipiert sind.
2.2 Die Anforderungen an ein Smarthomesystem
Die Hausautomatisierung ist ein Teilbereich der Gebäudeautomatisierung und bezieht sich auf die Gegebenheiten der privaten Wohnhäuser. Anders als bei der Automatisierung von Industriegebäuden, kommt bei der Hausautomatisierung dem Wohnkomfort auch eine wesentliche Bedeutung zu [13].
Die Automatisierungstechnik wird immer innovativer und für den privaten Gebrauch immer zugänglicher. Dies lässt die Ansprüche an die Smarthomesysteme stetig wachsen.
Folgend ist eine, durchaus erweiterbare, Auflistung von Anforderungen an ein Smarthomesystem zusammengestellt:
- geringe Beschaffungskosten
- einfache Montage oder montagefreie Installation
- einheitliche Lösung für gesamtes Haus von einem Anbieter
- Bedienungsfreundlichkeit und einfache Handhabung
- Archivierungs- und Visualisierungsmöglichkeiten
- eine mit unterschiedlichen Smartphone-Plattformen kompatible App
- Analysesoftware
- den Bedürfnissen der Nutzer entsprechender Funktionsumfang
Der Funktionsumfang ist ein wichtiger Aspekt und soll an dieser Stelle detaillierter betrachtet werden. Um den unterschiedlichen Wohnsituationen und den wechselnden Bedürfnissen der Hausbewohner gerecht zu werden, muss das System verschiedene Einstellungen für bestimmte Ereignisse und Szenarien zulassen. Nachfolgend sind Anregungen für die möglichen Funktionen im Innenbereich angeführt:
- Lichtsteuerung während der An- bzw. Abwesenheit
- Sicherheitskontrolle durch die Überwachung der Rauchmelder, der Tür- und Fensterkontakte und eines elektronischen Schlosses
- Nacht- und Tagbetrieb – sowohl für die Temperaturregelung als auch für die Steuerung der Rollladen oder der Beleuchtung
- Fenster- und Türenüberwachung für die Temperaturregelung mittels Kontaktabfrage
- Temperaturregelung anhand von dem vorgegebenen Sollwert
- Temperaturregelung nach Zeit oder bei An- bzw. Abwesenheit von Subjekten
Die vier letzten, auf die Temperaturregelung bezogenen Punkte werden in dieser Arbeit umgesetzt.
3 Das Energiemanagement
Die Gründe für das stetig wachsende Interesse an einem effektiven Energiemanagement sind verschieden. Die Weltressourcen werden knapper, das Umweltbewusstsein rückt immer mehr in den Vordergrund, die Energieeinsparungsmaßnahmen werden gefordert.
„Unter Energiemanagement können verschiedene Maßnahmen verstanden werden. Zum einen können Energiemanagementmaßnahmen auf der Basis des persönlichen Verstandes basieren und so das persönliche Verhalten direkt korrigieren.“ [14] Zum anderen kann ein Automatisierungssystem die persönliche Handlungsweise in Bezug auf Energieverbrauch unterstützten und optimieren. Der Einsatz eines Systems mit einer Datenerfassungsfunktion hilft dem Verbraucher die richtigen Maßnahmen zu treffen. Basierend auf der Erfassung des Konsums können dann die richtigen Methoden für die Steuer- und Regelungstechnik gewählt werden. Wie ein Energiemanagementsystem aussehen soll, hängt im Wesentlichen von der Zielsetzung ab. Für die Visualisierung und die Datenerfassung müssen z. B. computer- und datenbankbasierte Systeme eingesetzt werden. Der Verbraucher erhält damit ein Kontroll- bzw. Überwachungsmittel und kann seine Ziele effizienter verfolgen. Die Ereignisse, wie ein offenes Fenster während des Heizvorganges, werden von dem System überwacht und signalisiert.
Aber selbst bei völliger Autonomie braucht das Managementsystem für die Verwaltung und die Bedienung dennoch den Menschen. Trotz eines intelligenten Energiemanagementsystems, das rechtzeitig Meldungen und Warnungen ausgibt, entscheidet immer noch der Anwender, ob etwas unternommen werden soll. Die effektive Erwärmung im Gebäude wird also nicht nur mit einer leistungsstarken Heizquelle oder guter Fenster- und Wanddämmung erzielt, sondern auch durch die richtigen und rechtzeitig vorgenommenen Maßnahmen. Erst damit wird ein effizientes Energiemanagement möglich.
3.1 Der Gebäudewärmebedarf
Der Gebäudewärmebedarf setzt sich aus der Nutzwärme als einem Endprodukt und den technisch bedingten Verlusten bei der Wärmeerzeugung, der Wärmespeicherung, der Wärmeverteilung und der Wärmeübergabe zusammen [15]. Die Verluste, die auf dem Weg vom Wärmeerzeuger bis zum Verbraucher entstehen, müssen bewusst gering gehalten werden. Dafür können z. B. moderne Wärmeerzeuger mit einem hohen Wirkungsgrad eingesetzt werden. Abhängig von den Wärmeträgern, dem Wärmebedarf und solchen Faktoren wie die Kubatur, die Art der Dämmung, das Baumaterial usw., wird entschieden, welcher Wärmeerzeuger zum Einsatz kommt.
Der Wärmehaushalt kann durch die internen Lasten, wie die Anwesenheit von Personen oder die eingeschalteten Geräte, beeinflusst werden. Die Klimasituation ist auch ein wichtiger Faktor, der den Wärmehaushalt im Gebäude aus dem Gleichgewicht bringen kann. Die Einwirkung kann positiv sein, wenn etwa die Wärmezufuhr durch die Sonne im Winter gesteigert wird oder negativ, wenn die Sonneneinstrahlung sich im Sommer ungünstig auf die innere Temperatur auswirkt [16]. Besonders extreme Änderungen führen zur Destabilisierung und zum höheren Energiekonsum. Um die dabei entstehenden Energieverluste unter Kontrolle zu halten, müssen die Regeleinrichtungen vorausschauend arbeiten können. Dafür werden mehr Informationen über die Wettersituation, die Hausparameter und den Nutzerverhalten benötigt [17]. Anhand von diesen Informationen kann ein Auswertungsprogramm die Einstellparameter für die Regeltechnik erstellen. Ein geeignetes und gut geregeltes Energiemanagementsystem kann dann die entstehenden Energieverluste reduzieren.
3.2 Die Regelung
Die Automatisierungssysteme sind autarke Systeme, die die Arbeitsprozesse selbständig ablaufen lassen und sich den ständig ändernden Randbedingungen anpassen. In Form eines Reglers haben sie die Aufgabe Störungen zu beseitigen und die Regelabweichungen zu kompensieren, um die vorgegebenen Sollwerte schnell wieder zu erreichen [18]. Das Ziel ist also die Differenz zwischen dem Soll- und dem Istwert auf null zu regeln.
Die Abbildung 3.1 zeigt den typischen Blockschaltbild einer Regelung mit einem zugeführten Sollwert (w), der Regelgröße bzw. dem Istwert (x) und der Störgröße (z). Die Differenz zwischen dem Sollwert und dem Istwert ist die Regelabweichung (e), die dem Regler zugeführt wird. Die geregelte Größe (y) wird dann der Regelstrecke übergeben. Wichtig für die Funktionalität des Regelkreises ist eine Rückkopplung.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3.1: Typisches Blockschaltbild einer Regelung
In dem Bereich der Gebäudewärmeversorgung kommen die Regelsysteme oft zum Einsatz und ersetzen die Steuersysteme. Wegen den sich ständig ändernden Parametern werden dort solche Systeme gebraucht, die die Zeit- und die Störgrößen berücksichtigen können.
Alle Smarthomesysteme sind mit Reglern ausgestattet, die die laufenden Prozesse überwachen und die Parameter entsprechend den Änderungen anpassen, um die Vorgaben des Bedieners einzuhalten.
4 Die Entwicklung des Systems auf dem Raspberry Pi
Unter Berücksichtigung der Aufgabenstellung wird in den folgenden Kapiteln ein Energiemanagementsystem für die Heizungssteuerung in privaten Haushalten entwickelt. Die Zusammensetzung der Hardware und die Entwicklung der Anwendungssoftware werden ausführlich erläutert.
4.1 Die Hardware
Das Energiemanagementsystem wird auf der Plattform eines Raspberry Pi (RPi) aufgebaut. Diese Einplatinencomputer sind kompakt und zuverlässig, haben einen geringen Stromverbrauch und sind daher für serverbasierte Anwendungen gut geeignet. Ein wesentliches Merkmal ist die vorhandene GPIO Schnittstelle, die den Anschluss der unterschiedlichen Hardware an dem RPi erlaubt. Die in dieser Ausarbeitung gestellte Aufgabe wird mit dem RPi 2 – Modell B gelöst. Dieses Modell ist auf einem System-on-Chip – Broadcom BCM283 aufgebaut. Der Chip hat einen Prozessor mit vier Kernen je 900 MHz, einen Grafikprozessor mit VideoCore und einem OpenGL Treiber sowie eine Full HD Unterstützung mit 1080 Bildpunkten. Des Weiteren ist auf der Platine ein SDRAM DDR2 Speicher mit 1024 MB angebracht. Der RPi verfügt über einen SD-Kartenslot, vier USB-Ports, einen HDMI-Ausgang, eine LAN-Fast-Ethernet-Buchse und eine Kombinationsbuchse für einen Audio- und einen Composite Videoausgang. Die UART, SPI und I2C Schnittstellen sind ebenfalls vorhanden. Der RPi braucht eine Betriebsspannung von 5 V und mindestens 700 mA Strom, anderenfalls könnte das Gerät beim Betrieb mit einer aufwändigen Schaltung abstürzen.
Nach der Installation des Raspbian Betriebssystems werden folgende Einstellungen an dem RPi vorgenommen:
- Das Dateisystem auf der SD-Karte wird erweitert, um das volle Speichervolumen von 32 GB nutzen zu können;
- Die SSH, SPI und I2C Schnittstellen werden freigeschaltet;
- Die grafische Oberfläche wird eingeschaltet;
- Der Grafikspeicher wird von 64 MB auf 128 MB erweitert;
- Die automatische Anmeldung wird deaktiviert, um Root-Benutzer verwenden zu können;
- Der Root-Benutzer wird aktiviert;
- Der Samba Server wird für das Filesharing installiert und eingerichtet;
- Der VNC Server für den Fernzugriff wird installiert.
Mit den apt-get Konsolenbefehlen werden folgende zusätzliche Module installiert und konfiguriert: die MySQL Datenbank, der Apache Server und PHP – eine serverseitige Skriptsprache. Zusammen mit dem Raspbian Betriebssystem bilden sie ein Softwarepaket namens LAMP, das für den Webserveraufbau benutzt wird.
Um alle Bauelemente an dem RPi anschließen zu können wird eine Schaltung auf der Europlatine aufgebaut. Alle GPIO Pins sind auf die Streifenraster der Platine aufgeteilt und mit den entsprechenden Sensoren und Aktoren verbunden. Für die Pins der GPIO Schnittstelle gibt es unterschiedliche Nummerierungsweisen, hier wird die gleiche Art der Nummerierung verwendet, wie sie in der WiringPi Bibliothek[3] genutzt wird. Die Platine ist mit dem RPi durch ein 40-adriges Flachbandkabel verbunden. Die Abbildung der Experimentierplatine sowie alle anderen Bauelemente sind im Anhang A.1 zu finden. Die Belegung der GPIO Schnittstelle kann dem Schaltplan im Anhang A.2 entnommen werden.
An der Platine werden analoge und digitale Temperatursensoren, ein analoger Lichtsensor, ein Stellantrieb für die Heizung, eine 8-fach Relaisplatine, ein externes 5 V Netzteil und ein Ventilator für die RPi Kühlung angeschlossen.
Analoge Sensoren LM335z werden hier für die Messung der Heizungstemperatur eingesetzt. Ein analoger Sensor besteht aus einer integrierten Schaltung mit zwei Zener-Dioden und misst anhand der Durchschlagspannung die dazu proportionale Temperatur. Die Messabweichung beträgt, im kalibrierten Zustand, 1 °C bei 25 °C Raumtemperatur. Diese Sensoren werden über einen Analog-Digital-Wandler (AD-Wandler) – Microchip MCP3008 angeschlossen. Er hat acht Kanäle und eine Auflösung von 10 Bit, womit 1024 Quantisierungsstufen erreicht werden.
Digitale Temperatursensoren DS18B20 werden hier für die Messung der Raumtemperatur verwendet. Ein digitaler Sensor besitzt eine Mikroschaltung mit einem integrierten AD-Wandler, der eine 12 Bit Auflösung hat. Die Messabweichung beträgt +/- 0,5 V in einem breiten Messbereich von -10 °C bis +85 °C. Die Datenübertragung erfolgt durch einen Eindraht-Bus.
Die Beweggründe für die Benutzung beider Sensortypen sind folgende: Der Einsatz eines AD-Wandler für die analogen Sensoren bewirkt, im Vergleich zu den digitalen, eine schnellere Übertragung der Messdaten. Die acht Kanäle des AD-Wandlers ermöglichen eine Verbindung von bis zu acht analogen Sensoren. Beim Anschluss von mehreren AD-Wandlern kann die Anzahl der Temperatursensoren um ein Vielfaches erhöht werden. Die digitalen Temperatursensoren sind zwar langsamer bei der Übertragung, sind dafür aber sehr präzise und einfacher in der Handhabung.
Der analoge Lichtsensor – LDR wird ebenfalls über den AD-Wandler angeschlossen. Dieser LDR misst keine Beleuchtungsstärke, sondern ermittelt anhand der dynamischen Spannung und der festgelegten Schaltgrenze, wann der Nachtmodus eingeschaltet werden soll.
Der thermoelektrische Stellantrieb von Strawa, der hier zum Einsatz kommt, kann zusätzlich zu dem Steuerbetrieb auch manuell geöffnet werden. Ohne Strom ist der Antrieb geschlossen und kann bei einem Stromausfall per Hand aufgedreht werden. Die Aufwärm- bzw. die Abkühlzeit beträgt ca. 3 Min. bis zum vollständigen Öffnen oder Schließen. Wegen der Steuerspannung von 230 V, kann der Stellantrieb nicht direkt vom RPi bedient werden und wird über eine Relaisplatine angeschlossen. Die 230 V Anschlüsse sind im Haus meist überall verfügbar und bieten eine zusätzliche Anschlussmöglichkeit. Der montierte Stellantrieb ist im Anhang A.1 abgebildet.
Die Relaisplatine besteht aus acht Relais, die am Arbeitskreis die Lasten mit einer Spannung von bis zu 230 V schalten können. Der Steuerkreis ist von dem Steuergerät über den Optokoppler galvanisch getrennt. Die Steuersignale liegen im Bereich von 3,3 V bis 5 V, daher ist sie für den Anschluss am RPi sehr gut geeignet.
Das Netzteil mit einer Stromstärke von 700 mA war für den Betrieb des RPi solange ausreichend, bis die zusätzlichen Geräte angeschlossen und die ergänzenden Funktionen freigeschaltet wurden. Wegen dem dauerhaft laufenden Serverprogramm, den zusätzlichen Softwaremodulen und der Steuerung des Stellantriebes hat sich der Stromverbrauch stark erhöht. Die Temperaturmessung in dem Chip hat ergeben, dass der Prozessor sich stark aufwärmt und abzustürzen droht. Aus diesem Grund sind eine aktive Kühlung und ein externes, leistungsstärkeres Netzteil angeschlossen worden. Das Netzteil ist an der Experimentierplatine an dem +5 V Pin angeschlossen worden. Zu beachten ist, dass bei dem RPi 2 die externe Spannung an dem Pin 4 und nicht an dem Pin 2 anzuschließen ist.
Zum Schluss ist die Bestimmung der Kabellängen für die Verbindung der im Haus verteilten Komponenten durchgeführt worden. Das Hauptaugenmerk lag dabei auf dem Anschluss von Temperatursensoren, weil die zu langen Kabel die Messergebnisse verfälschen könnten. Der Einfluss des Leitungswiderstandes hat sich jedoch als sehr gering erwiesen und wird daher vernachlässigt. Bei den hausüblichen Kabellängen gibt es also keine Begrenzungen.
4.1.1 Die Einrichtung der Java-Laufzeitumgebung
Für den GPIO Schnittstellenzugriff können mehrere Programmiersprachen verwendet werden, in dieser Arbeit wird die Auswahl auf Java begrenzt. Diese Sprache ist einfach in der Anwendung wegen der großen Bibliothek mit vielen Methoden, ihrer Plattformunabhängigkeit sowie einer guten Strukturierung. Java wird ebenfalls bei der Programmierung der App für das Android-Smartphone verwendet, somit erfolgt die Entwicklung beider Anwendungen auf der gleichen Programmierplattform.
Um den RPi mit Java programmieren zu können, müssen eine Laufzeitumgebung und die Pi4J-Bibliothek installiert werden. Die Laufzeitumgebung beinhaltet neben der Virtuellen Maschine (VM), um Java-Programme betriebssystemunabhängig auszuführen, noch einen Debugger und einen Compiler. Diese werden gebraucht, um auf dem RPi programmieren zu können. Es kann auch eine vereinfachte Version des Java-Pakets installiert werden – Java Runtime Environment, die nur die VM beinhaltet und somit nur die Ausführung der Java-Programme auf dem RPi erlaubt. Das Java-Paket wird mit der Voraussetzung eines Internetzuganges automatisch mit dem folgenden Konsolenbefehl installiert:
sudo apt-get update && sudo apt-getinstall oracle-java8-jdk
Mit den folgenden Befehlen werden die Konfigurationen für die VM und den Compiler durchgeführt:
sudo update-alternatives –-configjavac
sudo update-alternatives --configjava
Nachdem die Laufzeitumgebung erfolgreich installiert ist, können die Versionen von dem aktuell installierten Paket mit folgenden Befehlen angezeigt und überprüft werden:
java –version und javac –version
Wenn die Installation fehlerfrei ist, dann erscheint auf dem Bildschirm die Versionsnummer der aktuell installierten Java-Laufzeitumgebung.
Die Pins der GPIO Schnittstelle sind die direkten Abführungen von dem ARM-Prozessor, deswegen müssen die Programme, die auf GPIO zugreifen, einen „nativen ARM-Code erzeugen.“ [19] Der unmittelbare Zugriff auf die Hardwareebene ist mit Java also nicht ohne Weiteres möglich. Hierfür gibt es aber ein spezielles Projekt, das diesen direkten Zugriff ermöglicht. „The Pi4J Project – Java I/O Library for the Raspberry Pi“ ist von Robert Savage in Zusammenarbeit mit anderen Programmierern entwickelt worden. Die aus mehreren Modulen bestehende Bibliothek kann auf der Internetseite des Projektes[4] als ein Archiv heruntergeladen und auf dem RPi aufgesetzt werden. Neben der manuellen Installation kann die Bibliothek auch mit dem folgenden Konsolenbefehl installiert werden:
curl -s get.pi4j.com | sudobash
Mit diesem Befehl wird ein Bash-Skript heruntergeladen, welches mehrere Schritte durchführt – es lädt die Dateien herunter, installiert sie und fügt sie den lokalen Bibliotheken hinzu.
4.1.2 Das Auslesen der Signale mit Analog-Digital-Wandler
Eine wichtige Spezifikation eines AD-Wandlers ist das Vorhandensein einer Kommunikationsschnittstelle für die Datenübertragung. Der Baustein MCP3008 hat eine SPI Schnittstelle, die ein Master-Slave-Bussystem ist. Wenn nur ein Slave-Gerät, von mehreren möglichen, vorhanden ist, werden minimal vier Leitungen gebraucht:
- Serial Clock (SCLK) – eine Taktleitung, die je nach Baustein eine Übertragungsgeschwindigkeit bis maximal 70 MHz vorgibt;
- Master Output, Slave Input (MOSI) – eine Datenleitung von Master in Richtung Slave;
- Master Input, Slave Output (MISO) – eine Datenleitung von Slave in Richtung Master;
- Chip select (CS) – gibt vor, welcher Slave-Chip kommunizieren soll.
Da es in dem Datenblatt [20] zu dem MCP3008 Baustein keine Hinweise für die Außenbeschaltung gibt, wird er direkt am RPi, wie auf dem Schaltplan im Anhang A.2 dargestellt, angeschlossen. Nachdem der AD-Wandler und die Sensoren an dem RPi angebracht sind, kann die Treiberklasse erstellt werden.
Abbildung in dieser Leseprobe nicht enthalten
Der AD-Wandler wird von dem Master – dem RPi konfiguriert, deshalb werden unterschiedliche, bausteinabhängige Parameter übertragen, z. B. die Auflösung, die Verstärkung, die Wortlänge, der Kanal bzw. die Anzahl der Kanäle, die Abtastrate, der SPI-Modus u. a. In dem fünften Abschnitt des AD-Wandler Datenblattes [20] wird beschrieben, wie die command Bytes generiert werden sollen, damit die Kommunikation stattfinden kann. Die Abbildung 4.1 verdeutlicht die Belegung der Konfigurationsbytes vor und nach der Konvertierung.
Abbildung 4.1: Command Bytes und das Konvertierungsergebnis
command[0] trägt den Startbit, command[1] trägt die Information für die single-ended Konvertierung und für die Kanalnummer, command[2] trägt nur die dummy Bits.
Abbildung in dieser Leseprobe nicht enthalten
Laut dem Datenblatt [20] kann der Baustein mit zwei SPI-Modi – 0 und 3 arbeiten. Da mode 0 von der Pi4J-Bibliothek standardmäßig unterstützt wird, wird er auch bei der Erstellung der Treiberklasse verwendet.
Der Quelltext 4.1 zeigt einen Auszug aus der Klasse MCP3008. Die Zeilennummerierung in diesem und in allen folgenden Quelltextauszügen entspricht der, der Quelltextdateien, die sich auf der beiliegenden CD befinden. Die Unterbrechungen der fortlaufenden Nummerierung sind durch Zeilenumbrüche bedingt.
Ab der 11. Zeile werden die ersten Parameter definiert und angelegt. So wird CS0 und der Takt von 1 MHz gewählt. Der Konstruktor wird mit den Parametern cs und clock geladen, wodurch bei der Erzeugung der Instanz die Werte des Bedieners übermittelt werden. Falls ein Fehler auftritt, wird die Zahl -1 zurückgemeldet, die durch die if Anweisung abgefangen und durch den println Befehl in der Konsole ausgegeben wird. Die Methode readChannel() in der Zeile 37 übernimmt die Generierung des Konfigurationsbytes und die Ergebnisbearbeitung. Der eingehende Parameter ist der gewählte Kanal, der bei dem Aufruf übermittelt wird. In der Zeile 41 wird der command[0] Byte mit einem Startbit erzeugt. Bei dem zweiten Byte wird das unterste Nibble aus der Summe der Zahl 8 und dem übergebenen Kanal erzeugt und um vier Positionen nach links verschoben. Das letzte Byte übergibt nur die dummy Positionen, um die Verschiebung von dem Ergebnis aus dem Schieberegister zu erzwingen. In der Zeile 44 werden mittels des erzeugten Spi Objektes die Parameter CS, der command Array und seine Länge übermittelt. Nach dem Übermitteln der Daten zum MCP3008 Baustein, soll das Wandlungsergebnis sich in den command Bytes [1] und [2] vorfinden. So wird in den Zeilen 45 und 46 die Manipulation mit den Bytes durchgeführt, um sie in der Zeile 47 in einer Variablen value zu vereinen.
Abbildung in dieser Leseprobe nicht enthalten
Quelltext 4.1: Auszug aus der Klasse ‚MCP3008’, Zeilen 11-55
Die Methode readChannelInVolt() in der Zeile 51 gibt den berechneten Wert in Volt zurück. In der Zeile 52 wird die bereits beschriebene Methode readChannel() aufgerufen und der zurückgelieferte Konvertierungswert in der weiteren Zeile umgerechnet. Die Zahl 5.0 ist die Referenzspannung und 1024.0 – die Anzahl der Stufen für die 10 Bit Auflösung.
Mit der Treiberklasse können jetzt die Spannungen der angeschlossenen Sensoren in dem Programm gemessen werden. Da die gemessene Spannung aber kein endgültiger Wert ist, der in die weiteren Berechnungen einfließt, werden für alle Sensoren die entsprechenden Umrechnungsformeln aufgestellt. Für den analogen Temperatursensor wird die Formel anhand der Angaben im Datenblatt [21] berechnet, dort ist der Temperaturfaktor von 10 mV/K angegeben. Der Sensor ist mit einem 2 kΩ Vorwiderstand verschaltet, damit an dem Ausgang die Spannung abgegriffen werden kann. Der Aufbau ist auf dem Schaltplan in dem Anhang A.2 zu sehen. Der Temperaturfaktor ist in Kelvin angegeben und wird zum Verhältnis t °C = (T - 273,15) K in Grad Celsius umgerechnet. Somit ergibt sich folgende Umrechnungsformel:
Abbildung in dieser Leseprobe nicht enthalten
Der Temperaturfaktor wird mit der gemessenen Spannung verrechnet und in Grad Celsius umgewandelt.
Die Messspannung von dem LDR wird nicht in Lux umgerechnet, da mit dem Sensor nur zwischen dem Tag und der Nacht unterschieden wird und die experimentell ermittelte Schaltgrenze anhand der Spannung eingestellt wird.
4.2 Die Anwendungssoftware
Nachdem die notwendigen Vorbereitungsarbeiten abgeschlossen und alle Hardwarekomponenten an dem RPi angeschlossen sind, kann mit der Programmierung begonnen werden.
Zuerst wird festgelegt, wie das Programm aufgebaut werden soll und dann wird ein Konzept aufgestellt, wie die Software zusammen mit allen Hardwarekomponenten funktionieren soll. Dabei stehen zwei zentrale Kernpunkte im Vordergrund, die in den folgenden Kapiteln der Reihe nach abgearbeitet werden. Der erste Kernpunkt ist die Entwicklung eines Reglers, der ganz über die Software realisiert werden soll sowie dessen Anbindung an die Hardware. Dies wird in den Kapiteln 4.2.1, 4.2.1.1 und 4.2.1.2 ausführlich erläutert. Der zweite Kernpunkt ist der Aufbau einer webbasierten Anwendung und eines HTTP-Servers, diese Thematik wird in den Kapiteln 4.2.3 und 4.2.5 behandelt.
Der HTTP-Server stellt einen Knotenpunkt dar, um welchen alle anderen Komponenten verteilt und miteinander verbunden werden. Die bildliche Darstellung des Konzeptes ist in der Abbildung 4.2 zu sehen. Die blauen Rechtecke stehen für die Java-Klassen, die weißen mit der blauen Umrandung repräsentieren die Soft- oder die Hardware des RPi. Das Rechteck in orange ist das Smartphone. Das UML-Klassendiagramm für das Java-Programm befindet sich im Anhang A.3.
Abbildung 4.2: Konzeptübersicht
Die main() Methode der Klasse SmarthomeOnRPi startet das Programm und erzeugt das Objekt der Klasse SHServer. Der SHServer läuft in dem eigenen Thread und wartet auf die eingehenden Daten von der Website. Beim Aufrufen der Webseite werden Objekte der Klasse Raum mit den Bezeichnungen der entsprechenden Webseitentitel erzeugt. So wird jeder Webseite ein Raum-Objekt zugewiesen. Jeder Raum erzeugt ein Objekt der Klasse Regler, der in dem eigenen Thread die Aufgaben selbstständig abarbeitet und die Parameterdateien für den Regler mittels der Klasse ParaFile bildet. Diese Parameterdateien beinhalten entweder die Standardparameter oder die von der Webseite bereits übermittelten Parameter. Anhand der Parameterdatei wird das Verhalten von dem Regler kontrolliert. Der Regler beinhaltet den Zeit- und den Nachtmodus, die nach Bedarf aktiviert oder deaktiviert werden können. Für alle möglichen Szenarien eines Alltages genügt bereits allein der Zeitmodus. Er wird verwendet für die langfristige und geplante Abwesenheit, z. B. Urlaub sowie für das kurze und spontane Verlassen der Räumlichkeiten, z. B. um schnell ins Geschäft zu fahren und auch für die regelmäßige An- und Abwesenheit, wenn die Räume jeden Morgen verlassen und jeden Abend wieder gefüllt werden. Der Nachtmodus dient lediglich dazu, die Temperatur schnell auf ein vorgegebenes Minimum einzustellen.
Das SmarthomeOnRPi Programm enthält die Möglichkeit der Wiederherstellung nach dem Neustart. Wenn vor der Unterbrechung der Regler in den Räumen eingeschaltet war bzw. bestimmte Modi aktiviert waren, dann werden diese Räume mittels einer Recovery Routine bei dem SHServer Objekt und einer Methode im ParaFile Objekt wieder erzeugt und der Regler mit den gleichen Einstellungen wieder aktiviert.
Die Benachrichtigungen von dem Server werden an die Website über eine HTTP-Verbindung und an das Smartphone über Firebase – einen speziellen Dienst verschickt.
Die Betrachtung aller Klassen im Detail würde den Rahmen dieser Arbeit sprengen. So werden im Folgenden nur einige Teile des Programmcodes beispielhaft vorgestellt. Die vollständigen Quelltexte zu dem ganzen Projekt sind auf der beiliegenden CD abgelegt.
4.2.1 Die Entwicklung eines Heizungsreglers
Um einen Regler für die Heizung zu entwickeln wird zuerst die Regelstrecke, bestehend aus dem Stellantrieb, der Heizung und der zu erwärmenden Luft, untersucht. Dabei werden die notwendigen Parameter ermittelt, um den Regler, entsprechend der zu regelnden Strecke zu programmieren und einzustellen.
4.2.1.1 Die Untersuchung der Regelstrecke
Der Stellantrieb wird manuell vollständig geöffnet, die Temperaturwerte werden über die Zeit von 15 Min. bzw. 900 Sek. aufgenommen. Die dabei eingestellte Temperatur soll von dem Regelsystem erreicht werden. Dieser Sollwert wird in der Regelungstechnik als Führungsgröße bezeichnet [22]. In diesem Fall wird eine Regeldifferenz von 9 °C untersucht, weil sie die Langzeitwirkung gut verdeutlicht. Diese Differenz wird mit ca. 720 Sek. erreicht.
Abbildung in dieser Leseprobe nicht enthalten
Quelltext 4.2: Auszug aus der Klasse ‚Regler’, Zeilen 21-126
[...]
[1] https://www.pilight.org/
[2] https://fhem.de/
[3] http://wiringpi.com/
[4] http://pi4j.com/
-
-
-
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.