Autor Thema: mqtt2.template: Contributing  (Gelesen 57336 mal)

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18378
Antw:mqtt2.template: Contributing
« Antwort #150 am: 03 März 2021, 10:06:31 »
funktioniert scheinbar schon besser als das tasmota_pow_usb_split,
Wenn du Probleme mit dem tasmota_POW_USB_split hast, bitte entweder einen separaten Thread dazu aufmachen oder eine Meldung in https://forum.fhem.de/index.php/topic,94494.0.html absetzen.

Falls ihr den etwas speziellen Template-Vorschlag tasmota_Test_SP112_USB besprechen wollt, bitte ich das auch in einem separaten Thread zu machen (Link darf gerne von hier aus gesetzt werden).
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline twdotnet

  • New Member
  • *
  • Beiträge: 3
mqtt2.template: Contributing Shelly i3
« Antwort #151 am: 05 März 2021, 12:18:49 »
Hallo zusammen!

Für den Shelly i3 mit Tasmota Firmware schreibe ich hier mein MQTT Template für die Einbindung in FHEM. Es ist an "tasmota_2channel_spit" angelehnt. Getestet mit Tasmota 9.2.0.

# shelly i3 3 channel input switches
name:tasmota_3channel_split
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
desc:shelly i3 3 channel device flashed with Tasmota. <br>NOTE: a second and third device will be created for the second and third channel
order:A_03
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:STATTOPIC;ack topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}stat$3" : undef }
par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 }
par:SETCHANNELINFO;Set this to 0 to not set any speech recogn. related attributes;{ 1 }
set DEVICE attrTemplate tasmota_basic_state_power1 \CALLSPEECHRECOGN=0
copy DEVICE DEVICE_CH2
deleteattr DEVICE_CH2 alias
attr DEVICE_CH2 readingList \
  STATTOPIC/POWER2:.* state
attr DEVICE_CH2 jsonMap POWER1:0 POWER2:0 POWER3:0
attr DEVICE_CH2 setList \
  off:noArg    CMNDTOPIC/POWER2 0\
  on:noArg     CMNDTOPIC/POWER2 1\
  toggle:noArg CMNDTOPIC/POWER2 2
attr DEVICE_CH2 setStateList on off toggle
copy DEVICE_CH2 DEVICE_CH3
attr DEVICE_CH3 readingList \
  STATTOPIC/POWER3:.* state
attr DEVICE_CH3 setList \
  off:noArg    CMNDTOPIC/POWER3 0\
  on:noArg     CMNDTOPIC/POWER3 1\
  toggle:noArg CMNDTOPIC/POWER3 2
attr DEVICE,DEVICE_CH2,DEVICE_CH3 model tasmota_3channel_split
setreading DEVICE,DEVICE_CH2,DEVICE_CH3 attrTemplateVersion 20210305
option:{SETCHANNELINFO}
set DEVICE attrTemplate set_associatedWith \CHANNELS=3
option:{ CALLSPEECHRECOGN }
set DEVICE,DEVICE_CH2,DEVICE_CH3 attrTemplate speechcontrol_type_switch

In der Tasmota Config für den i3 musste ich allerdings drei GPIO Pins als Pseudo-Relais setzen, da sonst alle Eingänge über MQTT immer nur als "POWER" gesendet werden.
Meine GPIO Config ist:

template {"NAME":"Shelly i3","GPIO":[224,0,0,0,0,0,0,0,193,194,192,225,226,4736],"FLAG":0,"BASE":18}

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18378
Antw:mqtt2.template: Contributing Shelly i3
« Antwort #152 am: 06 März 2021, 08:42:50 »
Hi @twdotnet,

vorab mal willkommen im Forum, starker "Aufschlag"!

Hab's eben in etwas veränderter Form eingeheckt (=> aus dem svn verfügbar oder ab morgen per update), wäre nett, wenn du Rückmeldung geben könntest, ob das so paßt oder ob was wichtiges verloren gegangen ist...
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline twdotnet

  • New Member
  • *
  • Beiträge: 3
Antw:mqtt2.template: Contributing
« Antwort #153 am: 07 März 2021, 11:03:06 »
Danke für die Übernahme. Habe FHEM heute aktualisiert und das Template ausprobiert. Läuft!
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline elektrikpe2

  • Full Member
  • ***
  • Beiträge: 142
