could you add the option to select the capapility door Control to your child app?
i want to be able to subscribe to ādoorā events ie āthe door is clsoingā
edit, more complicated that thatā¦ ive update mine, but lost track of all the tweeks to post back to you.
preferences {
page(name: "pageConfigureEvents")
page(name: "pageConfigMotion")
page(name: "pageConfigSwitch")
page(name: "pageConfigPresence")
page(name: "pageConfigLock")
page(name: "pageConfigContact")
page(name: "pageConfigMode")
page(name: "pageConfigThermostat")
page(name: "pageConfigAcceleration")
page(name: "pageConfigWater")
page(name: "pageConfigSmoke")
page(name: "pageConfigButton")
page(name: "pageConfigTime")
page(name: "pageConfigSHM")
page(name: "pageConfigPowerMeter")
//new
page(name: "pageConfigdoor")
//new
page(name: "pageConfigRoutine")
page(name: "pageHelpPhraseTokens")
}
def pageConfigureEvents(){
dynamicPage(name: "pageConfigureEvents", title: "Configure Events", install: (!(app?.getInstallationState == true)), uninstall: (app?.getInstallationState == true)) {
section("Group Settings:"){
label(name: "labelRequired", title: "Event Group Name:", defaultValue: "Change this", required: true, multiple: false)
input(name: "groupEnabled", type: "boolean", title: "Enable Group", required: true, defaultValue: true)
}
section("Talk on events:") {
if (settings.timeSlotTime1 || settings.timeSlotTime2 || settings.timeSlotTime3) {
href "pageConfigTime", title: "Time", description: "Tap to modify", state:"complete"
} else {
href "pageConfigTime", title: "Time", description: "Tap to configure"
}
if (settings.motionDeviceGroup1 || settings.motionDeviceGroup2 || settings.motionDeviceGroup3) {
href "pageConfigMotion", title:"Motion", description:"Tap to modify", state:"complete"
} else {
href "pageConfigMotion", title:"Motion", description:"Tap to configure"
}
if (settings.switchDeviceGroup1 || settings.switchDeviceGroup2 || settings.switchDeviceGroup3) {
href "pageConfigSwitch", title:"Switch", description:"Tap to modify", state:"complete"
} else {
href "pageConfigSwitch", title:"Switch", description:"Tap to configure"
}
if (settings.presDeviceGroup1 || settings.presDeviceGroup2 || settings.presDeviceGroup3) {
href "pageConfigPresence", title:"Presence", description:"Tap to modify", state:"complete"
} else {
href "pageConfigPresence", title:"Presence", description:"Tap to configure"
}
if (settings.lockDeviceGroup1 || settings.lockDeviceGroup2 || settings.lockDeviceGroup3) {
href "pageConfigLock", title:"Lock", description:"Tap to modify", state:"complete"
} else {
href "pageConfigLock", title:"Lock", description:"Tap to configure"
}
if (settings.contactDeviceGroup1 || settings.contactDeviceGroup2 || settings.contactDeviceGroup3) {
href "pageConfigContact", title:"Contact", description:"Tap to modify", state:"complete"
} else {
href "pageConfigContact", title:"Contact", description:"Tap to configure"
}
if (settings.modePhraseGroup1 || settings.modePhraseGroup2 || settings.modePhraseGroup3) {
href "pageConfigMode", title:"Mode", description:"Tap to modify", state:"complete"
} else {
href "pageConfigMode", title:"Mode", description:"Tap to configure"
}
if (settings.thermostatDeviceGroup1 || settings.thermostatDeviceGroup2 || settings.thermostatDeviceGroup3) {
href "pageConfigThermostat", title:"Thermostat", description:"Tap to modify", state:"complete"
} else {
href "pageConfigThermostat", title:"Thermostat", description:"Tap to configure"
}
if (settings.accelerationDeviceGroup1 || settings.accelerationDeviceGroup2 || settings.accelerationDeviceGroup3) {
href "pageConfigAcceleration", title: "Acceleration", description:"Tap to modify", state:"complete"
} else {
href "pageConfigAcceleration", title: "Acceleration", description:"Tap to configure"
}
if (settings.waterDeviceGroup1 || settings.waterDeviceGroup2 || settings.waterDeviceGroup3) {
href "pageConfigWater", title: "Water", description:"Tap to modify", state:"complete"
} else {
href "pageConfigWater", title: "Water", description:"Tap to configure"
}
if (settings.smokeDeviceGroup1 || settings.smokeDeviceGroup2 || settings.smokeDeviceGroup3) {
href "pageConfigSmoke", title: "Smoke", description:"Tap to modify", state:"complete"
} else {
href "pageConfigSmoke", title: "Smoke", description:"Tap to configure"
}
if (settings.buttonDeviceGroup1 || settings.buttonDeviceGroup2 || settings.buttonDeviceGroup3) {
href "pageConfigButton", title: "Button", description:"Tap to modify", state:"complete"
} else {
href "pageConfigButton", title: "Button", description:"Tap to configure"
}
if (settings.SHMTalkOnHome || settings.SHMTalkOnAway || settings.SHMTalkOnDisarm) {
href "pageConfigSHM", title: "Smart Home Monitor", description:"Tap to modify", state:"complete"
} else {
href "pageConfigSHM", title: "Smart Home Monitor", description:"Tap to configure"
}
if (settings.powerMeterDeviceGroup1 || settings.powerMeterDeviceGroup2 || settings.powerMeterDeviceGroup3) {
href "pageConfigPowerMeter", title: "Power Meter", description:"Tap to modify", state:"complete"
} else {
href "pageConfigPowerMeter", title: "Power Meter", description:"Tap to configure"
}
//new
if (settings.doorDeviceGroup1 || settings.doorDeviceGroup2 || settings.doorDeviceGroup3) {
href "pageConfigdoor", title: "Door", description:"Tap to modify", state:"complete"
} else {
href "pageConfigdoor", title: "Door", description:"Tap to configure"
}
//new
if (settings.routineDeviceGroup1 || settings.routineDeviceGroup2 || settings.routineDeviceGroup3) {
href "pageConfigRoutine", title: "Routine", description:"Tap to modify", state:"complete"
} else {
href "pageConfigRoutine", title: "Routine", description:"Tap to configure"
}
}
}
}
//new
def pageConfigdoor(){
dynamicPage(name: "pageConfigdoor", title: "Configure talk on door", install: false, uninstall: false) {
section(){
def defaultSpeechActive1 = ""
if (state?.doorTestActive1 == null) { state.doorTestActive1 = false }
if (!doorDeviceGroup1) {
defaultSpeechActive1 = "%devicename% is now %devicechange%"
}
input name: "doorDeviceGroup1", type: "capability.doorControl", title: "Doors(s)", required: false, multiple: true
input name: "doorTalkActive1", type: "text", title: "Say this when change:", required: false, defaultValue: defaultSpeechActive1, submitOnChange: true
input name: "doorTestActive1", type: "bool", title: "Toggle to test door active phrase", required: false, defaultValue: false, submitOnChange: true
input name: "doorPersonality1", type: "enum", title: "Allow Personality (overrides default)?:", required: false, options: ["Yes", "No"], submitOnChange: true
input name: "doorSpeechDevice1", type: parent?.state?.speechDeviceType, title: "Talk with these text-to-speech devices (overrides default)", multiple: true, required: false, submitOnChange: true
if (parent?.state?.speechDeviceType == "capability.musicPlayer") {
input name: "doorVolume1", type: "number", title: "Set volume to (overrides default):", required: false, submitOnChange: true
input name: "doorResumePlay1", type: "bool", title: "Attempt to resume playing audio?", required: false, defaultValue: (parent?.settings?.resumePlay == false) ? false : true, submitOnChange: true
input name: "doorVoice1", type: "enum", title: "Voice (overrides default):", options: parent?.state?.supportedVoices, required: false, submitOnChange: true
}
}
section("Restrictions"){
input name: "doorModes1", type: "mode", title: "Talk when in these mode(s) (overrides default)", multiple: true, required: false
input name: "doorStartTime1", type: "time", title: "Don't talk before (overrides default)", required: false, submitOnChange: true
input name: "doorEndTime1", type: "time", title: "Don't talk after (overrides default)", required: (!(settings.motionStartTime1 == null))
input name: "doorDays1", type: "enum", title: "Restrict to these day(s)", required: false, options: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], multiple: true
input name: "doorDisableSwitch1", type: "capability.switch", title: "Disable when this switch is off", required: false, multiple: false
if (!(settings.doorTestActive1 == null) && !(settings.doorTestActive1 == state?.doorTestActive1)) {
def testevent = [displayName: 'BigTalker Door', name: 'DoorTest', value: 'Active']
def myVoice = parent?.settings?.speechVoice
if (settings?.doorVoice1) { myVoice = doorVoice1 }
sendTalk(app.label, settings.doorTalkActive1, doorSpeechDevice1, doorVolume1, doorResumePlay1, doorPersonality1, myVoice, testevent)
state.doorTestActive1 = settings.doorTestActive1
}
}
section("Help"){
href "pageHelpPhraseTokens", title:"Phrase Tokens", description:"Tap for a list of phrase tokens"
}
}
//End pageConfigdoor()
}
//end of new