NEWS
Mqtt best practice
-
@dos1973 sagte in Mqtt best practice:
Soweit habe ich alles fertig…
Eins ist mir aufgefallen.Ich habe doch eine ganz reihe „Schalter“ Dp angelegt für das Vis. Die haben true oder false und werden mit dem node-red auf die mqqt DP gesynct.
On=true, off=falseIch wollte ein Blockly script verwenden um diese DP auf True (shellys ein) zu prüfen und den Wert (+1) dann in einer variable hochzählen. Das Ergebnis (Anzahl) dann in einen DP schreiben.
Das in die Variable +1 hochzählen geht nicht.
Das geht nicht, solange node-red aktiviert ist. Sobald ich node-red instanz beendet funktioniert das blockly ohne Fehler, aktiviere ich node-red klaptt es nicht.
Ich hab das blockly jetzt in der genauen Art auf die mqqt DP gesetzt und prüfe jetzt den „on“ status und zähle entsprechend hoch.
Da klappt es dann.
Ehrlich gesagt verstehe ich nicht, warum es nicht funktioniert hat. Es sei denn es ist irgendeine Dauerschleife drin gewesen. Normalerweise musst Du jederzeit mit jedem Tool auf einen DP zugreifen können.
-
Ist die dauerschleife nicht dadurch gegeben, dass node-red permanent auf den true-false status horcht? Er muss es ja in on-off übersetzen?
Ich finde node red extrem unübersichtlich… auch gibt es da in gegensatz zu blockly kaum beispiele wie so ein payload erstellt wird, also inhalte etc. Nur vom flow Bild abzuleiten ist glaube ich (für mich) nicht machbar.
-
@dos1973 Nein - da ja nur Aktualisierungen bzw. Änderungen triggern. Du kannst ja einfach ein Debug Node hinter die Eingangsnode machen und siehst ob was rauskommt.
Die payload enthält immer die Nutzdaten - es ist aber einfach ein Nachrichtenobjekt - ein Javascript Objekt, das von einer Node zur nächsten geschickt wird und im Prinzip kannst Du selbst bestimmen, welche Eigenschaften so ein Objekt hat.
Dadurch sollte also keine Dauerschleife zustande kommen - aber wie gesagt leicht überprüfbar. Der Trigger der iobroker-IN Nodes ist der gleiche wie bei den Blocklies.
-
hi nochmals eine Frage.
ich spiele derzeit etwas mit einer shelly Vintage un dem Mqtt herum.
die Lampe über den command mit on/ off geht, jetzt wollte ich aber mal etwas mehr aber ich bekomme es nicht hin.ich hab das bsp direkt von der Shelly website genommen.
versuche das derzeit noch über den mqqt explorer---
mach ich etwas falsch?
-
irgendetwas ist hier "buggy", wenn ich den Befehl absetze, ist der shelly für 30sekunden offline...
-
@dos1973 das JSON Objekt musst Du in ein neu zu erstellenden set DP schreiben, nicht in command. Ausserdem darfst Du bei mqtt nicht ein JSON Objekt beschreiben, sondern einen String. Sprich Du musst das JSON Objekt in einen String umwandeln.
In Javascript nutzt DU dazu stringify
Ob die Konvertierung im Blockly nach String funktioniert weiss ich nicht.
In Node-Red setze ich zum Beispiel direkt den Dimmwert in dem JSON Objekt und wandel es dann in einen String um.
Sprich Du darfst in Deinem mqtt Client kein JSON Objekt sondern einen String übergeben
Ob Dein mqtt Explorer die Konvertierung selbst durchführt, weiß ich nicht, gehe aber eigentlich davon aus.
Die Struktur sieht eigentlich identisch zum Dimmer aus:
Wenn alles geklappt hat - wird der status DP zum Beispiel mit dem aktuellen Dimmwert aktualisiert:
-
@dos1973 sagte in Mqtt best practice:
irgendetwas ist hier "buggy", wenn ich den Befehl absetze, ist der shelly für 30sekunden offline...
Dann bootet der Shelly neu
-
@mickym
ich versuche eben dein Bsp von vorher nachzubauen...aber ich bekomme bei dem payload ein Fehler
kannst du nochmals nachhelfen
edit: auf String umgestellt, ist der Fehler weg...
-
@dos1973 Du musst kannst das schon als Objekt machen - die JSON Node wandelt Objekte in String um und umgekehrt, wenn man es nicht explizit angibt.
Da der Dimmer identisch zu dem VIntage funktioniert - habe ich es bei mir ausprobiert und gibt überhaupt kein Problem
Hier der Flow zum Import - die mqtt out Node musst halt noch setzen:
Bei der Change Node musst halt wieder darauf achten, dass Du ein JSON Objekt verwendest:
Im status - wird nur die transitiontime nicht korrekt wieder gegeben.
-
@mickym
das führt dazu dass der shelly rebootet. -
@dos1973 Dann hat der Shelly hier ggf. einen Fehler - schau mal Parameter für Parameter. Vielleicht lässt mal die transition time weg.
Im Prinzip funktioniert es auch, wenn Du das Objekt im set Punkt direkt beschreibst.
Das tut bei mir:
-
@dos1973 Mach Dir keinen Kopf - die vintage Dinger haben wohl mit dem Dimmen generell ein Problem:
Liegt also nicht an Dir oder an den Tools:
-
ok, nur on off im payload funktioniert. Der Link bestätigt den Fehler.
habe eben noch das aktuellste update geladen.Gibt es denn noch eine alternative Möglichkeit, den Dimmlevel zu steuern?
ich habe noch einen Spot im Schrank... werde damit mal testen
-
@dos1973 Ich würde zwar auf das FW Update warten, aber Du kannst natürlich auch das HTTP Protokoll verwenden.
Dieser Flow funktioniert bei mir auch:
Musst halt Deine IP Adresse verwenden und wenn Deine Shellies mit Kennwort gesichert sind, das halt in die Basisauthentifizierung angeben.
Wenn alles OK ist, dann solltest Du über die HTTP Schnittstelle ein Returncode=200 zurück bekommen.
-
@mickym
das klappt 1 A. Also das gefällt mir richtig gut.ich schau mal dass ich den Spot rauskrame...
Danke Dir - fühl dich gedrückt
-
@dos1973
noch was, das "inject" würde ich durch eine Vis DP button ersetzen und könnte dann schalten, könnte die flows dann um weitere "flows" ergänzen um eine Gruppe von Leuchten zu steuern? -
@dos1973 Du musst halt die Inject Node durch eine iobroker IN Node ersetzen und auf den DP setzen, den Du mit VIS akutalisierst.
Falls Du mit einem Button mehrere Shellies gleichzeitig steuern willst verzweigst Du wie es Dir passt.
Wenn die 3 der Gruppe immer die gleichen Parameter enthalten sollen machst Du halt
Langsam sollte das Prinzip von NodeRed ja einleuchten.
-
@mickym
so langsam finde ich gefallen an node-red...ist schon recht einfach schnell Abläufe zu erstellen (mit deinem Vorlagen).
Das Problem wie bei allen neuen Sachen, erstmal die richtigen Kärtchen zu identifizieren. -
@dos1973 Ich würde ggf. trotzdem später warten und nicht mqtt mit http mischen. Gibt zwar beide Möglichkeiten, aber macht das halt ggf. später schlechter wartbar oder für die Fehlersuche transparent.
-
ist mir ja schon etas "unangenehm" aber ich suche seit 2 Stunden?!
ich habe vor ein paar Tagen alles eingerichtet und jetzt fällt mir ein Shelly2.5 raus.
Ich kann keine Befehle mehr absetzen, command on / off etc.ich habe den Shelly rebooted, mqtt deaktiviert, aktiviert. Mqtt Instanz gestartet...
eigentlich alles. Alle anderen funktionieren noch - nur der ist weg und ich bekomme den nicht wieder eingebunden.Wüsste nichts mehr was ich noch machen kann. Idee?
die states werden aktualisiert, wenn ich über das webfrostend schalte.