[Tutorial] powerfox/poweropti mit Homey Pro nutzen

Da es für den poweropti der Fa. power42 GmbH aktuell keine App gibt, soll dieses kleine Tutorial zeigen, wie man die Werte von digitalen Zählern via poweropti und powerfox Kunden-API an Homey übergeben kann. Als Grundlage dieses Tutorials dient der poweropti für Stromzähler.

Voraussetzung für den Betrieb des poweropti
– ein kompatibler Strom-/Wasser-/Wärmezähler (Whitlist)
– Stromanschluss für das Netzteil
– WLAN-Empang
Weiterführende Infos sind hier zu finden.

Voraussetzung für Homey
– Homey Pro
HomeyScript App
Device Capabilities App (optional)

powerfox Kunden-API
Die powerfox Kunden-API setzt eine Authentifizierung der Abfragen via HTTP Basic Auth voraus, d.h. E-Mail + Passwort des powerfox-Accounts müssen im Base-64 Standard vorliegen. Das bedeutet, dass man die Anmeldedaten in das Base64 format encodieren müsst. Dies ist z.B. auf der folgende Seite möglich:

Dazu muss man in das obere Textfeld die Email-Adresse und das Passwort mit einem Doppelpunkt getrennt wie folgt eintragen:
max.mustermann@e-mail.de:EuerPowerfoxPasswort

Anschließend auf image klicken.
Als Ergebnis erhält man einen String, der wie folgt aussehen kann:
bWF4Lm11c3Rlcm1hbm5AZS1tYWlsLmRlOkV1ZXJQb3dlcmZveFBhc3N3b3J0

Mit der powerfox Kunden-API können aktuelle sowie unterschiedliche historische Werte abgefragt werden. In diesem Beispiel habe ich mich auf folgende aktuellen Werte beschränkt, welche alle 5 Minuten (API-Vorgabe!) abgefragt werden:
Watt = Aktueller Verbrauch (W)
A_Plus = Zählerstand (kWh)
A_Minus = Einspeisung (kWh) (nur bei Zweirichtungszählern vorhanden)
Timestamp = Zeitstempel der letzten Übermittlung

Die HTTP-GET Abfrage erfolgt mit folgenden Daten:
URL = https://backend.powerfox.energy/api/2.0/my/main/current?unit=kwh
Sollte man mehrere poweroptis in Betrieb haben, muss anstelle von main die entsprechende poweropti ID eingetragen werden.
Header = Authorization: Basic bWF4Lm11c3Rlcm1hbm5AZS1tYWlsLmRlOkV1ZXJQb3dlcmZveFBhc3N3b3J0
Wobei der String der Base64 Code eurer Email-Adresse und dem zugehörigen Passwortes ist.

HomeyScript
Für die Abfrage wird außerdem noch folgendes Skript zur Umwandlung des Zeitcodes benötigt, welches im UNIX UTC Format übermittelt wird:

let time = new Date( args[0]*1000).toLocaleString('de-DE',
{
hour12: false,
timeZone: 'Europe/Berlin',
hour: "2-digit",
minute: "2-digit",
day: "2-digit",
month: "2-digit",
year: "numeric"
});
return time;

Da die übermittelten Werte auch irgendwo angezeigt werden sollen, kann man noch ein entsprechendes Advanced Virtual Device mit der Device Capabilities App erstellen. Wie ein solches AVD erstellt wird, kann man in diesem Thread nachlesen.
Falls Ihr Probleme damit habt, könnt Ihr auch in diesem Thread nachfragen.

Der vollständige Flow sollte dann ungefähr so aussehen:

Das AVD ungefähr so:

IMG_1372

Wenn Ihr bei der Erstellung des AVDs “Einblicke erstellen” markiert habt, dann sind die Werte als Diagramm auch in Einblicke/Insights verfügbar:

Der Flow inkl. des AVDs kann über den folgenden Code importiert werden:

[TEF:AVD,FLOWS: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]

Ich möchte mich noch ganz herzlich bei @RonnyW bedanken, da ich das ohne seine Hilfe definitiv nicht hinbekommen hätte. Herzlichen Dank!

1 Like

Kleine Ergänzung: Bei der Http-Karte kann man noch den Fehler-Ausgang verwenden, um eine Benachrichtigung in die Timeline zu schreiben, oder eine alarm-capability des VDs zu aktivieren (Verbindungsfehler o.ä.). Bei korrekter Ausführung könnte der Alarm wieder entfernt werden.
Damit hat man auch gleich im Blick, on die Wifi-Verbindung noch ok ist.

1 Like