"Intelligenter Strom Zähler" (ENBW)/ 70_SML.pm

Begonnen von pet22, 10 Dezember 2013, 18:53:09

Vorheriges Thema - Nächstes Thema

pet22

EnBW macht wohl z.Z. ein Software Update des "Intelligenten Strom Zählers". Mich hat es heute erwischt.
Da das URI und vermutlich auch die Struktur des Webinhaltes geändert wurden, liefert das Modul 70_SML.pm nur noch Errors.
Leider gibt es von EnBW keinerlei Dokumentation, die weiterhelfen würde - auch Yellow mit dem "Sparzähler" schweigt sich aus.

Das Modul 70_SML.pm müsste daher gelegentlich angepasst werden.

Vielen Dank

Pet 22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

Zwiebel

Hallo pet22,

woher hast du die Info das EnBW updates macht? Kann es sein das "Intelligenten Strom Zählers" abgestürzt ist?
Bei mir hat ein stromlos machen des Zählers schon mal geholfen...

gruß
Zwiebel

pet22

#2
Hallo Zwiebel,

Zitatwoher hast du die Info das EnBW updates macht?

Der Zähler wird noch immer von der EnBW beworben. Nachdem mich eine Mitarbeiterin der EnBW angesprochen hatte, habe ich sie auf das Schaltjahrproblem des Zählers angesprochen (Winter/ Sommerzeit 2012 war eine Woche später, wie bei vielen anderen auf Linux basierenden Geräten mit veralteten libs). Sie "meinte" es würde ein Softwareupdate aufgespielt werden - Stand Okt 13.

ZitatKann es sein das "Intelligenten Strom Zählers" abgestürzt ist?

"Abgestürzt" ist das Ding eigentlich noch nie richtig. Es gab aber ab und zu mal verdächtige gerade Linien im Diagramm. Das Comm-Modul des Zählers hat da wohl einen reboot gemacht.

ZitatBei mir hat ein stromlos machen des Zählers schon mal geholfen...

noch alles schön verplombt - besser nicht  ::)

Mit der neuen Software gibt es wohl einen neuen Menü-Punkt im Browser:

http://zähler-ip/?action=1                                        Aktuelle Leistung
http://zähler-ip/?action=20                                      Zählerstände
http://zähler-ip/?action=23                                      Statusseite
http://zähler-ip/?action=3                                        Support Login
http://zähler-ip/?action=62                                      Installations Login

Softwarestand ist bei mir jetzt WNGW000552. Fallback Software WNGW000552

Gruss

Pet22


Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

pet22

Hallo Zwiebel,

basierend auf der Annahme, dass der "Inteligente Stromzähler von Yellow und EnBW baugleich sind, habe ich das "Yellowmeter" (http://www.yellostrom.de/privatkunden/sparzaehler/software) auf meinem Win PC installiert und Wireshark angeworfen.

Laut FHEM reference gilt folgendes:
Define
define <name> SML <host> <port> [<interval> <timeout>]


Werte für <interval>  >100 zeigen einen Fehler im XML, das der Zähler zurücksendet. Mit Werten für interval <= 100 funktioniert 70_SML wieder mit der neuen Softwarevariante von EnBW. Es bläht halt das Logfile auf ....

Zeile 145 in 70_SML.pm enthält folgendes
my $url =  "/InstantView/request/getPowerProfile.html?ts=0\&n=$interval\&param=Wirkleistung\&format=1";

ts=0 taucht weder bei Yellow noch beim Webinterface von EnBW auf. Für was war dieser Parameter gedacht?

Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

Zwiebel

Hallo pet22,

bin auch gerade am schauen.

Das was du beschrieben hast hab ich heute morgen auch in dem Modul gemacht.
URL und Intervall abgeändert...

100 ist schon sehr wenig/oft. Ich fand alle 5 min schon ausreichend.

Hier noch eine Beschreibung von der XML Schnittstelle wie es 2010 war.

Jetzt kann man auch den aktuellen Zählerstand auslesen...bin am überlegen ob man den vielleicht in das Modul (70_SML) mit aufnehmen soll...

Gruß
Zwiebel

pet22

Hallo Zwiebel,

