Drucken

Die FBH-Software besteht aus zwei Blöcken:

  1. Darstellung Soll-/Istwerte und Parametereinstellung erfolgt über den integrierten Webserver
  2. Automatische Mess- und Regelfunktionen gesteuert durch CRON und PHP5-Skript

 

Webserver-Funktionen

 

 Regelungs- und sonstige Funktionen

 

Übersicht

 

Software-Beschreibung

 

Datenspeicherung

Es kommt keine Datenbank zum Einsatz, weil die historischen Werte in OpenHAB geführt werden. Der FBH-Controller benötigt nur die eingestellten Parameter und die jeweils aktuellsten Istwerte. Durch die SimpleXML-Funktionen von PHP5 ist es einfach, die Werte in einer XML-Datei zu pflegen. Auf der SD-Karte steht eine Datei fbh.xml zur Speicherung der Parameter und Sollwerte zur Verfügung, die nach einem Neuboot benötigt warden. Nach EInstellung der Werte wird diese Datei nicht mehr beschrieben - die SD-Karte wird geschont.

Bei jedem Neuboot wird die Datei /usr/share/fbh/fbh.xml auf die RAM-Disk unter /mnt/RAMDisk/fbh.xml kopiert. die Controller-Software speichert die jede Minute auftretenden aktuellen Werte nur in der RAM-Kopie ab. Das RAM hat keine Beschränkung bezüglich der Anzahl der Schreibzyklen.

Werden über die Website Parameter angepasst, warden diese nur im Original auf der SD-Karte gepeichert. Nach Abschluß der gesamten Konfiguration kann der Anwender eine Funktion ausführen, welche die geänderte XML-Datei ins RAM kopiert. Bei diesem Vorgang warden die Istwerte gelöscht. Da die Controller-Software jede Minute läuft, dauert es eine Minute oder weniger, biswieder Istwerte verfügbar sind.

 

Programmablauf

Boot

Der Programmablauf beginnt mit dem Booten des Raspberry Pi. Während des Boots wird eine kleine (4MB) RAM-Disk erstellt, welche leer ist. Sie dient der Speicherung der Soll- und Istwerte. Dies geschieht folgendermaßen:

Es wird ein shellscript /usr/share/fbhboot.sh benötigt, das folgenden Inhalt hat:

#!/bin/bash
# Start the boot PHP5 script for FBH heatage controller: sudo chmod 777 /mnt/RAMDisk /usr/bin/php5 /usr/share/fbh/boot.php sudo chmod 666 /mnt/RAMDisk/fbh.xml

Passende Rechte auf die Datei vergeben:

chmod 770 /usr/share/fbh/fbhboot.sh

Script testen:

sudo ./fbhboot.sh

Das Script sollte nach wenigen Sekunden fertig sein. Jetzt hängt man es für den Boot-Vorgang in die Run Command Datei ein. Dazu sind im File die letzten beiden Zeilen vor dem 'exit 0' eizugeben:

sudo nano /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

# RAM disk operations for FBH controller at boottime:
/usr/share/fbh/fbhboot.sh
exit 0

Jetzt den Raspberry Pi testweise booten

sudo reboot

dann wieder als Benutzer 'pi' anmelden und nachsehen ob alles passt:

ls -al /mnt/RAMDisk
total 48
drwxrwx--- 2 root root 60 Jul 8 19:36 .
drwxr-xr-x 3 root root 4096 Jun 12 17:59 ..
-rw-rw---- 1 root root 43873 Jul 8 19:36 fbh.xml

Die fbh.xml ist vorhanden und hat die gewünschten Rechte!

 

CRON

Jede Minute wird per CRON-Job das PHP-Skript für die Heizungsregelung aufgerufen. Das PHP5-Skript prüft zuerst, ob die Parameterdateien auf der RAM-Disk vorhanden sind. Wenn nicht, wird die XML-Datei von der SD-Card ins RAM kopiert. Zusätzlich werden die Raspberry GPIO-Pins initialisiert Anschließend werden folgende Schritte ausgeführt:

Damit der Controller jede Minute aufgerufen wird, muß sein Shellscript 'tempcontrol.sh' in den CRON eingehängt werden:

Als Benutzer 'pi' am Controller anmelden und überprüfen, welche Jobs für 'root' eingerichtet sind:

sudo crontab -l

Jetzt muß die crontab editiert werden:

sudo crontab -e

Es öffnet sich der Editor nano mit dem Inhalt. Man fügt als letzte Zeile

* * * * * /usr/share/fbh/tempcontrol.sh

hinzu und speichert die Datei ab:

no crontab for root - using an empty one
crontab: installing new crontab

Um den Eintrag zu aktivieren, gibt man

sudo /etc/init.d/cron restart

ein.

 

Shutdown des FBH-Controllers über die Weboberfläche ermöglichen

Normalerweise kann der 'reboot'- oder 'shutdown'-Befehl nur mit root-Berechtigung auf der Kommanodzeile ausgeführt werden. Um den Controller komfortabel bedienen zu können, werden diese Befehle in die Weboberfläche eingebaut. Der Webserver läuft als Benutzer 'www-data'.

sudo visudo

hier sind die folgenden beiden Befehle hinzuzufügen:

www-data ALL = NOPASSWD: /sbin/shutdown
www-data ALL = NOPASSWD: /sbin/reboot

In der PHP Webpage wird dann nur der Befehl

<?php system('sudo /sbin/shutdown -h now'); ?>

bzw.

