====== Push-Server ======
{{ :software:middleware:pushserver_comparison.jpg?250|}}
Der Push-Server (PS) ist ein Dienst der Teile der Middleware nutzt um Echtzeitwerte an Clients auszuliefern. Quelle für die Rohdaten ist der vzlogger. Ausgeliefert werden aber nur Daten von Kanälen die in der Middleware konfiguriert sind.\\
Im Git ist eine tiefer gehende Beschreibung verfügbar: [[https://github.com/volkszaehler/volkszaehler.org/blob/master/bin/README.md|./bin/README.md]]
Ziel der Daten können das Frontend oder andere Clientanwendungen wie z.B. [[https://nodered.org|Node-RED]] sein.\\
Beim VZ-Frontend liegt der Mehrwert darin hochauflösende Daten darzustellen ohne die Datenbank mit diesen Daten zu "belasten". In der Regel ist eine solche Detailtiefe ein Jahr später nicht mehr von Interesse, von daher brauchen sie auch nicht gespeichert werden.
**Sicherheitshinweis:** Der Push-Server liefert die Daten **aller** Kanäle an die verbunden Clients aus. Unabhängig davon ob sie abonniert, nicht abonniert, als öffentlich oder privat konfiguriert sind.
===== Konfiguration =====
Um den PS zu nutzen sind ein paar Änderungen an (alter) Middleware, PS-Systemdienst, vzlogger und Frontend nötig.
==== Middleware ====
Seit Version 2.0 der Middleware ist der Empfang vom PS-Daten schon standardmäßig eingerichtet, dieser Punkt kann daher übersprungen werden.
In älteren Versionen muss er noch aktiviert werden:
/**
* Push server settings
*/
$config['push']['enabled'] = true;
Die übrigen Parameter kurz erläutert:
$config['push']['server'] = 5582; // vzlogger sendet an diesen Port (angebunden an IP 0.0.0.0)
$config['push']['broadcast'] = 8082; // frontend abonniert an diesem Port (angebunden an IP 0.0.0.0)
$config['push']['routes']['wamp'] = array('/', '/ws'); // Route für WAMP-Zugriff (Frontend)
$config['push']['routes']['websocket'] = array(); // Route für einfache Websockets (z.B. Note-RED), Empfehlung: array('/socket')
Gestartet wird der PS an der Konsole mit:
php /var/www/volkszaehler.org/bin/push-server
Es ist aber besser stattdessen einen vollwertigen Hintergrunddienst (z.B. über Systemd) einzurichten.
==== Systemd ====
Für Debian (Raspberry-Image) ist der Hintergrunddienst folgendermaßen einzurichten:
sudo nano /etc/systemd/system/push-server.service
Inhalt der Datei:
[Unit]
Description=Volkszaehler.org Push-Server
After=syslog.target network.target
Requires=
[Service]
ExecStart=/usr/bin/php /var/www/volkszaehler.org/bin/push-server
ExecReload=/bin/kill -HUP $MAINPID
StandardOutput=journal
Restart=always
[Install]
WantedBy=multi-user.target
Den Dienst beim Boot aktivieren:
sudo systemctl enable push-server
Den Dienst starten:
sudo systemctl start push-server
==== Vzlogger ====
Die folgenden Zeilen in die vzlogger-Konfiguration einfügen:
"push": [
{
"url": "http://127.0.0.1:5582"
}
],
Vzlogger neu starten:
sudo systemctl restart vzlogger
==== Frontend ====
Nun muss das Frontend die Daten nur noch entgegen nehmen.
sudo nano /var/www/volkszaehler.org/htdocs/js/options.js
Die entsprechend Option ist bereits vorbereitet, die Kommentarzeichen entfernen und auf korrekte Syntax achten.
Die Zeile vorher muss mit einem Komma abschließen!
middleware: [
{
title: 'Local (default)',
url: 'api',
live: 8082
===== Hinweise =====
Angezeigt werden die empfangenen Werte im Zuge der automatischen Aktualisierung.
Daten, die der PS ausliefert werden vom Frontend nicht gespeichert. Wird das Browserfenster geschlossen oder die Darstellung manipuliert sind die Werte verloren und es wird auf Daten zurückgegriffen, die in der Datenbank hinterlegt sind.