Hier mein neuer LBS für Nutzer von Nibe Wärmepumpen.
Der LBS nutzt im Gegensatz zu den bisherigen Ansätzen die API von Nibe anstatt die Internetseite zu parsen.
Das ist robuster, da der LBS nicht von Änderungen an der Webseite abhängt. Außerdem können mehr Informationen ausgelesen werden.
Wem die Einrichtung zu komplex ist, dem sei der "LBS 19000210 - Nibe Uplink" empfohlen.
Die Funktionalität ist in dre LBS aufgeteilt:
Der LBS19000721 kommuniziert mit der API und gibt grundsätzliche Statusinformationen aus.
Der LBS19000723 ergänzt den LBS19000721 und gibt beliebige, von der Wärmpumpe unterstützte, Datenpunkte aus.
Der LBS19000727 Ändert Parameter der Wärmepumpe
LBS19000721(Download hier)

Installation
Dieser LBS benötigt Zugriff auf die NibeUplink API um Daten abrufen zu können.
Dazu muss zunächst ein API-Zugang eingerichtet werden und dann die nötigen Daten
EDOMI zur Verfügung gestellt werden.
Alle nötigen Schritte sind in dieser Anleitung zusammengefasst.
1. Installation zusätzlicher Dateien
Der LBS eine zusätzliche PHP Klasse zur Abwicklung des OAuth2 Protokolls. Die zum
Zeitpunkt der Erstellung des LBS aktuelle Version wird mit dem LBS ausgeliefert.
Bitte kopiere den Ordner "OAuth2" nach:
/usr/local/edomi/main/include/php/
Ein "Installationsscript" wickelt die initale OAuth2 Authentifizierung ab und schreibt
die initialen Zugangsdaten per Remote-Schnittstelle in ein EDOMI iKO.
Dieses Script muss für den Webserver zugänglich sein. Bitte kopiere die Datei "nibe.php"
nach:
/usr/local/edomi/www/admin/
2. Anlegen des Zugangs für die API
Besuche https://api.nibeuplink.com/ und logge dich mit deinen Zugangsdaten für NibeUplink ein.
- Klicke auf "MY APPLICATIONS", das folgende Formular wird angezeigt:
01.PNG
- Gib einen Namen und eine Beschreibung für die neue Applikation ein, z.B. "Edomi"
- Gib die Callback URL ein:
Auf diese URL wird nach dem Authentifizieren weitergeleitet. Sie muss nicht vom Internet aus erreichbar sein. Nur von dem Rechner aus, auf dem
der Authentifizierungsprozess ausgeführt wird.
Bitte gib hier http://[EDOMI_HOSTNAME]/admin/nibe.php ein.
Ersetze [EDOMI_HOSTNAME] mit dem Namen über den du auf Edomi zugreifst.
Zum Beispiel http://edomi/admin/nibe.php or http://192.168.1.100/admin/nibe.php
- Akzeptiere die Service-Bedinungen und klicke auf "Create Application".
- Auf der nächsten Seite werden ein "Identifier" und ein "Secret" angezeigt. Diese bitte notieren/kopieren/Seite offen lassen.
3. iKO in Edomi anlegen
02.png
Das Einrichtungs-Script speichert das AccessToken für den API-Zugang in einem remanenten iKO in Edomi.
- Lege ein neues iKO an. Der Name ist egal. Merk dir die ID (wird in der KO-Liste hinter dem Namen angezeigt.)
WICHTIG: Das iKO muss "Remanent" sein!
- Unter "Verwaltung" > "Accounts" muss ein Passwort für den "Fernzugriff" eingerichtet sein. (Siehe EDOMI-Hilfe)
- Unter "Konfiguration" > "Fernzugriff" bitte über "Neu" den Zugriff auf das eben erstellte iKO zulassen.
Der Zugriff auf das iKO kann nach der Einrichtung wieder gelöscht werden.
Alternativ: Keinen Fernzugriff einrichten. Dann muss nach Abschluss der Inhalt des iKO manuell über "Wert setzen" in das iKO geschrieben werden.
4. Edomi für den Zugriff auf NibeUplink authentifizieren
- Öffne http://[EDOMI_HOSTNAME]/admin/nibe.php
- Gib die ID des iKOs ein, welches in Schritt 3 erstellt wurde.
- Gib den "Identifier" und das "Secret" aus Schritt 2 ein.
- Gibt die Zugangsdaten für den Remote-Zugriff ein. Diese werden nur für das einmalige Schreiben des iKOs benötigt.
(ODER: leer lassen und Wert nach Abschluss manuell setzen, siehe Schritt 3.)
- Klicke auf "Start"
- Du wirst jetzt auf NibeUplink weiter geleitet. Hier bitte einloggen, das Captcha lösen und auf "Accept" klicken.
- Du wirst zurück auf das Installer-Script geleitet. Hier sollte eine kurze Erfolgsnachricht stehen.
Wenn nicht, dann bitte hier fragen/posten.
Das wars, fertig! Der LBS kann jetzt eingesetzt werden. Bitte E1 und A1 mit dem iKO für das AccessToken verbinden.
LBS19000723(Download hier)