<?php system('sudo /sbin/sreboot'); ?>

verwendet.

 

Benutzerzugriff

Der Benutzerzugriff erfolgt über den Lighttp-Webserver mit PHP5-Webseiten und Twitter Bootstrap.

 

Verzeichnisse und Dateien

 

Name PWD Funktion Aufruf durch
Verzeichnis /usr/share/fbh
boot.php --- Initialisieren der GPIO-Pins und Test Boot-Prozeß
fbh.xml --- XML-File mit allen Parametern, Sollwerten als Kopiervorlage. Ist-Werte
werden in diesem File nicht upgedatet!
PHP-Skripte
functions.inc.php --- Wichtige Funktionen für den FBH-Controller. Wird von fast allen PHP-Skripten aufgerufen. PHP-Skripte
inc.circpump.php --- Include: Zirkulationspumpensteuerung tempcontrol.php
inc.decalc.php --- Include: Entkalkungssteuerung tempcontrol.php
inc.fbh.php --- Include: FBH-Ventilsteuerung tempcontrol.php
inc.pump.php --- Include: FBH-Pumpensteuerung tempcontrol.php
inc.radiator.php --- Include: Radiatorsteuerung tempcontrol.php
inc.sensor.php --- Include: Temperatursensorsteuerung DS128B20 tempcontrol.php
inc.status.php --- Include: Statusverarbeitung tempcontrol.php
tempcontrol.php --- Prüfung Neustart, XML-File auf RAM-Disk
kopieren, Ist-Werte von OpenHAB ab-
fragen, XML updaten
CRON (jede Minute)
       
Verzeichnis /mnt/RAMDisk
fbh.xml --- XML-File mit allen Parametern, Soll- und Istwerten als Kopie der Vor-
lagedatei. Die Istwerte werden minütlich upgedatet.
PHP-Skripte
       
Verzeichnis /var/www
addCircChild.php * Füge einen neue Zirkulationspumpe in der XML-Datei hinzu Admin
addFBHChild.php * Füge ein neues FBH-ventilin der XML-Datei hinzu Admin
addPumpChild.php * Füge eine neue FBH-Pumpe in der XML-Datei hinzu Admin
addRadChild.php * Füge einen neuen Radiatorin der XML-Datei hinzu Admin
addSensorChild.php * Füge einen neuen Sensor DS18B20in der XML-Datei hinzu Admin
circ_list.php --- Liste der Zirkulationspumpen als Übersicht User
circ_parform.php * Parametereinstellung Zirkulationspumpen Admin
circ_tempform.php --- Zeiteinstellung Zirkulationspumpen User
config_parform.php * Parametereinstellung FBH-Controller Admin
fbh_datalist.php --- Aktuelle Messdaten FBH-Ventile User
fbh_list.php --- Liste der FBH-Ventile als Übersicht User
fbh_parform.php * Parametereinstellung FBH-Ventile Admin
fbh_tempform.php --- Temperatur-/Teiteinstellung FBH-Ventil User
functions.inc.php --- Wichtige Funktionen für den FBH-Controller. Wird von fast allen PHP-Skripten aufgerufen. PHP-Skripte
index.php --- Startseite FBH mit Buttons Sommer/Winter, Abwesend und Party.
Darstellung der aktuellen Werte (Soll/Ist)
User
info.php --- Liefert phpinfo() zum Testen User
nav.php --- Navigationsmenü PHP-Skripte
parload.php --- Lade veränderte XML-Datei auf die RAM-Disk User
pump_list.php --- Liste der FBH-Pumpen als Übersicht User
pump_parform.php * Parametereinstellung FBH-Pumpe Admin
rad_datalist.php --- Aktuelle Messdaten Radiatoren User
rad_list.php --- Liste der Radiatoren als Übersicht User
rad_parform.php * Parametereinstellung Radiator Admin
rad_tempform.php --- Temperatur-/Teiteinstellung Radiator User
sensor_list.php --- Liste der Sensoren als Übersicht User
sensor_parform.php * Parametereinstellung Sensor Admin
sensor_showid.php * Zeigt die ID's der DS18B20 an, welche am Controller angeschlossen sind Admin
stat_parform.php * Parametereinstellung Status Admin
       
Verzeichnis /var/www/admin
auth.php * Authentifierungsfunktionen für PHP-Skripte PHP-Skripte
changed.php * Erfolgsmeldung Passwortänderung password.php
hash.php * Hilfsfunktion zur Hash-Ermittlung aus einem Klartext-Passwort Admin
logged_on.php * Erfolgsmeldung Login login.php
login.php * Anmeldung für Adminfunktionen: Passworteingabe User
logout.php * Abmeldung als Administrator Admin
password.php * Passwortänderungs-Formular Admin
Password.txt * Enthält verschlüsseltes Password PHP-Skripte
reboot.php * Rebootet den FBH-Controller (Neustart) Admin
shutdown.php * Fährt den FBH-Controller herunter (Abschaltung) Admin

 'PWD' mit '*' bedeutet, dass ein Passwort eingeben werden muß!

 

Benutzer

Im bereitgestellten Image des Raspberry Pi sind folgende Benutzer und Passwörter zu verwenden:

Bitte passt die Passwörter nach der Installation auf sichere Werte an!

 

Infos im Web

http://www.forum-raspberrypi.de/Thread-tutorial-automatisches-starten-von-scripte-programme-autostart

https://www.raspberrypi.org/forums/viewtopic.php?t=58802