MQTT - publish

Begonnen von Rainer1, 08 Oktober 2023, 15:39:24

Vorheriges Thema - Nächstes Thema

Rainer1

Hallo, bei mir funktioniert die "publish"-Anweisung nicht. Aber hier wird beschrieben, dass es funktionieren sollte:

https://wiki.fhem.de/wiki/MQTT

ZitatPer publish-Befehl am IO-Gerät
Alle drei IO-Module kennen direkte publish-Anweisungen, mit deren Hilfe beliebige payloads an beliebige topics gesendet werden können. Dies kann man z.B. in einem notify oder at nutzen, um einzelne Events zu publishen oder Werteanfragen abzusetzen.

Hier eine regelmäßige Werteabfrage auf einen ebus:
defmod get_ebus_updates at +*00:15:00 set ebusMQTT publish ebusd/430/Hc1HeatCurve/get;
set ebusMQTT publish ebusd/430/HwcTempDesired/get;

Ich bekomme Fehlermeldungen im Log nach dem Aufruf:
set ebusMQTT publish ebusd/470/Hc1HeatCurve/get
2023.10.08 15:39:01 3: get_ebus_updates: Unknown argument publish, choose one of getKnown:noArg getAll:noArg attrTemplate:?,General_Info,MQTT2_CLIENT_general_bridge,MQTT2_IO_ignoreRegexp_basic,MQTT2_IO_ignoreRegexp_tasmota,MQTT2_IO_ignoreRegexp_shelly,MQTT2_IO_ignoreRegexp_homeassistant,tasmota_basic,tasmota_basic_state_power1,tasmota_3channel_input_shelly_i3,tasmota_4channel_input_shelly_i4,shelly1,shellyPlus_1,shellyPlus_1pm,shellyPlus_2pm_split,shellyPlus_2pm_roller_invert_0,shellypro4pm,shellyPlus_i4,ESPurna_single_relay,eBus_daemon_splitter,eBus_analyzeReadingList,ebus_update_files_from_svn,eBus_bai_jsonMap_Status01,eBus_bai_readingsgroup_Status01_Balken,eBus_bai_readingsgroup_Status02,eBus_bai_readingsgroup_Status02_Balken,eBus_bai_readingsgroup_eBusCounter,eBus_bai_readingsgroup_eBusPumpe,eBus_Calormatic_readingsgroup_Set_Hcurve_Hotwater,eBus_Calormatic_TimeProgramm,eBus_4xx_devStateIcon_HeatCurve_HwcTemp,eBus_430_devStateIcon_Pump_Fan_HeatCurve_HwcTemp,eBus_bai_devStateIcon_Fan_Pump,eBus_bai_devStateIcon_Flow_Return_Hotwater_Temp,eBus_bai_devStateIcon_Waterpressure,eBus_bai_Status01+Status02_HWC,eBus_SetMode,eBus_Hc1HeatCurve+HwcTempDesired,eBus_bai_readingsgroup_Status01,ems-esp_heater_device,ems-esp_boiler,ems-esp_thermostat_read-only,ems-esp_thermostat_simple,ems-esp_thermostat_RC35_type,zigbee2mqtt_bridge,sonos2mqtt_bridge,sonos2mqtt_speaker,sonos2mqtt_bridge_comfort,roon,InstarCam,wled_controller,go_eCharger,go_eCharger_old,8channel_ethernet_board_split,8channel_ethernet_board_unified,6channel_ethernet_board_6input_split,6channel_ethernet_board_6input_unified,8channel_relay_board_8di_split,hoymiles_microinverter_hub_bridge,hoymiles_opendtu_hub_bridge,esp_milight_hub_bridge,OpenMQTTGateway_MCU,valetudo,worx_landroid,wallpanel_app,weewx_weather_station,McLighting

Leider kennt mein MQTT-Server diese Anweisung nicht, ich weiß nicht warum - kann jemand weiterhelfen ? Welche Infos werden dazu noch benötigt ?

ergerd

Hallo piuser1,
ein List vom Device ebusMQTT wäre schon Mal ein Anfang.
Grüße ergerd
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

rob

Zitat von: piuser1 am 08 Oktober 2023, 19:43:25...wobei ein Template doch den eingerichteten MQTT2 - Server selbst erkennt sollte  !?
Normalerweise macht ein Template nix am IODev. Im Reading IODev sollte bereits der richtige Eintrag stehen (durch autocreate oder letztem "Empfang").
Wie konkret hast du das MQTT2-Device angelegt und welches Template darauf angewandt?

VG
rob

rob

OK, am IODev passiert tatsächlich nichts weiter, aber trotzdem liegst Du damit richtig, dass ebusMQTT als Device erwartet wird.
Im Template stehen solche Einträge drin:
...
define DayRead notify einlesen {\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Monday/get";;\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Tuesday/get";;\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Wednesday/get";;\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Thursday/get";;\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Friday/get";;\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Saturday/get";;\
  fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Sunday/get";;\
...
fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Tuesday/set " . ReadingsVal("TimeDi","HHMM1t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM2t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM3t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM4t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM5t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM6t",0) . chr(59) . chr(59) . ReadingsVal("TimeDi","HHMM7t",0);;\
fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Wednesday/set " . ReadingsVal("TimeMi","HHMM1w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM2w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM3w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM4w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM5w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM6w",0) . chr(59) . chr(59) . ReadingsVal("TimeMi","HHMM7w",0);;\
fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Thursday/set " . ReadingsVal("TimeDo","HHMM1th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM2th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM3th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM4th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM5th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM6th",0) . chr(59) . chr(59) . ReadingsVal("TimeDo","HHMM7th",0);;\
fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Friday/set " . ReadingsVal("TimeFr","HHMM1f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM2f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM3f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM4f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM5f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM6f",0) . chr(59) . chr(59) . ReadingsVal("TimeFr","HHMM7f",0);;\
fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Saturday/set " . ReadingsVal("TimeSa","HHMM1sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM2sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM3sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM4sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM5sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM6sa",0) . chr(59) . chr(59) . ReadingsVal("TimeSa","HHMM7sa",0);;\
fhem "set ebusMQTT publish ebusd/BASE_DEV/hcTimer.Sunday/set " . ReadingsVal("TimeSo","HHMM1su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM2su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM3su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM4su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM5su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM6su",0) . chr(59) . chr(59) . ReadingsVal("TimeSo","HHMM7su",0);;\
...
Ein "set ebusMQTT..." kann ja nur klappen, wenn es das Device gibt. Da ist das Template imho zu spezifisch an der Stelle.

VG
rob