Zendure Solarflow in Fhem via MQTT einbinden

Begonnen von Reinhart, 15 Februar 2024, 17:29:53

Vorheriges Thema - Nächstes Thema

RalfP

Ihr könnt das hier beigefügte 76_Zendure mal testen. Bitte nicht auf eurem Produktivsystem. Da ich nur einen Hub 2000 habe, wäre ein Test mit einem anderen oder mehreren Geräten interessant.
Derzeit habe ich es nur im 76_Zendure umgesetzt. ZentureUtils folgt nach erfolgreichem Test.
SET Update lädt die Device Liste und anschließend die Daten (Electric & Energy). Vorheriges Login ist notwendig (ich empfehle für die Tests einen separaten Account). Nicht alles enthält einen Wert. Vergleicht die Werte mit denen in eurer App, um die Bedeutung zu erkennen. Die Daten für die Plots werte ich nicht aus.
Die Readings sind jetzt mit der ID des Device versehen.
Über ATTR UpdateInterval kann man das Update auch zyklisch abrufen. Ich empfehle so aller 300s oder länger.

Lasst mal hören...

Grüße
Ralf

Shadow3561

Ich bekomme immer ein error beim login.


defmod Zendure Zendure xxxx@web.de password
attr Zendure expert 1
attr Zendure room Zendure

setstate Zendure error
setstate Zendure 2025-03-18 12:20:46 Device_1_deviceKey xxxxx
setstate Zendure 2025-03-18 12:20:46 Device_1_name Hyper 2000
setstate Zendure 2025-03-18 12:20:46 Device_1_productKey gxxxx
setstate Zendure 2025-03-18 12:20:46 Device_1_productName Hyper 2000
setstate Zendure 2025-03-18 12:20:46 Device_1_snNumber xxxxxxxxx
setstate Zendure 2025-03-18 12:20:46 Device_1_subscriptions /xxxx/yyyyy/# iot/xxxxx/yyyy/#
setstate Zendure 2025-03-18 12:20:46 MQTT_accessToken xxxx:yyyyy-zzz-usw
setstate Zendure 2025-03-18 12:20:46 MQTT_iotPassword oK#abcdef
setstate Zendure 2025-03-18 12:20:46 MQTT_iotUrl mq.zen-iot.com:1883
setstate Zendure 2025-03-18 12:20:46 MQTT_iotUserName zenApp
setstate Zendure 2025-03-18 12:20:46 MQTT_userId 656565
setstate Zendure 2025-04-15 17:16:56 state error

RalfP

#47
define <name> Zendure <username> <password> <server>

Username und Password sind die vom zweiten Zendure Account. Werden anschließend verschlüsselt im DEF angezeigt.

Parameter "server" - bezieht sich auf den Zendure Server. Es gibt einen 'Global' und einen 'EU'. Als Parameterwert kann ' global | Global | v2 ' für den Globalen und ' eu | EU ' für den EU Server verwendet werden. Welcher Server benutzt wird, wird bei der Erstanmeldung festgelegt. Beachte: Ein Wechsel löscht alle gespeicherten Daten.

attr expert hat noch keine Funktion

Evtl. noch "deletereading Zendure Device_1_.*" dann noch durchführen, um die alten Readings wegzubekommen.

Shadow3561

#48
Danke,
der Hinweis mit dem ' global | Global | v2 ' hat mir gefehlt.
Login klappt und Daten sind da.
Perfekt.
thx

Gibt es evtl. auch irgendwo die Daten für die gesamte Laufzeit des Systems?

Was mir noch aufgefallen ist:
energy_batteryInput
energy_batteryOutput
sind vertauscht

RalfP

Eine Gesamtlaufzeit mit Totalwerten gibt es. Kann man in der App abrufen, also muss ich nachschauen, wie die Abfrage ist. Derzeit werden nur aktuelle Daten von heute abgerufen.

Die Bedeutung von energy_batteryInput & energy_batteryOutput ist mir auch etwas unverständlich. Es sind aber die Daten die ich bekomme, da ist nichts verdreht, da ich die selben Datenbezeichnungen genommen habe. Es ist aber möglich, das Zendure da etwas anders denkt z.B. batteryOutput = zur Batterie hin, was an der Batterie der Eingang wäre o.s.ä.  ::)

PS: freut mich erst einmal, das es auch mit einem Hyper 2000 funktioniert. So kann ich weitermachen.

Grüße
Ralf

RalfP

Hallo Shadow,

kannst du mal schauen über GET showData DeviceList welche 'productType' => X bei deinem Hyper 2000 angezeigt wird?

Ich würde versuchen die Readings zu reduzieren und abhängig vom Typ (sofern dies möglich ist) erzeugen. Leere (Wert 0 und nicht in App sichtbar) würde ich nicht anzeigen, diese nur wenn ein noch unbekannter Type kommen würde. 

Für die Gesamtlaufzeit und -werte muss ich eigene neue Namen wählen, da die Daten über die selben Keys kommen, wie bei der Tagesabfrage. Mal sehen, wie ich es gestallte.

Grüße
Ralf

rabehd

#51
Ich habe eine Hyper 2000.
Irgendwie komme ich damit nicht klar.
Der gestrige Versuch machte Probleme, heute ohne sichtbare Fehler.

