MQTT Server Device - Thema in Script abfragen

Hallo,

ich habe ein MQTT Server Device und möchte in einem PHP-Script das Thema von diesem abfragen. Dieses Script wird vom Webfront aufgerufen, wenn ich einen Relais-Ausgang schalten möchte.

Ich finde dazu aber leider keine Funktion. Bitte um eine Info, wie ich diesen Wert in eine Variable bekomme.

vielen Dank
Lg
Wolfgang

Mir ist nicht ganz klar, was du hast. Wenn du ein MQTT Server Device, z.B. über den MQTT Configurator angelegt hast, dann ist der Wert dort bereits in einer Variablen.

Z.B.
grafik

Die Variable kannst du mit den Standardfunktionen (GetValue…) im Script nutzen.

Hallo Ralf,

ich habe einen RaspberryPi 3 mit PiFaceDigital2 IOs (derzeit 8 Eingänge + 8 Ausgänge, aber auf bis zu 32 + 32 erweiterbar) + 3 Stk 1-Wire DS18B20 Sensoren, die ich mit MQTT an das Symcon angebunden habe.
Das Empfangen im Symcon funktioniert schon wunderbar. Die Digital- und Analogwerte sende ich als JSON Wert an das Symcon mit einem C# Programm.
Alle IOs und Sensoren schicken pro Rapsi an das gleiche Thema (siehe Bild unten).
Dadurch werden alle IOs, die lokal am Raspi vorhanden sind, automatisch im Symcon als Variable angelegt und ich muss nicht zig Variablen extra abonnieren.

Da ich im Endausbau von diesem Gerät mind. 4 Stk. im Einsatz habe, möchte ich aber gerne nur 1 ActionScript für das Webfront für alle Relais-Ausgänge Erstellen.
Dazu brauche ich das Thema vom Mqtt Server Device , damit ich den Schaltbefehl an das richtige Gerät senden kann.

lg Wolfgang

noch ein Nachtrag:
ich sende auf das Thema: Development/RaspberryPI/Test1
z.B. folgende Werte. (1 Zeile = 1 Mqtt Nachricht).

{"CpuTemperatur":53.0}
{"RandomTestValue":40.082}
{"Uptime":"00.01:39:34"}
{"RandomTestValue":37.697}
{"Uptime":"00.01:40:35"}
{"RandomTestValue":38.389}
{"1Wire_28-0516869105ff":23.4}
{"Uptime":"00.01:41:35"}
{"RandomTestValue":40.554}
{"CpuTemperatur":53.0}
{"Uptime":"00.01:42:35"}
{"RandomTestValue":40.861}
{"Uptime":"00.01:43:36"}
{"RandomTestValue":40.868}
{"Uptime":"00.01:44:36"}
{"RandomTestValue":39.139}
{"Adr_0_DigitalIO_Input2":false}
{"Adr_0_DigitalIO_Input5":false}
{"Adr_0_DigitalIO_Input6":false}
{"Adr_0_DigitalIO_Input3":false}
{"CpuTemperatur":54.0}
{"Adr_0_DigitalIO_Input1":false}
{"Adr_0_DigitalIO_Input7":false}
{"Adr_0_DigitalIO_Output2":false}
{"Uptime":"00.01:45:36"}
{"Adr_0_DigitalIO_Output3":false}
{"RandomTestValue":37.793}
{"Adr_0_DigitalIO_Output6":false}
{"Adr_0_DigitalIO_Input4":false}
{"Adr_0_DigitalIO_Output7":false}
{"Adr_0_DigitalIO_Output8":false}
{"Adr_0_DigitalIO_Output1":false}
{"DigitalIO":}
{"Adr_0_DigitalIO_Input8":false}
{"Adr_0_DigitalIO_Output4":false}
{"Adr_0_DigitalIO_Output5":false}

Du möchtest aus der Instanz „MQTT Server Device“ das „Thema“ haben, das gibt es leider nicht, soweit ich weiß.

grafik

Das würde ja eigentlich zu IPS_GetInstance oder IPS_GetObject gehören, wird dort aber nicht mit ausgegeben.

Hallo Ralf,
ja, das hab ich leider auch schon alles ohne Erfolg ausprobiert.
Wäre super, wenn das zumindest beim IPS_GetObject mitgeliefert werden würde. ich werde das halt vorerst mal als fixen string in mein Script eintragen.
lg
Wolfgang

Du könntest ein Array in deinem Script pflegen, in dem du die InstanzID und das Thema manuell pflegst und dir das Thema dann aus dem Array holst :wink: . Das wäre ja EInmalaufwand, da die Topics sich nicht ändern sollten.

So mache ich das für ein paar andere/ähnliche Aktivitäten.

Wobei ich gerade sehe, das der Variablenname „Adr_0_DigitalIO_Input3“ doch den wichtigsten Teil von Topic enthält, eventuell kannst du den mit verwenden.

Hallo Ralf,
das ist eine gute Idee. Ich werde aber das Thema einfach als weiteren Datenpunkt vom Client ans Symcon schicken. Dann hab ich das immer aktuell und muss auf nichts aufpassen.
Vielen Dank für deine Hilfe und Ideen.
lg
Wolfgang

das ist dann die einfachste Lösung, das Symcon MQTT Konzept ist da halt nicht ganz optimal :wink: .