Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Benutzeravatar
kopy
Beiträge: 121
Registriert: 28.12.2015, 14:35
Hat sich bedankt: 2 Mal
Danksagung erhalten: 8 Mal

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von kopy » 30.01.2022, 11:30

Habe es inzwischen selber hinbekommen.
Ein tolles Skript mit guten Erklärungen dabei.....................

Accuracy
Beiträge: 749
Registriert: 22.05.2013, 16:37
Hat sich bedankt: 1 Mal

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von Accuracy » 31.01.2022, 09:39

BernhardB hat geschrieben:
21.11.2020, 11:22
Hallo,
ELV bietet seit kurzem den Powerfox Poweropti zum auslesen von elektronischen Stromzählen an. Dieser wird mit USB Netzteil versorgt
ich habe einen elektronischen Stromzähler. Wie finde ich heraus ob dieser kompatibel ist? wie kommt man an den benötigen 4 stelligen code?

Fonzo
Beiträge: 6741
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 484 Mal

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von Fonzo » 31.01.2022, 09:46

Accuracy hat geschrieben:
31.01.2022, 09:39
Wie finde ich heraus ob dieser kompatibel ist?
Der Hersteller führt eine Kompatibilitätsliste auf der Hersteller Seite.

Benutzeravatar
audi2010
Beiträge: 223
Registriert: 18.05.2015, 09:36
Wohnort: Friedberg(Hessen)
Hat sich bedankt: 172 Mal
Danksagung erhalten: 11 Mal

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von audi2010 » 31.01.2022, 11:32

Accuracy hat geschrieben:
31.01.2022, 09:39
... wie kommt man an den benötigen 4 stelligen code?
Ich habe meinen vom Zählerbetreiber( bei mir = Stromlieferant) beim Zählertausch erhalten.
Viele Grüße
Rainer

FrankJacobs
Beiträge: 34
Registriert: 11.04.2022, 12:40
System: CCU

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von FrankJacobs » 11.04.2022, 18:35

Hallo zusammen,
hatte das glaube ich im falsche Tread geschrieben, deswegen hier nochmal:

Hallo zusammen,
habe mir jetzt seit Tagen die Posts hier durchgelesen und werde nicht wirklich draus schlau. Das Los eines Anfängers.
Ich würde gerne das machen was der Spezialist namens Hattermann so netterweise hier reingeschrieben hat.
Ziel: Daten des Powerfox auslesen um immer dann wenn ich mit meiner PV Strom ins Netz einspeise, diesen Strom lieber selbst zu verbrauchen. Daher brauche ich sozusagen vielleicht alle Minute den aktuellen Wert von Powerfox.

Ich bin mal so dreist und stelle einfach mal meine Frage:
1. was ist besser? Das Script das hier eingestellt in in die CUXd einstellen und wenn dann wie ? Die Cuxd habe ich geladen.
1.a. oder bessser in der Webui direkt das Script reinschreiben?

Ich habe hier mal das Script abgeändert, so wie ich es verstanden habe, die Zeilen mit Ausrufezeichen weglassen ( korrekt ?) . das in mehren Fragezeiche sind meine Fragen dazu.

Sorry, aber mir ist nicht ganz klar, welche Zeilen ich in das Script schreiben sollte und welche nicht. Am Ende wirft ja das Programm mit dem Script
minestens zwei Werte aus. Bestenfalls die Einspeisemenge und den aktuellen Stromverbrauch jeweils in Watt. Damit kann ich dann die ersten beiden hier genannten SV bauen, mti denen ich dann ein entsprechendes Programm bauen kann. Das wäre super.


Ach so: Die API Abfrage funktioniert. CUXd habe ich auch, weiß aber nicht ob ich die dafür brauche...
Könnt Ihr mir helfen ?

BG Frank
CODE: ALLES AUSWÄHLEN

********************************************************************************************************
!-------- Hier die eigenen Daten Eintragen------------------
string username = "Frank.jacobs@gmail.com";
string password = "Bauernstrasse39";
string poweropti_serial = "1234567890ab";
!-----------------------------------------------------------

string usernameEnc = Frank.jacobs@gmail.com();
string passwordEnc = Bauernstrasse39();
string JSON_All;
string stemp;
integer StrLen;
integer pos;
real AktuelleLeistung;
real VerbrauchSumme;
var v_Leistung;
var v_Summe;