vielen Dank für die Beschreibung - hatte mich schon in Google Groups wund gesucht. Ausserdem ist das dort zietierte URL tot.

Ich hab mal 70_SML.pm ab Zeile 145 abgeändert:
# testing
# ts - no default value available, parameter must be set. If "0" last value of n will be read
my $ts = 0;
# n - max no. of returned metering values. Default is 100, implemented limit is 3600. Depends on FW of the power meter
my $n =1;
my $url =  "/InstantView/request/getPowerProfile.html?ts=$ts\&n=$n\&param=Wirkleistung\&format=1";


Somit läuft es wieder im 300s Intervall und die Werte erscheinen richtig.
Den Zählerstand auszulesen wäre die Luxusausgabe. Wenn ich es richtig in Erinnerung habe, ging das aber nicht mit der alten FW. Man müsste also auch noch die FW Version dazu auslesen. Das übersteigt meine Anfänger Kenntnisse von Perl.

Dank und Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

pet22

my $n = 1;

funktioniert nicht, da dann keine Werte berechnet werden können. n sollte also auf den Default Wert gesetzt werden.

Mein momentaner Code sieht also wie folgt aus

# testing
# ts - no default value available, parameter must be set. If "0" last value of n will be read
my $ts = 0;
# n - max no. of returned metering values. Default is 100, implemented limit is 3600. Implemented limit depends on FW of the power meter
my $n = 100;
my $url =  "/InstantView/request/getPowerProfile.html?ts=$ts\&n=$n\&param=Wirkleistung\&format=1";


Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

Zwiebel

Hallo pet22,

ich hab ein paar änderungen gemacht.
- interval auf maximal 100 geändert
- die Zählerstände HT und NT können jetzt über "get device counter" abgefragt werden. Wobei ich mir das noch nicht sicher bin ob das so "gut" ist.

bitte wenn möglich testen. Werd es dann wenn es ok ist hochladen...

gruß
Zwiebel

pet22

Hallo Zwiebel,

vielen Dank für das Test-File im Anhang. Es funktioniert ohne Probleme. Im Log erhält man wie beschrieben mit get <device> counter:

2013.12.16 18:30:34 3: <device> HT = 2360.40  NT = 3326.04
2013.12.16 18:30:34 3: <device> counter => HT: 2360.40 kWh  NT: 3326.04 kWh


Allerdings musste ich das Testfile 70_SML.pm zuvor wieder leicht modifizieren. Zeile 223:

my $url =  "/InstantView/request/getPowerProfile.html?ts=0\&n=$interval";

Nach der Spezifikation ist "n" definiert als maximale Anzahl der zurückgegebenen Werte (Default ist "100"). Mit der FW Version, die bei meinen Zähler implementiert ist, darf &n=$interval nicht verwendet werden, wenn $interval > 100. Lösung siehe weiter oben.

Über die Verwendung von "get <device> counter" muss ich mir aber erst mal Gedanken machen - auf Anhieb fällt mir im Moment nichts ein.

Vielen Dank und Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

Zwiebel

Hallo pet22,

ich nehme an du hast nur einen reload 70_SML gemacht. Ich hab ab zeile 99 versucht den interval auf einen erlaubten wert zu setzen. Daher hätte es auch gereicht fhem neu zu starten. Ich möchte ungern den interval fest vorgeben.

Mit den Zählerstände HT/NT könnte man kurz vor 24 Uhr sich den Tageswert weg speichern, mit einem "at ...." und dann ein filelog auf HT und NT machen....

Oder
Man baut das modul so um das man eine Veränderung an den HT/NT werten mit bekommt. Daraus könnte man die info gewinnen ob gerade der Strom viel oder weniger kostet, und dann einen aktor schaltet.
Aber vielleicht kann die neue Firmware das ja schon ausgeben...bin da für jede hilfe dankbar...

Den "Yellowmeter" meter hab ich nicht ans laufen bekommen, weil man dazu scheinbar ein account bei Yellow benötigt.

gruß
Zwiebel

pet22

Hallo Zwiebel,

Zitatich nehme an du hast nur einen reload 70_SML gemacht

Yep

Aber: nachdem wir heute Nacht einen Stromausfall hatten und das einige meiner elektronischen Helferlein krumm genommen haben, ist FHEM neu gestartet.