Antw:mqtt2.template: Contributing
« Antwort #154 am: 16 März 2021, 10:24:47 »
Hallo,

leider bin ich nicht so fit, wie TWDOTNET. Bin eher nur Nutznießer der Arbeit, die hier im Forum geleistet wird. Ich wollte noch nachfragen, ob die Shelly Templates um den Shelly Motion erweitert werden, wenn er dann mal etwas breiter verwendet wird. Man kann ihn zwar in MQTT2 einbinden, aber es kommen natürlich nicht alle möglichen Readings.

LG Peter

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4148
  • ... wer sät, der erntet ...
Antw:mqtt2.template: Contributing
« Antwort #155 am: 16 März 2021, 10:45:24 »
Es gibt seit 26.02. ein shellymotion-Template, vlt. seit dem noch kein update gemacht ?

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18378
Antw:mqtt2.template: Contributing
« Antwort #156 am: 16 März 2021, 10:49:34 »
Neben dem Hinweis von TomLee noch:
Bitte nutzt möglichst diesen Thread, wenn ihr neue (im Prinzip ausentwickelte) templates für mqtt2.template vorschlagen wollt.
Für Fehlermeldungen, Diskussionen zu Verbesserungsvorschlägen zu vorhandenen und zum Anfragen von support für neue Devices ist ein weiterer Thread gedacht, dieser hier sollte möglichst übersichtlich bleiben und sich auf das Wesentliche beschränken.
Ich wollte noch nachfragen, ob die Shelly Templates um den Shelly Motion erweitert werden, wenn er dann mal etwas breiter verwendet wird. Man kann ihn zwar in MQTT2 einbinden, aber es kommen natürlich nicht alle möglichen Readings.
=> Falscher Thread....

...und dann wäre da noch: https://forum.fhem.de/index.php/topic,112327.msg1066615.html#msg1066615
=> keine Infos...

Aber grundsätzlich: MQTT2_DEVICE generiert keine Readings, wenn die Hardware keine Daten liefert, und per default wird alles, was geliefert wird auch in Readings verwandelt...

Zitat
Bin eher nur Nutznießer der Arbeit, die hier im Forum geleistet wird.
Falls das ein Dankeschön gewesen sein sollte:  :) .
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline elektrikpe2

  • Full Member
  • ***
  • Beiträge: 142
Antw:mqtt2.template: Contributing
« Antwort #157 am: 16 März 2021, 13:25:33 »
Hallo,

a) richtig, hab es gelesen und doch nicht richtig interpretiert, mache im "richtigen Thread" weiter, mit den Ergebnissen, die sich hier schon ergeben haben und den Infos, die noch zu liefern wären
b) das war aber so was von einem Dankeschön. Bin seit 2018 dabei und inzwischen soweit, dass ich eine (von Frau bewilligte) FTUI habe mit der ich diverse Aktoren von diversen Firmen steuere. Die ist aber auch von einem User aus derm Forum "geklaut" . Also ohne Forum ginge bei mir garnix. Hab mich aber überall, wo mir geholfen wurde, artig bedankt

LG Peter

Offline twdotnet

  • New Member
  • *
  • Beiträge: 3
mqtt2.template: Contributing Shelly i3
« Antwort #158 am: 18 März 2021, 00:21:50 »
Hallo zusammen,

ich habe mich nun etwas mehr mit den Templates beschäftigt und für den Shelly i3 ein neues geschrieben.
Darin habe ich aus meiner Sicht unnötiges entfernt und um eine Auswahl mit Templates für die GPIOs und den SwitchModes als Parameter erweitert.