Dieser LBS nimmt an E1 die Daten von A8 des LBS19000721 entgegen.
An E4-E13 können Parameter-IDs angegeben werden, deren Werte dann auf A4-A13 ausgegeben werden.
Alle unterstützten Parameter werden vom Installationsscript desLBS19000721 ausgegeben. Die Liste sieht in etwa so aus:
Es können mehrere LBS verwendet werden, je nachdem wie viele Parameter angezeigt werden sollen.
LBS19000727(Download hier)

Dieser LBS erweitert den Funktionsumfang um das Schreiben von Einstellungsparametern.
Er benötigt das Token IKO an E1. Das Archiv enthält das gleiche Installationsscript wie der LBS19000721. Sollte dieser bei euch schon in Betrieb sein, muss nur ggf. das Script noch einmal ausgeführt werden, damit die Berechtigungen von Nur-Lesen auf Lesen/Schreiben geändert werden.
Aktuell können folgende Parameter geschrieben werden:
FAQ
Welche Anlagen werden unterstütz?
Es sollte alles generisch sein. Was die API liefert kann ausgewertet werden. Allerdings habe ich nur meine Anlage zum Testen.
Wenn jemand von euch eine Luft/Wasser oder Luft/Luft WP von Nibe sein Eigen nennt, wäre es nett wenn ihr mir mit ein paar Debug-Infos helfen würdet.
Noch einfacher wäre es, mir kurzzeitig lesenden Zugriff auf euer System zu geben. Dann kann ich ein paar Requests absetzen und ggf. den LBS anpassen.
Warum brauche ich einen gesonderten LBS für die Ausgabe der Werte?
Wie bereits erwähnt: Jede Anlage ist anders. Anderer Typ, andere Konfiguration, anderes Zubehör. Ich habe keine Möglichkeit alle Datenpunkte für alle möglichen Varianten zu implementieren - schon alleine weil ich sie nicht kenne.
Es nützt ja auch kein LBS bei dem entweder bestimmte Parameter fehlen oder wo Parameter nicht funktionieren weil die Anlage sie nicht unterstützt.
Außerdem braucht man ja ggf. nicht alle Werte.
Kann der LBS Einstellungen der WP ändern?
Leider noch nicht. Einige wenige beschreibbare Einstellungen sind in der Dokumentation von Nibe gelistet. API-seitig ist die Funktion allerdings noch nicht implementiert.
Welche Funktionen sind noch geplant?
- Warnungen, Anzeige der Warnungstexte, sofern eine Warnung anliegt. "Alte" Warnungen lassen sich nur mit speziellen Berechtigungen lesen.
Hier benötige ich noch ein paar Daten. Weiß jemand wie man eine "ungefährliche" Warnung an der WP auslösen kann?
- Details Software-Update, sofern applikabel.
- Schreiben von Werten/Konfig, sobald die API das richtig unterstützt.
Warum liefert der LBS falsche Werte?
Das kommt drauf an, was falsch ist. Aktuell sehe ich leider immer mal wieder, dass NibeUplink falsche Daten liefert. Sowohl per API als auch auf der Internetseite. Diese Daten sind leider ggf. nicht mit den tatsächlichen Anlagendaten konsistent und auch in sich nicht stimmig. (z.B. WT Pumpendrehzal dauerhaft auf einem bestimmten Wert obwohl aus.)
Im Log sehe ich eine Fehlermeldung "429", was bedeutet das?
Nibe lässt nur eine bestimmte Anzahl an Anfragen über die API zu. Aktuell sind das pro Anwendung "1 Anfrage/4 Sekunden".
Gelegentliche Spikes sind in Ordnung. Aktuell macht der LBS 4 Anfragen innerhalb kurzer Zeit. Das führt bei mir aktuell nicht zu Problemen.
Dennoch sollte die Frequenz der Aufrufe nicht zu hoch sein. Taucht der Fehler im Log auf: Kurz warten und den LBS nicht so häufig triggern.
(Ggf. kann man mit mehreren Instanzen des LBS arbeiten und mehr als einen Client anlegen
)
Wenn es dauerhaft zu Problemen kommt, werde ich die Abfragen im LBS zeitlich entzerren.
Und nun: Auf ans Testen!
Der LBS nutzt im Gegensatz zu den bisherigen Ansätzen die API von Nibe anstatt die Internetseite zu parsen.
Das ist robuster, da der LBS nicht von Änderungen an der Webseite abhängt. Außerdem können mehr Informationen ausgelesen werden.
Wem die Einrichtung zu komplex ist, dem sei der "LBS 19000210 - Nibe Uplink" empfohlen.
Die Funktionalität ist in dre LBS aufgeteilt:
Der LBS19000721 kommuniziert mit der API und gibt grundsätzliche Statusinformationen aus.
Der LBS19000723 ergänzt den LBS19000721 und gibt beliebige, von der Wärmpumpe unterstützte, Datenpunkte aus.
Der LBS19000727 Ändert Parameter der Wärmepumpe
LBS19000721(Download hier)
Installation
Dieser LBS benötigt Zugriff auf die NibeUplink API um Daten abrufen zu können.
Dazu muss zunächst ein API-Zugang eingerichtet werden und dann die nötigen Daten
EDOMI zur Verfügung gestellt werden.
Alle nötigen Schritte sind in dieser Anleitung zusammengefasst.
1. Installation zusätzlicher Dateien
Der LBS eine zusätzliche PHP Klasse zur Abwicklung des OAuth2 Protokolls. Die zum
Zeitpunkt der Erstellung des LBS aktuelle Version wird mit dem LBS ausgeliefert.
Bitte kopiere den Ordner "OAuth2" nach:
/usr/local/edomi/main/include/php/
Ein "Installationsscript" wickelt die initale OAuth2 Authentifizierung ab und schreibt
die initialen Zugangsdaten per Remote-Schnittstelle in ein EDOMI iKO.
Dieses Script muss für den Webserver zugänglich sein. Bitte kopiere die Datei "nibe.php"
nach:
/usr/local/edomi/www/admin/
2. Anlegen des Zugangs für die API
Besuche https://api.nibeuplink.com/ und logge dich mit deinen Zugangsdaten für NibeUplink ein.
- Klicke auf "MY APPLICATIONS", das folgende Formular wird angezeigt:
01.PNG
- Gib einen Namen und eine Beschreibung für die neue Applikation ein, z.B. "Edomi"
- Gib die Callback URL ein:
Auf diese URL wird nach dem Authentifizieren weitergeleitet. Sie muss nicht vom Internet aus erreichbar sein. Nur von dem Rechner aus, auf dem
der Authentifizierungsprozess ausgeführt wird.
Bitte gib hier http://[EDOMI_HOSTNAME]/admin/nibe.php ein.
Ersetze [EDOMI_HOSTNAME] mit dem Namen über den du auf Edomi zugreifst.
Zum Beispiel http://edomi/admin/nibe.php or http://192.168.1.100/admin/nibe.php
- Akzeptiere die Service-Bedinungen und klicke auf "Create Application".
- Auf der nächsten Seite werden ein "Identifier" und ein "Secret" angezeigt. Diese bitte notieren/kopieren/Seite offen lassen.
3. iKO in Edomi anlegen
02.png
Das Einrichtungs-Script speichert das AccessToken für den API-Zugang in einem remanenten iKO in Edomi.
- Lege ein neues iKO an. Der Name ist egal. Merk dir die ID (wird in der KO-Liste hinter dem Namen angezeigt.)
WICHTIG: Das iKO muss "Remanent" sein!
- Unter "Verwaltung" > "Accounts" muss ein Passwort für den "Fernzugriff" eingerichtet sein. (Siehe EDOMI-Hilfe)
- Unter "Konfiguration" > "Fernzugriff" bitte über "Neu" den Zugriff auf das eben erstellte iKO zulassen.
Der Zugriff auf das iKO kann nach der Einrichtung wieder gelöscht werden.
Alternativ: Keinen Fernzugriff einrichten. Dann muss nach Abschluss der Inhalt des iKO manuell über "Wert setzen" in das iKO geschrieben werden.
4. Edomi für den Zugriff auf NibeUplink authentifizieren
- Öffne http://[EDOMI_HOSTNAME]/admin/nibe.php
- Gib die ID des iKOs ein, welches in Schritt 3 erstellt wurde.
- Gib den "Identifier" und das "Secret" aus Schritt 2 ein.
- Gibt die Zugangsdaten für den Remote-Zugriff ein. Diese werden nur für das einmalige Schreiben des iKOs benötigt.
(ODER: leer lassen und Wert nach Abschluss manuell setzen, siehe Schritt 3.)
- Klicke auf "Start"
- Du wirst jetzt auf NibeUplink weiter geleitet. Hier bitte einloggen, das Captcha lösen und auf "Accept" klicken.
- Du wirst zurück auf das Installer-Script geleitet. Hier sollte eine kurze Erfolgsnachricht stehen.
Wenn nicht, dann bitte hier fragen/posten.
Das wars, fertig! Der LBS kann jetzt eingesetzt werden. Bitte E1 und A1 mit dem iKO für das AccessToken verbinden.
LBS19000723(Download hier)
Dieser LBS nimmt an E1 die Daten von A8 des LBS19000721 entgegen.
An E4-E13 können Parameter-IDs angegeben werden, deren Werte dann auf A4-A13 ausgegeben werden.
Alle unterstützten Parameter werden vom Installationsscript desLBS19000721 ausgegeben. Die Liste sieht in etwa so aus:
Code:
40004: outdoor temp.(°C) 40067: avg. outdoor temp(°C) 40013: hot water top(°C) 40014: hot water charging(°C) 43005: degree minutes(DM) 40022: suction gas(°C) 40018: hot gas(°C) 40019: liquid line(°C) 40017: condenser out(°C) 40015: brine in(°C) 40016: brine out(°C) 43416: compressor starts() 43420: compressor operating time(h) 10012: blocked() 43424: compressor operating time hot water(h) 43439: brine pump speed(%) 43437: pump speed heating medium(%) 40008: heat medium flow(°C) 40012: return temp.(°C) 43009: calculated flow temp.(°C) 40033: room temperature(°C) 43161: external adjustment() 40071: external flow temp.(°C) 40008: heat medium flow(°C) 40012: return temp.(°C) 47276: floor drying function() 44270: calculated flow temp.(°C) 43152: external blocking() 10033: blocked() 43081: time factor(h) 43084: electrical addition power(kW) 47212: set max electrical add.(kW) 47214: fuse size(A) 40072: flow(l/m) 44308: heating, compr. only.(kWh) 44306: hotwater, compr. only.(kWh) 44304: pool, compr. only.(kWh) 44300: heating, int. add. incl.(kWh) 44298: hw, incl. int. add(kWh) 40771: pool2, compr. only(kWh) 47411: AUX1() 47410: AUX2() 47409: AUX3() 47408: AUX4() 47407: AUX5() 47412: X7() 0: version() 0: product() 0: serial number() 48745: country()
LBS19000727(Download hier)
Dieser LBS erweitert den Funktionsumfang um das Schreiben von Einstellungsparametern.
Er benötigt das Token IKO an E1. Das Archiv enthält das gleiche Installationsscript wie der LBS19000721. Sollte dieser bei euch schon in Betrieb sein, muss nur ggf. das Script noch einmal ausgeführt werden, damit die Berechtigungen von Nur-Lesen auf Lesen/Schreiben geändert werden.
Aktuell können folgende Parameter geschrieben werden:
Code:
Id Min Max Step Description hot_water_boost 0 1 1 Start a hot water boost, i.e. temporary lux, lasting 3 hours. Set to 1 to start, 0 to stop. ventilation_boost 0 1 1 Start a ventilation boost, i.e. ventilation speed 4, lasting the system specific return time hours. Set to 1 to start, 0 to stop. 47008 -10 10 1 The parallell adjustment for climate system 4 when heating 47009 -10 10 1 The parallell adjustment for climate system 3 when heating 47010 -10 10 1 The parallell adjustment for climate system 2 when heating 47011 -10 10 1 The parallell adjustment for climate system 1 when heating 47395 5 30 0.5 The target room temperature for climate system 4 when heating 47396 5 30 0.5 The target room temperature for climate system 3 when heating 47397 5 30 0.5 The target room temperature for climate system 2 when heating 47398 5 30 0.5 The target room temperature for climate system 1 when heating 48491 -10 10 1 The parallell adjustment for climate system 8 when heating 48492 -10 10 1 The parallell adjustment for climate system 7 when heating 48493 -10 10 1 The parallell adjustment for climate system 6 when heating 48494 -10 10 1 The parallell adjustment for climate system 5 when heating 48680 5 30 0.5 The target room temperature for climate system 8 when heating 48681 5 30 0.5 The target room temperature for climate system 7 when heating 48683 5 30 0.5 The target room temperature for climate system 5 when heating 48682 5 30 0.5 The target room temperature for climate system 6 when heating 48732 -10 10 1 The parallell adjustment for climate system 8 when cooling 48733 -10 10 1 The parallell adjustment for climate system 7 when cooling 48734 -10 10 1 The parallell adjustment for climate system 6 when cooling 48735 -10 10 1 The parallell adjustment for climate system 5 when cooling 48736 -10 10 1 The parallell adjustment for climate system 4 when cooling 48737 -10 10 1 The parallell adjustment for climate system 3 when cooling 48738 -10 10 1 The parallell adjustment for climate system 2 when cooling 48739 -10 10 1 The parallell adjustment for climate system 1 when cooling 48778 5 35 0.5 The target room temperature for climate system 8 when cooling 48779 5 35 0.5 The target room temperature for climate system 7 when cooling 48780 5 35 0.5 The target room temperature for climate system 6 when cooling 48781 5 35 0.5 The target room temperature for climate system 5 when cooling 48782 5 35 0.5 The target room temperature for climate system 4 when cooling 48783 5 35 0.5 The target room temperature for climate system 3 when cooling 48784 5 35 0.5 The target room temperature for climate system 2 when cooling 48785 5 35 0.5 The target room temperature for climate system 1 when cooling
Welche Anlagen werden unterstütz?
Es sollte alles generisch sein. Was die API liefert kann ausgewertet werden. Allerdings habe ich nur meine Anlage zum Testen.
Wenn jemand von euch eine Luft/Wasser oder Luft/Luft WP von Nibe sein Eigen nennt, wäre es nett wenn ihr mir mit ein paar Debug-Infos helfen würdet.
Noch einfacher wäre es, mir kurzzeitig lesenden Zugriff auf euer System zu geben. Dann kann ich ein paar Requests absetzen und ggf. den LBS anpassen.
Warum brauche ich einen gesonderten LBS für die Ausgabe der Werte?
Wie bereits erwähnt: Jede Anlage ist anders. Anderer Typ, andere Konfiguration, anderes Zubehör. Ich habe keine Möglichkeit alle Datenpunkte für alle möglichen Varianten zu implementieren - schon alleine weil ich sie nicht kenne.
Es nützt ja auch kein LBS bei dem entweder bestimmte Parameter fehlen oder wo Parameter nicht funktionieren weil die Anlage sie nicht unterstützt.
Außerdem braucht man ja ggf. nicht alle Werte.
Kann der LBS Einstellungen der WP ändern?
Leider noch nicht. Einige wenige beschreibbare Einstellungen sind in der Dokumentation von Nibe gelistet. API-seitig ist die Funktion allerdings noch nicht implementiert.
Welche Funktionen sind noch geplant?
- Warnungen, Anzeige der Warnungstexte, sofern eine Warnung anliegt. "Alte" Warnungen lassen sich nur mit speziellen Berechtigungen lesen.
Hier benötige ich noch ein paar Daten. Weiß jemand wie man eine "ungefährliche" Warnung an der WP auslösen kann?
- Details Software-Update, sofern applikabel.
- Schreiben von Werten/Konfig, sobald die API das richtig unterstützt.
Warum liefert der LBS falsche Werte?
Das kommt drauf an, was falsch ist. Aktuell sehe ich leider immer mal wieder, dass NibeUplink falsche Daten liefert. Sowohl per API als auch auf der Internetseite. Diese Daten sind leider ggf. nicht mit den tatsächlichen Anlagendaten konsistent und auch in sich nicht stimmig. (z.B. WT Pumpendrehzal dauerhaft auf einem bestimmten Wert obwohl aus.)
Im Log sehe ich eine Fehlermeldung "429", was bedeutet das?
Nibe lässt nur eine bestimmte Anzahl an Anfragen über die API zu. Aktuell sind das pro Anwendung "1 Anfrage/4 Sekunden".
Gelegentliche Spikes sind in Ordnung. Aktuell macht der LBS 4 Anfragen innerhalb kurzer Zeit. Das führt bei mir aktuell nicht zu Problemen.
Dennoch sollte die Frequenz der Aufrufe nicht zu hoch sein. Taucht der Fehler im Log auf: Kurz warten und den LBS nicht so häufig triggern.
(Ggf. kann man mit mehreren Instanzen des LBS arbeiten und mehr als einen Client anlegen

Wenn es dauerhaft zu Problemen kommt, werde ich die Abfragen im LBS zeitlich entzerren.
Und nun: Auf ans Testen!
Kommentar