! diese Systemvariablen als Fließkomma anlegen!
string strLeistung = "StromAktLeistung"; ????????so anlegen- heisst das Fließkomma????????
string strSumme = "StromSummeVerbrauch";

???????????????Wofür ist das noch ??????????????
! Username, Password ausgeben um Strings selbst zu basteln
! WriteLine(usernameEnc);
! WriteLine(passwordEnc);
! Abfrage der Serial im Browser:
! https://%usernameEnc%:%passwordEnc%@bac ... ll/devices

string cmd = "curl -X GET \"https://" + Frank.jacobs@gmail.comEnc + ":" + Bauernstrasse.39Enc + "@backend.powerfox.energy/api/2.0/my/" + poweropti_serial + "/current\"";

????????????????????Brauche ich dass folgende wenn es nicht über die CUxD laufen soll? Oder ist es über über die CuxD einfacher und besser ??????????

!Daten der Geräte abrufen
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
JSON_All = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State().ToLatin();
StrLen = JSON_All.Length();
! WriteLine( JSON_All ); ?????????????????????????was hier eintragen ???????????????????????????

! Leistung Lesen
pos = JSON_All.Find( "\"Watt\":" ) + 7;
JSON_All = JSON_All.Substr( pos, JSON_All.Length() - pos );
pos = JSON_All.Find( "," );
stemp = JSON_All.Substr( 0, pos );
! WriteLine( stemp ); ??????????????????????????was hier eintragen?????????????????????????????
AktuelleLeistung = stemp.ToFloat();
! WriteLine( AktuelleLeistung ); ????????????????????????????was hier eintragen?????????????????????????????

! Verbrauch lesen
pos = JSON_All.Find( "\"A_Plus\":" ) + 9;
JSON_All = JSON_All.Substr( pos, JSON_All.Length() - pos );
pos = JSON_All.Find( "," );
stemp = JSON_All.Substr( 0, pos );
! WriteLine( stemp ); ??????????????????????????was hier eintragen?????????????????????????????
VerbrauchSumme = stemp.ToFloat();
! WriteLine( VerbrauchSumme ); ??????????????????????????was hier eintragen?????????????????????????????

?????????????????????????????Diese vier Variablen müsste ich dann anlegen in der Webui? ?????????????????????????? und was ist mit den beiden SV von oben?
! Variablen setzen
v_Leistung = dom.GetObject( strLeistung );
v_Leistung.State( AktuelleLeistung );
v_Summe = dom.GetObject( strSumme );
v_Summe.State( VerbrauchSumme );
Zuletzt geändert von uwe111 am 11.04.2022, 15:35, insgesamt 1-mal geändert.
Grund: CODE in CODE Tags

FrankJacobs
Beiträge: 34
Registriert: 11.04.2022, 12:40
System: CCU

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von FrankJacobs » 11.04.2022, 21:05

Hallo zusammen,
so, habe mal versucht die Beschreibung für das Script richtig zu deuten und habe in das Programm folgendes Script eingefügt. Könnt Ihr mir sagen ob das so richtig ist ?

Dazu habe ich die folgenden SV in der Webui angelegt:(lässt sich hier nicht hin kopieren)
Name: StromAktLeistung, StromSummeVerbrauch
beide mit Auswahl Zahl in Watt, Bereich -5000 bis +5000 ohne Kanalzuordnung

Frage:
müssen die ganz unten genannten SV nicht auch angelegt werden ?
Was ist mir dem Bereich ab:

1. string cmd..... - muss dass noch ins Skript?
2. ! Daten der Geräte abrufen... bis ! Variablen setzen ..... muss dass noch ins Skript ?
bin mir wegen der Ausrufezeichen davon nicht sicher ....

Danke euch!
BG
Frank




string username = "xxxxx@gmail.com";
string password = "xxxxxxxxx50";
string poweropti_serial = "xxxxxxxxxx";

string usernameEnc = username.UriEncode();
string passwordEnc = password.UriEncode();
string JSON_All;
string stemp;
integer StrLen;
integer pos;
real AktuelleLeistung;
real VerbrauchSumme;
var v_Leistung;
var v_Summe;
string strLeistung = "StromAktLeistung";
string strSumme = "StromSummeVerbrauch";

string cmd = "curl -X GET \"https://" + usernameEnc + ":" + passwordEnc + "@backend.powerfox.energy/api/2.0/my/" + poweropti_serial + "/current\"";

