nebuto Posted August 21 Posted August 21 (edited) Hello, i want to switch Output from shelly with SW-Input between 8 and 20 o Clock. I can see SW-Input in shelly App (green light). I now need a function or script like If (Time > 8 and Time < 20 ) { if (Shelly-SW-Voltage> 200) { Shelly-Output = On; } else { Shelly-Output = Off; } } Does anybody has an idea? Best regard and a nice week, Sebastian Edited August 21 by nebuto Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
tvbshelly Posted August 21 Posted August 21 You could create a schedule and use an action to switch on/off 1 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 21 Author Posted August 21 (edited) 3 hours ago, tvbshelly said: You could create a schedule and use an action to switch on/off I dont get, how to set a interval/range in a schedule, so i tried to create a action with a time interval from 8 to 20 o clock. When the input on SW is on, the Output switches to on. When the input on SW is off, the Output switches to off. So far so good. But the time interval does not work at all. So the Output is on, whenever SW is on. But it should not happen from 20 to 8 o Clock in the night. When i test it out of the time interval it still goes on. Here are my settings (in german). Edited August 21 by nebuto Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
tvbshelly Posted August 21 Posted August 21 Ich denke, ich verstehe jetzt ein wenig besser, was du machen möchtest. Kannst du eine kleine Zeichnung machen, wie der Shelly bei dir angeschlossen ist. Danke. Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
tvbshelly Posted August 21 Posted August 21 Möglicherweise funktioniert es, wenn du den SW / Button auf den Modus "Detached" einstellst. Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 21 Author Posted August 21 (edited) 1 hour ago, tvbshelly said: Möglicherweise funktioniert es, wenn du den SW / Button auf den Modus "Detached" einstellst. Ich habe mal den Button auf Detached gestellt. Dann ist bei Standardeinstellungen Einschalten allerdings die unterste Option ausgegraut. "... entsprechend dem Zustand der Schalters oder der Taste ..." Jetzt meckert er, dass der Hook meiner Action nicht zum Komponentenmodus passt. Zu meinem Problem: Ich habe einen Pool und möchte unter anderem die PH-Minus-Pumpe automatisieren. Hierfür habe ich einen W2839 als Sensorgerät. Der W2839 ermitteln den PH-Wert und den Redox-Wert (sowas wie der Chlor-Wert). Er verfügt auch noch über zwei "Steckdosen" - eine für PH und eine für Redox. Man kann Softwaremäßig Alarmwerte für PH und Redox einstellen. Werden die Werte überschritten, wird die entsprechende Steckdose mit Strom versorgt. Werden die Were wieder unterschritten, gehen die Steckdosen wieder aus. Anfangs hatte ich dann einfach meine Peristaltikpumpe für PH-Minus in die "Steckdose" de W2839 für PH gesteckt, was auch gut funktioniert hat. Die PH-Dosierung darf aber nur zwischen 8 und 20 Uhr laufen wenn die Poolpumpe läuft, weil es sonst zu einer Überdosierung kommen könnte und das ganze PH-Minus auf einmal im Pool landen könnte. Jetzt könnte ich einfach den W2839 mit einer Schaltzeituhr versehen und das Problem wäre erledigt. Leider spinnt der Redox-Wert, den ich für meine Chlor-Dosierung benötige, wenn ich den W2839 nicht die Nacht durchlaufen lasse. Das Ganze ist ein wenig eine günstige Bastellösung 😉 Daher dachte ich, ich könnte das ja ganz einfach mit einem Shelly realisieren. Von der PH-"Steckdose" des W2839 habe ich mir eine Leitung zum SW meines Shellys gelegt. Ich kann in der Shelly App jetzt sehen, ob der entsprechende Alarmwert überschritten wurde (grünes Licht) oder nicht (rote Licht). Leider verstehe ich die Shelly-Logik noch nicht so ganz. Das Problem scheint ja eigentlich nicht unmöglich zu sein, oder? Hier ist meine Skizze. Ich habe jetzt mal PE wegen der Übersicht weggelassen. Edited August 21 by nebuto Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
Dreckfresse Posted August 22 Posted August 22 (edited) Dein Signal am SW Eingang ist doch eigentlich ein Schalter und kein Taster 😉 und wenn du (wie im Anschlussschema von Dir) diesen verwendest muss er doch nicht auf detached? und verwende mal bitte direkt die WebUi vom Shelly für diese Aktion (IP im Browser öffnen) und nicht als weite Fehlerquelle die App 🧐 Edited August 22 by Dreckfresse 1 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 22 Author Posted August 22 (edited) 2 hours ago, Dreckfresse said: Dein Signal am SW Eingang ist doch eigentlich ein Schalter und kein Taster 😉 und wenn du (wie im Anschlussschema von Dir) diesen verwendest muss er doch nicht auf detached? Hab es jetzt auf Schalter gestellt - "Toggle - Act as a flip input with one state for ON and one state for OFF" und bei "Action on power on for Output (0)" hab ich "Current state of the switch". Habe jetzt zwei Actions erstellt. 1. Action geht von 8 - 20 Uhr und schaltet den Output auf On, sobald der SW "On" getogglet wird. 2. Action geht von 20 bis 8 Uhr und schaltet den Output Off, wenn SW "On" getogglet wird. Das kappt so ganz gut. Wenn ich zwischen 8 und 20 Uhr Strom an SW bekomme, geht die Steckdose an. Wenn ich zwischen 20 und 8 Uhr strom bekomme, bleibt sie aus. Wenn jetzt der Strom während der Zeit von 20 bis 8 Uhr aus irgendeinem Grund angeschaltet würde, würde er aber nicht automatisch ausgehen. Er prüft die Action ja immer nur beim Event "Input Toggle". Bei den Actions habe ich da keinen Weg gefunden. Da kann man immer nur Toggle on/off als Bedingung angeben. Ich habe mir jetzt eine Schedules geschrieben, die von 20 bis 7 uhr, jede Stunde, jede 5 Minuten die Steckdose ausstellt. Das sollte hoffentlich dafür sorgen, dass die Pumpe nachts niemals länger als 5 Minuten laufen sollte. Schon einmal vielen Dank für die Tipps. Sieht noch jemand Schwachstellen im System? Es wäre halt sehr mies, wenn die ganzen 25 Liter PH-Minus auf einmal in den Pool-Kreislauf kommen würden ^^ Edited August 22 by nebuto Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
tvbshelly Posted August 22 Posted August 22 (edited) 20 hours ago, nebuto said: Ich habe mal den Button auf Detached gestellt. Dann ist bei Standardeinstellungen Einschalten allerdings die unterste Option ausgegraut. "... entsprechend dem Zustand der Schalters oder der Taste ..." Die Idee mit dem Detached war eine andere - ich versuche das mal zu beschreiben: Wenn man SW auf Detached setzt, dann bewirkt die Betätigung des Schalters erstmal keine Aktion des Relais mehr, aber man kann trotzdem eine Aktion / Webhook / etc. auf den Schalter legen. Oft nutzt man das, um entweder damit einen anderen Shelly zu schalten oder man zweckentfremdet den SW als Rückmelde-Eingang für das, was man mit dem Shelly schaltet - schalten geht dann nur via App oder Webhook. Ich wollte die Aktion / Webhook des Schalter nutzen, um damit auf dem gleichen Shelly was zu triggern, dabei aber zuerst die Bedingung prüfen und dann das Relais nur schalten, wenn deine Bedingung zutrifft. Ggf. muss man mit dem Webhook (als Reaktion auf den Schalter) ein Skript auf dem Shelly aufrufen, was die Prüfung macht, wenn man das nicht mit einer Szene oder Aktion hinbekommt. Ich hoffe, du bekommst eine Vorstellung von meiner Idee. Leider habe ich grad keinen Plus 1 zu Hand, um es selbst auszuprobieren; daher ist es nicht so einfach, das zu beschreiben. Edited August 22 by tvbshelly 1 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 22 Author Posted August 22 (edited) Ich bekomme eine Idee was du meinst. Ich glaube ich habe das bei meinem anderen Problem-Thread auch schon einmal versucht. Hier möchte ich, dass der Shelly nicht sofort einschaltet, sondern erst mit einer Zeitverzögerung von 30 Minuten. Hier habe ich den Schalter auf Detached gesetzt und versuche das Problem der Zeitverzögerung mit Webhooks wie http://localhost/relay/0?turn=on&timer=ttt zu lösen. Das gleiche klappt anscheinend auch mit den Actioin Befehlen "Output State off" und "Flip value" Leider funktioniert das bei mir nicht so recht. Wenn der Switch auf detached steht passiert beim Toggle überhaupt nichts. Wenn er nicht auf detached steht, geht die Steckdose nach dem "Switch toggle on" für ein paar Millisekunden an und dann direkt wieder aus. Hast du vielleicht eine Idee woran das liegen kann? In dem Thread habe ich den ganzen Aufbau detaillierter beschrieben. 😉 Edited August 22 by nebuto Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
Members thgoebel Posted August 22 Members Posted August 22 Wenn man einen Shelly verzögert EINSCHALTEN möchte, muß der Webhook so aussehen: http://192.168.1.63/relay/0?turn=off&timer=6 In diesem Beispiel wird der Shelly nach 6 Sekunden dauerhaft EINGESCHALTET. Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 22 Author Posted August 22 12 minutes ago, thgoebel said: Wenn man einen Shelly verzögert EINSCHALTEN möchte, muß der Webhook so aussehen: http://192.168.1.63/relay/0?turn=off&timer=6 In diesem Beispiel wird der Shelly nach 6 Sekunden dauerhaft EINGESCHALTET. Genau so habe ich es ja versucht. Switch ist auf detached und dann bei "switch toggle on" den Webhook von dir. Leider passiert weder nach 6 Sekunden noch nach 60 Sekunden irgendwas. Auch der Webhook zum ausmachen bei "switch toggle off" klappt nicht. Es verändert den Zustand von Output nicht. http://192.168.1.63/relay/0?turn=off Statt der IP-Adresse nutze ich localhost, weil es ja auf sich selbst geht. Vielleicht hab ich irgendwas "dummes" übersehen 😮 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
Dreckfresse Posted August 22 Posted August 22 (edited) 1 hour ago, nebuto said: switch toggle on Input Aktion und dann den HTTP Request (short Push z.B) Edited August 22 by Dreckfresse 2 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 22 Author Posted August 22 (edited) Danke nochmal! Jetzt klappt es. Ich hatte keine Input-Action gewählt. Ich versuche es morgen mal, wenn die Pumpe wieder läuft, aber der Testlauf gerade hat funktioniert. Die Steckdose (also Output vom Shelly) geht nur an, wenn SW lange genug "feuert". Genau so woltle ich es. Das Problem mit der Hysterese ist damit gelöst. Vielen lieben Dank! Den anderen Thread kann man dann schließen/löschen. Edited August 22 by nebuto 1 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
tvbshelly Posted August 22 Posted August 22 3 hours ago, nebuto said: Statt der IP-Adresse nutze ich localhost, weil es ja auf sich selbst geht. Das ist korrekt so, ja Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
Members thgoebel Posted August 22 Members Posted August 22 (edited) Nebuto wrote: “Genau so habe ich es ja versucht. Switch ist auf detached und dann bei "switch toggle on" den Webhook von dir. Leider passiert weder nach 6 Sekunden noch nach 60 Sekunden irgendwas.“ Habe mich darauf bezogen: 3 hours ago, nebuto said: Hier habe ich den Schalter auf Detached gesetzt und versuche das Problem der Zeitverzögerung mit Webhooks wie http://localhost/relay/0?turn=on&timer=ttt zu lösen. Und da lese ich „turn=on“ und nicht „turn=off“. Edited August 22 by thgoebel Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 22 Author Posted August 22 47 minutes ago, thgoebel said: Und da lese ich „turn=on“ und nicht „turn=off“. Stimmt. In der Action steht aber turn=off. War ein kopierfehler 🙂 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 23 Author Posted August 23 noch eine Frage. Ich habe jetzt zwei Steckdose, die haben actions, wenn es einen Wechsel an SW gibt. Wenn sich tagsüber was verändert klappt alles. Wenn es jetzt aber zum Beispiel nachts einen Wechsel an SW gibt, dann geht am nächsten Tag ja erstmal nichts an, weil ich ja in der Zeit von 20 bis 8 uhr keine Änderungen wahrnehme. Kann man irgendwie am morgen einmal checken, ob an SW ein Signal anliegt und dann den Output anmachen? Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
tvbshelly Posted August 23 Posted August 23 (edited) Du kannst im WebUI eine Schedule für täglich 8 Uhr anlegen und mit einer Aktion verknüpfen. Alternativ kann man eine kleine Skript-Funktion schreiben, die diese Prüfung macht und den Output schaltet und diese via Schedule aufrufen: function swcheck() { print("Check ..."); } function createSchedule() { Shelly.call( "Schedule.Create", { enable: true, timespec: "0 0 8 * * *", calls: [ { method: "Script.Eval", params: { id: Shelly.getCurrentScriptId(), code: "swcheck()", }, }, ], } ); } createSchedule(); 0 0 8 * * * = um 08:00:00 jeden Tag aufrufen Edited August 23 by tvbshelly Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 23 Author Posted August 23 6 hours ago, tvbshelly said: Du kannst im WebUI eine Schedule für täglich 8 Uhr anlegen und mit einer Aktion verknüpfen. Aber wenn ich das richtig sehe, kann ich als Action nur den Output anmachen oder ausmachen. Ich müsste aber eigentlich so was wie ein "wenn" haben um 9 uhr. if (sw is on) { output = on; } else { output = off; } Mit dem Skripting muss ich mal schauen. Ich dachte, es geht vielleicht auch ohne. Ansonsten muss ich mir das mal anschauen. Vielen Dank für das Skript! 1 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 25 Author Posted August 25 Also ich lese mich gerade in die Documentation von Shelly ein. Ich finde die mehr als ungeeignet für einen schnellen Einstieg in das Scripting von Shelly. Die beschreiben viele Konzepte, geben aber kaum Beispiele. Bei Google kommt man auch immer nur wieder auf das Tutorial der Seite oder auf die fertigen Skripte auf Github. Wo gibts denn mal so Basisskripte? Mein "Hello Welt"-Skript läuft, aber wie kann ich denn jetzt zum Beispiel testen, ob an SW eine Spannung anliegt? Wie kann ich dann einfach den Output anschalten? Gibt es irgendwo ein besseres Tutorial was ich übersehen habe? Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
nebuto Posted August 25 Author Posted August 25 (edited) Ich habe vergessen, wie gut die KIs teilweise sind. ChatGPT hat mir in 4 Sekunden eine Lösung angeboten, die auf den ersten Blick zu funktionieren scheint. Auch wenn der Timer das Skript jetzt jede Sekunde startet. Aber das lässt sich ja anpassen 🙂 Meine Anfrage bei chatGPT: Quote schreibe mir ein shelly skript für meine Shelly plus 1 pm. Das Skript soll überprüfen, ob eine Strom an SW anliegt. Wenn Strom anliegt soll er den Output anschalten. Wenn kein Strom anliegt soll er den Output ausschalten. Die Antwort: // Shelly-Skript für Shelly Plus 1 PM // Überprüft, ob Strom an SW anliegt, und steuert den Output entsprechend // Funktion zum Überprüfen des SW-Eingangs function checkSW() { // SW-Status abfragen let sw_status = Shelly.getComponentStatus("input:0").state; if (sw_status) { // Wenn Strom an SW anliegt (SW ist HIGH), schalte den Output ein Shelly.call("Switch.Set", { id: 0, on: true }); print("Strom an SW erkannt. Output eingeschaltet."); } else { // Wenn kein Strom an SW anliegt (SW ist LOW), schalte den Output aus Shelly.call("Switch.Set", { id: 0, on: false }); print("Kein Strom an SW. Output ausgeschaltet."); } } // Überprüfung alle 1 Sekunde durchführen Timer.set(1000, true, function() { checkSW(); }); Falls trotzdem jemand noch ein gutes Tutorial kennt, wie man den Einstieg in die Shelly-Welt schafft, würde ich mich über einen Link freuen. Java Script kann ich einigermaßen. VG Update: Das gesamte Skript mit tvbshellys Skript kombiniert funktioniert auch, wird einmal um 8:01 Uhr gestartet und sieht dann so aus: // Shelly-Skript für Shelly Plus 1 PM // Überprüft täglich um 8 Uhr morgens, ob Strom an SW anliegt, und steuert den Output entsprechend // Funktion zum Überprüfen des SW-Eingangs function checkSW() { // SW-Status abfragen let sw_status = Shelly.getComponentStatus("input:0").state; if (sw_status) { // Wenn Strom an SW anliegt (SW ist HIGH), schalte den Output ein Shelly.call("Switch.Set", { id: 0, on: true }); print("Strom an SW erkannt. Output eingeschaltet."); } else { // Wenn kein Strom an SW anliegt (SW ist LOW), schalte den Output aus Shelly.call("Switch.Set", { id: 0, on: false }); print("Kein Strom an SW. Output ausgeschaltet."); } } function createSchedule() { Shelly.call( "Schedule.Create", { enable: true, timespec: "0 1 8 * * *", calls: [ { method: "Script.Eval", params: { id: Shelly.getCurrentScriptId(), code: "checkSW()", }, }, ], } ); } createSchedule(); Danke nochmal 🙂 Edited August 25 by nebuto 1 Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.