Wer die Spannung seines Akkus in Volt mit minimalem Aufwand sehen will und eine Shelly Komponente mit Shelly Script Funktion besitzt, ist hier richtig.
Mein Shelly Plus Plug S hat die IP-Adresse 192.168.178.201
Mit einem Browser komme ich mit
http://192.168.178.201/#/scripts
in das Menu der Scripts des Plugs..
Mit "create" mache ich ein neues Script: GetSecret.
Mit diesem Script hole ich mir den Appkey und das Secret, um mich am richtigen Zendure MQTT Server anzumelden. Zur Vereinfachung versucht das Script sowohl beim globalen Server als auch bein EU Server sein Glueck mit dem Namen deines Accounts im Profil der Zendure App, also typischerweise deine Mailadresse und dazu die Seriennummer deines Hubs/Hyper/... aus der App.
// =============Anfang Secret=========
Shelly.call("HTTP.request", {
method: "POST",
url: "https://app.zendure.tech/v2/developer/api/apply",
body: JSON.stringify({"snNumber": "HO1xxxxyyy04711",
"account": "mailadresse aus der ZendureApp"}),
headers: {"Content-Type": "application/json"}
},
function (res) {
print("Antwort von Zendure:", res.body);
});
Shelly.call("HTTP.request", {
method: "POST",
url: "https://app.zendure.tech/eu/developer/api/apply",
body: JSON.stringify({"snNumber": "HO1xxxxyyy04711",
"account": "mailadresse aus der ZendureApp"}),
headers: {"Content-Type": "application/json"}
},
function (res) {
print("Antwort von Zendure:", res.body);
});
// richtige Antwort von Zendure: //{"code":200,"success":true,"data":
// {"appKey":"myAPPKEY","secret":"mySECRET",
// "mqttUrl":"myMQTTURL","port":1883},"msg":"Operation successful"}
// script nach den beiden messages stoppen
// ========Ende Secret=====
Jetzt aktiviere ich MQTT in Shelly mit korrektem appkey, secret und mqtturl:
Der Plug in der Shelly App: ( browser geht auch)
Ohne MQTT:

Vor dem Save:

Nach dem
Save und reboot:

Jetzt mache ich das eigentliche Script, AkkuVolt, im Browser:
http://192.168.178.201/#/scripts
Create AkkuVolt:
// ========== Anfang AkkuVolt=======
print("VORSICHT! DIESES SCRIPT SCHAUT NUR ZU, WENN DU DEINEN AKKU KAPUTT MACHST!");
// INITIALS
let Zen=0; //akku unknown
let OldZen=Zen; // zen changing?
let bat=9; //akku workmode unknown
let modus="OPEN "; //akku workmode unknown
let maxV="999"; // max volt unknown
let minV="999"; // min volt unknown
let OldMinV=minV; // MinV changing?
let data=0; // raw mqtt data
let maxT=0; // temperature unknown
function Druck()
{
print(modus+Zen+"% "+minV+"-"+maxV+"V "+maxT+"°");
}
// ================MQTT Start================
MQTT.subscribe(" myAPPKEY/#",
function (topic,msg)
{
data = JSON.parse(msg);
if (data.packData!=undefined)
{
if (data.packData[0].minVol!=undefined)
{
if (data.packData[0].maxVol!=undefined)
{
maxV=data.packData[0].maxVol;
}
if (minV!=data.packData[0].minVol)
{
OldMinV=minV;
minV=data.packData[0].minVol;
Druck();
}
}
if (data.packData[0].maxTemp!=undefined)
{
maxT=data.packData[0].maxTemp-273;
}
}
// ============data packstate=====================
if (data.packState!=undefined)
{
if (bat!=data.packState)
{
// =========data packstate 2===================
bat=data.packState;
switch (bat)
{
case 0: modus = "STBY "; break;
case 1: modus = "LOAD "; break;
case 2: modus = "UNLD "; break;
}
Druck();
// =============================
} //end if bat
} // end if data.packState
// =============data electric====================
if (data.electricLevel!=undefined)
{
if (Zen!=data.electricLevel)
{
OldZen=Zen;
Zen=data.electricLevel;
Druck();
} // end if Zen
} // end if data electricLevel
} // end function
); // end MQTT
// ================MQTT End===============
// ======= Ende AkkuVolt=====
Das Script starten.
Die Console muss eine ähnliche Meldung zeigen, sonst ist etwas falsch:
OPEN 19% 999-999V 0° 11:03:00
- Der Status des Akkus, die minimale und maximale Spannung der Akkuzellen und die Temperatur des Akkus wurden per MQTT noch nicht mitgeteilt. Zendure schätzt: der Akku könnte 19% voll sein.
UNLD 19% 324-324V 18.1° 11:15:09
- Der Akku entlädt, ist bei 19% voll laut Schätzung, die minimale Zellspannung ist 3,24 Volt, die maximale ist 3,24 Volt, der Akku ist 18 Grad warm
UNLD 18% 317-318V 19.1° 11:17:27
UNLD 17% 317-318V 19.1° 11:19:28
UNLD 16% 317-318V 19.1° 11:23:26
UNLD 15% 317-318V 19.1° 11:28:40
UNLD 14% 316-317V 20.1° 12:03:06
...
VORSICHT! DIESES SCRIPT SCHAUT NUR ZU, WENN DU DEINEN AKKU KAPUTT MACHST!