IP-Symcon goes MQTT

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.

Seit ich ESPHome entdeckt habe, habe ich alle meine ESP32 auf dieses System umgestellt. Im wesentlichen sind dort verschiedene Sensoren angeschlossen. Diese senden als Clients ihre Werte per MQTT an den IPS-Broker. In einigen Fällen sende ich aber auch von IPS mittels MQTT an die ESP32 um Relais zu schalten oder jetzt neu eine verschieden farbige Status-LED zu steuern.
MQTTfx habe ich installiert. Bin da aber auch noch am probieren…

Hallo,

ich habe eine nette Spielerei heute zufällig gefunden - Anwesenheitserkennung per ESP32 + MQTT:

Basierend auf dem Video von „verdrahtet“. und der Webseite von Espresense musste ich das direkt mal testen und das eröffnet coole Spielereien.

Ich hab mein iPhone eingetragen und das wird bereits problemlos erkannt und auch entsprechend lassen sich dann über die „Distance“ Werte sicherlich schöne Aktionen in IPS umsetzen - ala „kommen“, „gehen“.

Was wird benötigt:

  • ESP32. mit integrierten WLAN und Bluetooth ( ich nutze hier einen alten ESP32 Dev Kit C ), weils der einzige ist, den ich mit Bluetooth habe
  • die Firmware der obigen Webseite
  • etwas Konfig in der WebGI des Firmware, man filtert sich die Geräte raus, die man überwachen will, z…b Smartphone oder Smartwathc ( oder beides )

Dann kommt im IPS folgenden an, der Wert „distance“ zeigt die Entfernung des Gerätes zum ESP an, ist zwar nicht wirklich genau, aber reicht für Auswertungen.

Viel Spass beim spielen - ich werde das noch machen :slight_smile:

was du da machen möchtest wurde mit https://www.room-assistant.io/ umgesetzt. Leider hängen sich einige BT-Module nach einiger Zeit auf. Beim iPhone gibt es beim ESP32 Probleme, weil sich die ID vom normalen BT wohl ändert und die BT-LE unterstützt der ESP aber wohl nicht

@Hagbard235
Das ist korrekt,
allerdings wenn ich das richtig verstanden habe arbeitet ESPresense da ein wenig anders
und hat speziell für iDevices wohl eigene Algorithmen engebaut

Moin,

Die MAC-Adresse ändert sich im sog. Privicy-Modus der iPhones bei WLan und wohl auch bei Bluetooth.
Die Software nutzt aber nicht die MAC-Adresse, sondern die Geräte-ID und die bleibt gleich.

Ist ne nette Spielerei, ich werde sicherlich nicht in jeden Raum jetzt einen ESP hinhängen, der die Anwesenheit erkennt - das brauche ich nicht Bei mir reicht Erkennung, ob jemand zuhause ist oder nicht und das geht per WLan und Geofency deutlich besser.
Zudem würde das bei uns nicht funktionieren, unsere Smartphones stehen nachts im Ladegerät im Arbeitszimmer.

Die Geräte-ID lässt sich (so mein Wissenstand) aber nicht ohne Extra-App ermitteln… also gehen tut es mit ESP aber nur wenn man auf dem Gerät eine App installiert. Wobei mit BT_LE es wohl ganz ohne geht und damit auch unbekannte Geräte erkannt werden können.

Leider ist die room-assistant-app selber etwas instabil, habe aber schon 4 Räume mit Raspi-Pi-Zero ausgestattet, leider sind die aktuell nicht zu bekommen. Die sind aber auch nicht wesentlich teuerer als ein guter ESP. Ich hab meine noch unter 10€ bekommen.

Dei ID der Geräte wird über die Console des ESP angezeigt, im Format z.b. wie:
apple:1004:12-5

Er listet da alle Geräte auf, die sich im BT-Empfangsbereich befinden mit MAC und noch anderen Daten.

Und die trägt man dann in die WebGUI der Software ein um danach zu filter. Ansonsten würde der ESP alle Daten die er über BT sieht z.b. per MQTT ans in meinem Fall ISP schicken - die will man aber nicht wirklich haben.