@nograx sagte in Test Adapter Zendure Solarflow:
@maxclaudi
- autoModel: 8 wird auch bei der HA Integration immer mit geschickt. Da das Zendure abgenickt hat (die Integration offiziell ist) muss ich davon ausgehen das das so OK ist.
wie Du möchtest.
Ob das speziell abgenickt wurde und bei vielen anderen Stellen: weiß ich nicht.
Meine Vermutung ist, dass sie nur auf Nachfrage reagieren und mal machen lassen.
Kostet sie nichts. Aber genug mit Spekulationen.
Für meinen Teil, mach ich so viel wie möglich safe.
-
packState: Kannst du das bitte erläutern und mir ein Beispiel zeigen? Kann zu "packState" in der HA Integration nicht viel finden.
-
"hart" schalten. Hier bräuchte ich auch mal ein Beispiel bzw. ne Referenz in dem Code der HA Integration, das verstehe ich nämlich auch nicht.
packSate habe ich dazu in meinem code zur Auswertung mit verwendet, weil es quasi "idle" ist und in HA das IDLE (State=0) ist.
Versteht man schon
Im solarflow-adapter-code benutzt Du auch Idle für packState:0
Möchte mich jetzt nicht wieder Tage mit der HA-Intergration beschäftigen
Egal, war zu lang raus aus dem py-Code und musste das gerade nochmal runterladen und anschauen.
Basis nun: Zendure-HA-1.1.4-pre2
Wenn man in den Code schaut, wird es schnell nachvollziehbar 
A)
Was passiert bei Wechsel von negativ -> positiv (CHARGING → DISCHARGING)?
Beispiel: -100 W (Laden aus Netz) zu 200 W (Entladen ins Haus).
- manager.py erkennt, dass der gewünschte Wert Vorzeichen wechselt.
- Aktuelle ManagerState (CHARGING) passt nicht mehr.
- deshalb wird der State auf IDLE gesetzt: Übergangsschritt.
- deviceAutomation wird mit autoModel=0, autoModelProgram=0 aufgerufen.
- „Stop-Befehl“: das Gerät ist kurz im IDLE-Modus.
- Danach wechselt manager.py den State auf DISCHARGING.
- deviceAutomation wird erneut aufgerufen mit:
{
"autoModel": 8,
"autoModelProgram": 2,
"autoModelValue": {
"chargingPower": 0,
"outPower": 200,
"freq": 0
}
}
B)
sodele oder vice versa, was passiert bei Wechsel von positiv -> negativ (DISCHARGING → CHARGING)?
Beispiel: 200 W (Entladen) -> -100 W (Laden aus Netz).
- manager.py setzt State auf IDLE -> autoModel=0.
- danach manager.py setzt State auf CHARGING -> autoModel=8, autoModelProgram=1.
Payload u. a.:
{
"autoModel": 8,
"autoModelProgram": 1,
"autoModelValue": {
"chargingPower": 100,
"outPower": 0,
"chargingType": 1,
"price": 2
}
}
C)
Bedingung für IDLE (State=0)
IDLE wird immer dann gesetzt, wenn:
-
Der gewünschte neue Wert 0 ist
-> Payload mit autoModel=0.
-
Oder beim Umschalten der Richtung (negativ <-> positiv).
Damit wird garantiert, dass das Gerät nie „hart“ von Charge zu Discharge springt.
Im Code (z.B. hyper2000.py) :
"autoModel": 8 if state == ManagerState.DISCHARGING else 0,
"autoModelProgram": 2 if state == ManagerState.DISCHARGING else 0,
Wenn state == IDLE, landet man also automatisch bei 0/0.
Fazit:
- es wird immer über autoModel=0 (Idle) geschaltet, wenn von negativ <-> positiv gewechselt wird.
- Idle wird akzeptiert, wenn man manuell 0 setzt, oder
- die Steuerung in manager.py beim Richtungswechsel einen „Zwischenstopp“ macht.
- Dadurch sieht der Payload-Fluss z. B. bei -100 -> 200 so aus:
- deviceAutomation { autoModel=8, program=1, chargingPower=100 } (alter Zustand)
- deviceAutomation { autoModel=0, program=0 } (IDLE)
- deviceAutomation { autoModel=8, program=2, outPower=200 } (neuer Zustand)
Hinweis:
urprünglich ging ich davon aus, dass packState:0 == Idle ist und habe es in meinem Code entsprechend verwendet.
Wie bereits erwähnt, akzeptiert HA den Status auch als "IDLE", selbst wenn packState ≠ 0, solange andere Parameter passen.
Die Details lassen sich im Code auch gut nachvollziehen – ich denke, damit sollte genug Material da sein, um es weiterzuverfolgen.
Meine Analyse beschränkt sich auf die HA-Integration und zum Vergleich mit der solar-flow-Adapter-Funktion.
Fehler meinerseits sind dabei nicht ausgeschlossen.
Persönlich mag ich den Weg nicht, zu hacky und zu viele unbekannte Faktoren.
Bleibe beim bisherigen: Mode: 0, smartMode: 1 und outputLimit.
im HA code
Zendure-HA-1.1.4-pre2\custom_components\zendure_ha\manager.py
Zendure-HA-1.1.4-pre2\custom_components\zendure_ha\devices
Alle Geräte wie hub2000.py oder hyper2000.py etc.
Hoffe, das hilft Dir – mehr habe ich dazu nicht, gern geschehen.