Show all projects!

Heizungssteuerung 2015

Heizungs­steuerung selberbauen mit Linux - Raspberry PI

Bei diesem Projekt handelt es sich um die Entwicklung einer Fußboden­heizungssteuerung (Gas-Brenner) mittels des Rapberry PI.

Es gibt eine aktuellere Version!

Zielsetzung

Eine in die Jahre gekommene, mittels einer durch PIC AT89 implementierten Heizungs­steuerung , sollte nach einem Jahrzehnt durch eine neue Variante ersetzt werden. Da die Hardware, sowie die Programmierung des PIC Mikrocontrolers in Assembler, recht aufwändig ist, wird bei der neuen Heizungssteuerung keine spezialisierte Hardware eingesetzt, sondern ein Single Board Computer (SBC) sowie die einfache Programmiersprache PHP verwendet. Sogenannte UnitTests stellen eine einwandfreie Funktion der Applikation sicher.

Die Anforderung an den Regelkreis sind recht simpel: Der Brenner einer Heizung soll über die Regelung ein- und ausgeschaltet werden. Ob der Brenner ein- oder ausgechaltet wird, hängt von den beiden Temperatursensoren (Außentemperatur und Temperatur des zurücklaufenden Wassers) ab. Die Pumpe die in dem Wasser­kreislauf für die Strömung sorgt, soll ebenso über die Regelung gesteuert werden und nur bei Bedarf laufen, was Strom spart. Ein Sommermodus stellt sicher, das die Pumpe auch wenn nicht geheizt wird, mindestens einmal am Tag für 10 Minuten läuft.

Die Konfiguration der Heizung selber wird über ein Webinterface (Touch tauglich) ermöglicht, welche entweder auf einem extra Touchscreen angezeigt wird, oder über das Netzwerk erreichbar ist.

Schema der Heizungs­steuerung

Benutzerinterface/Display

Für die Heizung wird ein 7 Zoll großes Touchscreen verwendet werden. Das UI basiert auf jQuery Mobile, um die Bedienung zu vereinfachen. Die Menüführung weist den folgenden Aufbau auf:

  • Statistiken
    • Temperaturverlauf/Verbrauch für diesen Tag
    • Temperaturverlauf/Verbrauch für diese Woche
    • Temperaturverlauf/Verbrauch für diesen Monat
    • Temperaturverlauf/Verbrauch für dieses Jahr
  • Systekonfiguration
    • Sollwertkurve Rücklauf
    • Pumpenkonfiguration
    • Nachtabsenkung
    • Temperaturfühler

Die aktuellen Informationen sind in einer Fußzeile auf jeder Seite abzulesen.

GUI Oberfläche der Heizungs­steuerung

Entscheidung für den Raspberry Pi

Die Heizungs­steuerung direkt unter Linux zu implementieren, bietet viele Vorteile, da das Zurückgreifen auf ein komplettes Betriebssystem viele Vorzüge bereithält. Hierzu gehören der einfache Netzwerk­an­schluss für Wartung, die Möglich­keit Daten­banken für Temperatur­werte zu verwenden, sowie ein Touch­screen als Interface anzu­schließen. Frühere aufwändige Arbeiten, wie das Anschließen eines DCF Empfängers (Funkuhr) werden damit unnötig, da hier z.B. das NTP des Internets zur Zeitsynchronisierung der Heizungs­steuerung herangezogen werden kann.

Die Kosten für einen kompletten PC sind mittlerweile recht gering, besonders wenn es sich um SingleBoard PCs handelt. Der Aufbau mittels Standard PC Hardware ermöglicht, die Steuerung noch lange in Betrieb zu halten und auch in 10 Jahren noch auf Ersatzteile zurückgreifen zu können.

Bezug des Quellcodes

Der Quellcode steht unter der GPL-Lizenz, so dass die Steuerung nach Belieben für andere Zwecke angepasst werden kann.

Download eines fertigen Images

