IP-Symcon goes MQTT

Hi,
ich habe es bei mir (Docker auf Synology mit Daten auf SSD) auch mal aktiviert und die CPU Last ist von 7 auf <1% gesunken. Es zwar nix mit MQTT direkt zu tun aber die Schwupdizität erhöht sich gerade auf schwächeren Geräten enorm. Anbei CPU Last vom Docker-Plugin.

btw. hat OPCache bekannte negative Nebeneffekte?

Ralf

Also bei mir laeuft nur Tasmota ueber MQTT. 7 Geraete insgesamt.
Ansonsten laeuft bei mir auf der VM nur noch ein Mosquitto auf nem anderen port.
Mit diesem Broker sind aber keine Geraete verbunden. Den hatte ich nur installiert um diesen Fehler zu ueberbruecken.

Edit: opcache ist bei mir an

Bei mir laufen :
18 x Tasmota
10 x Inline
10 x Shelly
mit dem IPS internen MQTT auf einem TinkerboarS (etwas mehr Leistung als der Pi3).
OPCache ist aktiv.

Allerdings habe ich einen 2 MQTT Server mit einem neuen Port aufgemacht, und da ein ShellyEM reingepackt. Denn das Erzeugt ne Menge Traffic und ich hatte das Gefühl, der anderen Dinge wurden träge. Das ShellyEM sendet teilweise im Sekundentakt die Leistungswerte,

Ich muss mich nochmals melden…
Nachdem ich ja vor 2 Tagen den OPCache aktiviert habe, habe ich das Gefühl ein neues Symcon zu haben. Ich habe keinerlei Verzögerungen beim Schalten von MQTT Geräten, keinerlei Aussetzer bei der Abfrage von Werten per MQTT mehr, das ganze System läuft deutlich schneller…
ich bin echt überwältigt…

Danke für eure Hilfe.

btw: Ich habe
5 Shellys
22 Tasmota Devices
2 Rockrobo’s
1 Robonect Modul
1 EMS ESP Gateway
3 selbstgebaute Anzeigetafeln
2 Kameras
die alle über MQTT kommunizieren, alles auf einem Tinkerboard mit IPS 5.5 (Ninja)

Also ich habe gestern den OPCacheSupport aktiviert und bisher schaut es bei meinen 25 Shellys auch noch ganz gut aus!
Ich werde das aber weiter beobachten, weil es vormals auch ganz plötzlich anfing sehr träge zu werden und zwischendurch auch wie Schmitz Katze lief…

Gibt es denn eigentlich eine Möglichkeit per MQTT verschickte Bilder in IPS anzeigen zu lassen?
In der angelegten String Variable sieht das recht binär aus.

Bilder werden häufig base64 kodiert. Bei Änderung der mqtt Variable den Inhalt an eine Medieninstanz weiterleiten.
https://www.symcon.de/service/dokumentation/befehlsreferenz/medienverwaltung/ips-setmediacontent/

Hallo Tobias,
Danke für den Tipp. Leider scheint das eben kein base64 String, sondern Binärdaten zu sein.
Mal ein Auszug: ‹훿ŽÓ@Æwï

Ich habe die von dir genannte Funktion aber mal mit einem extra umgewandelten Bild probiert und das funktioniert.

Welches Gerät sendet denn das Bild? Ich habe mal 10 Sekunden google befragt. Dort kommt man immer wieder auf den Schluss, das Bilder base64 codiert übertragen werden. Das hieße du würdest die übermittelten Daten einfach so in den Image Befehl von Symcon stopfen. Wenn wir jetzt davon ausgehen, dass das noch binärdaten sind, musst du erst base64 drüber laufenlassen, damit Symcon sie versteht.
Alternativ schicke doch mal nicht einen Auszug, sondern ein tatsächliches Bild hier mit.

Hallo Tobias,

es handelt sich um das Bild Raumbild eines Roborock Staubsaugers welches von Valetudo RE übermittelt wird. Ich denke mal ich werde mir da mal länger für Zeit nehmen müssen, da dies vor dem base64 kodieren noch extra verarbeitet werden muss. Einfach so kodieren hab ich mal probiert, hat aber wie vermutet nichts gebracht.
Ein Ansatz dafür wäre wohl das hier: GitHub - alexkn/node-red-contrib-valetudo: A Node-RED node to convert Valetudo map_data to a png image wich can be send to a dashboard template node.

Hallo zusammen,

ich habe gerade ein Update auf 5.5 auf meinem Raspberry gefahren und und erfreulicherweise festgestellt, dass MQTT jetzt Nativ eingebunden ist.

Ich habe mich gestern gleich dran gesetzt und mit einem meiner ESPs (ich fahre die alle im Deep-Sleep Modus, nach 5 bis 10 Minuten wachen die auf und Publishen bzw. Subscriben Werte).
Bisher verwende ich das Modul von Kai und läuft tadellos :slight_smile:

Jetzt habe ich folgende Fragen zum nativen MQTT:

  1. Kann man aus Symcon heraus einen Publish machen mit QOS = 1?

Für den Publish wird hier im Forum geschrieben:
–> MQTT Device Instanz erstellen.
–> RequestAction($id_der_variable, „DeinTollerWert“);

  1. Was ist mit MQTT Device konkret gemeint - ich vermute MQTT Client Device?.

