[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

Das war dann endlich mal der Ansatz Advanced Flows zu kaufen :stuck_out_tongue:

Hat fast alles funktioniert, besten Dank für die Arbeit!
Lediglich “Letzte Aktualisierung” bleibt leer, Homey Script wurde zuvor Installiert.

Irgendeine Idee?

Grüße
Daniel

Könntest Du Deinen Flow mal posten?

1 Like

Den User/PW Code habe ich temporär herausgenommen.

Den Code konnte man bei Deinem vorherigen Post aber auch nicht vollständig erkennen.
Anstelle den ersten Post zu löschen, hättest Du diesen aber besser bearbeitet und den Screenshot einfach ersetzt. Dann hätte auch niemand den alten Screenshot sehen können, was momentan noch möglich ist…
Nur ein kleiner Tipp am Rand… :wink:

Bzgl. des Flows. Warum nutzt Du vor der Aktionskarte Letzte Aktualisierung eine DC Karte und nicht die Homey Script Karte wie in meinem Beispiel? Ich habe keine Ahnung ob das mit der DC Karte möglich ist.
Da ich den Poweropti auch wieder zurückgegeben habe, das Intervall war mir zu groß, nutze ich den Flow auch nicht mehr. Ansonsten hätte ich das mal mit der DC Karte ausprobiert.

mh habe von den Advanced Flows leider noch null Ahnung. Habe den Code 1zu1 wie in deiner Anleitung so eingelesen und ansonsten den Flow bis auf die Anmeldedaten nicht verändert. Ich sehe jetzt den Unterschied und werde das mal umbauen.

Was spricht eigentlich dagegen, das Intervall kürzer einzustellen?

Das hat nichts mit den Advanced Flows, sondern vermutlich mit den verwendeten Aktionskarten zutun.
Ich habe eine HomeyScript Karte genutzt,


Du eine Device Capabilities Karte:

Nimm einfach mal die HS Karte und probiere es noch mal aus.

Das Problem mit dem Intervall ist, dass die API nicht mehr Abfragen als alle 5 Minuten zulässt. Zumindest war das damals der Fall:

Habe es angepasst, die Ausgabe funktioniert immer noch nicht, glaube auch den Fehler gefunden zu haben:

image

Hier lässt sich letzte Aktualisierung nicht auswählen

Das scheint das Problem zu sein. Wie sieht Dein AVD denn aus? Bzw. die Konfiguration der Letzte Aktualisierung Fähigkeit?

Das Feld ist jedenfalls da

Jesses was ein gebastel :stuck_out_tongue:

Alles neu reingeladen, nun sieht es so aus:

Was mit fehlt ist #Ergebnis in der Script Kachel, leider keine Idee wie ich das einfügen kann.

Das #Ergebnis bekommst Du doch genauso in die Karte, wie Du es bei der DC Karte auch gemacht hast. Dazu müssen die Karten allerdings verbunden sein, was sie aber ja auch sind:

  1. Auf das leere Feld Argument klicken
  2. Auf das/den Tag klicken
  3. Auf #Ergebnis

Fettes Danke, so langsam steige ich durch ,-)

1 Like

Ich habe zwei AP Systems laufen, Peak war heute 800 Watt. Wobei erst 2 Module auf dem Dach montiert sind, die andere Anlage liegt flach herum.

Das sind zwei Micro Wechselrichter je 600W

Hallo zusammen,
auch ich setze einen Poweropti ein und würde diesen gerne in Homey Pro einbinden. Die Anleitung oben ist soweit für mich auch verständlich. Beim AVD steige ich allerdings aus. Besteht hier die Möglichkeit, dass jemand von euch, der das passende AVD schon erstellt hat, hier zur Verfügung stellen könnte, so dass “nur” noch die HomeScript-App installiert werden muss, der Flow erstellt werden muss und die Device Capabilities App installiert und dort die Vorlage importiert werden muss? Könnt ihr mir hierzu weiterhelfen oder Infos geben, wir ihr das Device in der DC-App als AVD angelegt habt?
Danke euch und viele Grüße

Hi Sebastian,
eigentlich ist im 1. Post alles erklärt und auch verlinkt. Auch der Code für den Import des AVDs und des Flows ist bereits hinterlegt:

  1. Die Device Capabilities und die HomeyScript App installieren
  2. Geräte → + → Neues Gerät → Device Capabilities → Advanced Virtual Device → Verbinden → Importing a TEF → Code einfügen → Gerät einlesen

Danach müsste eigentlich nur noch der Flow entsprechend angepasst werden.

Hallo fantross,
herzlichen Dank für die Erläuterung. Damit ist es mir nun gelungen die Einbindung des Poweropti erfolgreich zu realisieren. Der Flow läuft durch und die Daten werden in das AVD übertragen (aktueller Verbrauch, Zählerstand, Einspeisung (Gesamt) und Letzte Aktualisierung). In der Powerfox-App gibt es auch die Anzeige der momentanen Einspeisung in W (ähnlich zum “aktuellen Verbrauch”). Gibt es hier die Möglichkeit sich auch diesen Wert abzufragen und im AVD anzeigen zu lassen? Gemäß der Doku der API wird dieser Wert ja gar nicht übermittelt. Sehe ich das richtig so? Hat sich vielleicht jemand von euch auch schon diese Frage gestellt? Müsste man sonst sicherlich mal beim Support von power42 anfragen oder wie seht ihr das?

Richtig, lt. aktueller API-Dokumentation ist das nicht vorgesehen. Da müsstest Du mal den Support kontaktieren.