Alle nachfolgenden Texte beschreiben die komplette Installation der Heizungs­steuerung, die besonders unabdingbar sind, wenn die Steuerung für andere Zwecke eingesetzt werden soll. Ein fertiges Image der Steuerung als Download liegt alternativ ebenfalls bereit. Dies ist für den schnellen Einstieg, oder Linux- und PHP-Anfänger, eine gute Wahl.

  • 09.02.2014 Aktualisierung auf Revision 31 - Umzug der kompletten Steuerung in /home/pi/heating
  • 27.09.2014 Aktualisierung auf Revision 81 - Der Raspberry PI B+ wird nun untersstützt
  • 22.11.2014 Aktualisierung auf Revision 101 - Umstellung auf Readbean (sowie automatische Datenbankgenerierung) und Raspberry 2 Support/li>
  • 22.02.2015 Aktualisierung auf Revision 107 - Reduzierung der 'jobs' und Vereinfachung der Ordnerstruktur./li>
  • 15.03.2015 Aktualisierung auf Revision 119 - Oberflächenumbau auf Angular JS, Flot Diagramme via JSon erzeugen/li>

Das Image ist auf Sourceforge verfügbar.

Die Zugangsdaten für den SSH Login des fertigen Images lauten:

  • Benutzername "pi"
  • Password "raspheat"

Das Image startet die grafische Oberfläche nicht automatisch, da dafür der 512MB Raspi nötig ist. Mann kann diese dann selber aktivieren.

#Installation des kompleten Images (4GB Speicherkarte nötig)# Wichtig! /dev/sdX durch die Laufwerksbezeichnung der angeschlossenen Speicherkarte ersetzen # (Liste kann mit "cat /proc/partitions" ermittelt werden)# Der Vorgang dauert einige Minuten und erzeugt erst nach Fertigstellung eine Ausgabesudo su -cat /proc/partitionsbunzip2 -dc dateiname_des_heruntergeladenen_images.img.bz2 | dd bs=1M of=/dev/sdX

Meldungen dieser Art "dd: »/dev/sdd“ wird geschrieben: Auf dem Gerät ist kein Speicherplatz mehr verfügbar", erfordern den Einsatz einer größeren Speicherkarte. Da nicht alle 4GB-Speicherkarten eine einheitliche Speicherkapazität aufweisen, empfiehlt sich die Verwendung einer 8GB-Karte.

Grundlagen für die Heizungssteuerung

Einige der verwendeten Tools/Bauteile/Software sind in den folgend aufgeführten Artikeln teilweise ausführlicher beschrieben. Diese zu lesen ist nicht unbedingt erforderlich, sie können aber in Problemfällen hinzugezogen werden.

Temperaturmessung mit Linux mittels DS9490R-USB

Hardwaresteuerung

Bei der Hardware handelt es sich um die externe Beschaltung (Platine), welche die Schnittstelle zwischen dem Raspberry Pi und der Heizung darstellt. Die Platine ist über ein Flachbandkabel und einen Stecker mit dem Raspberry Pi verbunden. Der Raspberry Pi wird durch die Verwendung von Relais galvanisch getrennt. Über diese digitalen Ausgänge sollten Schütze angesprochen werden, welche z.B. den Anlaufstrom der Pumpen verkraften. Die Platine erhält Ihre Versorgungsspannung (5V) vom Raspberry.

Verbindung Heizung und Steuerung Bild zur Verfügung gestellt von Oktavian Teister

Die Platine besitzt drei digitale Ausgänge, von denen zwei benötigt werden. Über das Ausgangsrelais eins werden die Pumpen angessteuert, über das zweite Relais wird der Brenner eingesschaltet.

Aufbau der externen Beschaltung am GPIO Port

Das Fertigen zweier Platinen ist für unter 20€ möglich (Es wird nur eine benötigt).

Um sich die Platine herstellen zu lassen, kann die layout.brd - Datei für den Ätzservice an einen Platinenbelichter

gesendet werden, beispielsweise an den Service von Platinenbelichter.de.

Layout der Platine

Bestückungsliste(nicht komplett)

