Programmatischer Lesender - UND Schreibender Zugriff auf Kostal Plenticore - z.B. MinSoC Parameter verändern um Batterieladung zu optimieren

  • Ich kann mal für eines der Skripte die Ablage in mariaDB konzeptionell erklären. Würde das helfen ?

    Auf jeden fall :) ich bin ja noch am Anfang und kann jeden Tip gebrauchen

  • Ok... jetzt fällt mir wieder ein, dass ich das für das alte Modbus Skript schon mal gepostet hab. Kuckst Du hier ?

    Da beschreibe ich einerseits das Anlegen einer Tabelle - und im python code ist auch die Routine mit bei, die alle ausgelesenen Werte in eine Zeile der Tabelle schreibt (Funktion add_row):

    Kostal Plenticore Daten per skript über Modbus auslesen

  • Amok83 hast du einen Piko BA? Dann kann ich dir Skripte für das Auslesen geben. Schreiben geht leider nicht.

    Der BA Sensor funktioniert am aktuellen Piko leider nicht mehr. Ab Firmware 6.0 wurde die Funktion entfernt.

    11,7kWp Ost @42°

    5,85kWp West @42°

    4,56 kWp Nord @7°

    4,56 kWp Süd @7°

  • Ok - der Bursche versteht also diese REST API nicht. Damit ist mein Skript für den Typ WR leider gestorben - sorry ...

    Scheinbar doch ich bin noch mal ein bisschen auf die Suche gegangen.

    In der WindowsPower Shell reagiert er z.B. auf

    Code
    Invoke-RestMethod "http://192.168.x.x/api/dxs.json?dxsEntries=33556736&dxsEntries=67109120&dxsEntries=16780032"

    Das dafür muss man sich nicht mal anmelden und braucht kein Passwort.


    Man fragt die Werte an, die man wissen möchte und bekommt die Antwort zurück.

    Liese sich das auch in Python realisieren?

    11,7kWp Ost @42°

    5,85kWp West @42°

    4,56 kWp Nord @7°

    4,56 kWp Süd @7°

  • Es funktioniert auch mit Python.


    Code
    import requests
    
    def get_data():
        ship_api_url = "http://192.168.178.26/api/dxs.json?dxsEntries=33556736&dxsEntries=67109120&dxsEntries=16780032"
        request_data = requests.get(ship_api_url)
        return request_data.json()
    
    data = get_data()
    print(data)


    Liefert:

    Code
    {'dxsEntries': [{'dxsId': 33556736, 'value': 16.960032}, {'dxsId': 67109120, 'value': 0.0}, {'dxsId': 16780032, 'value': 1}], 'session': {'sessionId': 0, 'roleId': 0}, 'status': {'code': 0}}

    Dabei ist dxsId jeweils die Art des Wertes (identisch mit Anfrage) und Value der Wert. Hier z.B. 16,96W DC und 0W Ausgangsleistung mit Betriebsstatus Leerlauf.

    11,7kWp Ost @42°

    5,85kWp West @42°

    4,56 kWp Nord @7°

    4,56 kWp Süd @7°

  • Amok83 das ist der Lese-Zugriff den ich meinte, wenn du mir eine PN mit Email schickst, kann ich dir meinen Parser zuschicken. Der liest die Werte aus und schreibt sie in eine MySQL.

    kruki sorry, ist wohl Off-Topic ;)

  • kruki

    Ich würde sehr gerne über die Python-Routine auf den Kostal zugreifen. Ich habe die IP-Adresse im Skript und das Passwort geändert, zusätzlich die 2 Settings auskommentiert, ich möchte später gerne andere Einstellungen zeitabhängig ändern.

    Leider funktioniert aber schon das Anmelden nicht. Ich habe ein paar Print-Befehle eingebaut, man kann wenigstens die ersten Ergebnisse sehen, aber warum es nicht richtig anmeldet kann ich nicht erkennen:


    Code
    root@solaranzeige:/solaranzeige# python Kostal_Api.py
    ('Step1', '{"username": "user", "nonce": "bG5BZk5SdWxDZFRJ"}')
    ('my response ist..', {u'nonce': u'bG5BZk5SdWxDZFRJqjOc0XRqN3Q0EorB', u'transactionId': u'92985abb9abd290710f613eb3028bb9c71b9923f11b5018af654e4695263a75b', u'salt': u'nMDoYc38bjJHG3vN', u'rounds': 29000})
    ('Authentication - Parameter proof / f', '<generator object <genexpr> at 0xb5d81af8>')
    ('Step2', '{"transactionId": "92985abb9abd290710f613eb3028bb9c71b9923f11b5018af654e4695263a75b", "proof": "PGdlbmVyYXRvciBvYmplY3QgPGdlbmV4cHI+IGF0IDB4YjVkODFhZjg+"}')
    ('my response ist..', {u'message': u'authentication failed'})
    ('Ran into error executing Main Routine :', KeyError('token',))

    Das Ganze läuft auf einem Raspi mit Solaranzeige (Visualisierung Anlagendaten ausgelesen über ModBus), soll aber eben auch Werte setzen können. Vielleicht kannst Du mir irgendwie helfen?


    Nachdem ich Python3 verwendet habe (auf dem Raspi ist der Aufruf "python" 2.7.16, "python3" startet 3.7.3 kommt es zu folgendem Fehler

    Code
    Ran into error executing Main Routine : module 'Crypto.Cipher.AES' has no attribute 'MODE_GCM'


    OK, nach Installation von PiCryptoDome für Python3 läuft die Anmeldung jetzt mal durch. Jetzt muss ich nur noch herausfinden, welche Felder ich ändern kann und will...


    Module 11 * Trina Solar 335 (3,7 kWp Ost, 38°), 14 * Trina Solar 335 (4,7 kWp West, 38°)
    WR Kostal Plenticore plus 7.0 / Speicher BYD HVS Premium 10,2 kWh

    Panasonic T-Cap 9kW Wärmepumpe

    WallBe ECO 2.0s WallBox / Grandland Hybrid

    Überschussladen mit Solaranzeige.de / Extrem-Monitoring mit Solaranzeige.de

  • Freut mich, dass Du es geschafft hast das Skript zum Laufen zu bringen.

    Zur Zeit sind nur 3 Parameter für die Batterie schreibbar (Zeile 369-371 im Skript):

    mykostalsettings.KostalwriteableSettings['Battery:DynamicSoc:Enable'] = 0

    mykostalsettings.KostalwriteableSettings['Battery:MinHomeComsumption'] = 50

    mykostalsettings.KostalwriteableSettings['Battery:MinSoc'] = 5


    Was willst Du denn machen ?