Einfaches Web-Interface für die ELV Raumklimastation RS 500
In einem vorangegangenen Artikel beschrieb ich, wie sich die ELV Raumklimastation RS 500 mit einem Raspberry Pi unter Linux auslesen lässt und wie sich die Messewerte für Temperatur und Luftfeuchte für andere Anwendungen bereitstellen lassen. Mit diesem Beitrag wird die Einrichtung eines minimalen Web-Interfaces zur Anzeige der aktuell gemessenen Werte beschrieben.
Voraussetzungen
Dieser Artikel basiert auf dem vorangegangenen Blog-Beitrag ELV Raumklimastation RS 500 mit Raspberry Pi unter Linux auslesen.
Auf diesem dort eingerichteten Raspberry Pi wird nun das Web-Interface eingerichtet.
Das Web-Interface wurde ganz trivial mit NodeJS umgesetzt, ohne Rücksicht auf Verluste. Insbesondere verzichtet das Web-Interface in dieser ersten Version auf jegliche Absicherungen und Verschlüsselung. Der Einsatz ist also bestenfalls im Rahmen eines lokalen Netzwerks geeignet. Ich würde das so in dieser Form niemals direkt an das Internet anbinden wollen.
Installation der nötigen Komponenten
Das Raspberry ist schon ganz gut ausgestattet, es fehlt im großen und ganzen nur ein weiteres Paket, nodejs
:
sudo apt-get install nodejs
Einrichtung
Sicherheitshalber sollte das Web-Interface unter einem eigenen Benutzer laufen, der sonst nichts darf. Dazu legen wir den User rk-web
in der Gruppe rk-web
an. Die Shell-Angabe /bin/false
verhindert den Login.
sudo useradd -M -U -s /bin/false rk-web
Anschließend benötigen wir ein Verzeichnis, in dem der Quellcode abgelegt werden kann. Dieses wird gleichzeitig das Home-Verzeichnis des soeben angelegten Benutzers, der entsprechende Rechte erhält:
mkdir -p /opt/raumklima-web
chown -R rk-web.rk-web /opt/raumklima-web
usermod -d /opt/raumklima-web rk-web
Zum Auschecken des Quellcodes wird der User rk-web
verwendet, in dessen (eben definiertes) Home-Verzeichnis verwendet, und das Repository github.com/juergen-rocks/raumklima-web geclont.
sudo su -s /bin/bash rk-web
cd
git clone https://github.com/juergen-rocks/raumklima-web.git .
Um den Dienst zu starten, benötigt man eine entsprechende Service-Datei. Sie ist im Lieferumfang des eben erstellen Clones enthalten. Zur Installation geht man wie folgt vor:
exit # Umgebung des Users rk-web wieder verlassen
sudo cp /opt/raumklima-web/systemd/raumklima-web.service /etc/systemd/system
sudo chown root.root /etc/systemd/system/raumklima-web.service
sudo chmod 0644 /etc/systemd/system/raumklima-web.service
sudo systemctl daemon-reload
sudo systemctl enable raumklima-web
Nun muss der Service nur noch gestartet werden:
sudo systemctl start raumklima-web
Fertig! Nun kann das Web-Interface mit der IP-Adresse/des Hostnamens des Raspberries und Port 8080 im Webbrowser aufgerufen werden, bei 192.168.1.123 würde das also so aussehen:
http://192.168.1.123:8080/
Entsprechend sollte dieses Web-Interface erscheinen:
Eigene Anpassungen und Datenschnittstelle
Eigene Anpassungen sind problemlos möglich. Alles findet in einer HTML-Datei statt, sie liegt im Ordner static
. Bootstrap und jQuery sind bereits an Bord.
Am Endpunkt /data
wird ein einfaches JSON ausgegeben:
curl -s -X GET http://192.168.1.123t:8080/data | python -m json.tool
Beispielausgabe:
{
"c1h": 57,
"c1t": 20.8,
"c2h": 49,
"c2t": 22.5,
"c3h": 51,
"c3t": 22.4,
"c4h": 36,
"c4t": 30.6,
"c5h": 42,
"c5t": 27.7,
"c6h": "--",
"c6t": "--.-",
"c7h": "--",
"c7t": "--.-",
"c8h": "--",
"c8t": "--.-"
}
Die Schlüssel setzen sich so zusammen:
c
steht einfach für »Channel«1
-8
steht für die Kanalnummerh
odert
steht für Luftfeuchte (Humidity) bzw. Temperatur
Als Werte steht entweder der aktuelle (aus Redis gelesene) Wert oder ein entsprechender Platzhalter.
Autor:
Jürgen Edelbluth
Themen:
Netzwerk Linux Web JavaScript Software-Entwicklung Hausautomatisierung Raspberry Pi
Veröffentlicht:
11.04.2018 21:40
Zuletzt aktualisiert:
13.03.2020 16:57