juergen.rocks

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:

Web-Interface zur ELV Raumklimastation RS 500

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 Kanalnummer
  • h oder t steht für Luftfeuchte (Humidity) bzw. Temperatur

Als Werte steht entweder der aktuelle (aus Redis gelesene) Wert oder ein entsprechender Platzhalter.

Autor:

Themen:

Veröffentlicht:
11.04.2018 21:40

Zuletzt aktualisiert:
13.03.2020 16:57



Kommentare

Dennis

02.01.2022 21:07


Ich nutze das Backend zusammen mit dem Webinterface. Musste noch folgendes zusätzlich machen damit es auf meinem Pi Zero W funktioniert:

Backend:
* In /etc/udev/rules.d/91-hid.rules:
SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="5750", MODE="0666"
* In src/rs500reader/reader.py Zeile 23:
time.sleep(1.75)

Webinterface:
* sudo apt install npm
* In /opt/raumklima-web: sudo npm install

Vielen Dank für das tolle Projekt!

Andy

23.04.2020 20:40


Sehr interessantes Projekt. Habe mir die Raumklimastation auch bestellt und werde mich auch mal daran versuchen. Vielen Dank für Deine Vorarbeit (hätte ich so nicht hinbekommen).
Schonmal dran gedacht, die gewonnenen Werte in Grafana oder ThingSpeak zu verarbeiten?
Schöne Grüße
Andy

Jürgen Edelbluth Autor

26.04.2020 23:26


Für meine Zwecke hat es bisher Icinga getan. Damit war ich persönlich bisher glücklich.

Ich gehe davon aus, dass Grafana kein größeres Problem sein sollte - immerhin kann man es prima innerhalb von Icinga verwenden1.


Copyright © 2024, juergen.rocks.