Wird Tasmota 9.1+ verwendet, kann die SetOption114 (https://tasmota.github.io/docs/Buttons-and-Switches/#setoption114) genutzt werden, um Switches von Relays zu trennen und auf die Pseudo-Relays zu verzichten.
Da dieser Shelly nur Inputs besitzt, macht aus meiner Sicht eine Vererbung von den bekannten Switches sowie eine Spracherkennung keinen Sinn.
Als Icon habe ich hier "taster" verwendet und für "order" würde ich "A_03i" vorschlagen.

Hier das AttrTemplate:
# shelly i3 3 channel input switches with device configuration
name:tasmota_3channel_input_shelly_i3
filter:TYPE=MQTT2_DEVICE
desc:Shelly i3 device flashed with Tasmota, provides three input only channels. <p>Device will be configured with selectable SwitchMode and optional GPIO Template. <br>Recommended SwitchModes 1=FollowMode (normally open switches> or 2=InvertedFollowMode (normally closed switches) </p><p>Tasmota 9.1+ is required for <a href=https://tasmota.github.io/docs/Buttons-and-Switches/#setoption114>SetOption114</a> to detach switches from relays. <br>For Tasmota &lt;9.1 fake relays on GPIO2,GPIO3,GPIO4 will be used. In case of ghost switching try using SwitchMode=2 with normally closed switches on inputs. <p>NOTE: <br>A second and third device will be created for the second and third input with suffixes *_CH2 and *_CH3</p>
order:A_03i
par:RADIO_TEMPLATE;Configure device and GPIO with SetOption114 (for Tasmota 9.1+);{ undef }
par:RADIO_TEMPLATE_PRE91;Configure device and GPIO with fake relays (for Tasmota <9.1);{ undef }
par:RADIO_NO_TEMPLATE;Configure device without GPIO template;{ undef }
par:SWITCHMODE1;SwitchMode for Input 1;{ undef }
par:SWITCHMODE2;SwitchMode for Input 2;{ undef }
par:SWITCHMODE3;SwitchMode for Input 3;{ undef }
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:TELETOPIC;info topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}tele$3" : undef }
par:STATTOPIC;ack topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}stat$3" : undef }
par:SETCHANNELINFO;Set this to 0 to not set channelinfo;{ 1 }
par:ICON;ICON as set, defaults to taster;{ AttrVal("DEVICE","icon","taster") }
par:IO_DEV;Currently used IO;{ AttrVal("DEVICE","IODev",undef)}
# autoconfigure device
option:{RADIO_NO_TEMPLATE}
set IO_DEV publish CMNDTOPIC/Backlog StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SwitchMode1 SWITCHMODE1; SwitchMode2 SWITCHMODE2; SwitchMode3 SWITCHMODE3; SetOption26 1; SetOption114 1; SaveData 1
option:{RADIO_TEMPLATE}
set IO_DEV publish CMNDTOPIC/Backlog StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SwitchMode1 SWITCHMODE1; SwitchMode2 SWITCHMODE2; SwitchMode3 SWITCHMODE3; SetOption26 1; SetOption114 1; SaveData 1; template {"NAME":"Shelly i3","GPIO":[0,0,0,0,0,0,0,0,193,194,192,0,0,4736],"FLAG":0,"BASE":18}; module 0
option:{RADIO_TEMPLATE_PRE91}
set IO_DEV publish CMNDTOPIC/Backlog StateText1 off; StateText2 on; StateText3 toggle; StateText4 hold; SwitchMode1 SWITCHMODE1; SwitchMode2 SWITCHMODE2; SwitchMode3 SWITCHMODE3; SetOption26 1; SaveData 1; template {"NAME":"Shelly i3","GPIO":[0,0,224,225,226,0,0,0,193,194,192,0,0,4736],"FLAG":0,"BASE":18}; module 0
option:global
# setup main device channel 1
attr DEVICE icon ICON
attr DEVICE jsonMap Switch1_Action:state
attr DEVICE setList \
  off:noArg    STATTOPIC/Switch1 0\
  on:noArg     STATTOPIC/Switch1 1\
  toggle:noArg STATTOPIC/Switch1 2
attr DEVICE readingList \
  TELETOPIC/LWT:.* LWT\
  STATTOPIC/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
deletereading -q DEVICE (?!associatedWith).*
attr DEVICE setStateList on off toggle
attr DEVICE autocreate 0
attr DEVICE model tasmota_shelly_i3
# channel 2
copy DEVICE DEVICE_CH2
deleteattr DEVICE_CH2 alias
attr DEVICE_CH2 readingList \
  STATTOPIC/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE_CH2 jsonMap Switch2_Action:state
attr DEVICE_CH2 setList \
  off:noArg    STATTOPIC/Switch2 0\
  on:noArg     STATTOPIC/Switch2 1\
  toggle:noArg STATTOPIC/Switch2 2
