Photovoltaik Eigenverbrauch,Bilanz,Prognose (Kostal Plenticore; KSEM; BYD HV)

Begonnen von ch.eick, 07 Oktober 2020, 16:09:12

Vorheriges Thema - Nächstes Thema

ch.eick

Es gibt beim Stromboerse_connect und beim Stromboerse Device ein neues update im contrib.
Die Devices, die die Trigger Zeiten im uiState mit anzeigen wurden ebenfass aktualisiert.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
ich denke ich führe hier mitlerweile gruppendynamische Selbstgespräche, aber so what...

In Vorbereitung für eventuelle Strafzahlungen für die Einspeisung zu netzundienlichen Zeiten habe ich mich mal mit der Drosselung beschäftigt.
Über den Active_P_Setpoint in Prozent kann man den Wechselrichter WR_1 mit ModBus bis auf 0 W runter regeln.
Einen Steuerkreis um dies automatisch zu machen habe ich noch nicht geschrieben, aber das kann ja noch kommen.

Active_P_Setpoint in Prozent
attr WR_1 obj-h533-len 1
attr WR_1 obj-h533-reading Active_P_Setpoint
attr WR_1 obj-h533-set 1
attr WR_1 obj-h533-unpack n

set WR_1 Active_P_Setpoint 0
Du darfst diesen Dateianhang nicht ansehen.

Dann habe ich nochmal getestet, ob es auch die Speicher Ladung unterbricht, was zum Glück nicht der Fall ist :-)
Du darfst diesen Dateianhang nicht ansehen.

Du darfst diesen Dateianhang nicht ansehen.

Wenn man nun beide WR setzt, so braucht man sich noch nicht einmal um irgend eine Regelung kümmern, das machen die Plenticore komplett alleine.
Der Speicher wird weiter geladen und auch das Haus versorgt. Ich bin begeistert :-)

set WR_1 Active_P_Setpoint 0
set WR_2 Active_P_Setpoint 0
Du darfst diesen Dateianhang nicht ansehen.
Den aktuellen Hausverbrauch sieht man bei mir in der Tabelle darunter, aber es klappt und im KSEM sieht man auch die Produktion.
Du darfst diesen Dateianhang nicht ansehen.


VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Und schon kommt die nächste Info.

Da ich mit Docker Containern arbeite und letztens ein Update durchgeführt wurde fehlt anscheinen eine Funktion im crypto Modul.
Ich bin kein Entwickler und habe das jetzt nicht tief analysiert, aber mein neuer Freund ChatBGT wusste nach einiger Analyse was ich machen konnte :-)

Es geht um die Authentifizierung beim Plenticore, wo die Funktion derive() verwendet wurde. An der Stelle muss jetzt eine Änderung als Ersatz rein.

99_myUtils.pm
###########################################################
## Kostal Plenticore Autentifizierung PV_Anlage_1
###########################################################

use Encode qw(decode encode);
# use PBKDF2::Tiny qw/derive verify/;
use Crypt::PBKDF2;
use Digest::SHA qw(sha256 hmac_sha256);
use Crypt::URandom qw( urandom );
use Crypt::AuthEnc::GCM;

<snip>

   ######### This code is identical for finish and session #################
   my $bitSalt = decode_base64($salt);

#   Durch einen Docker Update ist die derive() Funktion nicht mehr verfügbar
#   my $r = derive( 'SHA-256', $PASSWD, $bitSalt, $rounds );

#   Ersatz für die derive() Funktion

    my $pbkdf2 = Crypt::PBKDF2->new(
        hash_class => 'HMACSHA2',        # SHA-256 wird hier gesetzt
        hash_args  => { sha_size => 256 },# SHA-256 Bits
        iterations => $rounds,            # die Runden
        output_len => 32                  # Länge des Hashes (in Bytes)
    );

    my $r = $pbkdf2->PBKDF2($bitSalt, $PASSWD);

#  Ende für den Ersatz

   my $ck = encode('UTF-8', "Client Key");
   my $s = hmac_sha256($ck, $r);
   my $underscore = sha256($s);
   my $d = "n=".$user.",r=".$randomString.",r=".$nonce.",s=".$salt.",i=".$rounds.",c=biws,r=".$nonce;

<snip>

Danach ein reload 99_myUtils.pm

Und schon kann man sich wieder korrekt am WR mit der API anmelden.
Aufgefallen ist mir das, da ich einiges nicht mehr abfragen konnte, da dafür ein neues Login erforderlich war.

- 04_auth_me                    Zeigt den Anmeldestatus an. Dort sieht man übrigens auch, wenn das Passwort mal gesperrt wurde.

- 50_events_latests_5           Da sieht man schön das Event Log
- 60_01_Reset_Wechselrichter    So kann man mal ein Software Reset machen, was in der GUI nicht verfügbar ist
- 60_update_status              Falls man mal einen Update startet könnte man somit den Fortschritt abfragen


VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick