NEWS
Shellys ("Alt und Plus") über MQTT Adapter
-
@mickym sagte in Shellys ("Alt und Plus") über MQTT Adapter:
@hotspot_2 Das gab schon ewig - aber ich kenne die Seiten bei den Plus Web Interface nicht. Da muss es auch einen Button Type geben.
Ja, gibt es aber nur zwei.
Ich habe das mal im Shelly Forum angefragt. Mal schauen ob da jemand helfen kann.
Bisher habe ich bei den Plus1 diesen Modus noch nicht gesehen.
-
Nee ich habs:
https://kb.shelly.cloud/knowledge-base/shelly-plus-1pm-web-interface-guideAlso Input Settings
attached to output kann auf true und false wahrscheinlich konfigurieren
DAmit bekommst Du weiterhin Tastendrücke mit aber wird nicht mehr geschaltet.
Mit der APP und Iobroker kannst natürlich weiter schalten - aber Du schaltest nicht mehr über das Relais
-
Jupp. Geht hier. Stehen momentan auf Attached.
Damit wäre das Problem gelöst mit dem Thema wieder einschalten müssen wenn jemand drauf drückt vermutlich.
-
@hotspot_2 Genau. - Also ich würde alles auf detached schalten und dann können wir uns nun um die Logik kümmern. und brauchen nicht mehr fehlerhaft ausgeschaltetes Licht wieder einschalten.
So und nun nehmen wir einfach den vorhanden Flow, um das zu implementieren.
Also wir nehmen wieder eine trigger NOde - und machen das erst mal wieder mit einer fixen Zeit von 2 Minuten.
Auf der linken Seite ordnest Du mal alles was trigger an an.
-
@mickym Sehr guter Ansatz ;-). War mir bisher so nicht bekannt das es diese Funktion gibt. Aber natürlich perfekt für diese Szenario. Ist schon bei allen drei Shellys so eingestellt.
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
@mickym Sehr guter Ansatz ;-). War mir bisher so nicht bekannt das es diese Funktion gibt. Aber natürlich perfekt für diese Szenario. Ist schon bei allen drei Shellys so eingestellt.
Also ganz links also alles was triggern einschalten soll
-
@mickym So, hab mal etwas gearbeitet ;-).
Bei dem Shelly Button bin ich mir nicht ganz so sicher wie man das richtig auswertet. Wenn man den Button drückt dann kommt da (richtiger Pfad zum Objekt ist drin) ein JSON mit event und event_cnt. event ist dann z.B. S für einen kurzen Druck, SS für zwei kurze Drücker und L für einen langen Druck auf den Button. event_cnt zählt immer hoch.
Hab gerade nochmal was korrigiert.
-
@hotspot_2 Ich hab mal einen Flow gemacht noch basierend auf dem vorigen. Im Prinzip ist doch egal was aus dem Button rauskommt. Du willst ja nur das geschaltet wird wenn gedrückt wird.
Also da brauchst nichts auswerten einfach alles was bei Betätigung triggert in die trigger Node - der Inhalt interessiert nicht.
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
@mickym So, hab mal etwas gearbeitet ;-).
Bei dem Shelly Button bin ich mir nicht ganz so sicher wie man das richtig auswertet. Wenn man den Button drückt dann kommt da (richtiger Pfad zum Objekt ist drin) ein JSON mit event und event_cnt. event ist dann z.B. S für einen kurzen Druck, SS für zwei kurze Drücker und L für einen langen Druck auf den Button. event_cnt zählt immer hoch.
Hab gerade nochmal was korrigiert.
Ich hab Dir einen Flow geschickt - nimm einfach den. Bei den Bewegungsmelder musst Du motion true ausfiltern, bei den Schaltern und Button interessiert der Inhalt nicht, da sollen die ja nur triggern - egal was da geschaltet wird.
-
@mickym Alles klar, verstanden. Das mit den Inhalten und filtern bei BWM.
Ich seh schon das wird deutlich einfacher wie mit Blockly. Und vor allem irgendwie auch viel logischer.
Welche Möglichkeit habe ich den die Zeit des Triggers nun über einen Wert in einem ioBroker Objekt zu ändern?
-
@hotspot_2 Gleich ich pass das nur gerade an - gib mir einfach eine iobroker In Node - wo der Wert drin steht, wie lange das Licht brennen soll und sind das ms oder s ?
-
Der Wert steht in "0_userdata.0.hausautomation.zeitdauer_licht_treppenhaus" und die Zeitdauer in Minuten (number) ist da drin. Aktuell steht der Wert z.B. auf 3.
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
0_userdata.0.hausautomation.zeitdauer_licht_treppenhaus
So der Flow ist fertig
Ich hab mal alle Topics der Buttons, Schalter und BWM angepasst. Kernpunkt ist wieder die trigger Node - schau Dir auch immer die Hilfe zu den Nodes an:
Das alles was triggert den Zeitraum verlängert hatten wir ja schon - neu ist nun das wir mit msg.delay die Verzögerung in der Node überschreiben.
Da dein Datenpunkt in Minuten angibt - muss die msg.delay Eigenschaft auf eine umgerechnete payload gesetzt werden.
Beim Setzen der delay rechnen wir also von Minuten noch in ms um:
und fertig ist der Flow . Hier zum Import:
Eigentlich easy, wenn man es logisch durchdacht hat. Nun gut das mit dem detached Mode - konnten wir uns ja das wiedereinschalten sparen.
Achso ist noch das Abprüfen auf die globale Variable drin - musst halt ggf. wieder raus nehmen.
-
@mickym Super!
Kurze Frage noch: Der Switch "active=true" ist der der die globale Variable prüft (ob Treppenhauslicht aktiv oder nicht) ? Oder wird der für die Zusammenführung der ganzen Nodes gebraucht?
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
@mickym Super!
Kurze Frage noch: Der Switch "active=true" ist der der die globale Variable prüft (ob Treppenhauslicht aktiv oder nicht) ? Oder wird der für die Zusammenführung der ganzen Nodes gebraucht?
Habs gerade geschrieben - ja das war mit dem Abprüfen der globalen Variable - das kannst rausnehmen oder muss halt setzen. Du kannst sowas ja auch über einen scheduler setzen - zum Beispiel dass es automatisch aktiv wird wenn es dunkel wird oder nicht. Du kannst auch beides nehmen. Dass Du über Dein Jarvis die Automatik einschaltest - gleichzeitig wenn die Automatik ein ist, aber nur bei Dunkelheit einschaltet. Wie auch immer. Für solche Tageszeiten empfehle ich den Lightscheduler - aber das machen wir erst, wenn Du sowas brauchst.
-
So, hab mal noch die Bewegungsmelder zum abschalten reingemacht.
Super Sache. Wenn ich mir jetzt das Blockly anschaue wäre ich auch definitiv bei "grottig".
Danke!
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
Super Sache. Wenn ich mir jetzt das Blockly anschaue wäre ich auch definitiv bei "grottig".
es glaubt mir nur niemand, der es nicht ausprobiert. Das schöne ist halt dass Du mit Deiner Logik relativ schnell verstehst an welcher Stelle man eingreifen muss und kann und nicht Spaghetticode entwickelt.
Ehrlich gesagt finde ich es immer noch schlimm:
Gut manches hätte man sicher auch mit Blockly einfacher machen können - vor allem wenn detached eingeschaltet gewesen wäre. Ich hoffe es funktioniert alles - sonst musst mit debug nodes arbeiten.
-
@mickym Definitiv! Es ist einfach schlecht.
Funktioniert alles bestens. Das Licht funktioniert wie gewünscht.
Freu mich.
Würde morgen gerne noch ein paar andere Blocklys anschauen.
Gibt es denn ein Node um zu eine bestimmten Zeitpunkt MQTT ins zu prüfen (Switch an oder aus) um dann z.B. Switch ein- oder auszuschalten?
Würde dann morgen noch weitere Blocklys umziehen.
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
Gibt es denn ein Node um zu eine bestimmten Zeitpunkt MQTT ins zu prüfen (Switch an oder aus) um dann z.B. Switch ein- oder auszuschalten?
Theoretisch ja - insbesondere bei mqtt-Version 5. Aber machs einfach nicht, das ist nicht state of the art und wiederspricht dem mqtt-Konzept. Mqtt gibt immer aktuelle Trigger aus - für die Speicherung von Zuständen ist die Anwendung verantwortlich. Genau für diesen Zweck lass mqtt triggern und speichere den Zustand in einer Node-Red Variablen ab. Diese kannst Du dann zu beliebigen Zeitpunkten abfragen und darauf reagieren. Du kannst auch Datenpunkte im mqtt-Adapter abfragen. Den hast Du bis jetzt ja gar nicht genutzt. Dafür könntest Du ihn nutzen. Im Prinzip ist das auch in Verbindung mit Node-Red die größte Stärke desiobrokers.
Grundsätzlich sollte man aber nicht pollen - ganz allgemein.
Wenn ich beispielsweise die Wohnung verlasse, dann werden einfach alle Lichter ausgeschaltet - da interessiert es mich nicht, ob das Licht vorher eingeschaltet war oder nicht. Also überprüfe hier erst mal Deine Logik, ob solche Abfragen erforderlich sind. Ein eingeschaltetes Licht nochmal einzuschalten - belastet gar nichts - weder ein Relais noch sonst was - und ein ausgeschaltetes Licht auszuschalten tut auch niemand weh und ist definitiv einfacher - als Abfragen. Dann ist es sinnvoller abzufragen ob jemand daheim ist.
Ich habe meine Shellies alle so geschaltet, dass wenn ich sie einschalte (also über den Schalter) dann sind die Bewegungsmelder inaktiv. Wenn ich die Shellies am Schalter ausschalte werden die Bewegungsmelder aktiv, aber nur wenn es dunkel ist. Der Vorteil ist, dass ich damit ein Logik implementiert habe, wenn ich mal keine GUI oder App zur Hand habe. Aber wie gesagt - jeder überlegt sich, was er für sinnvoll erachtet.
-
Ok.
Hab gerade noch diesen Fehler entdeckt im Protokoll:
Client [mqttin_nodered] Message 9588 deleted after 11 retries
Kann man da mehr Infos dazu irgendwo finden?