Artikel Beschreibung AnzahlSPK 100.000µF-V Speicherkondensator, Raster 5mm, 100. 1AWG 28-26G 3M Flachbandkabel AWG28, 26-pol., grau, 1PFL 26 Pfostenbuchse, 26-polig, mit Zugentlastun 2AKL 101-08 Anschlussklemme 8-polig, RM 5,08 1SL 2X13G 2,54 2x13pol.-Stiftleiste, gerade, RM 2,54 1METALL 220 Metallschichtwiderstand 220 Ohm 25METALL 1,20K Metallschichtwiderstand 1,20 K-Ohm 25G6D 1A ASI 05V Schmales Netzrelais G6D 5 VDC, 1 Schl 4MEN RTZ 2040R 4-fach LED-Array, rot, Ø 2mm, stehend 1BC547B Transistor 3LEDs Eine Rote LED 5mm 1
Raspberry Pi mit über GPIO geschalteten LEDs

Flachbandkabel

Wichtig: Pin 1 auf der Platine ist der PIN auf der Seite der LED, welcher über das Flachbandkabel mit PIN 1 des Raspberry PI verbunden werden muss.

Relais Aus-/Eingänge Pin-Belegung der Platine

  1. Brenner
  2. Brenner
  3. Pumpe
  4. Pumpe
  5. Frei (für zukünftige Anwendungsfälle)
  6. Frei (für zukünftige Anwendungsfälle)
  7. Sensor für Warmwasser (optional)
  8. Sensor für Warmwasser (optional)

Software

Als Basissystem wird auf dem Raspberry Pi Raspbian, eine Debian Variante, verwendet. Die Laufzeitumgebung ist eine typische LAMP Umgebung, bestehend aus dem Apache Webserver, Mysql Datenbank, und PHP als Programmiersprache. Dies alles kann problemlos auf einer 4GB großen SD-Speicherkarte abgelegt werden.

Basissystem einrichten

Nun folgt die Einrichtung des Betriebssystems. Die einzelnen Schritte auf der Console können direkt unter Linux ausgeführt werden. An Stellen, an denen eventuelle Anpassungen vorgenommen werden müssen, erscheint ein entsprechender Vermerk.

wget "http://downloads.raspberrypi.org/raspbian_latest"unzip raspbian_latest# Ergebnis ist ein Image, mit einem Dateinamen ähnlich wie: 2014-01-07-wheezy-raspbian.img# Wichtig! /dev/sdX durch die Laufwerksbezeichnung der Speicherkarte ersetzen # (Liste der Speicherlaufwerke kann mit "cat /proc/partitions" angezeigt werden)# Der folgende Vorgang dauert einige Minuten und erzeugt erst eine Ausgabe, wenn er fertig ist.sudo dd bs=4M if=2015-02-16-wheezy-raspbian.img of=/dev/sdX

Nun wird die erstellte SD-Karte in den Raspberry eingesteckt. Der Raspberry Pi verbindet sich mit dem Netzwerk und bootet. Der Raspberry PI erhält dann über DHCP, z.B. von einer FritzBox, eine IP für das lokale Netzwerk. Der Netzwerkname ist mit "raspberrypi" voreingestellt. Das initial Passwort von Rasbian ist "raspberry", der SSH Benutzer ist "pi".

# Auf den Raspberry über das Netzwerk verbinden, und # mit dem Benutzer "raspberry" und dem Passwort "pi" anmeldenssh -lpi raspberrypi# Initiale konfigurationsudo raspi-config# Einmal "Expand Filesystem" aufrufen und einmal "Internationalisation Options", dort unter "Change Locale" de_DE.UTF-8 UTF-8 # stellen. Danach nochmal "Internationalisation Options" und dann "Change Timezone" auf "Europe/Berlin" stellen.# Danach das Passwort ändern "Change User Password". (Im verfügbaren fertigen Image wurde dies auf 'raspheat' gestellt). # Dann im Hauptmenü Advanced Options - Hostname den Namen des Systems auf "heating" setzen.# Dann im Hauptmenü Overclock - Auf 800 setzen# # Danach "Finish" und den Raspberry einmal neustarten lassen.
# Erneut auf den Raspberry via Netzwerk verbinden ssh -lpi heatingsudo rpi-updatesudo apt-get update; sudo apt-get upgradesudo apt-get install mc rrdtool owfs-fuse# Mit der Mysql Installation wird das mysql root passwort vergeben ('raspheat' wurde in herunterladbarem Heizungssteuerungsimage verwendet)sudo apt-get install mysql-server-5.5 # als server für phpmyadmin den apache2 wählen. konfiguration phpmyadmin mit dbconfig-common# Im Image wurde erneut das Passwort raspheat vergebensudo apt-get install htop apache2 libapache2-mod-php5 phpmyadmin php-pear php-apc secure-deletesudo a2enmod expiressudo a2enmod headers# Ist riesengroß und wird nicht gebrauchtsudo apt-get purge wolfram-engine libatlas3-basesudo apt-get clean

