IP-Symcon goes MQTT

Ich habe ein Zigbee2MQTT Modul für IP-Symcon geschrieben.

[Modul] IPS-Zigbee2MQTT

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Das ist perfekt :slight_smile:
Danke

Ich habe es auch schon installiert jedoch komme ich nicht weiter :rolleyes:
Brauche ich dann keinen Raspi mehr mit dem CC2531 Stick? und kann den CC2531 an meinen WinPC(IPS) anstecken?:confused:

Danke Alex

Hallo Alex,

nach meinem Kenntnisstand unterstützt IP Symcon kein Zigbee über den CC2531. Mit der 5.1 ist jetzt die MQTT-Brokerfunktion gekommen. Was du brauchst, ist einen Zigbee-Coordinator der die Informationen in MQTT übersetzt und mit einem Broker (z.B. jetzt IPS 5.1) spricht. Das Ganze läuft bei mir mit einen CC2531 auf einem Raspberry mit der Software zigbee2mqtt, IPS kann natürlich auch auf Windows laufen.

Wobei die Diskussion wohl besser unter Zigbee statt MQTT laufen sollte. @paresy, entscheide du wo es besser aufgehoben ist und schiebe es dann dahin.

Gruss
Bernd

Danke für deine schnelle Info Bernd :slight_smile:

Den Raspi 3 (IP 192.168.0.198) mit CC2531 und Zigbee2mqtt hab ich schon am laufen.

Das kommt auch schon im MQTT Configurator an jedoch komme ich sonst nicht weiter?

Irgendwo hat´s da was:confused:

Danke
Alex:)

Das ließ noch mal Kais Beitrag, installiere das Modul und Stelle die Fragen dort im Thema.
IP-Symcon 5.1 goes MQTT - Seite 17
Michael

Mit meinem Modul.
Dort musst du nur das Topic angeben.

Im Screenshot siehst du das Topic 0x00158 usw.

Ich verschiebe die Beiträge morgen in den richtigen Thread. Funktioniert per Tapatalk nicht so gut.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Alex,

die Topics/Devices sollten dann langsam im MQTT-Configurator auftauchen. Dort kannst du sie auswählen und mit ERSTELLEN oder ALLE ERSTELLEN als Variablen in Symcon einrichten. Wobei du in den Variablen nur die JSON-Strings finden kannst, die du händisch zerpflücken müsstest. Mit Kai´s zusätzlichem Modul geht es dann aber doch ganz einfach.

Gruss
Bernd

Hier fehlt ein Like Button :smiley:

MQTT war das größte Highlight in 5.1 :slight_smile:

Ich bin noch nicht so firm mit MQTT. Ist es möglich MQTT auch zu einer sicheren Benachrichtung von einem entfernten Gerät zu nutzten oder funktioniert das nur im lokalen Netzwerk? Wenn man ein Gerät hat was einen per https GET an einem Webhook von der Ferne benachrichtigt, wie müsste dann der Aufbau eines PHP Moduls aussehen wenn man zusätzlich noch MQTT für das lokale Netzwerk mit einbauen will?
Der IO wäre ja der Webhook für die Geräte, wie binde ich da jetzt noch MQTT ein? Indem ich den den Webhook als Splitter setze und MQTT der IO ist?
Hat mal jemand ein Beispiel wie denn grundsätzlich MQTT jetzt in einem PHP Modul zu nutzten ist?

Das geht auch übers Internet. Um eine „sichere“ Benachrichtigung zu haben musst Du den QOS aus 2 setzen
QoS = Quality of Service:
QoS = 0: fire and forget
QoS = 1: Nachricht kommt mindestens einmal an
QoS = 2: Nachricht kommt genau einmal an
mit QoS 2 muss man aber vorsichtig sein wenn man viele Nachrichten in kurzer Zeit verarbeitet, hiermit meine ich jetzt nicht 5 pro Sekunde sondern eher 100 pro Sekunde

Beispiel hast Du z.b. hier
mosquitto php · mqtt/mqtt.github.io Wiki · GitHub

Dein WebHook muss dann zu MQTT „publishen“

Habe aber bisher mit MQTT nur bei JAVA gearbeitet und nicht wirklich bei PHP

