MQTT Frage

Begonnen von hermann1514, 03 Januar 2019, 16:53:20

Vorheriges Thema - Nächstes Thema

hermann1514

Hi,
ich bin im Moment etwas mit weitern HomeAutomationen am rumexperimentieren. Ich komme immer wieder darauf zurück, dass FHEM eigentlich alles besser kann :-)
Nun mal eine kurze Frage: Kann FHEM jetzt mit der MQTT Integration alle Werte per MQTT übertragen und Befehle empfangen?

Der größte Haken bei FHEm ist ja das FrontEnd Thema. Hier würde ich gerne dann auf NodeRed oder HomeAssistant gehen.

Danke für eine info oder Erfahrungen.

Gruß
Hermann

hexenmeister

Was bedeutet für dich "alle Werte"?
Natürlich können Inhalte von Readings jeglicher Geräte empfangen und übertragen werden. S. z. B. MQTT_GENERIC_BRIDGE.

freddie

Bitte nicht vergessen, daß per MQTT nur "Strings" übertragen werden. D.h. unter Umständen müssen Zahlen o. ä. dann entsprechend ausgewertet werden. Das funktioniert aber in beide Richtungen.

CU Freddie
RasPI 4B, Bulls Eye, Mosquitto, 14 x NodeMCU V2 (Rolladensteuerung, etc.), 2 x D1 (Mini NodeMCU), Sonoff basic, T1 mit eigener Firmware

hexenmeister

MQTT ist ein binäres Format. Fhem kennt aber nur Strings. Daher werden in fhem nur strings empfangen und gesendet.

hermann1514

#4
Hi,
vielen Dank für die Infos.

Mit alle Werte meine ich das Wichtigste: Schalten der Geräte, Temperatur einiger Sensoren, Jalousien....

Habe mir nun mal ein neues System aufgesetzt.
Den internen MQTT2 Server installiert, die GENERIC_BRIDGE konfiguriert. Dann ein Dummy Switch erstellt und die Subscribe und Published Attribute gesetzt.
Im exteren MQTT FX Browser kann ich auch sehen, dass der Dummy Switch geschaltet wird. Wenn ich nun aber per MQTTFX einen Befehlt sende, passiert mit dem DummySwitch gar nichts. Es wird nur ein neues MQTT2 Device erstellt.
Was mache ich da denn noch falsch?

Habe mich dabei an diesem Thread gehalten:
https://forum.fhem.de/index.php?topic=91642.0


Hiermal der DummySwitch:

Internals:
   NAME       dummyswitch1
   NR         14
   STATE      off
   TYPE       dummy
   READINGS:
     2019-01-05 08:53:42   state           off
Attributes:
   mqttPublish state:topic=haus/wohnzimmer/licht/top/set
   mqttSubscribe state:stopic=haus/wohnzimmer/licht/top/state
   webCmd     on:off


Dann das Device was erstellt wird:

Internals:
   CFGFN     
   CID        MQTT_FX_Client
   DEF        MQTT_FX_Client
   DEVICETOPIC MQTT2_MQTT_FX_Client
   IODev      MQTT_SERVER
   NAME       MQTT2_MQTT_FX_Client
   NR         186
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-01-05 08:58:03   set             on

Attributes:
   IODev      MQTT_SERVER
   readingList MQTT_FX_Client:haus/wohnzimmer/licht/top/set:.* set
   room       MQTT2_DEVICE




Vielen Dank für einen Hinweis.
Gruß
Hermann


hexenmeister

Mit MQTT2_SERVER habe ich bis jetzt am wenigsten getestet (halte es grundsätzlich für sinnvoller, Funktionalitäten aus FHEM in Standardsoftware auszulagern und nicht anders herum, daher liegt nicht im meinem Fokus). Jetzt habe ich aber gefunden, wo hier das Problem liegt. MQTT2_SERVER unterstützt autocreate und wenn es kein passendes MQTT2_DEVICE gibt, wird ein erstellt. Danach werden anscheinend keine Events mehr dazu an die GenericBridge weitergegeben. Mit deaktivierten autocreate funktioniert es bei mir.
Schalte autocreate in MQTT2_SERVER ab (attr MQTT2_SERVER autocreate 0) oder benutze gleich einen externen.

Ich habe autocreate immer für einen Übel gehalten ;D