Der Apache Webserver und phpmyadmin sind ab diesem Zeitpunkt verfügbar. Die Zugangsdaten für den phpmyadmin sind der Benutzer "root" und das Passwort "raspheat".

Temperatursensoren vorbereiten

Die Sensoren werden mittels owfs ausgelsen. Hierzu gibt es einen eigenen Artikel, Temperaturmessung mit Linux mittels DS9490R-USB, welcher ausführlich auf die Details eingeht. Der USB-Adapter und der Temperaturfühler sind vorab anzuschließen.

sudo mkdir /media/1-wiresudo owfs --allow_other -u /media/1-wirels -lah /media/1-wire/cat /media/1-wire/*/temperature

Eine Meldung, ähnlich dem folgenden Beispiel, erscheint.

Ausgabe des Temperaturfühlers

Im vorliegenden Beispiel ist lediglich ein Sensor angeschlossen, welcher gerade 28.875° misst.

Es gibt auch Sensoren die stets ausgelesen werden, unabhängig davon ob ein Temperaturfühler angeschlossen ist. Dieser Sensor der möglicherweise eingebaut ist, liefert immer

unterschiedliche Temperaturen. Dieser ist zu ignorieren.

Hier ein Beispiel für den Raspberry Pi mit einem DS1820 Temperaturfühler sowie dem DS9490R USB Adapter (für den Betrieb der Heizuung sind mindestens zwei Sensoren notwendig,

Außentemperatur und Rücklauftemperatur):

Raspi mit Temperaturfühler via DS9490R

Quellcode der Heizungssteuerung über das SVN Repository auschecken

Um die eingerichteten Temperaturfühler sinnvoll zu verwenden, wird nur der Quellcode des Projektes aus einem SVN Repository geladen.

sudo apt-get install subversioncd ~mkdir heatingcd heating# Wenn nur lesend auf das Project heatingcontrol zugegriffen werden soll:svn checkout svn://svn.code.sf.net/p/heatingcontrol/code/trunk .# Wenn auch schreibender Zugriff auf das Projekt gewünscht ist (Sourceforge Account vorausgesetzt):svn checkout --username=euer_sourceforge_name svn+ssh://notdefine@svn.code.sf.net/p/heatingcontrol/code/trunk .

Konfiguration des Apache Webservers

Im Folgenden ist der Inhalt der Datei "/etc/apache2/sites-available/default" dargestellt. Dieser Inhalt kann z.B mittels des Befehls "sudo mcedit /etc/apache2/sites-available/default" angepasst werden, nachdem eine Verbindung mit dem Raspberry via SSH aufgebaut wurde. Nachdem diese Anpassungen gemacht worden sind, verweist die Oberfläche http://heating schon auf den gerade geladenen PHP Quellcode.

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /home/pi/heating/www <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /home/pi/heating/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>

Der Apache Webserver benötigt auf das temp Verzeichnis schreibenden Zugriff (für Smarty Cache):

cd ~/heating/tempchmod 777 * -R .sudo /etc/init.d/apache2 restart

Datenbank und Tabellen einrichten

Im Folgenden wird eine Verbindung zur Mysql Datenbank als root aufgebaut und danach ein Datenbankbenutzer inklusive Datenbank angelegt. Die Tabellen werden automatisch von der Steuerung mit Standardwerten angelegt, wenn diese nicht vorhanden sind. Der Zugriff auf die Datenbank selber findet über RedBeans statt.

mysql --user=root mysql --password

Folgender Befehl ist nun auszuführen:

CREATE DATABASE `heating` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;CREATE USER 'pi'@'localhost' IDENTIFIED BY 'raspheat';GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , FILE ,INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , EVENT,TRIGGER, SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE,EXECUTE ON * . * TO 'pi'@'localhost' IDENTIFIED BY 'raspheat' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;GRANT ALL PRIVILEGES ON `pi\_%` . * TO 'pi'@'localhost';USE heating;quit

Die benötigten Tabellen werden automatisch über Readbean angelegt.

Cronjobs konfigurieren

Die Heizungssteuerung muss automatisch jede Minute aktiv werden, um die Temperaturen zu erfassen und ggf. einzugreifen. Zudem werden Diagramme in einem regelmäßigen Turnus generiert. Dafür wird das auf Linux-Systemen verfügbare Cronjobmanagement verwendet. Folgend eine Liste der Cronjobs und deren Aufgaben:

  • Cleanup - Beschränkt die in der Datenbank abgelegten gemessenen Werte und löscht Altdaten.
  • Temperatur eintragen - Misst aktuelle Temperaturwerte und trägt diese in die Datenbank ein.
  • Graphen erstellen - Erstellt mittels RRDTool die verschiedenen Temperaturgraphen (für den aktuellen Tag, für die Woche, usw.).

Die genauen Funktionen können im SVN Quellcode angesehen werden.

Die Cronjobs des Benutzer pi kann man sich mit folgendem Befehl anzeigen lassen "crontab -l". Bearbeitet werden diese Cronjobs mit dem Befehl "crontab -e". Um diese Cronjobs nun auf den Raspberry zu übernehmen, müssen folgende Einträge (mittels "crontab -e") ergänzt werden:

0 2 * * * cd /home/pi && ./heating/jobs/cleanup.sh* * * * * cd /home/pi && php ./heating/jobs/insert_new_temp.php >> /dev/null*/5 * * * * cd /home/pi && ./heating/jobs/create_graph_quick.sh >> /dev/null5 */2 * * * cd /home/pi && ./heating/jobs/create_graph_slow.sh >> /dev/null

