MQTT Client

Hallo Zusammen,

ich brächte etwas Hilfe bei den MQTT Clients. Vorneweg, ich nutze weder Tasmota noch Sonoff. Ich habe mir mit der Pimatic eine Schnittstelle zu den günstigen 433Mhz Komponenten geschaffen.

Den MQTT Server habe ich bereits laufen und die Pimatic sendet schon ordentlich zu MQTT Server.

Ich habe dann mal die beiden Module IPS_MQTT (GitHub - thomasf68/IPS_MQTT: MQTT Modul für IP-Symcon 4.1) und IPS-KS-MQTT (GitHub - Schnittcher/IPS-KS-MQTT: MQTT Modul für IP-Symcon 4.1) ausprobiert.

Bei dem IPS_MQTT kann ich auch im debug mode keine Daten sehen. Mit dem IPS-KS-MQTT sehe ich die Daten des MQTT Servers (Siehe Anhang)

Leider verstehe ich nicht, wie ich auf diese Daten zugreifen kann. Kann mir da jemand helfen?

Gruß,
Dietmar

Einschalten:

TXT: 12/11/2017 14:01:17.00 | ReceiveData | Data arrived:{„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:„0 \u0000\u0003RF2True“}
TXT: 12/11/2017 14:01:17.00 | ReceiveData | 30|09|00|03|52|46|32|54|72|75|65|
TXT: 12/11/2017 14:01:17.00 | receive | Fetching: 9
TXT: 12/11/2017 14:01:17.00 | receive | Fetching: 00|03|52|46|32|54|72|75|65|
TXT: 12/11/2017 14:01:17.00 | message | Topic: RF2, Msg: True
TXT: 12/11/2017 14:01:17.00 | SendDataToChildrenPara | MQTT_GET_PAYLOAD
TXT: 12/11/2017 14:01:17.00 | SendDataToChildren | {„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:"{„TOPIC“:„RF2“,„MSG“:„True“,„SENDER“:„MQTT_GET_PAYLOAD“}"}

Auschalten:
TXT: 12/11/2017 14:01:23.00 | ReceiveData | Data arrived:{„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:„0
\u0000\u0003RF2false“}
TXT: 12/11/2017 14:01:23.00 | ReceiveData | 30|0A|00|03|52|46|32|66|61|6C|73|65|
TXT: 12/11/2017 14:01:23.00 | receive | Fetching: 10
TXT: 12/11/2017 14:01:23.00 | receive | Fetching: 00|03|52|46|32|66|61|6C|73|65|
TXT: 12/11/2017 14:01:23.00 | message | Topic: RF2, Msg: false
TXT: 12/11/2017 14:01:23.00 | SendDataToChildrenPara | MQTT_GET_PAYLOAD
TXT: 12/11/2017 14:01:23.00 | SendDataToChildren | {„DataID“:"{018EF6B5-AB94-40C6-AA53-46943E824ACF}",„Buffer“:"{„TOPIC“:„RF2“,„MSG“:„false“,„SENDER“:„MQTT_GET_PAYLOAD“}"}

Hallo,

mein Modul ist nur eine Anpassung, damit mein Tasmota Modul funktioniert.
Das Modul ansich ist von Thomas68.
Versuch lieber das Modul von Thomas zum laufen zu bekommen.
Das sind doch Beispiele bei, schau dir die nochmal genau an, oder hast du das schon getan? Wenn ja was für Fehler bekommst du?

Grüße,
Kai

Hallo Kai,

danke für Deine Antwort. Das Modul von Thomas68 habe ich mir auch angesehen. Zumal ich ja auch gelesen habe, das dein Modul eine Anpassung ist. Leider komme ich damit nicht soweit wie mit deinem angepassten Modul.

Weder in der damit erzeugten MQTT Client Splitter Instanz noch in der MQTTClient IO Instanz kann ich Daten im Debug Mode beobachten.

Gruß,
Dietmar

Hab mit nochmal das Modul von Thomas68 angesehen.
Funktioniert jetzt bei mir.

Gruß,
Dietmar

Hi schau dir mal bitte mqwarn an…

Hallo,

was soll das sein?
Ich finde dazu nichts.

Grüße,
Kai

Hallo, habe genau das selbe beobachtet mit den beiden Modulen - nur die modifizierte Version bringt mir Daten… Was hat du denn jetzt gemacht das es bei dir funktioniert?

Zur Auswertung der Daten habe ich an die Instanz eine Registervarable gehängt, diese triggert ein Script zur Analyse der Daten… klappt einwandfrei.

Gruss Michael

Hallo Michael,

ich hatte das auch schon mit Kais Modul und Registervariable ausprobiert. Ging auch war aber (fand ich) nicht schön.
Anyway. Hab jetzt das Modul von Thomas laufen. Bei meinem ersten Versuch war die I/O Instanz immer wieder discconnected. Keine Ahnung warum.

Jetzt habe ich das Modul installiert und ich konnte im Debug-Monitor der Splitter Instanz den Timer sehen:

Danach habe ich ein Script erstellt, welches die Subscription startet. Wobei natürlich die Instanz angepasst werden muss:

<?

MQTT_Subscribe(56529 /*[MQTT Client]*/, "#", 0);

?>

Danach konnte ich auch die Meldungen der Pimatic im Debug-Monitor sehen:

Nun habe ich das Handler script von Thomas installiert https://raw.githubusercontent.com/thomasf68/IPS_MQTT/master/MQTT_clienet/IPS%20Scripte/Handel.php

Dabei in der Zeile 46 die ID der Splitter-Instanz eingetragen. Wenn ich das richtig verstehe, wird hier jedesmal wenn es zu einem Connect zu dem MQTT Server kommt die Subskription gestartet.

Da ich keinen Variablentyp übermittelt bekomme, funktioniert das automatische Anlegen der Variablen nicht. Ich bekomme aber nur Variablen vom Typ bool übermittelt und habe daher folgendes vereinfachtes Handle-Script verwendet:

<?

    if($_IPS['SENDER']=='MQTT_GET_PAYLOAD'){

            $msg = $_IPS['MSG'];
			$topic = $_IPS['TOPIC'];
            $id_parent = 27349 /*[var\pimatic\MQTT]*/;
			$id = @IPS_GetObjectIDByName($topic, $id_parent);
                        if($id===false){
						$id = IPS_CreateVariable(0); 
                        IPS_SetName($id, $topic); 
                        IPS_SetParent($id, $id_parent);
                		}
                SetValue($id,$msg); 
}
    

    if($_IPS['SENDER']=='MQTT_CONNECT'){
            $topic = "#";														
            MQTT_Subscribe(56529 /*[MQTT Client]*/, $topic, 0);	  // ID Anpassen !!!
    }

?>

Vielleicht hilft dir das ja.
Gruß,
Dietmar

…mmhh… das muss ich mir demnächst mal in Ruhe ansehen. Danke für die Info, melde mich dann sicher noch mal.
Gruss Michael