NEWS
Shellys ("Alt und Plus") über MQTT Adapter
-
@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?
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
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?
Das ist leider ein Mist des mqtt-Adapters als Broker. Deswegen nutze ich diesen Adapter nur als client und nicht als Broker. Wenn das öfters auftritt empfehle ich Dir mosquitto als Mqtt-Broker. Das sind leider Inkompatibilitäten des Adapters.
Siehe hier: https://forum.iobroker.net/post/441763
-
Ok. Mosquito aber nicht als Adapter dann, oder? Sondern neben iobroker dann auf der Maschine installiert.
-
@hotspot_2 Genau - ich habe mosquitto als Service laufen und den mqtt-Adapter als Client zum mosquitto
Ist eigentlich super einfach zu installieren.
In dem Fall ist das nicht viel Umstellungsaufwand für Dich, weil wenn Du die gleichen Credentials nimmst nur ein MQTT-Broker auf einer Maschine betreiben kannst. Am Besten ist dann dass Du alle Haken rausmachst:
Empfehle ich Dir auch für den Broker übrigens.
Falls Du mosquitto installierst - die Client Tools brauchst Du nicht.
Also nur
sudo apt install mosquitto
-
@mickym Dem Thema Mosquito usw. nehme ich mich heute auch noch an. Es laufen doch einige Fehlermeldungen (wie oben) an. Werde dann den mosquitto als broker installieren und ich greife dann mit dem mqtt Adapter als Client auf den mosquitto zu und habe dann alle mqtts wieder in iobroker. So ist das Konzept, oder? Stelle ich dann aber alles bei mir auf den mosquitto um also z.B. auch meine ESPs?
Habe noch eine zweite Frage: Bastele gerade an einer Erweiterung des Treppenhaus Licht Flows. Würde ich Dir dann nachher mal zeigen wollen (ist nicht viel, aber interessant ob ich es richtig mache für mich). Frage ist noch: Wenn ich einen Switch-Node habe der true und false als Ausgänge hat (Ergebnis) wie lasse ich den den Flow korrekt enden wenn es nach false dann nicht mehr weiter geht (also keine weitere Aktion folgt). Lässt man dann die Verbindung einfach weg oder sollte man das anders lösen?
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
@mickym Dem Thema Mosquito usw. nehme ich mich heute auch noch an. Es laufen doch einige Fehlermeldungen (wie oben) an. Werde dann den mosquitto als broker installieren und ich greife dann mit dem mqtt Adapter als Client auf den mosquitto zu und habe dann alle mqtts wieder in iobroker. So ist das Konzept, oder? Stelle ich dann aber alles bei mir auf den mosquitto um also z.B. auch meine ESPs?
Nein auf den Shellies oder Clients musst Du gar nichts ändern, wenn Du in mosquitto die gleichen Credentials (Benutzer und Passwort) falls Du vergeben hast. Die Clients merken ja eigentlich nicht, dass da ein anderer Broker dahinter hängt, da IP-Adresse und Port ja gleich bleiben. Im mqtt-Adapter subscribest Du alles - wie in meinem Screenshot gezeigt - also #.
Damit hast Du quasi den gesamten mosquitto im mqtt-Adapter und du erkennst keinen Unterschied. Im Gegenteil kannst Du nun auch direkt in die Datenpunkte schreiben - da machte der Broker auch oft Probleme. Du nutzt ja den gleichen Adapter nur eben als Client:Habe noch eine zweite Frage: Bastele gerade an einer Erweiterung des Treppenhaus Licht Flows. Würde ich Dir dann nachher mal zeigen wollen (ist nicht viel, aber interessant ob ich es richtig mache für mich). Frage ist noch: Wenn ich einen Switch-Node habe der true und false als Ausgänge hat (Ergebnis) wie lasse ich den den Flow korrekt enden wenn es nach false dann nicht mehr weiter geht (also keine weitere Aktion folgt). Lässt man dann die Verbindung einfach weg oder sollte man das anders lösen?
Du kannst doch die Ausgänge die nicht nutzt einfach löschen:
Standard ist eh erst mal ein Ausgang und Du kannst beliebig viele Ausgange hinzufügen oder löschen:
Du kannst aber auch die Verbindung einfach weglassen. Es gibt auch Nodes die haben 2 oder mehrere Ausgänge, die Du nicht nutzen musst. Beispiel ist die exec Node - da musst Du nicht alle 3 Ausgänge nutzen.