[Modul] MQTTSync

Wenn ich auf Variablen senden klicke, dann bekomme ich folgende Meldung. Eine bool Variable und ein Script im Server Konfigurator.
beta Version 1.1

Ich habe den Post mal in den richtigen Thread verschoben.
Wenn du im Server die Variablen oder Instanzen angelegt hast, welche du synchronisieren möchtest, musst du die Konfiguration zum Client senden, danach die Variablenprofile und dann die Variablen.

sync.png

Grüße,
Kai

Kannst du mir mal die Konfiguration zeigen?

Grüße,
Kai

Vorhin alles wieder gelöscht. Jetzt neu angelegt und erscheint direkt. Weiss nicht was ich anders gemacht habe.

Ich synce jetzt ein Dummy Modul.
Darunter eine Variable. Wird gesynct. Aber nur in eine Richtung. Server pusht zu Client.
Das Script das auch darunter liegt aber nicht.

Das geht also nur für Variablen.

Richtig?

Danke, Sebastian

Zur Zeit werden nur die Variablen synchronisiert.
Wenn diese Variablen aber Aktionen haben, solltest du diese auf dem System auch ausführen können.

Grüße,
Kai

Hallo Kai,

da meine Fragen hier: MQTT für Dummies eventuell untergegangen sind, füge ich diese hier mal an. Gehören ja eigentlich auch hier her.

  1. Problem mit doppelten Variablen. Siehe hier: https://community.symcon.de/t/mqtt-fuer-dummies/123302/7?u=timloe

  2. Ich habe mal weiter mit der Beta-Version getestet. Ist es möglich als Namen der Instanz, die der Client anlegt, das MQTT-Topic zu verwenden? Bei mir nimmt der Client die Namen der Variablen der Server-Seite. So habe ich jetzt auf der Client-Seite 32x LOW_BAT und kann so nicht mehr gut unterscheiden woher das kommt.

  3. Wie bekomme ich die Zustände zurück. Beispiel:

  • Variable auf Server-Seite wird auf true geschaltet
  • True kommt auf der Client-Seite in der Variable an

Was muss ich nun tun, damit:

  • wenn ich auf der Client-Seite die Variable wieder auf false schalte
  • diese auch auf der Server-Seite auf false geht

Muss ich Server/Client nochmals „umgedreht“ anlegen? Oder geht das eventuell anders Das ist mir nicht ganz klar. Wäre schön wenn Du da für mich etwas Licht ins Dunkel bringen könntest.

LG
Tom

Hallo Kai,

leider bekomme ich den „MQTT Sync Client Configurator“ nicht erstellt. Der Sync Server geht.

<br />
<b>Warning</b>:  Modul mit der GUID {EE0D345A-CF31-428A-A613-33CE98E752DD} nicht gefunden in <b>C:\ProgramData\Symcon\modules\.store\info.schnittcher.info.ips.mqttsync\MQTTSyncClientConfigurator\module.php</b> on line <b>11</b><br />
 (Code: -32603)

Tom

@KaiS Hast Du eine Idee warum ich den Configurator nicht erstellen kann?

Kannst du mal die Beta Version nutzen?

Grüße,
Kai

Mit der Version aus dem Beta-Kanal kann ich den Configurator erstellen. Auf der Client-Seite werden einige Variablen doppelt erstellt.

So sieht es auf der Server-Seite aus:
image

Der Client erstellt daraus:
image

Liegt bestimmt an der Benennung. Kannst Du das ändern?

Nun ist mir noch nicht ganz klar, was muss ich machen um bei einer Änderung der Variable auf der jetzigen Client-Seite den Wert in die dazugehörige Variable auf der Server-Seite zu bekommen?

LG
Tom

Da scheint es wirklich einen Bug zu geben.
Es wird komplett synchronisiert, das heißt, auch Variablen Aktionen, wenn du auf der Serverseite keine Aktionen hast, dann kannst du auf der Client Seite natürlich nichts verändern.

Grüße,
Kai

@KaiS
Hier verstehe ich eben nicht ganz was zu tun ist…

Beispiel:

  • Variable auf Server-Seite wird auf true geschaltet
  • True kommt auf der Client-Seite in der Variable an

Was muss ich nun tun, damit:

  • wenn ich auf der Client-Seite die Variable wieder auf false schalte
  • diese auch auf der Server-Seite auf false geht

Das ist mir nicht ganz klar. Wäre schön wenn Du da für mich etwas Licht ins Dunkel bringen könntest.

LG
Tom

@KaiS
Hast Du einen Tipp zu o.g. Szenario?

Ich habe mal weiter mit der Beta-Version getestet. Ist es möglich als Namen der Instanz, die der Client anlegt, das MQTT-Topic zu verwenden? Bei mir nimmt der Client die Namen der Variablen der Server-Seite. So habe ich jetzt auf der Client-Seite 32x LOW_BAT und kann so nicht mehr gut unterscheiden woher das kommt.

LG
Tom

Das Modul ist zur Zeit nur dafür ausgelegt, dass du Geräte synchronisieren kannst oder Variablen, welche Variablenaktionen besitzen. Wenn du dir selbst Variablen anlegst und diese synchronisieren willst, dann benötigt diese Variable eine Aktion.

SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);

Grüße,
Kai

In der aktuellen Beta Version sollte nun in Klammern das MQTT Topic stehen.

Das Problem sollte auch behoben sein.

Grüße,
Kai

So ich habe die Beiträge alle in diesen Thread verschoben.
Bitte teste nun mal alles.

Grüße,
Kai

Passt! Vielen Dank!

Macht es leider bei mir nicht. Es gibt auf der Serverseite eine String-Variable mit Aktionsskript. Diese wird auf der Client-Seite ordentlich angelegt (jedoch hier ohne Aktionsskript). Ändere ich nun die Variable auf der Client-Seite, kommt der neue Wert auf der Server-Seite nicht an. Auch wenn ich händisch der Variable auf der Client-Seite auch einen Aktionsskript verpasse.

LG
Tom

Du darfst die Variable nicht über die Console ändern, sondern musst diese über das Webfront ändern oder mit RequestAction.

Grüße,
Kai

Und schon geht es. Danke!!!

Mir ging es ähnlich wie Tim, dass ich da am Anfang ganz schön gerätselt habe, welche Seite jetzt Server und welche Seite Client ist. Dann musste ich auch komischerweise viel probieren und plötzlich ging es. Wahrscheinlich hatte ich mich da mit einem Denkfehler verrannt. Jetzt läuft es jedenfalls.

Eine Verständnisfrage habe ich jedoch noch. Auf dem Client (Ziel-IPS) werden ja neue Variablen angelegt, wo die übertragenen Werte hingeschrieben werden (zumindest ist das mein bisheriger anfänglicher Erkenntnisstand). Da ich vor dem MQTTsync die ganze Schnittstelle von einem RasPi per ser2net übertragen habe und somit auf dem Ziel-IPS den Splitter nur auf die neue I/O-Instanz umhängem musste und die ganzen Variablen danach so belassen konnte, wäre das mit neuen Variablen sehr aufwändig.
Gibt es die Möglichkeit, per MQTTsync die ganze Schnittstelle (z.B. serieller Port oder Deconz-Adapter) ins Ziel-System zu pushen und dort an den vorhandenen Splitter zu übergeben?