hm. schade. jetzt bekomm ich den normalen newsletter... und nicht themenbezogen. obwohl ich explizit nur lora angeklickt habe.
Für den rest brauch ich nicht überzeugt werden
sobald ich einen Anwendungsfall habe, werde ich kaufen
Beiträge von subbamaggus
VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
-
-
Den Knopf hatte ich nicht gesehen. Da die Themen weiter unten mich aktuell nicht so interessiert haben.
Auf shelly.com hatte ich nicht mal die News gefunden. Musste hier über den Link gehen.
hab mich angemeldet
-
So es ist März.
GIbt es die ersten zu kaufen?
-
So es ist Februar
Gibt es schon ne grobe Idee für den Zeitplan?wg LoRa... ich könnte mir gut vorstellen ein Shelly eigenes Gateway würde sich doch bestimmt toll in die Infrastruktur (App usw.) einbringen. Dann könnte das die Privacy super übernehmen. Erinnert dann zwar ein bisschen an Homematic, aber wenigstens nicht proprietär. Also mir würde das gefallen.
-
LoRaWAN ist ja für die kleinen ESPs schon als Lib verfügbar.
Integration ist auch gar nicht so wild. Grundsätzlich braucht man auch kein Gateway (wenn schon ein öffentliches vorhanden ist).
Aber ehrlich gesagt würde ich dann schon lieber das "eigene" nehmen. Eine gewisse sicherheit wird dann sicherlich auch mitkommen...Was cool wäre, wenn man nicht für jedes Endgerät einen eigenen Receiver braucht. Also quasi ein "privates" Gateway.
Bin ja ganz aufgeregt
-
Hi,
hier wäre noch was interessantes zu dem Thema:ThemaShelly und LoRa
Hi zusammen,
ich habe am Wochenende bisschen mit LoRa rumgespielt. Die Reichweiten sind ja echt beeindruckend.
Der Chip selbst ist ja auch nicht wirklich gross.
Gibt es seitens Shelly die Idee eine Serie mit LoRa auszustatten?
Anwendungsfälle: Keller/Dachboden/Garagentor/Zysternenpumpen also alles was meistens zu weit weg vom WLAN ist. Und es ist mir bisher in jedem Haus ein Fall unter die Finger gekommen.subbamaggus6. Januar 2025 um 08:30 -
sau gut!
gebastelt bekomm ich da was, aber was Shelly liefert ist echt toll.
Dann warte ich darauf. Klasse!
Leider steht aber noch nicht da was die Kommunikation macht.
Also > LoRaWAN oder LoRa (eigenes Gateway)
Vermutlich wird es beides können... wäre aber wichtig für die Integration.
-
Hi zusammen,
ich habe am Wochenende bisschen mit LoRa rumgespielt. Die Reichweiten sind ja echt beeindruckend.
Der Chip selbst ist ja auch nicht wirklich gross.
Gibt es seitens Shelly die Idee eine Serie mit LoRa auszustatten?
Anwendungsfälle: Keller/Dachboden/Garagentor/Zysternenpumpen also alles was meistens zu weit weg vom WLAN ist. Und es ist mir bisher in jedem Haus ein Fall unter die Finger gekommen.
-
Hi,
leider habe ich auch keine Antwort. Aber eine ähnliche Frage.
Meine Recherchen haben mich auf Tasmota Mesh aufmerksam gemacht. Hier kommunizieren die einzelnen Komponenten via ESPNOW.
Also quasi ein Gateway was mit dem WLAN verbunden ist und die anderen direkt per ESPNOW.
Die 80m wären damit auch nicht wirklich machbar, vermutlich...Grob passiert das alles per MQTT intern. Also sollte es für das oberste Gerät gut machbar sein.
mal gespannt ob es Ideen gibt
gruss
maggus -
Mal ein paar Wochen später:
das System läuft jetzt super stabil. Keine Abbrüche mehr.
VIELEN DANK für die Hilfe und Tips!
-
Hi,
ich wollte nur mal so was loswerden.
Schöne dass es hier weiter geht!
Mein Shortcut in der Adressleiste: SF
damit ändert sich bei mir einfach nix
Einfach mal so super off topic
Viele Grüsse
-
Hi,
sorry, ich war am Wochenende unterwegs.
Nein leider noch nicht. Ich wollte es erstmal zum Laufen bringen.Die Ursache würde ich demnächst angehen. Da die Kiste nicht bei mir läuft, wollte ich den Code dort klein halten. Ich müsste es in den lokalen Speicher schreiben. Das wäre normalerweise ja nicht notwendig.
Den Teil versuche ich bei meinem... ich suche noch nach einer Anwendung für mich
Evtl hol ich mir demnächst auch ein bisschen PV. dann wird das was.Für die Mitleser: Better Safe than Sorry. ist hier der Ansatz. Also lieber ein Try/catch mehr. Ist mein TakeAway
-
Hi,
Zwischenstand heute:
Alles läuft.
Dein Vorschlag hab ich verstanden.
Allerdings gefällt es mir nicht so.
Die Typprüfung ist hier nicht ganz so safe (deswegen war ich ja echt froh über deinen Tip bei dem | 0;)Da Javascript hier ja echt sehr offen ist, finde ich das andere besser zu lesen. auch wenn länger.
Kompromiss:?!
-
so habe gerade die Möglichkeit gehabt ein Update einzuspielen.
jetzt sind 2 Ebenen mit Try/Catch versehen.
Zusätzlich alle "undefined" abgefangen.
Aufgeräumt habe ich auch ein wenig. (Sinnlosen "null" entfernt)
Ebenso das Schalten der Stages bisschen besser lesbar gemacht.
Das Abfragen des aktuellen Tages in einen eigenen Timer gepackt und nur einmal am Tag abgefragt.
Code
Alles anzeigenlet powerPerLine = 2000; // Do not change code below this line! let powerAverage = powerPerLine + 1234; let current = powerPerLine + 1234; let averageValues = 1; let myState = 0; let myunixdayint = 0; let mycount = 0; // will be different later: let maxThreshold = 0; let minThreshold = -1 * powerPerLine; let dataPollTimer = null; let unixdayPollTimer = null; function startMonitor() { dataPollTimer = Timer.set(10 * 1000, true, function () { try { getData(); powerAverage = (powerAverage * averageValues + current) / (averageValues + 1); print("powerAverage " + powerAverage); // only use every third calls result mycount = mycount + 1; if(mycount < 3) { return; } mycount = 0; if(powerAverage > maxThreshold) { myState = myState - 1; } if(powerAverage < minThreshold) { myState = myState + 1; } // make sure that only allowed states are used if(myState < 0) myState = 0; if(myState > 3) myState = 3; print("myState " + myState); // modulo 3 for day cycling of switches let switch1 = myunixdayint % 3; let switch2 = (myunixdayint + 1) % 3; let switch3 = (myunixdayint + 2) % 3; value1 = false; if(myState > 0) { value1 = true; } value2 = false; if(myState > 1) { value2 = true; } value3 = false; if(myState > 2) { value3 = true; } print("value1 " + value1 + ", value2 " + value2 + ", value3 " + value3); Shelly.call("Switch.Set", {"id": switch1, "on": value1}); Shelly.call("Switch.Set", {"id": switch2, "on": value2}); Shelly.call("Switch.Set", {"id": switch3, "on": value3}); } catch(exception) { print("exception: ", JSON.stringify(exception)); } } ); } function getData() { Shelly.call("HTTP.GET", { url: 'http://192.168.178.119/cm?cmnd=status%2010' }, function (res, error_code, error_msg, ud) { try { // if call is not successful, this should prevent the outputs from beeing turned on current = powerPerLine + 1234; if (error_code !== 0) { print("error " + JSON.stringify(error_code)); } else if (res.code === 200) { let st = JSON.parse(res.body); if(undefined !== st.StatusSNS.SML.z16_7_0) { current = st.StatusSNS.SML.z16_7_0; print("current " + current); } }; } catch(exception) { print("exception: ", JSON.stringify(exception)); } } ); }; function startDatePoll() { // get date is once per day enough unixdayPollTimer = Timer.set(8640 * 1000, true, function () { try { getDate(); } catch(exception) { print("exception: ", JSON.stringify(exception)); } } ); } function getDate() { Shelly.call("Sys.GetStatus", {}, function(result, err_code, err_message, user_data) { try { if (err_code === 0) { // processing successful result myunixdayint = Math.floor(result.unixtime / 86400); print("myunixdayint " + myunixdayint); } } catch(exception) { print("exception: ", JSON.stringify(exception)); } } ); } //ensure the day is read before start getDate(); startDatePoll(); startMonitor();
Parallel habe ich noch eine Sicherung eingebaut, dass wenn das Script stribt, es wenigsten nicht im angeschalteten Zustand hängen bleibt.
Alle 10 Minuten schaltet das einfach mal ab. Das sollte nicht stören.
Code
Alles anzeigenlet turnOffTimer = null; function turnOff() { turnOffTimer = Timer.set(600 * 1000, true, function () { try { Shelly.call("Switch.Set", {"id": 1, "on": false}); Shelly.call("Switch.Set", {"id": 2, "on": false}); Shelly.call("Switch.Set", {"id": 3, "on": false}); } catch(exception) { print("exception: ", JSON.stringify(exception)); } } ); } turnOff();
-
Hi,
ich habe jetzt an jeder Stelle wo ein Objekt referenziert wird eine Abfrage ob es "defined" ist drin.
Leider hat das noch nicht gereicht.
Ich werde im nächsten Schritt das Try/Catch versuchen.
Und danach zur Sicherheit den Schedule.
Aktueller Code:
Code
Alles anzeigenlet powerPerLine = 2000; let powerAverage = powerPerLine + 1234; let current = powerPerLine + 1234; let averageValues = 1; let maxThreshold = 0; let minThreshold = 0; let myState = 0; let myunixdayint = 0; let mycount = 0; // Do not change code below this line! let alertTimer = null; function startMonitor() { alertTimer = Timer.set(10 * 1000, true, function () { getData(); getDate(); powerAverage = (powerAverage * averageValues + current) / (averageValues + 1); print("----- LOG -----"); print("powerCurrent " + JSON.stringify(current) + ", powerAverage " + JSON.stringify(powerAverage)); mycount = mycount + 1; if(mycount < 3) { return; } mycount = 0; // get this info from in input switch // Version A maxThreshold = 0; minThreshold = -1 * powerPerLine; if(powerAverage > maxThreshold) { myState = myState - 1; } if(powerAverage < minThreshold) { myState = myState + 1; } // make sure that only allowed states are used if(myState < 0) myState = 0; if(myState > 3) myState = 3; // modulo 3 for day cycling of switches let switch1 = myunixdayint % 3; let switch2 = (myunixdayint + 1) % 3; let switch3 = (myunixdayint + 2) % 3; print("minThreshold " + JSON.stringify(minThreshold) + ", maxThreshold " + JSON.stringify(maxThreshold)); print("myState " + JSON.stringify(myState) + ", myunixdayint " + JSON.stringify(myunixdayint)); // make it more generic if(myState === 0) { Shelly.call("Switch.Set", {"id": switch1, "on": false}); Shelly.call("Switch.Set", {"id": switch2, "on": false}); Shelly.call("Switch.Set", {"id": switch3, "on": false}); } if(myState === 1) { Shelly.call("Switch.Set", {"id": switch1, "on": true}); Shelly.call("Switch.Set", {"id": switch2, "on": false}); Shelly.call("Switch.Set", {"id": switch3, "on": false}); } if(myState === 2) { Shelly.call("Switch.Set", {"id": switch1, "on": true}); Shelly.call("Switch.Set", {"id": switch2, "on": true}); Shelly.call("Switch.Set", {"id": switch3, "on": false}); } if(myState === 3) { Shelly.call("Switch.Set", {"id": switch1, "on": true}); Shelly.call("Switch.Set", {"id": switch2, "on": true}); Shelly.call("Switch.Set", {"id": switch3, "on": true}); } }, null ); } function getData() { Shelly.call("HTTP.GET", { url: 'http://192.168.178.119/cm?cmnd=status%2010' }, function (res, error_code, error_msg, ud) { // if call is not successful, this should prevent the outputs from beeing turned on current = powerPerLine + 1234; if (error_code !== 0) { print("error" + JSON.stringify(error_code)); // Not read response if there is an error, to avoid that the script stops } else if (res.code === 200) { let st = JSON.parse(res.body); if(undefined !== st.StatusSNS.SML.z16_7_0) { current = st.StatusSNS.SML.z16_7_0; } }; }, null ); }; function getDate() { Shelly.call("Sys.GetStatus", {}, function(result, err_code, err_message, user_data) { if (err_code === 0) { // processing successful result if(undefined !== result.unixtime) { myunixdayint = result.unixtime / 86400 | 0; } } }, null ); } startMonitor();
-
Hi,
hier mal die aktuelle Rückmeldung zu meinem Problem:
Soweit sieht es aus, dass es stabil läuft.
Also vermutlich ein zugriff auf ein undefined object.Auch wenn da super easy ist. Mir war es nicht klar, dass es das Script stoppt.
Was dazu gelernt
DANKE!!
-
so hab jetzt mal eine Änderung eingebaut.
(WiFi ist wieder verbunden und auch mit meiner Cloud verknüpft, dh ich kann von überall schauen. Leider ohne Log)
Welche Logging Möglichkeiten gibt es noch ausser die direkte Console?
Im nächsten Schritt würde den try/catch mit rein machen.und dann (quasi als Rettungsnetz, den Timer)
-
Hi,
der bitshake/hichi/volkszähler soll einzig den SmartMeter anzapfen und die aktuellen Werte ausspucken.
D1 Mini ESP ist es dann wohl geworden. Dazu ein 3D Printed Gehäuse mit IR Diode und LeseDiode. (aber vorkonfiguriert, ich war für den ersten Schuss zu faul)
Per URL (die hattest du ja im Skript gefunden) sieht man das alles in einem JSON. Grundlage ist eine Tasmota FW.Das Shelly kann mit den Werten und recht simpel dann ermitteln ob genug Strom da ist um einen 3 Phasen Wasserspeicher zu befeuern. (in eben 3 Stufen)
Damit eben nicht immer der gleiche Heizstab als erstes anspringt, habe ich das Modulo genommen.
Berry Programm? Meinst du auf einem Raspberry? das ist schon zu "gross".
Eine SD Karte die kaputt gehen kann... stromverbrauch... baugrösse... updates... so einiges.
Ich hatte vom Shelly Scripting gelesen und dachte, so eine funktionalität lässt sich doch da abbilden.
Und ja es geht... wenn auch (noch nicht fertig)
die Inputs wollte ich verwenden für mehr Flexibilität.
3 Schaltzustände wollte ich abbilden.
Wie vorher, Wärmepumpe gibt vor, ob es angeht oder nicht.
Bei 0-2000 W Überschuss soll es hochregeln
bei -2000 - 0 W Überschuss soll es hochregeln
und das Ganze per Umschalter am Shelly. (aber das war wie gesagt Zukunftsmusik und ist für den aktuellen Fall nicht wichtig.)
-
werde ich mir alles reinziehen!
und berichten. vermutlich packe ich es morgen!
wie gesagt, das auslesen der Inputs hat zu einem Fehler geführt. Vermutlich habe ich zu tief genestet....
Vielen Dank!!! -
Grässlicher Code, sorry.
kann ich verstehen wenn das nicht gefällt.
Als Hintergrund. Bin selbst Software Engineer. Und das "Framework" Shelly hat mich doch gefordert. Wieviel geht und wieviel eben nicht.
Bin dann mit Codeschnipseln gestartet, da ich es anders nicht zum Laufen bekommen habe.
den alert Timer zb. habe ich nicht verstanden, aber hier im Forum als "state of the art" gefunden.
Echtes "komplettes" JavaScript ist ja nicht zu machen. Von daher musste ich mich mit dem zufrieden geben.
Wenn ich hier Tips bekomme, wende ich die selbstverständlich liebend gerne an.
ich hatte hier mal angefangen:
ThemaScripting Question with Shelly.call()
If I run the following script, everything works fine. (basically pulled from https://github.com/shelly-tools/s…_consumption.js)
But if I enable the switching of the device(Shelly.call), it will not respond anymore.
I found a couple of advices, but I guess I don't interpret them correctly.
link
i am running the code on a "pro 3" with Version: 0.10.2-beta2
(Quelltext, 41 Zeilen)
can someone point me to where I should have a look?subbamaggus18. Oktober 2023 um 20:41 Aber es kam nicht viel Rückmeldung ...