2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-04 05:16:45 +00:00

speechcontrol.template: (and other) some bugfixes wrt. to multichannel devices

git-svn-id: https://svn.fhem.de/fhem/trunk@24910 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2021-09-03 16:52:46 +00:00
parent 87ab971054
commit a974561477
2 changed files with 54 additions and 39 deletions

View File

@ -544,19 +544,20 @@ par:DEV_ID;name of the device in the zigbee2mqtt bridge;{ AttrVal("DEVICE","devi
par:ICON;ICON as set, defaults to fts_shutter_100;{ AttrVal("DEVICE","icon","fts_shutter_100") }
attr DEVICE icon ICON
attr DEVICE devStateIcon 0:fts_shutter_100 100:fts_shutter_10 9\d.*:fts_shutter_10 8\d.*:fts_shutter_20 7\d.*:fts_shutter_30 6\d.*:fts_shutter_40 5\d.*:fts_shutter_50 4\d.*:fts_shutter_60 3\d.*:fts_shutter_70 2\d.*:fts_shutter_80 1\d.*:fts_shutter_90 0\d.*:fts_shutter_100
attr DEVICE webCmd open:close:pct:speed
attr DEVICE webCmd open:close:stop:pct:speed
attr DEVICE devicetopic BASE_TOPIC/DEV_ID
attr DEVICE jsonMap position:pct motor_speed:speed
attr DEVICE readingList $\DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr DEVICE setList \
open:noArg $\DEVICETOPIC/set {"state":"OPEN"}\
close:noArg $\DEVICETOPIC/set {"state":"CLOSE"}\
stop:noArg $\DEVICETOPIC/set {"state":"STOP"}\
pct:slider,0,1,100 $\DEVICETOPIC/set {"position":"$EVTPART1"}\
speed:colorpicker,BRI,0,1,255 $\DEVICETOPIC/set {"options": {"motor_speed":"$EVTPART1"}}
attr DEVICE stateFormat pct
set DEVICE attrTemplate speechcontrol_type_blind
attr DEVICE model zigbee2mqtt_blind_drive
setreading DEVICE attrTemplateVersion 20210222
setreading DEVICE attrTemplateVersion 20210902
name:zigbee2mqtt_ContactSensor
@ -1040,7 +1041,8 @@ filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
desc:Applies to Sonoff POW devices and other Tasmota flashed devices with power measuring abilities.<br>NOTE: Power topic will be set to POWER1; the format the device is sending data will also be changed to lowercase!
order:A_01c
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
set DEVICE attrTemplate tasmota_basic_state_power1 CALLSPEECHRECOGN=1
par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 }
set DEVICE attrTemplate tasmota_basic_state_power1 \CALLSPEECHRECOGN=CALLSPEECHRECOGN
attr DEVICE setList \
off:noArg CMNDTOPIC/POWER1 0\
on:noArg CMNDTOPIC/POWER1 1\
@ -1051,7 +1053,7 @@ deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE setStateList on off toggle
attr DEVICE webCmd :
attr DEVICE model tasmota_POW
setreading DEVICE attrTemplateVersion 20210526
setreading DEVICE attrTemplateVersion 20210903
# sonoff 1 channel + USB device flashed with Tasmota.
@ -1059,17 +1061,18 @@ name:tasmota_POW_USB_split
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
desc:Plug with additional USB outlet flashed with Tasmota. <br>For use e.g. with Gosund SP112 or Blitzwolf SH5<br>NOTE: a second device will be created for the USB channel.<br>NOTE: still untested template, feedback is welcome!
order:A_01c1
set DEVICE attrTemplate tasmota_2channel_split CALLSPEECHRECOGN=0
set DEVICE attrTemplate tasmota_POW
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:ICON;ICON as set, defaults to usb;{ AttrVal("DEVICE_CH2","icon","usb") }
set DEVICE attrTemplate tasmota_2channel_split \CALLSPEECHRECOGN=0
set DEVICE attrTemplate tasmota_POW \CALLSPEECHRECOGN=0
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:ICON;ICON as set, defaults to usb;{ AttrVal('DEVICE_CH2','icon','usb') }
attr DEVICE_CH2 icon ICON
attr DEVICE_CH2 comment Channel 2 (USB outlets) for DEVICE
attr DEVICE_CH2 devStateIcon on:usb:off off:usb@red:on
attr DEVICE_CH2 setStateList on off toggle
set DEVICE_CH2 attrTemplate speechcontrol_type_switch
set DEVICE attrTemplate speechcontrol_type_switch
set DEVICE_CH2 attrTemplate speechcontrol_type_switch \NOTDELAYED=0
attr DEVICE,DEVICE_CH2 model tasmota_POW_USB_split
setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20200529
setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20210903
# plug with LED flashed with Tasmota.
name:tasmota_plug_with_rgbw_split
@ -1110,9 +1113,9 @@ attr DEVICE_CH2 devStateIcon {Color::devStateIcon($name,"rgb","Color","pct","sta
attr DEVICE_CH2 setStateList on off toggle
deletereading -q DEVICE_CH2 (?!associatedWith|IODev).*
set DEVICE attrTemplate speechcontrol_type_switch
set DEVICE_CH2 attrTemplate speechcontrol_type_light_255
set DEVICE_CH2 attrTemplate speechcontrol_type_light_255 \NOTDELAYED=0
attr DEVICE,DEVICE_CH2 model tasmota_plug_with_rgbw_split
setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20200828
setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20210903
#tasmota device with Infrared-circuit
name:tasmota_ir
@ -1273,7 +1276,8 @@ setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20200529
option:{SETCHANNELINFO}
set DEVICE attrTemplate set_associatedWith \CHANNELS=2
option:{ CALLSPEECHRECOGN }
set DEVICE,DEVICE_CH2 attrTemplate speechcontrol_type_switch
set DEVICE attrTemplate speechcontrol_type_switch
set DEVICE_CH2 attrTemplate speechcontrol_type_switch \NOTDELAYED=0
# sonoff 2 channel device flashed with Tasmota with dual energy meassuring. Source: https://forum.fhem.de/index.php/topic,122231.0.html
@ -1312,7 +1316,8 @@ setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20210728
option:{SETCHANNELINFO}
set DEVICE attrTemplate set_associatedWith \CHANNELS=2
option:{ CALLSPEECHRECOGN }
set DEVICE,DEVICE_CH2 attrTemplate speechcontrol_type_switch
set DEVICE attrTemplate speechcontrol_type_switch
set DEVICE_CH2 attrTemplate speechcontrol_type_switch \NOTDELAYED=0
#contributed by 87insane

View File

@ -1,4 +1,3 @@
###########################################
# $Id$
#
@ -20,76 +19,88 @@ name:speechcontrol_type_switch
filter:NAME=speechrecognTesting
order:100001
desc:template to set speech speechcontrol attributes for genericDeviceType switch
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
attr DEVICE genericDeviceType switch
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_type_light
filter:NAME=speechrecognTesting
order:100002
desc:template to set speech speechcontrol attributes for genericDeviceType light
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
attr DEVICE genericDeviceType light
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_type_light_255
filter:NAME=speechrecognTesting
order:100003
desc:template to set speech speechcontrol attributes for genericDeviceType light - brightness in 255 steps
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
set DEVICE attrTemplate speechcontrol_type_light
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
attr DEVICE genericDeviceType light
attr DEVICE homebridgeMapping Brightness=brightness::brightness,maxValue=100,factor=0.39216,delay=true
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_type_blind
filter:NAME=speechrecognTesting
order:100004
desc:template to set speech speechcontrol attributes for genericDeviceType blind
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
attr DEVICE genericDeviceType blind
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_type_thermostat
filter:NAME=speechrecognTesting
order:100005
desc:template to set speech speechcontrol attributes for genericDeviceType thermostat
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
attr DEVICE genericDeviceType thermostat
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_gdt_only
filter:filter:genericDeviceType=.+
order:100006
desc:template to set speech speechcontrol attributes for to any genericDeviceType; call e.g. with set <xy> attrTemplate speechcontrol_gdt_only GENERICDEVTYPE=Security
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
par:GENERICDEVTYPE;GENERICDEVTYPE <genericDeviceType>, defaults to contact;{ "contact" }
attr DEVICE genericDeviceType GENERICDEVTYPE
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_gdt_and_mapping
filter:filter:genericDeviceType=.+
order:100007
desc:generic template to set speech speechcontrol attributes for to any genericDeviceType including full mapping, call e.g. with set xy attrTemplate speechcontrol_gdt_and_mapping GENERICDEVTYPE=contact HOMEBRIDGEMAPPING= "ContactSensorState=state,values=closed:CONTACT_DETECTED;;open:CONTACT_NOT_DETECTED"
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant|RHASSPY)");;return 1 if $devices[0];;return 0}
par:NOTDELAYED;Set this to 0 to not apply naming template on first round;{ 1 }
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0];return 0}
par:GENERICDEVTYPE;GENERICDEVTYPE <genericDeviceType>, defaults to contact;{ "contact" }
par:HOMEBRIDGEMAPPING;HOMEBRIDGEMAPPING, defaults to "some split-by-semicolon-compatible represantation or the expression to the right";{ 'ContactSensorState=state,values=closed:CONTACT_DETECTED;;open:CONTACT_NOT_DETECTED' }
attr DEVICE genericDeviceType GENERICDEVTYPE
attr DEVICE homebridgeMapping HOMEBRIDGEMAPPING
option:{my @devices=devspec2array('TYPE=(siri|alexa|gassistant|RHASSPY)');return 1 if $devices[0] && NOTDELAYED;return 0}
set DEVICE attrTemplate speechcontrol_general_naming_master_template
name:speechcontrol_general_naming_master_template
filter:genericDeviceType=.+
order:10000200
desc:generic template to set attributes for identifying this device by speech speechcontrol software. This template will call several sub-templates - dependent on the speech speechcontrol solutions which are in use in your installation. Pls. do not use one of the subtemplates directly. Call e.g. with set xy attrTemplate speechcontrol_general_naming_master_template
option:{my @devices=devspec2array("TYPE=alexa");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array("TYPE=alexa"); $devices[0] ? return 1 : return 0}
set DEVICE attrTemplate speechcontrol_alexa_specials
option:{my @devices=devspec2array("TYPE=siri");; my @alexas=devspec2array("TYPE=alexa");; ($devices[0] && !$alexas[0]) ? AttrVal('DEVICE','genericDeviceType','none') eq 'none' ? 0 : 1 : 0 }
option:{my @devices=devspec2array('TYPE=siri'); my @alexas=devspec2array('TYPE=alexa'); ($devices[0] && !$alexas[0]) ? AttrVal('DEVICE','genericDeviceType','none') eq 'none' ? 0 : 1 : 0 }
#set DEVICE attrTemplate speechcontrol_siri_specials
option:{my @devices=devspec2array("TYPE=gassistant");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array("TYPE=RHASSPY");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array('TYPE=gassistant'); $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array('TYPE=RHASSPY'); $devices[0] ? return 1 : return 0}
#######
# alexa specials
@ -98,12 +109,11 @@ name:speechcontrol_alexa_specials
filter:NAME=speechrecognTesting
order:1000020a
desc:generic template to set speech speechcontrol attribute alexaName, call e.g. with set xy attrTemplate speechcontrol_alexa_specials ALEXANAME=myAlexaName
option:{my @devices=devspec2array("TYPE=(alexa)");; $devices[0] ? return 1 : return 0}
#par:ALEXANAME;Please enter alexaName. Pls. enter something, even if you do not want any name to be set, use the offered radio option to skip naming instead!;{ AttrVal("DEVICE","alexaName",undef) }
par:ALEXAISNAME;Current attribute value alexaName;{ AttrVal("DEVICE","alexaName","(not set)") }
par:RADIO_KEEPalexaNAME;Keep current attribute value;{ defined AttrVal("DEVICE","alexaName",undef) ? undef :0 }
option:{my @devices=devspec2array('TYPE=(alexa)'); $devices[0] ? return 1 : return 0}
par:ALEXAISNAME;Current attribute value alexaName;{ AttrVal('DEVICE','alexaName','(not set)') }
par:RADIO_KEEPalexaNAME;Keep current attribute value;{ defined AttrVal('DEVICE','alexaName',undef) ? undef :0 }
par:RADIO_SETalexaNAME;Set a new alexaName;{ undef }
par:RADIO_DoNotSetalexaName;Leave alexaName attribute empty;{ defined AttrVal("DEVICE","alexaName",undef) ? 0 : undef }
par:RADIO_DoNotSetalexaName;Leave alexaName attribute empty;{ defined AttrVal('DEVICE','alexaName',undef) ? 0 : undef }
par:RADIO_Delete_gDT;Discard genericDeviceType attribute;{ undef }
par:RADIO_SKIPP_SCONTROLL;Skipp setting speech controll specific attributes;{ undef }
option:{ RADIO_KEEPalexaNAME }
@ -124,9 +134,9 @@ filter:NAME=speechrecognTesting
order:1000020b
desc:generic template to ask for alexaName attribute setting. Only intented for internal use by speechcontrol_request_alexaName
par:ALEXANAME;Please enter alexaName;{ undef }
option:{my @devices=devspec2array("TYPE=(alexa)");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array('TYPE=alexa'); $devices[0] ? return 1 : return 0}
attr DEVICE alexaName ALEXANAME
option:{my @devices=devspec2array("TYPE=siri");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array('TYPE=siri'); $devices[0] ? return 1 : return 0}
set DEVICE attrTemplate speechcontrol_siri_specials CHECKGDTDONE=1
####
@ -136,7 +146,7 @@ name:speechcontrol_siri_specials
filter:NAME=speechrecognTesting
order:1000021a
desc:generic template to set speech speechcontrol attribute alexaName, call e.g. with set xy attrTemplate speechcontrol_siri_specials ALEXANAME=myAlexaName
option:{my @devices=devspec2array("TYPE=(siri)");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array('TYPE=siri'); $devices[0] ? return 1 : return 0}
par:CHECKGDTDONE;Set this to 1 if answer was no in previous template;{ 0 }
par:SKIPSCONTROLL;Set this to 1 if answer was no in previous template;{ 0 }
par:RADIO_KEEPsiriNAME;Keep current attribute value;{ defined AttrVal("DEVICE","siriName",undef) ? undef : SKIPSCONTROLL ? undef : 0 }
@ -157,8 +167,8 @@ order:1000021b
desc:generic template to ask for siriName attribute setting. Only intented for internal use by speechcontrol_request_siriName
#par:SIRIISNAME;Current attribute value alexaName;{ AttrVal("DEVICE","siriName","(not set)") }
par:SIRINAME;Please enter siriName;{ undef }
option:{my @devices=devspec2array("TYPE=(siri)");; $devices[0] ? return 1 : return 0}
option:{my @devices=devspec2array('TYPE=siri'); $devices[0] ? return 1 : return 0}
attr DEVICE siriName SIRINAME
#option:{my @devices=devspec2array("TYPE=RHASSPY");; $devices[0] ? return 1 : return 0}
#option:{my @devices=devspec2array('TYPE=RHASSPY'); $devices[0] ? return 1 : return 0}
#set DEVICE attrTemplate speechcontrol_rhasspy_specials CHECKGDTDONE=1