Beiträge von User-64546
-
-
-
-
-
Ich habe auf diesem Bild (von thgoebel) Spannungen eingetragen.
liege ich da richtig,kann es ja nicht mehr messen.
-
-
-
Hallo zusammen,
mir ist heute mein Shelly PRO 3 in Rauch aufgegangen.Kennt ihr dieses Problem ? wie zuverlässig sind die ?
immerhin sind sie nicht billig.
Die eingebaute 1A Sicherung ist noch ganz, ein Schaltregler mit ein paar Spulen (L) sind explodiert.
Anbei ein Paar Bilder. -
-
NEIN, es ist ein roter PRO 1 PM
Die hier veröffentliche Schemata entspricht nicht dem Innenleben des Shelly.
Logisch mag es zwar stimmen, da sie STROM-Messung deaktiviert wird, wenn der Kontakt offen ist.
Im 2. Schemata, habe ich es mal korrigiert und in ROT meinen Änderung hinzugefügt.
falsche Darstellung zur Schaltung.
Pro-1PM-V1-internal-schematics.png
Layout + Umbau
Wenn nun der (Eingang bei 2) ist und der permanente (Ausgang die 1) ist, der schaltbare (Ausgang die 0) ist ,
dann kann immer SPANNUNG und STROM von 2 zu 1 gemessen werden wenn das Relais geschaltet ist.
Bei Überstrom kann dann ein Teil (Ausgang 0) ausgeschaltet werden. -
Was ist nur der Shelly Pro 1PM, nur ein Schaltaktor, oder auch, und Hauptsächlich ein Messsensor?
Ja er misst auch, Spannung und Frequenz immer dann wenn am Eingang eine Spannung anliegt,
Strom leider nur wenn auch in der Software der Kontakt geschlossen ist. Ich habe meinen PRO 1 EM umgebaut, sosdss der Strom Messzweig immer Strom detektieren könnte. Aber dies macht er nur wenn der Schalter auch in der Software ON ist. Schade. Strom 0 wenn Schalter offen ist, obwohl über den Sensor (R) fließt.
-
Wenn ich die Gesamtleistung brauche, muß ich "any" wählen...
Hi , soweit ich das verstanden haben bedeutet "any", dass die Bedingung bei ALEEN Phasen erreicht werden muss bevor die Bedingung stimmt.
Dein BKW speist ja nur auf einer Phase ein, somit stimmt es nicht.
Ohne Skript zu benutzen kannst du die Leistung die du gerade einspeist oder verbrauchst nicht abfragen.let em = Shelly.getComponentStatus("em", 0);
if (typeof em.total_act_power !== 'undefined')
{
let power = em.total_act_power;
}
-
-
-
-
-
Müsst ihr für euch noch anpassen. Macht's kann enthalten. Default Skript ist nicht von mir und rechnet verbrauch zusammen.
Ich steuerte damit einen Shelly pro 3 (192.168.1.157) mit 3 Ausgängen.
-
Code
Alles anzeigenlet REMOTE = { ip: '192.168.1.157', relay1: '0', relay2: '1', relay3: '2' } let energieReturnWs = 0.0; let energieKonsumWs = 0.0; let CounterSaldieren = 0; // Timer skalieren let CounterRelais = 0; // vielfaches von Timer 1 let CounterSave = 0; // save Timer Leistung let CounterRefrech = 1 let STUFE = 1; let Multiplikator = 1; let STUFENWECHSEL = 0; let Senden = 1; let LAST = 246; let AktPO = 0; let Aktuell = 0; let DivLastKonsom = 2; let DivLastReturn = 3; print('START'); Shelly.call( "KVS.Get", { "key": "EnergyReturned", }, function callback(result, error_code, error_message, userdata) { if (error_code === 0) { energieReturnWs = Number(result.value); print("Loaded returned energy: ", energieReturnWs / 3600000, " kWh"); } } ); Shelly.call( "KVS.Get", { "key": "EnergyConsumed", }, function callback(result, error_code, error_message, userdata) { if (error_code === 0) { energieKonsumWs = Number(result.value); print("Loaded consumed energy: ", energieKonsumWs / 3600000, " kWh"); } } ); function timerHandler(user_data) { let em = Shelly.getComponentStatus("em", 0); //print (em) if (typeof em.total_act_power !== 'undefined') { let power = em.total_act_power; //print (power) if (power >= 0) { energieKonsumWs = energieKonsumWs + power * 0.5; } else { energieReturnWs = energieReturnWs - power * 0.5; } CounterSave = CounterSave + 1; CounterSaldieren = CounterSaldieren + 1; CounterRefrech = CounterRefrech + 1; //print("REAL"); //print("AKTPO =", AktPO); //print("CounterRelais =", CounterRelais); //print("CounterSaldieren =", CounterSaldieren); AktPO = (AktPO + power); //print("POWER;AKTUELL-MITTEL;SUMME-POWER", power,";",(AktPO / (CounterSaldieren + 1)),";",AktPO); if (CounterSaldieren == 1) { // Bereitstelung der Stufe Multiplikator = (Multiplikator * -1); Shelly.call("Sys.SetConfig", {config: {location: {lon: STUFE * Multiplikator }}}); } if (CounterSaldieren == 2) { // Anzeige NAME Shelly.call("Sys.SetConfig", {config: {device: {name: Aktuell.toFixed(0)+"W ("+STUFE+") : " + Shelly.getComponentStatus("sys").time + " : +"+(energieKonsumWs / 3600000).toFixed(1)+" kWh -"+(energieReturnWs / 3600000).toFixed(2)+" kWh" }}}); } if (CounterSaldieren > 19) { print("CounterSaldieren"); CounterRelais = CounterRelais + 1; Aktuell = (AktPO / (CounterSaldieren + 1)); AktPO = Aktuell; CounterSaldieren = 0; //print("POWER =", Aktuell); //print("STUFE =", STUFE); //print("LAST =", LAST); if (CounterRelais > 1) { //print("CounterRelais"); //print("AKTUELL =", Aktuell); //print("CounterRelais =", CounterRelais); CounterRelais = 0; if (Aktuell < ((LAST + LAST - (LAST / DivLastReturn)) * -1)) { //Accu Lader viel mehr -500W STUFE = STUFE + 2; //print("STUFE + 2 ", STUFE, (LAST * 2) ); } else if (Aktuell < ((LAST - (LAST / DivLastReturn)) * -1)) { //Accu Lader mehr -225W STUFE = STUFE + 1; //print("STUFE + 1 ", STUFE, LAST ); } else if (Aktuell > (LAST + (LAST / DivLastKonsom))) { //Accu Lader viel weniger +300W STUFE = STUFE - 2; //print("STUFE - 2 ", STUFE,(LAST + (LAST / 5)) ); } else if (Aktuell > (LAST / DivLastKonsom)) { //Accu Lader weniger +50W STUFE = STUFE - 1; //print("STUFE - 1 ", STUFE,(LAST / 5) ); } if (STUFE > 4) { STUFE = 4; } else if (STUFE < 0) { STUFE = 0; } if (STUFENWECHSEL < STUFE) { Senden = 1; AktPO = Aktuell + LAST; } else if (STUFENWECHSEL > STUFE) { Senden = -1; AktPO = Aktuell - LAST; } //print("wird gesendet: ",Senden); if (Senden != 0) { CounterRefrech = 1 if (STUFE > 0) { //http ('192.168.1.157/relay/0?turn=on&timer=2000'); //RelaisON(REMOTE.ip, REMOTE.relay1, 'on', '2000'); } if (STUFE < 1) { //http ('192.168.1.157/relay/0?turn=off'); //RelaisOFF(REMOTE.ip, REMOTE.relay1, 'off'); } if (STUFE > 1) { //http ('192.168.1.157/relay/1?turn=on&timer=1500'); //RelaisON(REMOTE.ip, REMOTE.relay2, 'on', '1500'); } if (STUFE < 2) { //http ('192.168.1.157/relay/1?turn=off'); //RelaisOFF(REMOTE.ip, REMOTE.relay2, 'off'); } if (STUFE > 2) { //http ('192.168.1.157/relay/2?turn=on&timer=1000'); //RelaisON(REMOTE.ip, REMOTE.relay3, 'on', '1000'); } if (STUFE < 3) { //http ('192.168.1.157/relay/2?turn=off'); //RelaisOFF(REMOTE.ip, REMOTE.relay3, 'off'); } if (STUFE > 3) { Shelly.call("Switch.set", {'id': 100, 'on': true, toggle_after: 1000}); //direct print("Local/relay/100/on/time=1000"); } if (STUFE < 4) { Shelly.call("Switch.set", {'id': 100, 'on': false}); //direct print("Local/relay/100/off"); } Senden = 0; STUFENWECHSEL = STUFE; } } //Shelly.call( //"Sys.SetConfig", { //config: {device:{name: Aktuell.toFixed(0)+"W ("+STUFE+") : " + Shelly.getComponentStatus("sys").time + " : +"+(energieKonsumWs / 3600000).toFixed(1)+" kWh -"+(energieReturnWs / 3600000).toFixed(2)+" kWh"}}, //}, //function(result, error_code, error_message, userdata) { //print("error ", error_code, " : ", error_message); //print("result", JSON.stringify(result)); //} //); CounterRefrech if (CounterRefrech > 1990) { //print("CounterRefrech"); CounterRefrech = 1; Senden = 1; } if (CounterSave > 3599) { //print("CounterSave"); CounterSave = 0; SaveCounters(); } } } } function SetKVS(key, value) { Shelly.call( "KVS.Set", { "key": key, "value": value, }, function(result) { //print("KVS Saved, rev:", result.rev); } ); } function http (url) { print('http://' + url ); Shelly.call( "http.request", { method: "GET" , timeout: "5" , url: 'http://' + url }, function (response, error_code, error_message, ud) { //print(JSON.stringify(response)); //print(JSON.stringify(error_code)); //print(JSON.stringify(error_message)); //print(JSON.stringify(ud)); }, null ); } function SaveCounters() { SetKVS("EnergyConsumed", energieKonsumWs ); SetKVS("EnergyReturned", energieReturnWs ); } Timer.set(500, true, timerHandler, null);
-
-