NEWS
Mqtt best practice
-
@dos1973 Ja.
Eine Übersicht der Nodetypen - als Werkzeug siehst ja im linken Fenster:
Das ist doch beim Blockly ähnlich.
-
@mickym
ja blocky ist am Anfang auch schlimm.
du weist nicht was die blöcke machen, wie die Reihenfolge ist etc.
ist wie hier, das dauert etwas. -
@dos1973 Na ich finde Blockly schlimmer - da finde ich nie das richtige Puzzleteil.
Die müssen ja noch ineinander passen.- Hier kann ich einfach alles miteinander verbinden.
Du wirst aber später sehen es gibt sehr mächtige Nodes und die Kapseln mehr als es die Puzzelteile können. Aber wie gesagt ich bin da voreingenommen und wahrscheinlich nicht objektiv. -
@mickym
so ich bau dann mal weiter... an meiner Großbaustelle
wir schreiben uns bestimmt morgen wieder -
@dos1973 Ok - dann schlaf gut.
-
@peterfido sagte in Mqtt best practice:
Bei mir laufen neben anderen Geräten sämtliche Shellys auf mqtt.
kannst Du mir eventuell einen Link angeben, wie ich die Shellys auf mqtt umstellen kann. Ich habe hier 4 Shelly 2.5, habe aber mit den Shellys noch nie gearbeitet.
Habe mosquitto mal auf einer VM installiert und meine ESP8266 umkonfiguriert sowie den MQTT-Adapter als Client eingestellt. Meine ESP8266 senden Ihre Werte ohne Probleme. Auch ein Schalten von Relais ist weiterhin möglich (ein ESP8266 steuert die Relais für die Bewässerung an). Nun würde ich gern auch die Shellys für die Lichtsteuerung einbinden. Wie muss ich die Shellys für mqtt einstellen? Vielleicht gibt es hier auch einen Link dazu? Danke Dir. -
@opossum Du schaltest Dich einfach via Browser auf Deinen Shelly. Da gibts keinen speziellen Link.
Einfach die lokale IP Adresse Deines Shellies in Dein Browserfenster eingeben.Du bekommst dann folgendes Bild:
Da wählst Du dann Internet & Security:
Dort gehst Du dann auf ADVANCED - Developer Settings - setzt den Haken bei mqtt und gibst Deine Daten zu Deinem mosquitto ein.
-
Hallo, @mickym,
vielen Dank, dann werde ich das mal mit dem ersten versuchen.
-
@opossum Vorher solltest Du die Shellies in Dein eigenes WLAN über nehmen. Die Shellies machen ein eigenes WLAN auf, dem tritts Du mit Deinem Handy bei. Du schaust unter dem Handy was Du eine IP Adresse bekommen hast (in der Regel ist das 192.168.33.2). Dann kannst Dich mit dem Handy Browser unter der IP Adresse 192.168.33.1 auf den Shelly verbinden und dann ebenfalls über Internet & Security
im WIFI Mode Client den Shelly in Dein eigenes WLAN aufnehmen. Erst dann funktioniert natürlich die Verbindung zu Deinem mosquitto im gleichen Netz.
-
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.
-
@dos1973 Ich mache die Statusprüfung halt im NodeRed und im Prinzip kannst Du ja mit Wildcards arbeiten und Objekten, da muss man nichts zählen.
Im Prinzip wirst Du halt bei Deiner Lösung irgendwas gegenseitig blockieren.
Ich habe über NodeRed ja dann auch im mqtt DP gesetzt - ist ein bisschen Durcheinander - ist halt Historie. Jedoch von der Logik relativ einfach:Hier mal ein Beispiel wie meine Lichtüberwachung aussieht:
Im mqtt - ist es flexibler als nun iobroker mit der Admin5 Struktur zu erreichen versucht. Das heißt "Folder"/"Device" können auch states sein.
Nun siehst Du unter Licht die Räume und in den Räumen die Anzahl an Lampen.
Sprich ist im Büro die Schreibtischlampe an, springen die jeweils übergesetzten Ordner auf on.So kann ich Visualisieren:
- Die einzelne Lampe
- Das in einem Raum Licht ist
- Das in der Wohnung Licht ist.
Triggern kannst Du dann mit Sternchen bei iobroker-IN Nodes und Filterung - oder mit mqtt kann man ja einfach mit dem + die nächste Ebene prüfen.
Wie gesagt alles nur Ideen und Anregungen.
Ich muss auch gerade im Moment einiges umstellen, weil mir mein Zigbee Stick (CC2531) abgeraucht ist und die haben so ziemlich genau 1 Jahr Haltbarkeit.
- Zum Glück habe ich noch einen Conbee2 der auch mit dem Zigbee Adapter arbeitet - allerdings schmeißt das gerade immer Fehlermeldungen. Du siehst gibt immer was zu tun.
-
@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.