# channel 3
copy DEVICE_CH2 DEVICE_CH3
deleteattr DEVICE_CH3 alias
attr DEVICE_CH3 jsonMap Switch3_Action:state
attr DEVICE_CH3 setList \
  off:noArg    STATTOPIC/Switch3 0\
  on:noArg     STATTOPIC/Switch3 1\
  toggle:noArg STATTOPIC/Switch3 2
# associations
option:{SETCHANNELINFO}
set DEVICE attrTemplate set_associatedWith \CHANNELS=3

Noch ein allgemeiner Hinweis zu dem Device, was mir aufgefallen ist:
Nach einigen Tagen Betrieb ist ein sog. "Ghost Switching" aufgetreten. D.h. es werden Schaltimpulse erkannt, ohne das ein Schalter/Taster gedrückt wurde. In anderen Foren wurde das auch schon berichtet. Eine mögliche Ursache scheint das Design der Inputs zu sein, welche wohl über kein pull-up/down verfügen. Ich konnte für mich das einfach lösen, in dem ich die Taster von "Schließer" auf "Öffner" umgestellt habe. Damit liegt im Ruhezustand ein definiertes Potential an. In der Config muss dann für SwitchMode "2" verwendet werden.

Viele Grüße
Oliver

Offline barneybaer

  • Full Member
  • ***
  • Beiträge: 129
Antw:mqtt2.template: Contributing
« Antwort #159 am: 01 April 2021, 22:44:00 »
Hallöchen und einen guten Abend.

Ich hab mal wieder ein neues Template für ein Zigbee Thermostad.

https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html#saswell-sea801-zigbee%252Fsea802-zigbee

Die "get" Befehle funktionieren nicht immer, nur selten. Temperatur und desired-temp werden sowieso bei Änderungen vom Thermostad gesendet.

name:zigbee2mqtt_thermostat_without_weekprofile
desc: Developed for <a href="https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html#saswell-sea801-zigbee%252Fsea802-zigbee">Model Saswell SEA801-Zigbee/SEA802-Zigbee manufactured by Saswell</a> via zigbee2mqtt <br>
filter:TYPE=MQTT2_DEVICE:FILTER=CID~zigbee.*
order:L_17b
par:BASE_TOPIC;base topic set in configuration.yaml of the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[\b]?([^/:]+)[/].+, ? $1 : undef }
par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devicetopic",AttrVal("DEVICE","readingList","")) =~ m,[^/]+[/]([^/:]+).*, ? $1 : undef }
par:ICON;ICON as set, defaults to temp_control;{ AttrVal("DEVICE","icon","temp_control") }
attr DEVICE icon ICON
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE setList \
  desired-temp:slider,5.0,0.5,30.0,1 $\DEVICETOPIC/set {"current_heating_setpoint": "$EVTPART1"}\
  btnLock:LOCK,UNLOCK $\DEVICETOPIC/set {"child_lock": "$EVTPART1"}\
  mode:heat,auto,off $\DEVICETOPIC/set {"system_mode": "$EVTPART1"}\
  away:ON,OFF $\DEVICETOPIC/set {"away_mode": "$EVTPART1"}\
  window_detection:ON,OFF,TOOGLE $\DEVICETOPIC/set {"window_detection": "$EVTPART1"}
attr DEVICE periodicCmd temperature:55
attr DEVICE devStateIcon LOCKED:secur_lock:btnLock+UNLOCK UNLOCKED:secur_open:btnLock+LOCK
attr DEVICE webCmd desired-temp
attr DEVICE jsonMap current_heating_setpoint:desired-temp local_temperature:temperature Battery:batteryPercent system_mode:mode
attr DEVICE userReadings batteryState:battery_low.* {ReadingsVal($name,'battery_low','false') eq 'false'?'ok':'low'},\
  state {ReadingsVal($name,'temperature','0')},
attr DEVICE model zigbee2mqtt_thermostat_without_weekrofile
set DEVICE attrTemplate speechcontrol_type_thermostat
deletereading -q DEVICE (?!associatedWith).*
setreading DEVICE attrTemplateVersion 20210401
« Letzte Änderung: 02 April 2021, 08:56:18 von barneybaer »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18378
Antw:mqtt2.template: Contributing
« Antwort #160 am: 06 April 2021, 09:28:25 »
Thx, hab's eingecheckt.