Denn wenn ich mit eine Instanz hinzufüge über „Rechtsklick - Objekt hinzufügen - Instanz“, dann Schnellfilter MQTT eingeben erscheint folgendes zur Auswahl (siehe auch Bild im Anhang):

  • MQTT Client Configurator
  • MQTT Client Service
  • MQTT Server Configurator
  • MQTT Server Device
  • und noch 3 Splitter
  1. Und zur RequestAction Funktion: Nimmt man die ID des erstellten „Device“ oder die ID des darunter erstellten „Value“

Danke an Euch für die Antworten / Erklärungen.

Gruß,
Michael

Nein. QoS 1+2 wird beim Senden aktuell noch nicht unterstützt.
Siehe hier: Geräteliste — IP-Symcon :: Automatisierungssoftware

paresy

Hallo Persey,

ok und Danke zum QOS.

Kannst Du mir noch den Tip geben zu Frage 2 und 3?

MQTT Device Instanz erstellen --> RequestAction($id_der_variable, „DeinTollerWert“);

  1. Was ist mit MQTT Device konkret gemeint - ich vermute MQTT Client Device?.
  2. Und zur RequestAction Funktion: Nimmt man die ID des erstellten „Device“ oder die ID des darunter erstellten „Value“.

RequestAction bezieht sich grundsätzlich auf die Variable, nicht auf die Instanz.
Du erstellst ein neues Gerät vom Typ MQTT Client Device, das hat genau eine Eigenschaft (das Topic) und ist als normale Gerät daran zu erkennen, dass es eben kein Splitter und kein Konfigurator ist (anderer Teil des Objektbaums).

So ganz blöd: Du hast die richtigen Schlussfolgerungen schon selber gezogen. Es einfach auszuprobieren ist eine Sache von wenigen Sekunden. HIer auf Antworten zu warten, dauert deutlich länger.

Hallo Tobias,

ich nehme den kleinen Schubs an mich in die richtige Richtung auf :wink:
Ich werde es so versuchen.

Gruß,
Michael

Hallo an Parsey, Tobias,

Danke Euch, hat geklappt mit dem MQTT-Publish.
Ich war etwas verwirrt wegen den unterschiedlichen Konfigurationsmöglichkeiten.
Dem MQTT Client Device kann man als Gateway einen MQTT-Client bzw. einen MQTT-Server zuweisen (beides Splitter) zuweisen. Den Splittern wiederum unterschiedliche Schnittstellen (Host + Port).

Da eröffnen sich ja einige Möglichkeiten…
Ich werde dann mal loslegen was man so machen kann :slight_smile:

Also wenn der Publish mit QOS=1 dann in den nächsten Versionen aufgenommen wird, dann werde ich alles umstellen.

Besten Dank an Euch.

Gruß,
Michael

Ich nutze den IP-Symcon MQTT-Server zur Kommunikation mit meinen ESP32, die mit ESPHome programmiert sind. Im Prinzip funktioniert das auch sehr gut.
Nun möchte ich einen bestimmten String auf ein definiertes Thema senden und komme nicht weiter:

Hier habe ich ein MQTT Server Device. Dort ist das Thema festgelegt. Der Befehl kommt leider nicht an, da unter einem anderen Topic (MQTT/ESP10/light/rgb-led/state) gesendet wird. Auch wird statt einem String ein JSON verschickt.

Hat jemand eine Idee, wo mein Denkfehler ist?

Ich hatte gerade ein ähnliches Problem.
Hast du in deinem YAML den betreffenden Port bzw. Section auf „internal: true“ gesetzt?
Dann wurde bei mir STATE gar nicht gesetzt sondern nur im xxx/debug angezeigt.

Vielen Dank für deinen Hinweis mit Internal. Das kannte ich gar nicht und probiere es heute Abend gleich mal aus.

Nach etlichen weiteren Versuchen habe ich festgestellt, dass das gesendete Topic vom Inhalt des Textes abhängt. Sende ich „BLAU“ erscheint das o.a. Topic im JSON-Format. Schicke ich aber z.B. „LED_BLAU“, dann wird das Topic verwendet, dass in IPS hinterlegt ist.
Wahrscheinlich ist da noch eine Logik im Hintergrund. Scheint auch neu zu sein, denn vor einiger Zeit als ich probiert habe WS2812-LED aus IPS anzusteuern, hatte ich dieses Problem nicht.

Vielen Dank noch mal und VG
Torsten

Hm - das mit „internal“ ist auch abhängig davon ob du zeitgleich einen „Name“ vergeben hast. Dann wird das tw. automatisch gesetzt. Hab mich da lange durchgebissen. Und sende jetzt MQTT manuell - da ich für meine Zwecke keine Lösung finden konnte.
Aber als Hilfestellung:
Da wurde ich aus deinen Angaben nicht ganz schlau.
Ich nehme an der ESP32 sendet MQTT ?
Ich verwende WIN Clients.
Dann könntest doch dort mal den MQTT-Explorer installieren und den ESP-32 dorthin senden lassen.
Da sieht man sehr schön was wann ankommt.