!Daten der Geräte abrufen
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State(cmd);
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
JSON_All = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State().ToLatin();
StrLen = JSON_All.Length();
! WriteLine( JSON_All );

! Leistung Lesen
pos = JSON_All.Find( "\"Watt\":" ) + 7;
JSON_All = JSON_All.Substr( pos, JSON_All.Length() - pos );
pos = JSON_All.Find( "," );
stemp = JSON_All.Substr( 0, pos );
! WriteLine( stemp );
AktuelleLeistung = stemp.ToFloat();
! WriteLine( AktuelleLeistung );

! Verbrauch lesen
pos = JSON_All.Find( "\"A_Plus\":" ) + 9;
JSON_All = JSON_All.Substr( pos, JSON_All.Length() - pos );
pos = JSON_All.Find( "," );
stemp = JSON_All.Substr( 0, pos );
! WriteLine( stemp );
VerbrauchSumme = stemp.ToFloat();
! WriteLine( VerbrauchSumme );

! Variablen setzen
v_Leistung = dom.GetObject( strLeistung );
v_Leistung.State( AktuelleLeistung );
v_Summe = dom.GetObject( strSumme );
v_Summe.State( VerbrauchSumme );

FrankJacobs
Beiträge: 34
Registriert: 11.04.2022, 12:40
System: CCU

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von FrankJacobs » 11.04.2022, 21:48

Help.... nichts geht. Habe alle Varianten mit dem Script-Testen getestet.
keine Ergebnisse.....

BG
Frank

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von MichaelN » 11.04.2022, 21:56

Unterhalb von

Code: Alles auswählen

! - - - - - - - - - - - - - - - - - - - - 
solltest du nichts ändern.

Und bitte Code in Code-Tags posten.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

FrankJacobs
Beiträge: 34
Registriert: 11.04.2022, 12:40
System: CCU

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von FrankJacobs » 12.04.2022, 08:33

Hallo Michael,
super. Danke für die Hilfe erstmal.

Habe ich gemacht. Also auch Zeile 1 und 5 drinnen gelassen und nur die richtigen Werte in Zeile 2-4 eingegeben. Anführungszeichen habe ich stehen lassen. Fehlerprüfung liefert kein Ergebnis. Aber beim Scripttest wirft er keine Daten aus und das sollte er ja...?!

Obwohl in dem Script was von CuXd steht brauche ich dort nichts ergänzen oder reinschreiben?

Da der Fehler dann ja nur in den ersten Zeilen sein kann, so sehen die ersten 7 Zeilen dann aus, Rest alles so gelassen: ( keine Ahnung wie das mit den Tags geht)
***********************************************************************************
!-------- Hier die eigenen Daten Eintragen------------------
string username = „frank.jacobs@gmail.com“;
string password = „Bauernstrasse50“;
string poweropti_serial = „6c41s14195c“;
!-----------------------------------------------------------

string usernameEnc = username.UriEncode();
**************************************************************************************

Das Programm sieht bei mir wie folgt aus:
"Zeitsteuerung" periodisch von bis "zu Zeitpunkten auslösen"
Dann "Script" sofort

Damit müsste er ja dann die beiden SV befüllen sozusagen. Die beiden heißen:
StromAktLeistung (hier wird dann wohl die Wattzahl der PV angegeben, wieviel diese gerade liefert)
StromAktVerbrauch (der momentane Verbrauch - also z.B. minus 352 Watt, was sich aus Errechnung des Verbrauchs minus PV Leistung ergibt)

siehst du noch irgendwo einen Fehler?
wenn ich die API Powerfox direkt per Browser auslese, dann funktioniert das.
unter dem Link: https://backend.powerfox.energy/api/2.0 ... t?unit=kwh
gibt er mir folgende Zeile aus:{"Outdated":false,"Watt":-43.0,"Timestamp":1649744770,"A_Plus":79.614,"A_Minus":32.756}
Das geht also...

Dank dir nochmal für die Hilfe.
BG
Frank

Benutzeravatar
Baxxy
Beiträge: 10827
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2225 Mal

Re: Zählersensor Powerfox Poweropti Leistung auslesen und in Variable schreiben

Beitrag von Baxxy » 12.04.2022, 08:54

Das benötigte CUxD-Gerät: (28) System - Funktion: Exec ist auf deinem System vorhanden und hat auch die entsprechende Seriennummer (CUX2801002) welche im Script verwendet wird?

Antworten

Zurück zu „HomeMatic allgemein“