Zwei Anmerkungen:
- userReadings bitte immer mit trigger
- state sollte mAn. bei solchen Devices "frei" bleiben, das ist UU. eher für eine Art "Mode" geeignet, daher habe ich die gemessene Temperatur analog dem "with weekprofile" "nur" in den STATE (via stateFormat) befördert.
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline mferstl

  • New Member
  • *
  • Beiträge: 3
Antw:mqtt2.template: Contributing
« Antwort #161 am: 17 April 2021, 16:02:02 »
Hallo zusammen,

ich habe für die Steuerung eines Roon Core ein Template entwickelt.
Die Anbindung von Roon muss über die mqtt Extension eingerichtet sein https://github.com/fjgalesloot/roon-extension-mqtt


Enthalten ist auch die Sprachsteuerung über das Alexa Modul.

Folgendes geht zur einfachen Steuerung der Wiedergabe: an, aus, next, lauter, leiser, Laustärke X

Die Steuerung des Inhalts habe ich nur für Internetradios eingerichtet. Die Sendernamen sind konfigurierbar und werden in einem userattr abgelegt.
Das könnte man alternativ auch für Playlists einrichten.

Hier der Code:

#####
### roon via mqtt extension
###
name:roon
filter:TYPE=MQTT2_DEVICE
desc:See doku for roon mqtt extension https://github.com/fjgalesloot/roon-extension-mqttf
# first set the ZONE
par:ZONENAME;ZONENAME is the roon zone you want to control
attr DEVICE devicetopic ZONENAME

# define up to  ten internet radio stations
attr DEVICE userattr radios
attr DEVICE radios BR-KLASSIK, MDR Klassik, Klassik Radio: Barock

# set readings
attr  DEVICE readingList .*roon.*/$\DEVICETOPIC/state:.* state\
.*roon.*/$\DEVICETOPIC/seek_position:.* track_position\
.*roon.*/$\DEVICETOPIC/now_playing/three_line/line1:.* track_name\
.*roon.*/$\DEVICETOPIC/now_playing/three_line/line2:.* track_artist\
.*roon.*/$\DEVICETOPIC/now_playing/three_line/line3:.* track_album\
.*roon.*/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/value:.* volume\
.*roon.*/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/is_muted:.* muted\
.*roon.*/$\DEVICETOPIC/settings/loop:.* loop\
.*roon.*/$\DEVICETOPIC/settings/shuffle:.* shuffle
# setlist
# Commands to use in FHEM are with capital first letter ; the "mute" setting is for alexa only
attr DEVICE setList Play roon/$\DEVICETOPIC/command play\
Pause roon/$\DEVICETOPIC/command pause\
Stop roon/$\DEVICETOPIC/command stop\
Next roon/$\DEVICETOPIC/command next\
Previous roon/$\DEVICETOPIC/command previous\
mute:0,1 { if ($EVTPART1 == 1){"roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set  mute" ;;} else {"roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set  unmute" ;;}}\
volume:slider,0,1,100 roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set $EVTPART1\
Mute roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set mute\
Unmute roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set unmute\
Radio:uzsuSelectRadio,1,2,3,4,5,6,7,8,9,10  { my @radios = split(/,/,AttrVal($NAME,"radios","BR-KLASSIK")) ;; "roon/$\DEVICETOPIC/browse/internet_radio ".$radios[$EVTPART1-1];; }

# some Web commands
attr DEVICE webCmd Play:Pause:Stop:Next:Previous:Mute:Unmute:volume:Radio

# optinal speech control with alexa
option:{my @devices=devspec2array("TYPE=(alexa)");;return 1 if $devices[0];;return 0}

attr DEVICE genericDeviceType media
set DEVICE attrTemplate speechcontrol_general_naming_master_template

# mapping for alexa
attr DEVICE homebridgeMapping\
On:cmdOn=Play,cmdOff=Stop\
PlaybackController:playback,values=Play;Pause;Stop;Previous;Next\
ChannelController:reading=radio,cmd=Radio\
Volume=volume,maxValue=60,minStep=3,delay=true\
Mute:reading=muted,cmd=mute


Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18378
Antw:mqtt2.template: Contributing
« Antwort #162 am: 19 April 2021, 13:12:35 »
Starker Aufschlag!