Somit wäre dein Vorschlag schon mal eine sinnvolle Anwendung:

ZitatMit den Zählerstände HT/NT könnte man kurz vor 24 Uhr sich den Tageswert weg speichern, mit einem "at ...." und dann ein filelog auf HT und NT machen....

Wo ich aber noch auf dem Schlauch stehe:

ZitatCode: [Auswählen]

my $url =  "/InstantView/request/getPowerProfile.html?ts=0\&n=$interval";


Nach der Spezifikation ist "n" definiert als maximale Anzahl der zurückgegebenen Werte (Default ist "100").

Im jetzigen Code ist n=interval und falls unsinnige Werte an $interval übergeben werden, wird ab Zeile 99 der Default Wert von 100 verwendet.
$interval könnte aber jeden beliebigen (sinnvollen) Wert annehmen, während n=Default sein sollte. Oder sehe ich das falsch? $interval könnte dann so gewählt werden, dass der Plot aussagefähgig ist, aber das Log File nicht zu sehr aufgebläht wird.

Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

Zwiebel

Hallo pet22,

ich habe jetzt die neue Version hoch geladen, sollte ab morgen per update verteilt werden...

Kannst du mit dem Modul so leben oder hast du noch Verbesserungsvorschläge?

Zu meiner config:
ich speicher mir den HT/NT und Summe jede Nacht weg
define enbw_at at 23:59:59 get enbw counter
define enbw_log_counter FileLog /var/log/fhem/enbw_counter-%Y.log enbw:HT:.*


Dann kann ich sehen wie genau meine Erechneten werte mit den realen übereinstimmen.

Gruß
Zwiebel

pet22


Danke - habe es mal manuell runter geladen und die config Files angepasst. Shutdown/ restart bzw. bei Linux stop/ start ist gemacht.

Bisher keine Fehler im Log bzw. Console - ich werde es mal ein paar Tage testen.

Dank + Gruss

Pet22
Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs

Zwiebel

Hallo Zusammen,

ich hab jetzt eine neue Version des Moduls hoch geladen. Mir ist FHEM immer wieder mal stehen geblieben, und ich konnte nicht sagen woran es lag.
Meine Vermutung ist das der Strom Zähler nicht in der passenden Zeit antwortet, und dann FHEM auf das Modul SML wartet.
Daher wird das Abfragen jetzt über ein Fork gemacht. Das sollte sicherstellen das FHEM immer weiter funktioniert.

ab morgen per update verfügbar.

Gruß
Zwiebel

pet22

#14
Hallo Zwiebel,

auch bei mir ist FHEM "stehen geblieben", d.h. keine weiter Log-Meldungen nach

ZitatEnBW can't update - device send a error

Dachte, es liegt an meinen Umgebungsbedingungen, da ich solche Meldungen auch schon früher hatte. Yello + EnBW Zähler + PLC für Max!Cube ist ziemlich viel "Kurzwelle" auf der gleichen Phase. Temporär habe ich einen morgendlichen reboot ausgelöst um das Problem zu beheben.

Mit der neusten Version erhalte ich

Zitat2013.12.29 06:09:35 3: EnBW can't update - device send a error
2013.12.29 06:13:04 1: Timeout for sml_energy_DoUpdate reached, terminated process 5816
2013.12.29 06:13:04 3: EnBW sml_energy_energyAborted

aber FHEM arbeitet klaglos weiter.

ZitatDann kann ich sehen wie genau meine Erechneten werte mit den realen übereinstimmen

Die errechneten Werte stimmen in "guter Näherung" mit den realen Werten überein. Soweit ich den Zähler verstehe, wächst der Stand des Zählers mit jeder Sekunde streng monoton. Die Lastgänge werden als Zählerstandsgänge mit einer Registrierperiode von 15min aufgezeichnet und übertragen. Daher sind bei mir die errechneten Werte in der Regel zu niedrig.
Für meine Zwecke reichen aber die errechneten Werte völlig aus.

Danke + Gruss

Pet22


Debian 11/ Intel Atom MB/ CUL V3/ Raspberrymatic/ Homematic classic, Homematic IP, WTs & HTs