Ergänzung für die Verwendung eines Touchscreens: sudo crontab -e

*/5 * * * * if [[ ! `pidof -s midori` ]]; then /etc/init.d/lightdm restart;fi

Alle Aufrufe der Cronjobs werden als Mail an das lokale System geloggt, und können mit "mutt" gelesen werden.

#Auswahl "Nur lokal" und Maschinenname "heating"sudo apt-get install postfix mutt

Ob die Cronjobs auch aufgerufen werden, kann mit dem Befehl "tail -f /var/log/syslog" geprüft werden. Diese Logdatei zeigt jede Ausführung eines Cronjobs an.

RRD Tool auf Jahres/Wochen und Tagesstatistiken vorbereiten

Um die gemessenen Werte grafisch darzustellen wird das bekannte RRDTool verwendet (siehe Verwendung von RRDTool).

Die Datenbank der Temperaturwerte wird so eingerichtet, dass diese die Temperaturwerte der letzten zwei Jahre beinhaltet. Die gemessenen Werte werden alle zwei Minuten eingetragen (120*24*365*2=525600 Anzahl der zu speichernden Temperatur­werte für den Zeitraum von zwei Jahren). Das Skript 'init_rrdtool.sh' legt die dafür nötige RRDTool Datenbank an.

cd ~/heating/jobs./init_rrdtool_db.sh

Angeschlossenene Sensoren zuweisen

Eine Liste aller Sensoren erhält man mit folgendem Befehlen:

cd heating/jobs./list_sensors.sh

Dies sollte eine Liste wie diese hier anzeigen. Hiermit kann man bestimmen welcher Sensor welche Temperatur misst:

/media/1-wire/05.4AEC29CDBAAB Sensortyp: DS2405/media/1-wire/10.49EE82020800 Sensortyp: DS18S20 Temperatur: 22.125/media/1-wire/10.49EE83020800 Sensortyp: DS18S20 Temperatur: 32.125/media/1-wire/10.49EE83020900 Sensortyp: DS18S20 Temperatur: 4.125/media/1-wire/10.67C6697351FF Sensortyp: DS18S20 Temperatur: 63.5712/media/1-wire/81.323132000000 Sensortyp: DS1420