Würde es in der folgenden Form einchecken, habe aber noch ein paar Fragen und Anmerkungen:
#####
### roon via mqtt extension
###
#contributed by mferstl, https://forum.fhem.de/index.php/topic,94495.msg1149947.html#msg1149947
name:roon
filter:TYPE=MQTT2_DEVICE
desc:See doku for roon mqtt extension https://github.com/fjgalesloot/roon-extension-mqttf
# first set the ZONE
par:ZONENAME;ZONENAME is the roon zone you want to control
attr DEVICE devicetopic ZONENAME

# define up to ten internet radio stations
attr DEVICE userattr radios
attr DEVICE radios BR-KLASSIK, MDR Klassik, Klassik Radio: Barock

# set readings
attr  DEVICE readingList .*roon.*/$\DEVICETOPIC/state:.* state\
  .*roon.*/$\DEVICETOPIC/seek_position:.* track_position\
  .*roon.*/$\DEVICETOPIC/now_playing/three_line/line1:.* track_name\
  .*roon.*/$\DEVICETOPIC/now_playing/three_line/line2:.* track_artist\
  .*roon.*/$\DEVICETOPIC/now_playing/three_line/line3:.* track_album\
  .*roon.*/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/value:.* volume\
  .*roon.*/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/is_muted:.* muted\
  .*roon.*/$\DEVICETOPIC/settings/loop:.* loop\
  .*roon.*/$\DEVICETOPIC/settings/shuffle:.* shuffle
# setlist
# Commands to use in FHEM are with capital first letter ; the "mute" setting is for alexa only
attr DEVICE setList play roon/$\DEVICETOPIC/command play\
  pause roon/$\DEVICETOPIC/command pause\
  stop roon/$\DEVICETOPIC/command stop\
  next roon/$\DEVICETOPIC/command next\
  previous roon/$\DEVICETOPIC/command previous\
  mute:on,off { my $mute = $EVTPART1 eq 'on' ? 'mute' : 'unmute';; "roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set $mute"}\
  volume:slider,0,1,100 roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set $EVTPART1\
  mute roon/$\DEVICETOPIC/outputs/$\DEVICETOPIC/volume/set mute\
  channel:uzsuSelectRadio,1,2,3,4,5,6,7,8,9,10  { my @radios = split(/,/,AttrVal($NAME,"radios","BR-KLASSIK")) ;; "roon/$\DEVICETOPIC/browse/internet_radio ".$radios[$EVTPART1-1];; }

# some Web commands
attr DEVICE webCmd play:pause:stop:next:previous:mute:volume:radio

set DEVICE attrTemplate speechcontrol_gdt_and_mapping  GENERICDEVTYPE=media HOMEBRIDGEMAPPING="On:cmdOn=play,cmdOff=stop PlaybackController:playback,values=play;pause;stop;previous;next ChannelController:reading=radio,cmd=radio Volume=volume,maxValue=60,minStep=3,delay=true Mute:reading=muted,cmd=mute"

- Die Kommandos sind klein, damit es zu https://wiki.fhem.de/wiki/DevelopmentGuidelinesAV paßt. Kann sein, dass damit das homebridgeMapping in Teilen nicht mehr erforderlich ist;
- mit "mute" ist es ähnlich, da ist die Vorgabe "mute" mit "on" bzw. "off". Eventuell wäre es möglich, den Inhalt aus dem Topic "is_muted" gleich so umzuwandeln, dass auch das ohne weiteres paßt (es müsste vermutlich ein Hash zurückgegeben werden wie z.B. { mute => 'off' })
Im Ergebnis sollte dann alles aus dem HomebridgeMapping raus, was nicht zwingend erforderlich ist.
- das homebridgeMapping ist jetzt "einzeilig"; kann sein, dass das eine der Sprachsteuerungslösungen nicht mag... Dann müßte man eventuell mal mit \n rumexperimentieren, sonst habe ich grade keine Idee, wie man das sauber in der Parameter-Form übergeben kann...

