OK, hab ich korrigiert.
Läuft jetzt. Hatte versehentlich auch ein Semikolon gelöscht.
Danke!
Du besitzt noch keinen Account? Dann registriere dich einmalig und völlig kostenlos und nutze unser breites Spektrum an Themengebieten, Features und tollen Möglichkeiten. Als registriertes Mitglied auf unserer Seite kannst du alle Funktionen nutzen um aktiv am Community-Leben teilnehmen. Schreibe Beiträge, eröffne Themen, lade deine Bilder hoch, stelle deine Videos online, unterhalte dich mit anderen Mitgliedern und helfe uns unser Projekt stetig zu verbessern und gemeinsam zu wachsen! Also worauf wartest du noch? Werde noch heute ein Teil von uns!
OK, hab ich korrigiert.
Läuft jetzt. Hatte versehentlich auch ein Semikolon gelöscht.
Danke!
Ich nutze die Version 2.0, aber das hier nimmt den Button nicht.....
Was habe ich falsch gemacht?
//---Config---
let debug = false; // Switch it on and press the Blu device Button, to get the MacID of your Blu Device
let MacID1 = "3c:2e:f5:my:device:01"; //Blu Device MacID --> change it DW
let MacID2 = "3c:2e:f5:my:device:02"; //Blu Device MacID --> change it Button
//---Config---
//Filter Events
function Filter(event){
try{
let get= event.info;
if(debug && get && get.data && get.data.mac) print('\nBlu Device Triggered, MacID: -> ', get.data.mac,'\n'); // Debug output MacID
if(debug) print('|-----Full_Event_Objekt_Beginning-------|\n',event,'\n|-----Full_Event_Objekt_End-------|'); //Debug Output of full Event Objekt
if(get && get.data && get.data.gen === 'GBLE'){ //Filter for valid States and Blu Devices
//Do Stuff, Aktions ---> change it
if(get.data.mac === MacID1 && get.data.device_state === 'open') Shelly.call('Http.get',{url: 'http://192.168.xxx.xxx/do1',timeout: 5});
if(get.data.mac === MacID1 && get.data.device_state === 'closed') Shelly.call('Http.get',{url: 'http://192.168.xxx.xxx/do2',timeout: 5});
if(get.data.mac === MacID2 && get.data.buttonInput === 'single_push') Shelly.call('Http.get',{url: 'http://192.168.xxx.xxx/do3',timeout: 5});
}
}catch(e){print(e);}
}
//Add EventHandler
Shelly.addEventHandler(Filter);
Alles anzeigen
Moin,
Hmmm, soweit so gut, und nochmals 1000 Dank für Deine Mühe, aber mit diesen Zeilen als Ergänzung funktioniert der Button noch nicht...:
let MacID2 = "aa:bb:cc:dd:ee:ff"; //Blu Device MacID --> Button1
...
if(get.data.mac === MacID2 && get.data.deviceState === 'single_push') Shelly.call('Http.get',{url: 'http://192.168.xxx.xxx/do/my/stuff',timeout: 5});
Moin,
Vielen Dank für die ausführliche Erklärung. Hab das Prinzip auch soweit verstanden.
Zusammen mit den Zeilen aus Deinem Post #19 läuft das, vielleicht sogar einen Hauch schneller,
macht aber in der Praxis nicht wirklich Unterschied.
Eine Frage noch: In diesen Zeilen von Dir ( aus Post 19 )
Shelly BLU Door/Window & URL versenden
habe ich versucht, zusätzlich einen BluButton mit zu integrieren. Nach Zeile 3 habe ich eine eingefügt:
let MacID2 = "aa:bb:cc:dd:ee:ff"; //Blu Device MacID --> Button1
und bei den Events ( Do Stuff ) folgendes hinzu gefügt:
if(get.data.mac === MacID2 && get.data.deviceState === 'single_push') Shelly.call('Http.get',{url: 'http://192.168.xxx.xxx/do/my/stuff',timeout: 5});
Das funktioniert allerdings nicht. Wie müsste diese Zeile korrekt aussehen? Da ist bestimmt "deviceState" falsch, oder?
Danke Dir!
Moin,
Ich schau mir das gerade an, aber ich stehe irgendwie auf dem Schlauch.
Vielleicht verstehe ich da grundsätzlich was falsch....
ZitatAngenommen, du lässt mein Blu Events Script auf deinem Shelly laufen, dann könntest du die D/W Events in einen Zweiten Script wie folgt nutzen
Wie... "in einem zweiten Script" ???
Momentan habe ich EIN Script. Da steht alles drin.
Das lasse ich laufen, und im Abschnitt //______Config______ ist ein D/W und ein Button eigetragen.
Das läuft. Mit leichten Verzögerungen, aber alles brauchbar, und läuft.
Ich verstehe nicht, wieso ich jetzt 2 Scripte brauche? Wie muss man das machen?
Sorry für meine Verwirrung. Hmm, ich geh erstmal Schnee schieben.
Danke.
... muss ich mir mal in Ruhe anschauen.
Heute nicht mehr.
Aber Danke erstmal!!!
Der lokale Befehl kann bei mir nicht funktionieren, denn die URL zum Schalten ist in meinem Fall kein Shelly,
somit habe ich keine ID dafür.
Eine Sekunde Latenz habe ich ebenfalls.
Wenn das die "normale" Latenz ist, kann ich damit leben.
Letztendlich funktioniert das ja so recht gut.
Den Schreibfehler hatte ich schon gesehen...
OPEN will trotzdem nicht - nur CLOSE.
Ist das ne Einstellung am D/W?
---- Edit: Sorry, mein Fehler. Hab ein Zeichen zuviel entfernt.
Aber trotzdem ist da ordentlich Latenz drinnen.....
Danke Dir,
Interessant.
OPEN funktioniert nicht, CLOSE funktioniert
Allerdings: Mit sehr viel Latenz. 2-3 Sekunden ca.
Darin steht:
* This script DOESN'T execute actions, only emit events.
Abgesehen davon gibt es ja für verschiedene BLE Devices auch verschiedene Scripts.
Also, anders gefragt:
Wo genau finde ich ein Script, welches die Möglichkeit bietet, http-Requests zu versenden,
wenn man den Door / Window öffnet und schliesst?
Na dann brauchst Du doch nur ein Skript auf einem Shelly laufen lassen, dass die http-Request passend zum Event versendet.
Wimre sogar direkt in der Skriptauswahl im WEB-UI als Vorlage vorhanden.
Moin,
welches Script ist denn das? Hab die selbe Konstellation, und finde da kein Script, wo ich eine URL eintragen kann.
Für den Blu Button hatte ich was gefunden, aber nicht für den Door / Window....
Danke!
OK, dann muss ich mich auch nicht wundern, wenn der returned nur 0.0 zeigt.
Gut, dann muss ich die Werte in PHP berechnen.....
Danke!
Also, es scheint so, als würde dieser 3EM wirklich nur den Hausverbrauch zeigen / messen.
Aufgrund der Fülle im Verteilerkasten ist es unmöglich, eine exakte Verkabelung zu sehen,
da müsste ich mir wirklich einen Elektriker holen, und das Haus abschalten, um die Kabelwege
genau nachzuvollziehen.
Ich gehe aber mal davon aus, dass der Elektriker die Klammern seinerzeit an die richtige Stelle gesetzt hat,
mit 100%iger Sicherheit ist das so aber nicht sichtbar.
Sollten die an der falschen Stelle gesetzt sein, ist das nicht ganz sooo schlimm, ich könnte die wirklichen
Werte dann berechnen, da ein zweiter 3EM die Werte von der Solaranlage zeigt, und ein dritter 3EM
für die Wallboxen zuständig ist.
Kann es sein, dass der 3EM die returned Wh nicht zählt und die Leistung nicht anzeigt? Gibt es diese Möglichkeit?
Oder ist es wahrscheinlicher, dass die Klammern an der falschen Stelle sitzen?
Ja, ich schaue heute mittag nochmal.
Heute ist allerdings Mistwetter, bedeckt, Regen, da macht meine alte Anlage nicht viel.
Das reicht gerade, um das Haus am Leben zu halten.
Aber, ich schau nachher mal.
Warum nicht?
Er hängt direkt hinter dem 2-Wege-Zähler
{"wifi_sta":{"connected":true,"ssid":"MeinNetzwerk","ip":"MeineIP","rssi":-74},"cloud":{"enabled":true,"connected":true},"mqtt":{"connected":false},"time":"07:13","unixtime":1677219199,"serial":623,"has_update":false,"mac":"DC4F22764675","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"relays":[{"ison":false,"has_timer":false,"timer_started":0,"timer_duration":0,"timer_remaining":0,"overpower":false,"is_valid":true,"source":"input"}],"emeters":[{"power":174.93,"pf":0.68,"current":1.12,"voltage":231.94,"is_valid":true,"total":338649.1,"total_returned":0.0},{"power":189.29,"pf":0.65,"current":1.26,"voltage":232.97,"is_valid":true,"total":456415.7,"total_returned":0.0},{"power":155.54,"pf":0.60,"current":1.12,"voltage":233.09,"is_valid":true,"total":426978.6,"total_returned":0.0}],"total_power":519.76,"emeter_n":{"current":0.00,"ixsum":1.37,"mismatch":false,"is_valid":false},"fs_mounted":true,"v_data":1,"ct_calst":0,"update":{"status":"idle","has_update":false,"new_version":"20221027-110030/v1.12.1-ga9117d3","old_version":"20221027-110030/v1.12.1-ga9117d3"},"ram_total":49928,"ram_free":27644,"fs_size":233681,"fs_free":152608,"uptime":5256}
Hm, das verstehe ich nicht.
GET /emeter/0
{
"power": 0,
"pf": 0,
"current": 0,
"voltage": 0,
"is_valid": true,
"total": 0,
"total_returned": 0
}
Alles anzeigen
Laut dieser API ( https://shelly-api-docs.shelly…/#shelly-3em-emeter-index )
zeigen die Beiden folgendes an ( oder besser gesagt zählen sie ) :
- total: Total consumed energy, Wh
- total_returned: Total returned energy, Wh
Damit sollte ich die gezählten Wh für Phase 1 bekommen - bezogen und eingespeist.
Auf GET /emeter/1 dann Phase 2 und auf GET /emeter/2 dann Phase 3.
Addiere ich die Phasen zusammen, müsste ich in der Summe die Verbrauchswerte bekommen,
die auch der normal 2-Wege-Zähler zählt - sowohl im Bezug als auch für die Einspeisung.
Aber eben genau das bekomme ich nicht, auf allen Phasen ist bei total_returned der Wert 0.0
Da stimmt doch irgendwas nicht?
Ich speise auf allen Phasen ein. Hab eine 8 kW Anlage.
Ich muss morgen mal schauen, wie die Werte im Webinterface aussehen, wenn wir denn mal genug Sonne haben.
total und total_returned sind für mein Verständnis der Bezug und die Eispeisung als Zähler. Für jede Phase.
Ergo müsste jede Phase die KWh hochzählen.
Aber vielleicht interpretiere ich total_returned ja auch falsch?
Mach mal ip-shelly/emeter/0/
Moin,
Ich habe vielleicht einen Gedankenfehler, oder irgendwas falsch verstanden…. Oder einen Knoten im Hirn:
Insgesamt 3 Stück 3EM habe ich im Einsatz. Funktionieren im Grunde gut.
Einer davon hängt seit Jahren direkt hinter dem 2-Wege Zähler.
Er müsste also die kWh Zählen, die ich aus dem Netz beziehe, als auch die KWh, die
ich durch die Solaranlage ins Netz einspeise.
Gemäß der API kann ich die Werte power total und power total_returned abfragen.
power total wird auch angezeigt, aber power total_returned gibt immer nur 0.0 raus,
das kann doch eigentlich gar nicht sein???
Hab ich einen Denkfehler? Sind das nicht die Bezugswerte / Einspeisewerte?
Oder steckt da ein Fehler drin?
Danke!