Das Beispiel ist falsch.
In Symcon würde ich immer den MQTT Server nutzen und da mit SendDataToParent publishen!
Aber QoS ist noch nicht komplett implementiert.

Ich verstehe aber ehrlich gesagt auch nicht was du vor hast.

Grüße,
Kai

Was ist falsch am Beispiel ? es ist PHP und es ist MQTT ?

Und es läuft mit einem extra Client, der in Symcon nicht benötigt wird.
Da IP-Symcon nativ MQTT unterstützt.

Das Beispiel ist vielleicht nicht falsch, aber mit dem MQTT Server benötigt man keinen extra Broker mehr. :wink:
Wenn Fonzo sich mit einem anderem Broker verbinden will, dann empfehle ich auch eher den MQTT Client (https://github.com/Schnittcher/IPS-KS-MQTT) für IP-Symcon zu nutzen, so lange es noch keinen offiziellen Client von Symcon gibt.

Es wurde in den letzten Jahre so viel darüber diskutiert, wieso IP-Symcon kein MQTT unterstützt, jetzt wird es unterstützt, dann kann man es auch nutzen. :slight_smile:

Grüße,
Kai

Ja ok ich mache dann also ein ConnectParent? Auf welche GUID? Ich habe aber noch nicht verstanden wie das verknüpft sein muss. Der IO ist doch ein Serversocket, dann kommt der MQTT Splitter das würde bedeuten ich kann mich mit einem PHP Modul ja nur unterhalb des Splitters hängen oder?

Das heisst dann das man das lokal nutzten kann aber warten müsste auf 5.2, damit das auch sicher mit dem Internet funktioniert, habe ich das richtig verstanden?

Nun es geht um eine Kamera Steuerung bzw. Benachrichigung. Das jetzige Modul bekommt eine Benachrichtigung von der entfernten Kamera über IP-Symcon Connect auf einen Webhook wenn z.B. ein Alarm in der Kamera an Symcon gesendet wird.
Der Aufbau des PHP Moduls ist zur Zeit also so:
IO Webhook für Kamera
|


| |
Kamera 1 Kamera 2

Alle Kameras (Geräte) werden also über einen Webhook benachrichtigt.

Gesteuert wird das Ganze per HTTP Befehlen. Der Hersteller bietet nun auch MQTT an, das möchte ich parallel zu der bestehenden Kommunikation nutzten, zumindest bis die gleichen Möglichkeiten gegeben sind auch MQTT sicher über IP-Symcon Connect zu nutzten.
Es soll also auf Dauer eine sichere Kommunikation zwischen einer Kamera im Internet und Symcon möglich sein. Die Frage ist nun also wie muss so ein PHP Modul aufgebaut sein das sowohl einen Webhook benutzt als auch parallel MQTT?

Das zweite Problem was ich habe ist das MQTT nur von neueren Geräten unterstützt wird. ConnectParent greift ja aber im Create Teil. Wenn ich aber erst den Kamera Typ auswähle, kann ich dann ja auch erst entscheiden ob MQTT überhaupt eine Option darstellt, ansonsten muss die Kamera per HTTP gesteuert werden.

Ja ok ich mache dann also ein ConnectParent? Auf welche GUID? Ich habe aber noch nicht verstanden wie das verknüpft sein muss. Der IO ist doch ein Serversocket, dann kommt der MQTT Splitter das würde bedeuten ich kann mich mit einem PHP Modul ja nur unterhalb des Splitters hängen oder?

Im ersten Beitrag steht:

GUID vom MQTT Server (Splitter): {C6D2AEB3-6E1F-4B2E-8E69-3A1A00246850}

Also machst du folgendes:

$this->ConnectParent('{C6D2AEB3-6E1F-4B2E-8E69-3A1A00246850}');

Wie willst du dich sonst MQTT nutzen? Ich verstehe nicht was du sonst vor hast?

Das heisst dann das man das lokal nutzten kann aber warten müsste auf 5.2, damit das auch sicher mit dem Internet funktioniert, habe ich das richtig verstanden?

Dazu kann @paresy sicherlich mehr sagen.

Nun es geht um eine Kamera Steuerung bzw. Benachrichigung. Das jetzige Modul bekommt eine Benachrichtigung von der entfernten Kamera über IP-Symcon Connect auf einen Webhook wenn z.B. ein Alarm in der Kamera an Symcon gesendet wird.
Der Aufbau des PHP Moduls ist zur Zeit also so:
IO Webhook für Kamera
|


| |
Kamera 1 Kamera 2

Alle Kameras (Geräte) werden also über einen Webhook benachrichtigt.

Gesteuert wird das Ganze per HTTP Befehlen. Der Hersteller bietet nun auch MQTT an, das möchte ich parallel zu der bestehenden Kommunikation nutzten, zumindest bis die gleichen Möglichkeiten gegeben sind auch MQTT sicher über IP-Symcon Connect zu nutzten.
Es soll also auf Dauer eine sichere Kommunikation zwischen einer Kamera im Internet und Symcon möglich sein. Die Frage ist nun also wie muss so ein PHP Modul aufgebaut sein das sowohl einen Webhook benutzt als auch parallel MQTT?

Anscheinend hat die Kamera einen eigene Broker, dann müsstest du zur Zeit den MQTT Client nutzen, da IP-Symcon nur einen MQTT Server zur Verfügung stellt.

Ich würde da glaube ich zwei Module raus machen.

Grüße,
Kai

Das Problem mit dem Gerätetyp könnte man wohl über einen Konfigurator lösen in dem man das Modell auswählen muss. Dann würde der Konfigurator das Gerät mit den übergeordneten Instanzen anlegen. Unklar bleibt dennoch für mich wie man bis zur 5.2 es schafft sowohl einen Webhook als auch MQTT in einem Gerät zu nutzten. Der Nutzer musss ja dann entscheiden können ob er ausschließlich lokal kommunizieren will oder über das Internet.

Wie gesagt, den MQTT Server kannst du eh nicht nutzen, da die Kamera einen eigenen MQTT Broker zur Verfügung stellt.
So zumindest sieht es in der Doku aus.

Grüße,
Kai

Das heisst dann das man das lokal nutzten kann aber warten müsste auf 5.2, damit das auch sicher mit dem Internet funktioniert, habe ich das richtig verstanden?

QoS hat nichts mit dem Internet zu tun, auch lokal können Pakete verloren gehen auch wenn die Chance natürlich geringer ist das was daneben geht. Im allgemeinen funktioniert aber auch QoS 0 ganz gut. Ich verarbeite da z.B. bis zu 700 Nachrichten pro Sekunde mit QoS 0 bei einer Server/Serververbindung übers Internet, habe jetzt aber nichts eingebaut was evtl fehlende Nachrichten trackt.

Das ganze wird dann aufbereitet und es werden ca 5 Nachrichten pro Sekunde über einen weiteren Broker an die Clienten geschickt, auch das funktioniert mit QoS 0 über den Heim DSL Anschluss zum Server ohne erkennbare Probleme. Hier ist aber sicherheitshalber ein Timeout eingebaut was gewisse aktivierte Sachen nach einer Zeit wieder deaktiviert falls dazu keine Nachricht kam.

Notfalls (ohne QoS 2) schickst Du die Nachricht halt 2-3 mal hintereinander und beim Empfänger musst Du dann halt Nachrichten innerhalb von der Doppelsendezeit (z.b. 1 Sekunde) raus filtern. In Deinem Fall mit der Kamera wird das aber wohl nicht gehen da die Kamera ja wohl sendet.

Kommt denn zur 5.2 auch ein MQTT Client oder bleibt es vorraussichtlich erst mal beim MQTT Server? Auf Dauer bräuchte man dann ja beides oder?

Die Frage kann ich dir nicht beantworten.
Aber schau mal in der Kamera, wie MQTT dort eingerichtet wird. Evtl. poste mal Screenshots, vielleicht ist es ja doch so, dass die Kamera sich mit einem Broker / Server verbinden kann.

Bleibt trotzdem noch die Frage mit dem Webhook IO, wie sieht der IO denn aus? Hast du da schon etwas online?

Grüße,
Kai