- Super wäre, $DEVICETOPIC gleich mit automatisch auswerten zu können. Da müßte ich aber wissen, wie so ein Topic im Original aussieht bzw. aussehen kann.
« Letzte Änderung: 19 April 2021, 13:17:09 von Beta-User »
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline Homalix99

  • Full Member
  • ***
  • Beiträge: 163
Antw:mqtt2.template: Contributing
« Antwort #163 am: 20 April 2021, 22:31:22 »
Hallo,

ich habe eine OBI-Steckdose mit ESPEasy geflashed und sehe im MQTT2 client das device, nur kann ich das Relais zum Schalten der Dose nicht ansteuern.
Ich finde auch kein Template für ESPEasy. Liegt das daran, dass es mit ESPEasy generell nicht funktioniert?
Ich schaffe es bislang nicht, dass das Relais geschalten wird.
setList cmd [topic|perl-Expression],
Hier das List:
Internals:
   CFGFN     
   CID        Steckdose_OBI_1
   DEF        Steckdose_OBI_1
   DEVICETOPIC MQTT2_Steckdose_OBI_1
   FUUID      607f35c5-f33f-6b52-c8ce-3277d017c72e29ed
   IODev      myMQTTBroker
   LASTInputDev myMQTTBroker
   MSGCNT     558
   NAME       MQTT2_Steckdose_OBI_1
   NR         296838
   STATE      on
   TYPE       MQTT2_DEVICE
   myMQTTBroker_MSGCNT 558
   myMQTTBroker_TIME 2021-04-20 22:30:27
   .attraggr:
   .attrminint:
   READINGS:
     2021-04-20 22:13:06   LWT             ontrack
     2021-04-20 22:30:25   Relais          1
     2021-04-20 22:13:48   Taster          0
     2021-04-20 22:30:27   rssi            -63.00
     2021-04-20 22:30:15   state           on
     2021-04-20 22:30:27   uptime          17.00
Attributes:
   DbLogExclude .*
   IODev      myMQTTBroker
   readingList Steckdose_OBI_1:/Steckdose-OBI/Relais/Relais:.* Relais
Steckdose_OBI_1:/Steckdose-OBI/status/LWT:.* LWT
Steckdose_OBI_1:/Steckdose-OBI/WIFI/uptime:.* uptime
Steckdose_OBI_1:/Steckdose-OBI/WIFI/rssi:.* rssi
Steckdose_OBI_1:/Steckdose-OBI/Taster/Taster:.* Taster
   room       MQTT2_DEVICE
   setList    on /Steckdose-OBI/Relais/Relais 1
off /Steckdose-OBI/Relais/Relais 0

Gruß

Alex
- RPI 3, 2 x Arduino Uno, HM-GW, HM-Dev. (Fensterkontakte, HK-Thermostate, div. Aktoren), JeeLink, Arduino Nano
- GPIOs, 1-wire, HM-LAN
-Überwachung Fenster/Türen/Licht, HK-Thermostatregelung, Rollosteuerung, Überwachung Betriebstemperaturen der Heizung, Erfassung Gas/Wasser, PV-Anl., Wetter (WS1600

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18378
Antw:mqtt2.template: Contributing
« Antwort #164 am: 21 April 2021, 07:29:04 »
Hi Homalix99,

deine Frage ist im falschen Thread gelandet, hier geht es um "fertige" attrTemplate, siehe 1. Beitrag hier.

ESPEasy war bisher hier nicht so das Thema (es gibt aber afaik einen Thread oder so), von daher:
Mach bitte einen neuen Thread auf, stelle da am besten ein "raw"-list ein und verlinke auf die Doku bzw. am besten auf die Detailseite darin, wo was dazu zu finden ist, wohin die Kommandos gesendet werden müssen. Es kann jedenfalls kaum richtig sein, dass die Topics in der setList dieselben sind wie die in der readingList. Das wäre m.E. ein schwerer Designfehler in der firmware.
Aus dem anderen Thread habe ich noch vage im Kopf, dass da als Payload die Nummer des Relays+gewünschter Schaltzustand zu senden sein sollten, also eher so in der Art:
on /Steckdose-OBI/Relais 1,1(kann aber auch ganz falsch sein).
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

 

decade-submarginal