Es gibt anscheinen ein neues Feature "NetMetering" in der App. Sieht aus wie das ersehnte Saldieren...
Erreichbar ist die Funktion mit einem Knopf neben der Datumsauswahl.
Es gibt anscheinen ein neues Feature "NetMetering" in der App. Sieht aus wie das ersehnte Saldieren...
Erreichbar ist die Funktion mit einem Knopf neben der Datumsauswahl.
Da hast du natürlich recht. Auf der einen Seite die Spezifikationen, auf der anderen Seite die Realität.
Du hast den verlinkten Beitrag nicht gelesen, oder?
Doch, aber nur weil das ein 16A-Relais ist würde ich den "Leiterbähnchen" das nicht unbedingt zutrauen. Oder meinst du etwas anderes?
Hallo,
als blutiger Anfänger frage ich mich welche Variante die üblichere ist bzw. ob das Polling des lokalen ComponentStatus gegenüber dem Warten auf den StatusEvent irgendeinen Nachteil hat? Die Skriptfunktion ist (getestet) bei beiden Varianten exakt gleich, sogar der StatusEvent kommt ca. alle 5 Sekunden. Gibts da irgendwelche good-practices?
Polling-Variante:
// Globale Variablen
let polling_time = 5000 //Wie oft soll die Leistung aktualisiert werden?
let url_on = 'http://192.168.8.51/rpc/switch.set?id=100&on=true'
let url_off = 'http://192.168.8.51/rpc/switch.set?id=100&on=false'
let flag_static = false
// Funktion zum Ermitteln der aktuellen Gesamtleistung des lokalen PROEM3
function GetPwr()
{
let em3json = Shelly.getComponentStatus('em:0');
let pwr = JSON.stringify(em3json.total_act_power);
return pwr;
}
// Funktion zum Schalten der Meldeleuchte am EM50
function SendCmd(state)
{
if (state == true)
{
Shelly.call("HTTP.GET",{url: url_on}, null);
print('ML eingeschaltet: ' + url_on);
}
else if (state == false)
{
Shelly.call("HTTP.GET",{url: url_off}, null);
print('ML ausgeschaltet: ' + url_off);
}
}
// Hauptschleife
function main()
{
let pwr = GetPwr();
let flag = false
print('Prüfe Leistung: ' + Math.round(pwr))
if (pwr < 0)
{flag = true;}
else if (pwr > 0)
{flag = false;}
if (flag != flag_static)
{
flag_static = flag;
print('Leistung=' + Math.round(pwr) + ' Neuer Zustand: ' + flag);
SendCmd(flag);
}
}
// TIMER
Timer.set(polling_time, true, main);
Alles anzeigen
StatusEvent-Variante:
// Globale Variablen
let url_on = 'http://192.168.8.51/rpc/switch.set?id=100&on=true'
let url_off = 'http://192.168.8.51/rpc/switch.set?id=100&on=false'
let flag_static = false
// Funktion zum Schalten der Meldeleuchte am EM50
function SendCmd(state)
{
if (state == true)
{
Shelly.call("HTTP.GET",{url: url_on}, null);
print('ML eingeschaltet: ' + url_on);
}
else if (state == false)
{
Shelly.call("HTTP.GET",{url: url_off}, null);
print('ML ausgeschaltet: ' + url_off);
}
}
// Hauptfunktion, wird aufgerufen wenn ein StatusEvent ausgelöst wird
function StatusEvent(event)
{
let pwr
let flag
if (event.name === "em")
{
pwr = event.delta.total_act_power;
print('Aktuelle Leistung: ' + Math.round(pwr))
if (pwr < 0)
{flag = true;}
else if (pwr > 0)
{flag = false;}
if (flag != flag_static)
{
flag_static = flag;
print('Leistung=' + Math.round(pwr) + ' Neuer Zustand: ' + flag);
SendCmd(flag);
}
}
}
// Registrierung des StatusHandlers
Shelly.addStatusHandler(StatusEvent);
Alles anzeigen
Laut https://www.shelly.com/de-at/products…e-pb6t6q4rrfmct leider nur 2A zulässigen Schaltstrom
Hallo zusammen,
falls jemand ebenfalls verzweifelt danach sucht findet er vielleicht diesen Thread:
überall steht, das dieses Switch-Addon lediglich mit dem ProEM3 kompatibel ist. Nachdem der ProEM50 allerdings ebenfalls solche kleinen Löcher für die Miniatur-Stiftleiste hat habe ich es ausprobiert und er funktioniert ebenfalls am ProEM50.
Hallo zusammen,
ich möchte eine einfache Website mit einem Shelly zur Verfügung stellen welche die Gesamtleistung eines ProEM3 sowie die Leistung eines ProEm50 darstellt. Das script soll auf dem ProEM3 laufen.
Bis jetzt habe ich es mit den Informationen hier im Forum geschafft, wenigstens die Gesamtleistung des ProEM3 darzustellen:
function GetPwr()
{
let EMpower = Shelly.getComponentStatus("em:0");
let Power = JSON.stringify(EMpower.total_act_power);
Power = Math.round(Power)
return Power;
}
function endpoint_webserver(request,response) {
print('Endpoint Triggered!');
response.code = 200;
response.headers = [["Content-Type", "text/html"]];
response.body = htmlBody;
response.send();
}
function main_func()
{
let pwr
let newEndpoint
pwr = GetPwr();
newEndpoint = HTTPServer.registerEndpoint, localIP = Shelly.getComponentStatus('wifi').sta_ip, htmlBody = '<!DOCTYPE html>' +
'<html>' +
'<head>' +
'<title>WW6-Strom</title>' +
'<script>setTimeout(function(){window.location.reload(1);}, 5000);</script>' +
'<body>' +
'<h1>Test</h1>' +
'<font face="Consolas" size=28>Gesamtleistung: ' + pwr + ' Watt<br>' +
'</body>' +
'</html>';
print('Endpoint_Link: http://' + localIP + newEndpoint('WW6_EM3', endpoint_webserver));
}
Timer.set(5000, true, main_func);
Alles anzeigen
Nun möchte ich vom EM50 ebenfalls die Leistung anzeigen, allerdings ist das ja nicht der Shelly auf dem das läuft. Wie bekomme ich remote dieselbe JSON aus der ich dann die Leistung schnappen kann?