Ah ok. Ich bleibe dabei. Lieber das Smartphone aus der Tasche holen und das Skript manuell starten
Beiträge von dysentrieb
-
-
Das wäre mir zu unbestimmt
Aber mal so aus Interesse, wie würdest du das tun?
-
Aber tausend Dank nochmal für deine Hilfe!
-
Mag sein, dass sie günstig ist, im Vergleich zu andren vergleichbaren Produkten. Aber so ein potentes Gerät auf eine so spezielle Funktion zu beschränken, die ich nicht sehr häufig verwende, sehe ich nicht ein
Ich habe die Steckdose in erster Linie gekauft, weil sie relativ genau den Stromverbrauch messen kann und weil man damit Dinge aus der Ferne übers Internet steuern kann.
Da hole ich in dem seltenen Fall, dass ich den Ultraschallreiniger verwenden möchte lieber mein Smartphone raus und starte das Skript eben manuell.
-
Ok, schade. Das habe ich wohl falsch verstanden. Also ist der Knopf im Modus detached nutzlos. Echt blöd. Es hätte sonst viel potential. Ich habe mir schon ausgemalt, wie ich eine ganze List an sortpress, longpress, doublepress und Kombinationen davon erstelle, um sie mit verschiedenen Funktionen zu belegen.
Jetzt ist mir auch klar geworden, wieso du die BedingungZitateingefügt hast. Ich dachte bisher, dass es verhindern soll, dass man über den Button das Script mehrfach startet. Aber event.info.component === "switch:0"
bezeichnet das Relais und nicht den Button. Und dadurch würde das Script sich selbst aufrufen. So ist es bei meiner ursprünglichen Skriptvariante eben passiert. -
Danke erstmal für deine Hilfe. Ich verstehe dein Script ganz gut, denke ich.
Ich habe ein bischen herumprobiert, aber ich komme nicht an diese Events
long_press, double_press. Die tauchen einfach nicht auf. Weder mit Button detached noch mit button attached.Letztenendes soll die Funktion ja nicht bei jedem Gebrauch starten, sondern nur, wenn wenn die Plug mit dem Ultraschallreiniger verwendet wird.
Evtl. würde ich auch noch andere weitere Scripte mit anderen Funktion auf spezielle Eingaben über den Button legen.Hier steht, dass diese Informationen existieren.
https://shelly-api-docs.shelly.cloud/gen2/0.14/Comp…/#notificationsWie man da ran kommt, verstehe ich aber nicht.
-
Ok. Das hat geholfen. Das Gerät war noch auf 0.14.4
Jetzt bekomme ich auch den Output.Und jetzt funktioniert auch dein Script. Es hatte vorher einen Fehler ausgegeben.
Ich muss mir jetzt nochmal deinen Code anschauen
-
ja tut er. Und ja, es ist ein Plug S
-
Ok, komisch. Bei mir wird hier gar nichts ausgegeben.
-
Ok, ich erkläre einmal, wie der Lösungsansatz gedacht ist.
Ich habe zwei Funktionen definiert.
1. Callback2. Eventcallback
Die Funktion 1. sorgt für die Funktionalität und ist schon einsatzbereit.
Die Funktion 2. soll dann die Funktion 1. aufrufen, wenn der Schalter gedrückt wird.
Leider tut sie das nicht.
Sag mir gerne, was hier falsch ist, oder wie du das angehen würdest. -
Der Code gibt 1 Sekunde einschalten und 2 Sekunden ausschalten vor. Dieser Teil funktioniert auch.
Wenn ich in Zeile 25 die Callbackfunktion aufrufeso startet die richtige Sequenz direkt mit dem Start des Skripts. Allerdings sollte es ja mit dem Knopf am Gerät ausgelöst werden. Das sagt mir, dass das Problem in den Zeilen 26 bis 34 sein muss
-
Hallo,
ich möchte jetzt endlich mal etwas sinnvolles mit meiner Plug S machen.
Ziel ist es, dass durch den Knopf an der Steckdose eine Schaltsequenz gestartet wird:
15 Pulse kurz einschalten, danach dauerhaft einschalten.
Hintergrund: Mein Ultraschallreiniger soll zunächst die Flüssigkeit entgasen, das passiert während der ersten 15 Pulse. Danach folgt der eigentliche Reinigungsprozess.
Ich verstehe leider nicht richtig, wie ich das Event eines Knopfdrucks (kurz, lang, doppelt) abfangen kann.
Hier ist mein letzter Stand:
JavaScript
Alles anzeigenlet userdata = null; let state = false; let bool = false; let timer_handle = null; let degasing_counter = 0; let degasing_cycles_requested = 15; function callback(userdata) { bool = !bool; if (degasing_counter >= degasing_cycles_requested) { Shelly.call("Switch.set", {'id': 0, 'on': true}); } else if (bool) { // turn on and start on-delay Shelly.call("Switch.set", {'id': 0, 'on': true}); timer_handle = Timer.set(1000,false,callback,null); } else { // turn off and start off-delay Shelly.call("Switch.set", {'id': 0, 'on': false}); timer_handle = Timer.set(2000,false,callback,null); degasing_counter++ } } function eventcallback(userdata) { if (userdata.component === "input:0") { if (userdata.info.event === "single_push") { callback(null); } } } Shelly.addEventHandler(eventcallback, userdata);
Das ist mein erstes Projekt mit Java Script, meine Skills sind diesbezüglich also sehr beschränkt
Ich würde mich sehr freuen, wenn mir jemand aufzeigen könnte, was ich hier falsch mache.
GrußDaniel