Die einzelnen Sensoren weißt man (leider etwas unkomfortabel) direkt im Cronjob zu. Hierzu bearbeitet man die insert_new_temp.sh Datei mittels "mcedit ~/heating/jobs/insert_new_temp.sh".

Tests einrichten

Um die Steuerungssoftware automatisiert zu testen, wird PHPUnit verwende. Die Einrichtung ist für den Betrieb der Steuerung optional, aber für professionelle Softwareentwicklung unverzichtbar, besonders wenn Modifikationen an der Software gemacht werden sollen.

sudo apt-get install phpunit

Unleserliche xdebug "var_dump()" Befehle können, durch den Eintrag der Konfigurationsvariablen 'xdebug.overload_var_dump=0' in die PHP Serverkonfigurationsdatei '/etc/php5/apache2/php.ini', abgechaltet werden. Die Tests (phpunit) werden mittels folgenden Befehlen ausgeführt:

cd ~/heating/testsphpunit

GPIO Schnittstellenports vorbereiten

Um die externe Beschaltung auf der Platine ansprechen zu können, müssen die GPIO Ports eingerichtet werden. Damit ohne Superuserrechte auf die GPIO Ports zugegriffen werden kann (InterfaceGpio.class.php), sind zwei Schritte erforderlich:

  1. Den Benutzer "www-data "in die Gruppe "gpio" eintragen.
  2. Die "/etc/rc.local" anpassen.
sudo usermod -aG gpio www-data

Es muss folgender Code in die /etc/rc.local eingetragen werden:

# Print the IP address_IP=$(hostname -I) || trueif [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP"fi/home/pi/heating/jobs/init_boot.sh# wird später im Artikel beschreiben, für die Verwendung eines X-Serversunclutter&exit 0

Fertig - Glücklich sein!

Die Steuerung ist nun komplett eingerichtet, und kann an die Heizung angeschlossen werden. Diese ist bei mir seit einem Jahr ohne Ausfall in Betrieb. Ich wünsche viel Erfolg, und fröhliches Basteln! Im folgenden Kapitel wird die Heizungssteuerung noch um ein Touchscreen erweitert, damit man zum programmieren keinen extra PC mehr braucht, aber das ist optional.

Touch Display für Raspberry PI

Hardware

Vorraussetzung für das TouchScreen inkl. X-Server ist ein Raspberry PI 2 mit 512 MB Speicher! Für den Betrieb

der Heizungssteuerung ist der X-Server wie auch das Touch-Screen nicht nötig, da die Heizung von einem anderen PC aus wie Web-Interace komplett gesteuert werden kann.


Als Display kommt ein 7"

Tochscreen von Pollin zum Einsatz. Dieses kostet ~50 Euro.

Ich habe mich dazu entschieden das Display mit Elektronik

Schema der Heizungs­steuerung

in ein einzelnes Gehäuse, getrennt von der Heizungssteuerung zu packen. Das erleichtert die Wartung, außerdem kann man es dann auch

später vllt. gegen ein größeres Display tauschen. Als erstes habe ich das Display auf ein passendes Gehäuse aufgeklebt. Das Display

wird mit 9-18Volt betrieben und benötigt bei 12Volt ungefähr 400 mA.

Schema der Heizungs­steuerung
Schema der Heizungs­steuerung
Schema der Heizungs­steuerung
Schema der Heizungs­steuerung
Schema der Heizungs­steuerung

Software

Da das Display fehlerhafte EDID zurückgibt, muss die Auflösung manuell konfiguriert werden. Dazu muss die /boot/config.txt Datei angepasst werden, welches ich aus folgenden Artikel zum einrichten des Displays entnommen habe. Die in diesem Artikel erwähnten Kernel kompilierung ist nicht nötig.

# Datei mit "sudo mcedit /boot/config.txt" bearbeiten, und folgende Einträge hinzufügenframebuffer_width=1024framebuffer_height=600hdmi_force_hotplug=1hdmi_cvt=1024 600 60 3 0 0 0hdmi_group=2hdmi_mode=87

Nach einem Neustart (sudo reboot) ist die Console nun auch lesbar.