setstate ZendureBridge [b]Electric data successful loaded![/b]
etstate ZendureBridge 2025-04-15 16:26:36 Device__electric_bindDeviceInput 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__electric_fromSolar 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__electric_outputToBindDevice 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__electric_toHome 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_acOutputTotal 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_batteryInput 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_batteryOutput 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_bindDeviceInput 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_dcOutputTotal 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_gridDirectTotal 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_gridInputTotal 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_home 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_outputToBindDevice 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_outputToInverse 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_socketOutputTotal 0
setstate ZendureBridge 2025-04-15 16:26:36 Device__energy_solar 0
setstate ZendureBridge 2025-04-15 16:26:35 Device__subscriptions ///# iot///#
setstate ZendureBridge 2025-04-16 10:22:01 MQTT_iotUrl mqtteu.zen-iot.com:1883
setstate ZendureBridge 2025-04-16 10:22:02 state Electric data successful loaded!

Das sind Werte von gestern, wo sind die von heute hin? Die App hat Werte größer 0.

Dafür erscheint dieses Devive.
defmod Zendure_MQTT_76573 MQTT2_DEVICE <xxx>
attr Zendure_MQTT_76573 IODev Zendure_MQTT
attr Zendure_MQTT_76573 alias Server <xxx>
attr Zendure_MQTT_76573 autocreate no
attr Zendure_MQTT_76573 readingList .*/server/app/<xxx>/loginOut/force:.* force
attr Zendure_MQTT_76573 room Zendure_MQTT
attr Zendure_MQTT_76573 stateFormat &nbsp

setstate Zendure_MQTT_76573 &nbsp
setstate Zendure_MQTT_76573 2025-04-16 10:15:20 IODev Zendure_MQTT
setstate Zendure_MQTT_76573 2025-04-16 10:22:01 force <gelöscht fürs Forum>

Ein "GET showData Energie" führt zu stored data:
DeviceId: <xxx>
{
          'data' => {},
          'code' => 401,
          'msg' => 'Die Anfrage ist nicht autorisiert',
          'success' => 0
        };

Auch funktionierende Lösungen kann man hinterfragen.

Shadow3561


rabehd

Auch funktionierende Lösungen kann man hinterfragen.

RalfP

Hallo rabehd,

bitte nicht 76_Zendure, hier aus dem Forum, mit dem ZendureUtils (MQTT) gleichzeitig mit identischen Logindaten verwenden. Die Beiden nehmen sich jeweils die Credenciales weg, wenn du beide mit den selben Logindaten verwendest. Für's Testen evtl. einen 3. Account anlegen bei Zendure. Geht über Gerätefreigabe, man benötigt unterschiedliche Email Adressen.

PS: ZendureUtils habe ich noch nicht mit den Statistikwerten erweitert, da bitte ich noch um etwas Geduld. Dann wäre 76_Zendure nicht mehr notwendig.

Grüße
Ralf

RalfP


'productType' => 17,
Alles klar, damit kann ich etwas anfangen. Könnt ihr mal noch kurz mitteilen, welche Werte wirklich einen Wert beinhalten, der auch in der App ersichtlich ist?

Für den HUB 2000 ('productType' => 8 ) habe ich nur folgendes, was relevant wäre:
'solar' => '435.17',
'home' => '82.59',
'batteryInput' => '0',
'batteryOutput' => '335.57',

Wird bei euch mehr angezeigt?

rabehd

Ich habe es jetzt mit einem neuen Account auf einer anderen Instanz versucht, nur 76_Zendure.
"Electric data successful loaded!"


'Die Anfrage ist nicht autorisiert'
wenn ich get showdate Energy (oder andere Optionen) ausführe.
Irgendwelche Readings mit energy erscheinen nicht.
Auch funktionierende Lösungen kann man hinterfragen.

RalfP

Hast du einen neuen aktualisierten Token (MQTT_accessToken) erhalten, wenn du SET Login machst?

Du darfst auch nicht zwischendurch mit deiner App und dem gleichen Login etwas nachschauen, das würde die Credenciales wieder zurücknehmen.


rabehd

Zitat von: RalfP am 16 April 2025, 12:12:34Hast du einen neuen aktualisierten Token (MQTT_accessToken) erhalten, wenn du SET Login machst?
ja

Zitat von: RalfP am 16 April 2025, 12:12:34Du darfst auch nicht zwischendurch mit deiner App und dem gleichen Login etwas nachschauen,
Der Account ist nur für diesen Test. In der App ist der erste, in FHEM-Prod der zweite.

Auch funktionierende Lösungen kann man hinterfragen.

RalfP

verbose = 5

Im Log lasse ich für jeden https Aufruf (token, deviceList, energy , electric) die Adresse, wie auch den Header,Body und die Antwort loggen. Sieht ungefähr so aus:
Zendure: <Request> URL:https://app.zendure.tech/v2.... send:
## Header ############

## Body ##############

...

Zendure: <parseRequestAnswer> URL:https://app.zendure.tech/v2... returned data:
## HTTP-Statuscode ###
200
## Data ##############

## Header ############
HTTP/1.1 200 OK

Evtl. ist da etwas zu erkennen. Bitte aber nicht das Log hier senden, höchstens Teile daraus, da Daten enthalten sein könnten.