NEWS
Verständnisfrage zigbee2mqtt
-
Hi zusammen,
ich bin vor kurzem vom deconz-Stick zum CC26X2R1 umgestiegen. Die Umstellung zum Zigbee-Adapter
hat auch soweit gut funktioniert.Allerdings habe ich mir alternativ auch zigbee2mqtt angeschaut.
Installation und Anbindung über Mosquitto an den IOBroker MQTT-Adapter hat auch gepasst.Die Daten von zigbee2mqtt kommen in folgendem Format in IOBroker an:
Beispiel Bewegungsmelder:
{"temperature":25.83,"linkquality":45,"illuminance":6551,"illuminance_lux":4,"update_available":false}Jetzt kommt meine Verständnisfrage
Wie verarbeite ich die Daten am besten weiter? Muss ich den Inhalt selber (per Skript) auswerten, und bei Änderungen
die Nachrichten im obigen Format senden?
Ich habe über MQTT bisher nur die Shellies am laufen. Dort werden für die Daten großteils eigene Datenpunkte angelegt.
Zur Steuerung wird der jeweilige Command-Datenpunkt genutzt.Wie funktioniert das ganze bei zigbee2mqtt? Muss ich z.B. NodeRed nutzen das MQTT direkt "versteht"?
Angaben zum System:
Proxmox: Debian VM(s) - Pentium Silver J5005
Software soweit alles aktuell (Node.js 12.18.3 / JS-Controller: 3.1.6)
zigbee2mqtt: eigene VM (Debian)
mqtt-broker: mosquitto (eigene VM / Debian) -
@Chris_78 sagte in Verständnisfrage zigbee2mqtt:
Allerdings habe ich mir alternativ auch zigbee2mqtt angeschaut.
Eigentlich ist das keine Alternative, der Zigbee Adapter baut nämlich auf diesem Projekt auf.
-
Danke für die Info. Ich hatte im Netz recht häufig gelesen, dass direkt zigbee2mqtt eingesetzt wird.
Allerdings eher im Bereich HomeAssistant oder NodeRed.Wie würde denn grundsätzlich die optimale Vorgehensweise sein die Daten weiterzuverarbeiten?
Mich "reizt" doch noch etwas der Gedanke viele Geräte zentral über MQTT ansprechen zu können
(systemunabhängig, evtl. Anbindung an eine andere Plattform,...).Hast du eine Idee?
-
@Chris_78 installier das Projekt zigbee2mqtt (Eintellung nicht vergessen da muss der MQTT Iobroker Server ren) und...
MQTT Adapter im iobroker fettisch -
@arteck
Installiert habe ich es bereits (aktuell ist die VM nicht aktiv, da ich den Zigbee Adapter am laufen habe).
Konfiguriert und lauffähig ist zigbee2mqtt ebenfalls.Wie im 1. Beitrag beschrieben liegt mein Problem darin, die MQTT-Nachrichten zu verarbeiten.
Es wurde für jedes Gerät jeweils nur ein Datenpunkt angelegt, in dem alle Informationen des Geräts
geschrieben werden.Beispiel Datenpunkt Bewegungsmelder (Screenshot im 1. Beitrag):
{"temperature":25.83,"linkquality":45,"illuminance":6551,"illuminance_lux":4,"update_available":false}Muss ich obigen Datenpunkt per Skript durchsuchen/"zerlegen" und mir die passenden Infos rausholen,
oder gibt es einen eleganteren Weg?
Und wie müssen die Nachrichten aussehen, wenn ich z.B. on/off states für einen Schalter senden möchte? -
@Chris_78 sagte in Verständnisfrage zigbee2mqtt:
Mich "reizt" doch noch etwas der Gedanke viele Geräte zentral über MQTT ansprechen zu können
(systemunabhängig, evtl. Anbindung an eine andere Plattform,...).also wenn du so was schreibst geh ich von aus dass du dich mit dem Protoll auseinander gesetzt hast und weisst was zu tun ist..
ansonten mach das bitte zuerst..
-
Ich finde es echt schade, wenn man nach Tipps und Ideen fragt so oft mit dem Punkt RTM "abgefrühstückt" wird...
Weil ich Punkte wie "Systemunabhängig" und "andere Plattformen" geschrieben habe muss man sich komplett mit dem Protokoll
auseinandersetzen?
Wie ich geschrieben habe wüsste ich eine Variante, habe aber nach einer eleganteren Methode gefragt.
Fragen scheint hier aber zu viel zu sein.Auch werden Posts anscheinend gar nicht richtig gelesen. Du schreibst in deiner vorletzten Antwort, ich solle zigbee2mqtt installieren,
das war bereits im 1. Beitrag alles beschrieben.Naja wie auch immer Thema kann aus meiner Sicht zu...
-
@Chris_78 jep bin nur über dein Beitrag drüber geflogen SRY meinerseits aber
sagte in Verständnisfrage zigbee2mqtt:
Installation und Anbindung über Mosquitto an den IOBroker MQTT-Adapter hat auch gepasst.
wozu der Mosquitto Server wenn iobroker einen eigenen mitbringt.. und da sind wir weider bei "beschäftige dich bitte mit dem Protokoll" es gibt genügen literatur dafür... Ich werde dir jetzt hier keine persönliche Session starten um mit dir die Besonderheiten wie man was anlegt und wie man sich über MQTT unterhält .. was bietet iobroker für MQTT..
es wird erwertet (zumindest von mir) dass derjenige der was auf die beine stellen will sich auch damit beschäftigt..
es gibt keine "einzelne nur die beste Methode", viele wege führen nach Rom und nur wenn man weiss wie es funktioniert kann man FÜR SICH ALLEINE die Methode finden mit der man klar kommt ..
-
@arteck said in Verständnisfrage zigbee2mqtt:
@Chris_78 jep bin nur über dein Beitrag drüber geflogen SRY meinerseits aber
sagte in Verständnisfrage zigbee2mqtt:
Installation und Anbindung über Mosquitto an den IOBroker MQTT-Adapter hat auch gepasst.
wozu der Mosquitto Server wenn iobroker einen eigenen mitbringt.. und da sind wir weider bei "beschäftige dich bitte mit dem Protokoll" es gibt genügen literatur dafür... Ich werde dir jetzt hier keine persönliche Session starten um mit dir die Besonderheiten wie man was anlegt und wie man sich über MQTT unterhält .. was bietet iobroker für MQTT..
Natürlich wäre der Mosquitto nicht unbedingt notwendig. Allerdings hatte ich hier das ein oder andere Mal über Stabilitätsprobleme des MQTT-Adapter als Broker gelesen.
Ob dies noch oder überhaupt so ist, weiß ich allerdings nicht.
Allerdings finde ich es flexibler gewisse Dinge vom Hauptsystem/ioBroker zu trennen. So könnte man relativ einfach den Mosquitto an ein anderes System anbinden oder
parallel mitnutzen.es wird erwertet (zumindest von mir) dass derjenige der was auf die beine stellen will sich auch damit beschäftigt..
Ist nicht so, dass ich mich nicht damit beschäftige, allerdings hatte ich gehofft, hier den einen oder anderen Denkanstoss bzw. Tipp zu bekommen. Dachte dazu wäre das Forum da.
z.B.
Warum liefern die Shelly-Geräte bereits eine vernünftige Daten-Struktur, während die Zigbee-Geräte alles in ein Datenfeld schreiben?
Liegt das daran, dass die Shellys native MQTT unterstützen und intern bereits ein Mapping durchführen?es gibt keine "einzelne nur die beste Methode", viele wege führen nach Rom und nur wenn man weiss wie es funktioniert kann man FÜR SICH ALLEINE die Methode finden mit der man klar kommt ..
Also ist das Forum nicht zum Fragen stellen gedacht, bzw. man darf erst Fragen stellen, nach dem man sich Wochen (oder wie lange auch immer) ALLEINE eingearbeitet hat?
Da habe ich eine andere Einstellung zu... Ich dachte man darf auch während der Lernphase Fragen stellen... -
Ich glaube hier wird aneinander vorbei geredet ?
Deine Frage ist eigentlich: erklärt mir mal wie ich zigbee 2 mqtt mit iobroker einsetzen kan, mja die Antwort ist einfach- installiere mqtt Server (was bringt dir mosquitto seperat brauchst es am Ende in iobroker
- setze dich mit den Strukturen auseinander wie man json verarbeitet und in datenpunkte schreibt
- mach dich schlau in der Logic und lies dich ein wie iobroker states verarbeitet
Alternatieve : installiere die zigbee Adapter und mache es damit, den alles was du fragst ist in dem realisiert, da stecken Stunden/Wochen und Monate Arbeit drin der source Code is opensource und sichtbar für jedermann
Wir haben bereits ein Auto, du bist noch dabei raus zu finden die Karosserie zu entwerfen möchtest aber nen kompletten Bauplan vom Auto eh Mja ... verstehst ?
-
@Dutchman said in Verständnisfrage zigbee2mqtt:
Danke Dutchman, deine Antwort hat mich weiter gebracht.
Ich glaube hier wird aneinander vorbei geredet ?
Deine Frage ist eigentlich: erklärt mir mal wie ich zigbee 2 mqtt mit iobroker einsetzen kan, mja die Antwort ist einfach- installiere mqtt Server (was bringt dir mosquitto seperat brauchst es am Ende in iobroker
Warum ich den Mosquitto einsetze habe ich ja bereits oben beschrieben. Die Daten sind auch bereits im MQTT-Adapter
im ioBroker vorhanden.- setze dich mit den Strukturen auseinander wie man json verarbeitet und in datenpunkte schreibt
- mach dich schlau in der Logic und lies dich ein wie iobroker states verarbeitet
Das sind eigentlich die entscheidenden Punkte bzw. eigentlich fast alles was ich wissen wollte. Weiter oben hatte ich nach
einer "eleganteren" Variante gefragt. Von dem was ich raus lese muß ich wohl doch den Weg "zu Fuß" nehmen.Alternatieve : installiere die zigbee Adapter und mache es damit, den alles was du fragst ist in dem realisiert, da stecken Stunden/Wochen und Monate Arbeit drin der source Code is opensource und sichtbar für jedermann
Wir haben bereits ein Auto, du bist noch dabei raus zu finden die Karosserie zu entwerfen möchtest aber nen kompletten Bauplan vom Auto eh Mja ... verstehst ?
Das fertige Auto fährt ja hier auch. Aber vielleicht gefällt mir ja das Auto mit weniger Ausstattung besser
-
@Chris_78 sagte in Verständnisfrage zigbee2mqtt:
Das sind eigentlich die entscheidenden Punkte bzw. eigentlich fast alles was ich wissen wollte. Weiter oben hatte ich nach
einer "eleganteren" Variante gefragt. Von dem was ich raus lese muß ich wohl doch den Weg "zu Fuß" nehmen.Problem ist, das wen du die manuell lösen willst ziemlich auf Niveau von Adapter Bau kommst
Man kan mit scripten objecte erstellen und Werte setzen, auch json auslesenDocu von JavaScript Adapter mal angeschaut da stehen eigentlich al diese Funktionen beschrieben
-
@Chris_78 Dein Frage hat ja nicht mit irgendwelchen Adaptern zu tun. Wenn Du über Node-Red die Datenpunkte verarbeitest, brauchst Du die Datenpunkte auch nicht zu extrahieren, sondern kannst über die JSON Node direkt auf die Werte zugreifen.
Ansonsten um aus einem JSON String separate Datenpunkte zu generieren - das wurde zum Beispiel hier schon diskutiert: https://forum.iobroker.net/topic/35018/mqtt-string-generell-aufteilen
-
@mickym said in Verständnisfrage zigbee2mqtt:
@Chris_78 Dein Frage hat ja nicht mit irgendwelchen Adaptern zu tun. Wenn Du über Node-Red die Datenpunkte verarbeitest, brauchst Du die Datenpunkte auch nicht zu extrahieren, sondern kannst über die JSON Node direkt auf die Werte zugreifen.
Ansonsten um aus einem JSON String separate Datenpunkte zu generieren - das wurde zum Beispiel hier schon diskutiert: https://forum.iobroker.net/topic/35018/mqtt-string-generell-aufteilen
Ich habe mir inzwischen ein Skript erstellt, mit dem ich die MQTT-Messages auf einzelne Datenpunkte aufsplitte. Funktioniert soweit gut.
NodeRed habe ich mir zum Testen ebenfalls mal installiert. Könnte evtl. einige Logiken von IOBroker übernehmen. Werde weiter TestenUnd danke für den Link. Das "generische" Skript sieht ebenfalls interessant aus. Muss ich mir auch etwas genauer anschauen.
-
Kurzer Zwischenstand meines "Expirementes":
Aktuell habe ich mich an NodeRed gewöhnt. Folgendes habe ich über NodeRed umgesetzt:
- Alexa Einbindung
- statt Zigbee-Adapter Nutzung von Zigbee2MQTT
- sämtlicher MQTT Traffic (Shelly und Zigbee Geräte) läuft nun über NodeRed bzw. NodeRed holt sich alles notwendige vom Mosquitto. Wichtige oder notwendige Sachen werden an IOBRoker weitergeleitet
- Folgende Adapter sind im IOBRoker nicht mehr notwendig: IOT, MQTT, Zigbee und evtl. Javascript
Einige Skripte habe ich bereits nach NodeRed umgezogen, ob ich alles auf NodeRed umziehen kann weiß ich noch nicht genau.
NodeRed läuft aktuell sehr performant und stabil.
Was haltet ihr davon, eher nur Spielerei oder doch einigermassen sinnvoll?
-
@Chris_78
hallo, ich habe versucht mit Hilfe von anderen Users eine Schaltung in NodeRed zu bekommen, jedoch erkennt meine Alexa kein Gerät. Nachdem Du ja Alexa eingebunden hast, könntest Du mir dabei helfen,
lg Oskar -
Als Erweiterung/Palette in NodeRed habe ich folgenden genutzt:
"node-red-contrib-alexa-home" (dieser funktioniert ohne Alexa-Skill und kann fast direkt genutzt werden)In Node-Red sieht das ganze dann folgendermaßen aus:
In der Function habe ich die "true"/"false" Werte aus dem Payload rausgeholt und als neuen Payload gespeichert:
if (msg.payload.on === true) { msg.payload = true; } else { msg.payload = false; } return msg;
Ansonsten ist noch wichtig, dass der Port gemappt wird (da neuere Echo Geräte den Port 80 nutzen).
Dies wird mit folgendem Befehl durchgeführt (Port 80 wird auf Port 60000 gemappt):
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 60000Falls die Änderung dauerhaft sein soll (ansonsten muss obiger Befehl nach jedem Neustart erneut durchgeführt werden):
iptables-save > /etc/iptables/rules.v4Den letzten Befehl jedoch besser noch mal auf folgender Seite abgleichen (je nach Linux-System sind leichte Abweichungen vorhanden):
https://www.poftut.com/how-to-save-and-restore-iptables-rules-permanently-in-ubuntu-centos-fedora-debian-kali-mint/Ich hoffe die Infos helfen dir weiter.