NEWS
Shellys ("Alt und Plus") über MQTT Adapter
-
@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.
-
@mickym So, ich habe jetzt mal was eingebaut in den Flow. Idee ist das ich einen zusätzlichen Schalter habe der bei true die Bewegungsmelder nur einschalten soll wenn es dunkel ist und bei false immer. Davor gibt es noch einen Schalter der dafür sorgen soll ob die Bewegungsmelder überhaupt aktiviert worden sind.
Nun würde ich noch gerne das Licht, wenn es dunkel ist, aktivieren wenn jemand an einer der beiden Türklingeln (unten und oben) klingelt. Da stellt sich mir noch die Frage ob ich irgendwie die vorhandene Node Light Scheduler ebenfalls nutzen kann und keine zweite Flow einfügen muss. Das wird aber dann vermutlich über das Thema global Payload passieren, oder?
-
@hotspot_2 Also Du hast den falschen Node genutzt beim LightScheduler. Den Du genutzt hast, der triggert.
Du brauchst aber die Filter node. Ich finde es zwar mit deinen Schalter langsam übertrieben. Du musst ein bisschen auf Ästhetik achten - und das ganze etwas auseinander ziehen - dann kannst Du oben auch noch Deinen anderen Geräte in den Filter laufen lassen:
-
@mickym Ich mag mein VIS (jarvis) und meine Schalter da drin. Nutze sie nicht sehr oft, das stimmt, aber einfach "nice to have" für mich ;-).
So, jetzt sollte es passen. Funktioniert echt sehr gut mit Node RED. Bin total begeistert.
Nachher noch das Mosquito Thema erledigen und dann ist das ne runde Sache insgesamt.
Gibt es eine Möglichkeit nach dem Ende des Triggers noch ein paar Aktionen zu machen? z.B. einen Wert in ein iobroker out zu schreiben?
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
Gibt es eine Möglichkeit nach dem Ende des Triggers noch ein paar Aktionen zu machen? z.B. einen Wert in ein iobroker out zu schreiben?
Soviel du willst - die Möglichkeiten sind nahezu unbegrenzt.
-
@mickym Ich meine wenn die vorgebene Zeit abgelaufen ist (also die zweite Nachricht abgeschickt wird) noch ein paar Aktionen zu machen. z.b. einen Wert in ein iobroker out zu schreiben. Aber erst dann wenn quasi das Licht wieder ausgeschalten wird.
-
@hotspot_2 Klar Du musst halt nach den Ausschaltnachrichten filtern, wie das geht mit dem Filtern und dem Pfad habe ich Dir ja gezeigt.
Wenn Du nicht mehr weißt, wie Du filtest Debug Node dran und Pfad kopieren:
und dann in der switch node danach filtern:
Du musst in jedem Fall lernen mit Objekten umzugehen.
Es gäbe noch die Möglichkeit ohne Filtern zu arbeiten, in dem Du die 2. Nachricht über einen getrennten Ausgang schickst. Dann musst aber den 2. Ausgang auch mit allen Lampen verbinden.
Aber Du sollst schon lernen, wie man mit Objekten umgeht.
-
Um zu schaun, was z.B. die Shellys so über MQTT senden oder auch selber MQTT-Topics zu schicken, verwende ich den MQTT Explorer.
-
@sabinet Ja da ist nichts gegen einzuwenden, aber ich kann gerade nicht den Zusammenhang mit dem aktuellen Flow hier herstellen.
-
@mickym Ich bräuchte nochmal einen Tipp. Wie kann ich den am einfachsten eine Objekt auf einen Wert setzen so einfach zwischendrin wenn ich das gerne machen möchte also wenn z.B. eine bestimmte Bedingung erfüllt ist nach einem Flow ein Objekt im ioBroker auf true setzen oder auch mal false.