NEWS
Shellys ("Alt und Plus") über MQTT Adapter
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
Wenn Du solch globale Schalter hast - kannst du die auch über eine In-Node einlesen und im Flow oder globalen Kontext abspeichern und dann über die Switch-Node direkt abprüfen. Damit sparst Du Dir jedesmal den Datenpunkt abzufragen.
Wie können die im Flow und global abgespeichert werden? Global hiesse dann über alle alle Flows hinweg abrufbar? Ist das dann vergleichbar mit einer globalen Variable? Wird die dann auch aktualisiert wenn sich der Wert ändert?
Ja
und Ja
Generell siehst Du den Kontextinhalt der aktuell ist im Kontext Tab:
Ich nehmen mal den Schalter - der kann ja auch durch das Objekt direkt getriggert werden. Nehmen wir mal an Du willst den Schalter mehrfach nutzen - dann fragst Du den nicht im Flow ab, sondern lässt den Datenpunkt direkt in den Flow-Kontext schreiben:
Um eine globale (über alle Flows geltende Variable zu setzen), setzt Du diese im globalen Kontext, wenn sie nur in dem Flow gelten soll, dann im Flow Kontext.
Setzen kannst Du das natürlich wieder über die tolle Change Node.
Hier setzt Du also die globale Variable active auf die payload Eigenschaft des Nachrichtenobjektes:Der Datenpunkt setzt also direkt die Variable in Node-Red und kannst Du direkt im Kontext sehen:
Diese Variable kannst Du im switch nun direkt abprüfen und sparst Dir die Abfrage des Wertes im Flow:
Somit sparst Du Dir in jedem Flow die Abfrage des Datenpunktes wenn Du diesen Status öfters brauchst:
-
@hotspot_2 sagte in Shellys ("Alt und Plus") über MQTT Adapter:
@mickym Super! Das funktioniert ;-).
Nächstes Projekt wäre nun etwas zu basteln für mein Treppenhaus. Dazu habe ich über längere Zeit ein Blockly gebastelt, welches aber nicht mehr ganz funktioniert jetzt da der Shelly Adapter bei mir jetzt komplett raus ist.
Ich habe drei Shellys für Licht im Treppenhaus (Keller, oben und unten). Diese werden (oben und unten) über Schalter angesteuert und unten über einen Button1. Außerdem gibt es drei Bewegungsmelder im Treppenhaus (oben, unten und Keller) die auch das Licht einschalten können. Die Dauer, wie lange das Licht brennt nach Aktivierung lässt sich einstellen in JARVIS. Außerdem habe ich noch eingebaut im Blockly das wenn während die Dauer noch nicht abgelaufen ist Shellys bzw. das Licht wieder angeschalten werden sollte jemand bei brennendem Licht auf die Schalter drücken. Funktionierte eigentlich sehr gut das Blockly Skript bis zum Entfernen des Shelly Adapters.
Das wäre das Projekt was wir uns, wenn es für Dich passt, mal anschauen könnten.
@hotspot_2 Können wir machen - wobei ich das Blockly wieder mal sowas von unübersichtlich finde. Du hast doch alles auf die neuen Datenpunkte geändert, warum funktioniert das Blockly dann nicht?
Ehrlich gesagt finde ich das Blockly aber so grottig aufgebaut, dass es mir lieber werden, wir würden die Logik neu implementieren? - Wäre das OK ?
-
@mickym Na klar, völlig ok. Das Ding ist gewachsen mit Unterstützung von verschiedenen Seiten am Anfang und ich hab dann einfach weitergebastelt bis es funktioniert.
Ich habe im Skript noch nicht alle Datenpunkte angepasst, daher funktioniert es gerade nicht.
-
@hotspot_2 Gut.
Dann meine 1. Frage:
Die Dauer, wie lange das Licht brennt nach Aktivierung lässt sich einstellen in JARVIS.
So dass heißt - dass ist die zentrale Instanz die das Licht ausschalten kann. Alle Buttons, Lichtschalter und Bewegungsmelder schalten immer ein - aber nie aus?
-
@mickym Ja, alle Schalter, Buttons und Bewegungsmelder schalten immer ein, aber nie aus. Das ist so korrekt. Aus geht immer dann wenn die Zeit, die einstellbar ist, abgelaufen ist. Möchte man es wieder hell haben muss man Schalter /Button drücken oder sich bewegen ;-).
Wenn dann trotzdem ein Schalter gedrückt wird, habe ich es abgefangen und den Shelly bzw. das Licht wieder angeschalten. Der Shelly schaltet ja nach der Betätigung des Schalters das Licht erstmal aus.
-
@hotspot_2 Noch eine blöde Frage - warum konfigurierst Du dann die Shellies nicht im detached Mode - so dass die nicht mehr physisch schalten können also nicht mehr ausschalten können? Das wäre nicht nur einfacher zu implementieren, sondern würde auch Dein Licht schonen.
oder
Activation Switch - der schaltet immer ein? - Das ist so hardwaremässig so eine Treppenhausfunktion auch wenn Du sie nicht nutzt.
-
@mickym Ich habe die Firmware 0.14.1 drauf. Da finde ich das Detached nicht. Ich sehe aktuell nur Follow oder Flip als Modus.
-
@hotspot_2 Ich hab gerade nachgelesen, dass muss es geben:
-
@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.