Die grafische Oberfläche ist mit "startx" startbar, und funktioniert auch schon mal recht gut. Gestartet wird die lxde Arbeitsfläche. STRG+ESC ruft das LXPanel (Start-Knopf) auf, was vor einer Kalibrierung des Touchscreens vllt. nicht aufrufbar ist. Allerdings muss das Touchscreen noch kalibriert werden. Dazu öffnet man auf der grafischen Oberfläche das LXTerminal, und installiert mit folgendem Befehl die notwendigen Pakete.

sudo apt-get install libx11-dev libxext-dev libxi-dev x11proto-input-dev

Das Kalibrierungstool muss heruntergeladen und compiliert werden

sudo mkdir /etc/X11/xorg.conf.dwget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gztar -xvzf xinput_calibrator-0.7.5.tar.gzcd xinput_calibrator-0.7.5./configuremake./src/xinput_calibrator

Die Ausgabe des Tools nach erfolgreichem Aufruf muss dann in die /etc/X11/xorg.conf.d/99-calibration.conf eingetragen werden. Bspl. mittels "sudo mcedit /etc/X11/xorg.conf.d/99-calibration.conf". Beispielkonfiguration bei meinem Display:

#cat /etc/X11/xorg.conf.d/99-calibration.conf Section "InputClass" Identifier "calibration" MatchProduct "eGalax Inc. Touch" Option "Calibration" "35 1991 87 1961"EndSection

"unclutter" ist ein kleines tool mit dem man den Mauszeiger der grafischen Oberfläche ausblenden kann. Das Tool ist zu installieren, und dann in die rc.local einzutragen (wurde schon weiter oben im Artikel gemacht).

sudo apt-get install unclutter

Browser midori automatisch starten

cd ~mkdir .config/autostartcd .config/autostartmcedit browser_heizung.desktop#Folgende drei Zeilen eintragen und speichern[Desktop Entry] Type=ApplicationExec=/usr/bin/midori -e Fullscreen -a http://localhost

Grafische Oberfläche automatisch starten

  • sudo raspi-config
  • Wähle: Enable Boot to Desktop/Scratch
  • Wähle: Desktop login as user 'pi' at the graphical desktop

Internen Watchdog verwenden

Der Raspberry PI verfügt über einen Hardware Watchdog. Die Funktion ist, das ein bestimmtes Signal an den Watchdog mindestens einmal pro Minute gesendet werden muss. Falls das nicht passiert, startet dieser den Raspberry neu.
Um diesen zu verwenden gibt es einen Watchdog Modul und einen Service, der die Anwendung verweinfacht.

sudo modprobe bcm2708_wdogecho "bcm2708_wdog" | sudo tee -a /etc/modulessudo apt-get install watchdog

Der Watchdog muss noch konfiguriert werden, indem die Datei /etc/watchdog.conf bearbeitet wird.

watchdog-device = /dev/watchdogmax-load-1 = 24# Hier schreibt der Cron jede minuten den gelesenen Fühlerwert rein# mehr als 15minuten keine änderung, dann rebootfile = /home/pi/.last_value_readchange = 1000 
sudo /etc/init.d/watchdog startsudo update-rc.d watchdog defaults

Notiz: Backup der Steuerung erstellen und Wiederherstellen

Speicherplatz nullen auf dem Raspberry, vor Erstellen des Images:

# secure delete installieren, für sfillsudo apt-get install secure-delete# Heruntergeladene Pakete löschensudo apt-get cleansudo rm /var/log/*.gzsudo rm /var/log/*.1sudo rm /var/log/apache2/*.gzsudo rm /var/log/apache2/*.1cd ~# Freien Speicherplatz mit "0" überscrheiben, dasmit das Image kleiner gepackt werden kannsfill -ll -f -z .

Image der SD Karte erstellen und Wiederherstellen:

# Backup erstellensudo dd bs=1M if=/dev/sdd of=heating_control_2014_09_27_r81.img# Backup wieder herstellensudo dd bs=1M if=heating_control_2014_09_27_r81.img of=/dev/sdd

SVN Repository auf Schreibzugriff umstellen

svn switch --relocate svn://svn.code.sf.net/p/heatingcontrol/code\svn+ssh://notdefine@svn.code.sf.net/p/heatingcontrol/code

Externe Quellen

Article Relase Date: / Last Update: