-
Notifications
You must be signed in to change notification settings - Fork 22
Setup p4d
1. Konfiguration der Dashboards
- Durch Klick auf den Burger-Button kann man den Editiermodus aktivieren. Dazu selbst muss man nicht viel sagen. Den Titel des jeweiligen Dashboard kann man ändern und weitere Dashboards anlegen.
- Zusätzlich kann man im Feld 'Symbol' MDI Symbole verwenden, die als kleines Icon angezeigt werden. Ein Beispiel wie das Format aussehen muss: 'mdi:mdi-radiator'. Hier findet man eine Liste von Symbolen.
- Links neben dem Textfeld zum Erstellen eines neuen Dashboards findet man einen Button, mit dem man ein neues Widget erzeugen kann (Viereck, Kreis, Dreieck, Plus)
- Das Time-Widget ändert das Symbol zwischen Tag/Nacht.
- Spacer-Widget erstellt einen Platzhalter oder einen Zeilenumbruch zwischen den Widgets.
- Die Widgets lassen sich einfach per Drag&Drop in der Reihenfolge ändern.
- Wenn man sich im Editiermodus befindet findet man weitere Einstellungen eines Widgets wenn man auf dessen Titel klickt. Man kann entweder das Widget wieder löschen, Widget-Art auswählen (Text, Chart, Wert, ...)
- Den Editiermodus kann man durch klicken auf das 'X' oben links oder über den 'Burger Button -> Stop Setup' wieder beenden.
2. Kioskmodus
Der Kioskmodus ist gemacht für Wandpanels. Damit ist die Anzeige optimiert indem die Schrift etwas größer ist und auch das Menü ausgeblendet wird. Aktiviert wird er durch die URL-Erweiterung '&Kiosk=1' wie zum Beispiel so: http://192.168.188.21:1111/index.html&kiosk=1
1. Allgemeines über Charts
- Charts dienen perfekt bei der Fehlersuche und der Analyse um das beste Abbrandverhalten zu erzielen.
- per mouseover im Chart selbst werden alle angewählten Werte an der Mausposition angezeigt.
2. Konfiguration der Charts
- Es werden sämtliche Einstellungen im Chart gespeichert und beim nächsten Aufruf beibehalten.
- Man kann persönliche Lesezeichen erstellen indem man die gewünschten Werte in der Liste unten auswählt an und oben links auf das Symbol 'Lesezeichen hinzufügen' anklickt. Nun wird man nach einem Namen gefragt. Erstellte Lesezeichen können gelöscht werden indem man sie per Drag&Drop auf den Papierkorb zieht.
- Der Refresh-Button lässt das Chart automatisch aktualisieren.
- Unter dem Chart findet man Navigations-Buttons welche ein schnelles Vor- und Zurückspringen ermöglichen.
- Für ein schnelles Ausblenden der Linien im Diagramm muss man nur auf seinen Namen klicken. Optional kann man auch den Haken unter dem Diagramm entfernen.
Info zu Mosquitto
- Mosquitto ist ein MQTT-Broker.
- Damit können Werte von der Fröling-Steuerung Lambdatronic 3200 gelesen und Parameter in die Fröling-Steuerung geschrieben werden.
Installation
sudo apt install mosquitto mosquitto-clients -y
Alle Sensoren aus p4d lesen
mosquitto_sub -v -t p4d2mqtt/sensor/#
Ergebnis (Beispiel):
p4d2mqtt/sensor/Heizkreispumpe_0x0/state {"value": 1.0}
p4d2mqtt/sensor/Kesseltemperatur_0x0/state {"value": 66.0}
p4d2mqtt/sensor/Status/state {"value": "Betriebsbereit"}
p4d2mqtt/sensor/Abgastemperatur_0x1/state {"value": 72.0}
p4d2mqtt/sensor/Betriebsmodus/state {"value": "Automatik"}
p4d2mqtt/sensor/Boardtemperatur_0x2/state {"value": 26.0}
Einzelne Werte aus p4d lesen
- Kesseltemperatur_0x0 lesen:
mosquitto_sub -t p4d2mqtt/sensor/Kesseltemperatur_0x0/state
Ergebnis (Beispiel):
{"value": 70.0}
- Status lesen:
mosquitto_sub -t p4d2mqtt/sensor/Status/state
Ergebnis (Beispiel):
{"value": "Heizen"}
- Betriebsmodus lesen:
mosquitto_sub -t p4d2mqtt/sensor/Betriebsmodus/state
Ergebnis (Beispiel):
{"value": "Automatik"}
Werte bestimmter Parameter in die Fröling-Steuerung Lambdatronic 3200 schreiben
Wichtig!
Die Adresse ("address") muss hier Dezimal angegeben werden!
Die ermittelte Adresse ("address") muss vorher von Hexadezimal in Dezimal umgerechnet werden.
- Beispiel 1 [Hier wird Adresse ("address") und Wert ("value") direkt im String angegeben]
Uhrzeit 8:00 Uhr beim Parameter "Start der 1. Pelletsbefüllung" schreiben:
mosquitto_pub -t p4d2mqtt/command -p 1883 -m '{ "command" : "parstore", "address" : 60, "value" : "480" }'
- Beispiel 2 [Hier wird Adresse ("address") und Wert ("value") als Variable im String übergeben]
Uhrzeit 8:00 Uhr beim Parameter "Start der 1. Pelletsbefüllung" schreiben:
# Variablen für Mosquitto Message-String zuweisen
MOS_ADDRESS_DEZ="60"
MOS_VALUE="480"
#
# Mosquitto Message-String zusammenbauen
MOS_PUB_MESSAGE=$(echo '{ "command" : "parstore", "address" : ${MOS_ADDRESS_DEZ}, "value" : "${MOS_VALUE}" }' | sed s/\${MOS_ADDRESS_DEZ}/${MOS_ADDRESS_DEZ}/g | sed s/\${MOS_VALUE}/${MOS_VALUE}/g)
echo "MOS_PUB_MESSAGE: "${MOS_PUB_MESSAGE}
#
# Nun den Wert mit Mosquitto in die Fröling-Steuerung schreiben:
mosquitto_pub -t p4d2mqtt/command -p 1883 -m "${MOS_PUB_MESSAGE}"
- Vorher die Hex-Adresse des benötigten Parameter ermitteln:
p4 menu | grep "Start der 1. Pelletsbefüllung"
Ergebnis (Beispiel):
188) Address: 0x003c, parent: 0x0387, child: 0x0000; 'Start der 1. Pelletsbefüllung'
453) Address: 0x003c, parent: 0x03b9, child: 0x0000; 'Start der 1. Pelletsbefüllung'
- Ermittelte Hex-Adresse "0x003c" in Dezimal umrechnen:
ADRESSE_Hex="0x003c"
# Bei Hex-Adresse 0x entfernen:
ADRESSE_Hex_ohne_0x=$(echo ${ADRESSE_Hex} | sed 's/0x//')
# Klein- in Großbuchstaben umwandeln:
ADRESSE_Hex_ohne_0x=$(echo "${ADRESSE_Hex_ohne_0x}" | tr '[:lower:]' '[:upper:]')
# Adresse von Hexadezimal in Dezimal umrechnen:
ADRESSE_DEZ=$(echo "obase=10; ibase=16; ${ADRESSE_Hex_ohne_0x}" | bc)
echo "ADRESSE_DEZ: "${ADRESSE_DEZ}
Ergebnis (Beispiel):
ADRESSE_DEZ: 60
- Wert der Uhrzeit ermitteln:
_
Die Uhrzeit entspricht Minuten am Tag.
01:00 Uhr = 60
08:00 Uhr = 480
08:10 Uhr = 490
12:00 Uhr = 720
1. Allgemeines über das Schema
- Das Schema ist ein Überblick der kompletten Anlage. In 'Setup'->'WEB-Interface'->'Schematische Darstellung' kann man vordefinierte Anlagen auswählen.
2. Konfiguration des Schema
- Wer sein eigenes Schema einfügen will kann es im Verzeichnis '/var/lib/p4d/img/schema' als .png ablegen und es anschließend in 'Setup'->'WEB-Interface'->'Schematische Darstellung' auswählen.
- Oben links findet man den 'Anpassen' Button, damit kommt man in den Editiermodus. Jetzt kann man sämtliche Werte per Drag&Drop verschieben. Ein Klick auf den Wert lässt weitere Einstellungen zu. In diesem nun geöffneten Fenster kann man per JavaScript eigene Funktionen einfügen. Hier ein kleines Beispiel um sich Bilder per JS anzeigen zu lassen:
if (item.value == 5)
"img/state/dark/state-fireoff.gif"
else if (item.value == 3)
"img/state/dark/state-fire.gif"
else if (item.value == 6)
"img/state/dark/state-dooropen.gif"
else if (item.value == 4)
"img/state/dark/state-firehold.gif"
- Hier noch ein Beispiel. Damit werden Pumpen on/off angezeigt:
if (item.value != 0)
"img/icon/pump-up-on.gif"
else
"img/icon/pump-up-off.png"
Hier gibt es genug Infos zum Thema JavaScript (nicht zu verwechseln mit 'Java')
- über den '+' Button kann man sich weitere Werte/Bilder/Texte anzeigen lassen.
- Unter 'Setup -> Images' können eigene Bilder hochgeladen werden. Diese kann man sich als Bild im Schema ergänzen und sich dazu sein eigenes Schema "basteln"
- per JS Funktion getItem... kann man Werte eines anderen Sensors holen. Beispiel:
var soll = getItem('VA:0x16'); // Variable 'soll' hat jetzt den Wert des Ausgangs 0x16
1. Allgemeines übers Service Menü
- Hier kann man sämtliche Einstellungen an die Heizung übergeben, die auch als 'Service-Betrieb' eingestellt werden können. Hier sollte man also schon wissen was man macht.
Allgemeines über Fehler
- Hier sieht man alle Fehler, die von der Heizung kommen.
Untermenüs im Reiter 'Allg. Konfiguration'
- Speichern: Aktuelle Einstellungen speichern
- Reset Peaks: Rücksetzen der Ausschläge/Maximalwerte im Dashboard. Der höchste Wert seit letztem Reset wird als Text in den Widgets angezeit (nicht bei allen)
- Test Mail: Wenn die msmtp-Einstellungen richtig sind wird eine Testmail gesendet. Mehr dazu im Git
- Init Service Menü: Hiermit werden alle Einstellungen fürs Service Menü geladen. Dies MUSS bei Inbetriebnahme des p4d erfolgen.
- Init Sensoren: Wird benötigt um alle Ein- und Ausgänge ins IO Setup im p4d zu laden. Dies MUSS bei Inbetriebnahme des p4d erfolgen.
MQTT Interface
- Im Reiter 'Setup'->'Allg. Konfiguration' findet man unter dem Menüpunkt 'MQTT Interface' Einstellungsmöglichkeiten damit der p4d per MQTT kommunizieren kann.
- wenn man seinen Client auf 'p4d2mqtt/changes' hören lässt, werden alle zum vorigen Sendezeitpunkt (Standard: 60s vorher) geänderten Werte übergeben. dies kann so aussehen mit dem Beispiel für Vorlauf-Isttemperatur der FBH:
p4d2mqtt/changes : msg.payload
{
id: "VA:0x15",
type: "VA",
address: 21,
value: 31.5
}
Einstellungen für das Wetter-Widget im Dashboard
- Angabe von Längen- und Breitengrad im Format lat/long. Hier ein einfaches Hilfsmittel, seine Koordinaten zu bestimmen.
- Openweathermap API Key: Um an einen API Key zu kommen muss man sich hier ein kostenloses Konto anlegen. Im Anschluss ist auf der 'My API Keys' Seite der Key zu finden.
- Im IO Setup WEA:0x01 aktivieren. Danach kann im Dashboard das Widget hinzugefügt werden.
- Hinweis: Die Vorhersage der kommenden 5 Tage (3 Stunden Raster) erhält man durch Klick auf das Wetter Widget im Dashboard
- Es werden sämtliche von der Heizung kommenden Ein- und Ausgänge angezeigt. 'Aktiv' lässt den Wert im Dashboard/Schema anzeigen, 'Aufzeichnen' lässt den Wert als einen Verlauf in den Charts anzeigen.
- 'Gruppe' dient als Gruppierung für MQTT Nachrichten. Diese Gruppen können im Reiter 'Baugruppen' angelegt werden.
- Beispiele zum Einlesen von Sensorwerten, die in einer Datei zur Verfügung stehen.
Den p4d kann man gut als Visualisierung für beliebige Sensoren nutzen, die mit der Heizung gar nichts zu tun haben, deren Werte aber in (Text-)Dateien oder in der Linux-Shell verfügbar sind.
Ein Beispiel ist die Temperatur der CPU des lokalen Rechners, die auf Linux-Rechnern oft unter
/sys/class/thermal/thermal_zone0/temp zur Verfügung steht. cat /sys/class/thermal/thermal_zone0/temp
liefert dann z. B. 36000.
Um p4d diesen Wert als "Sensor" mitzuteilen, erstellt man ein Sensor-Skript in /etc/p4d/scripts.d.
z.B. hier CPU-Temp.sh (Endung .sh, als ausführbar markieren):
Code #! /bin/bash temperature="$(< /sys/class/thermal/thermal_zone0/temp)" echo -n '{ "kind" : "value", "unit" : "°C", "value" : ' $(($temperature / 1000)) '}' exit 0 Zum Testen führt man das Script am Shell-Prompt aus:
./CPU-Temp.sh
{ "kind" : "value", "unit" : "°C", "value" : 37 }
Wenn man mit Integer-Werten nicht zufrieden ist, kann man im Skript auch mit bc mit Fließkomma-Werten arbeiten.
Das folgende Beispiel pressure.sh liest einen Bosch BMP180 Drucksensor aus:
Code #! /bin/bash pressure="$(< /sys/bus/iio/devices/iio:device1/in_pressure_input)" echo -n '{ "kind" : "value", "unit" : "mBar", "value" : ' $(echo $pressure*10 | bc -l) '}' exit 0 Ausgabe:
./pressure.sh
{ "kind" : "value", "unit" : "mBar", "value" : 957.620000000 }
Nachdem ein neues Skript erstellt ist, startet man den p4d mit
#service restart p4d
neu und aktiviert in Setup / IO Setup / Skripte den neu erschienenen Sensor.
Nach dem Speichern, steht der Sensor im Setup des Dashboards zur Verfügung.
- Hier kann man neue Benutzer anlegen, löschen und deren Rechte verwalten.
- E-Mail Benachrichtigungen anlegen: Adresse wird hier in Dezimal angegeben. Inhalt kann folgende Variablen enthalten:
%time% für die Auslöseuhrzeit
%title% für den im IO Setup angegebenen Sensornamen
%value% für den Wert, den die angegebene Adresse zum Auslösezeitpunkt hatte.
%weburl% für den Link des UI (kann im Reiter 'Setup' hinterlegt werden)
- Gruppeneinteilung um MQTT Nachrichten zu gliedern.
- Hier wird die Logdatei mit den letzten 150 Nachrichten angezeigt. Debugnachrichten können im Reiter 'Setup -> Allg. Konfiguration' unter 'Log Eloquence' an- und abwählen.