Closed myclue closed 4 years ago
Off the top of my head you could try
def getSpecText(currentButton) {
currentButton==null ? state.currentButton : currentButton
if (state.buttonType == "Lutron Pico") {
switch (currentButton) {
case 1: return "Top Button"; break
case 2: return "Bottom Button"; break
case 3: return "Middle Button"; break
case 4: return "Up Button"; break
case 5: return "Down Button"; break
}
}
From: puzzles312 notifications@github.com Sent: 31 January 2020 02:33 To: paulsheldon/SmartThings-PS SmartThings-PS@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: [paulsheldon/SmartThings-PS] Adding getSpecText to configButtonsPage (#14)
I find it useful to see the SpecText for each button on the configButtonsPage so I know in advance which button press sequence I'm editing. Looking at the existing code, it didn't seem like I could reuse getSpecText() so I created getSpecTextConfig(i) and replicated with some tweaks.
I edited chooseButton() to say:
for (i in 1..state.buttonCount) {
href "configButtonsPage", title: "Button ${i}"+"\n${getSpecTextConfig(i)}", state: getDescription(i) != "Tap to configure" ? "complete" : null, description: getDescription(i), params: [pbutton: i]
and then added
def getSpecTextConfig(i) { if (state.buttonType == "Lutron Pico") { switch (i) { case 1: return "Top Button"; break case 2: return "Bottom Button"; break case 3: return "Middle Button"; break case 4: return "Up Button"; break case 5: return "Down Button"; break } } return "Not Specified By Device" }
Is there a more eloquent way of reusing getSpecText() instead?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/paulsheldon/SmartThings-PS/issues/14?email_source=notifications&email_token=ABG3CHL6FXLIG4H42DYCDA3RAOEWHA5CNFSM4KOALUH2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IKAQGEA , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABG3CHJDU5RIKLTAH5M4YUTRAOEWHANCNFSM4KOALUHQ . https://github.com/notifications/beacon/ABG3CHONJOYGGB52AED2LXLRAOEWHA5CNFSM4KOALUH2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IKAQGEA.gif
Thanks!
Here are my complete edits to add the getSpecText on the configButtonsPage while minimizing maintenance requirements for getSpecText by adding an optional parameter. I've added WS200+, WD200+, and Zen27 to the list of devices.
section("Step 2: Configure Buttons for Selected Device") {
if (state.buttonCount < 1) {
paragraph "The selected button device did not report the number of buttons it has. Please specify in the Advanced Config section below."
} else {
for (i in 1..state.buttonCount) {
href "configButtonsPage", title: "Button ${i}"**+"\n${getSpecText(i)}"**, state: getDescription(i) != "Tap to configure" ? "complete" : null, description: getDescription(i), params: [pbutton: i]
def getSpecText(currentButton) {
currentButton=(currentButton==null ? state.currentButton : currentButton)
if (state.buttonType == "Lutron Pico") {
switch (currentButton) {
case 1: return "Top Button"; break
case 2: return "Bottom Button"; break
case 3: return "Middle Button"; break
case 4: return "Up Button"; break
case 5: return "Down Button"; break
}
}
if (state.buttonType == "Hue Dimmer") {
switch (currentButton) {
case 1: return "On Button"; break
case 2: return "Up Button"; break
case 3: return "Down Button"; break
case 4: return "Off Button"; break
}
}
if (state.buttonType == "Cube Controller") {
switch (currentButton) {
case 1: return "Shake Cube"; break
case 2: return "Flip Cube 90 Degrees"; break
case 3: return "Flip Cube 180 Degrees"; break
case 4: return "Slide Cube"; break
case 5: return "Knock Cube"; break
case 6: return "Rotate Cube Right"; break
case 7: return "Rotate Cube Left"; break
}
}
if (state.buttonType == "Aeon Minimote") {
switch (currentButton) {
case 1: return "Top Left Button"; break
case 2: return "Top Right Button"; break
case 3: return "Lower Left Button"; break
case 4: return "Lower Right"; break
}
}
if (state.buttonType.contains("WD100+ Dimmer")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle\n(See user guide for quirks)"; break
case 6: return "Press & Hold Lower Paddle\n(See user guide for quirks)"; break
case 7: return "Single Tap Upper Paddle\n(See user guide for quirks)"; break
case 8: return "Single Tap Lower Paddle\n(See user guide for quirks)"; break
}
}
if (state.buttonType.contains("WS100+ Switch")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle"; break
case 6: return "Press & Hold Lower Paddle"; break
case 7: return "Single Tap Upper Paddle"; break
case 8: return "Single Tap Lower Paddle"; break
}
}
if (state.buttonType.contains("WD200+ Dimmer")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle\n(See user guide for quirks)"; break
case 6: return "Press & Hold Lower Paddle\n(See user guide for quirks)"; break
case 7: return "Single Tap Upper Paddle\n(See user guide for quirks)"; break
case 8: return "Single Tap Lower Paddle\n(See user guide for quirks)"; break
case 9: return "4X-Tap Upper Paddle"; break
case 10: return "4X-Tap Lower Paddle"; break
case 11: return "5X-Tap Upper Paddle"; break
case 12: return "5X-Tap Lower Paddle"; break
}
}
if (state.buttonType.contains("WS200+ Switch")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle\n(See user guide for quirks)"; break
case 6: return "Press & Hold Lower Paddle\n(See user guide for quirks)"; break
case 7: return "Single Tap Upper Paddle\n(See user guide for quirks)"; break
case 8: return "Single Tap Lower Paddle\n(See user guide for quirks)"; break
case 9: return "4X-Tap Upper Paddle"; break
case 10: return "4X-Tap Lower Paddle"; break
case 11: return "5X-Tap Upper Paddle"; break
case 12: return "5X-Tap Lower Paddle"; break
}
}
if (state.buttonType.contains("Inovelli")) {
switch (currentButton) {
case 1: return "NOT OPERATIONAL - DO NOT USE"; break
case 2: return "2X Tap Upper Paddle = Pushed\n2X Tap Lower Paddle = Held"; break
case 3: return "3X Tap Upper Paddle = Pushed\n3X Tap Lower Paddle = Held"; break
case 4: return "4X Tap Upper Paddle = Pushed\n4X Tap Lower Paddle = Held"; break
case 5: return "5X Tap Upper Paddle = Pushed\n5X Tap Lower Paddle = Held"; break
case 6: return "Hold Upper Paddle = Pushed\nHold Lower Paddle = Held"; break
case 7: if (state.buttonType.contains("Red")) { return "1x Tap Config Button"; break; }
}
}
if (state.buttonType.contains("Zen27")) {
switch (currentButton) {
case 1: return "1 x up"; break
case 2: return "1 x down"; break
case 3: return "2 x up"; break
case 4: return "2 x down"; break
case 5: return "3 x up"; break
case 6: return "3 x down"; break
case 7: return "4 x up"; break
case 8: return "4 x down"; break
case 9: return "5 x up"; break
case 10: return "5 x down"; break
}
}
if (state.buttonType.contains("ZRC-90")) {
switch (currentButton) {
case 1: return "Tap or Hold Button 1"; break
case 2: return "Tap or Hold Button 2"; break
case 3: return "Tap or Hold Button 3"; break
case 4: return "Tap or Hold Button 4"; break
case 5: return "Tap or Hold Button 5"; break
case 6: return "Tap or Hold Button 6"; break
case 7: return "Tap or Hold Button 7"; break
case 8: return "Tap or Hold Button 8"; break
case 9: return "2X Tap Button 1\nHold Not Available"; break
case 10: return "2X Tap Button 2\nHold Not Available"; break
case 11: return "2X Tap Button 3\nHold Not Available"; break
case 12: return "2X Tap Button 4\nHold Not Available"; break
case 13: return "2X Tap Button 5\nHold Not Available"; break
case 14: return "2X Tap Button 6\nHold Not Available"; break
case 15: return "2X Tap Button 7\nHold Not Available"; break
case 16: return "2X Tap Button 8\nHold Not Available"; break
}
}
return "Not Specified By Device"
}
Thanks I’ll add that to the next release and maybe just add an option to turn it on/off in options page
From: puzzles312 notifications@github.com Sent: 31 January 2020 19:34 To: paulsheldon/SmartThings-PS SmartThings-PS@noreply.github.com Cc: Paul Sheldon paulsheldon1966@gmail.com; Comment comment@noreply.github.com Subject: Re: [paulsheldon/SmartThings-PS] Adding getSpecText to configButtonsPage (#14)
Thanks!
Here are my complete edits to add the getSpecText on the configButtonsPage while minimizing maintenance requirements for getSpecText by adding an optional parameter. I've added WS200+, WD200+, and Zen27 to the list of devices.
section("Step 2: Configure Buttons for Selected Device") {
if (state.buttonCount < 1) {
paragraph "The selected button device did not report the number of buttons it has. Please specify in the Advanced Config section below."
} else {
for (i in 1..state.buttonCount) {
href "configButtonsPage", title: "Button ${i}"**+"\n${getSpecText(i)}"**, state: getDescription(i) != "Tap to configure" ? "complete" : null, description: getDescription(i), params: [pbutton: i]
def getSpecText(currentButton) {
currentButton=(currentButton==null ? state.currentButton : currentButton)
if (state.buttonType == "Lutron Pico") {
switch (currentButton) {
case 1: return "Top Button"; break
case 2: return "Bottom Button"; break
case 3: return "Middle Button"; break
case 4: return "Up Button"; break
case 5: return "Down Button"; break
}
}
if (state.buttonType == "Hue Dimmer") {
switch (currentButton) {
case 1: return "On Button"; break
case 2: return "Up Button"; break
case 3: return "Down Button"; break
case 4: return "Off Button"; break
}
}
if (state.buttonType == "Cube Controller") {
switch (currentButton) {
case 1: return "Shake Cube"; break
case 2: return "Flip Cube 90 Degrees"; break
case 3: return "Flip Cube 180 Degrees"; break
case 4: return "Slide Cube"; break
case 5: return "Knock Cube"; break
case 6: return "Rotate Cube Right"; break
case 7: return "Rotate Cube Left"; break
}
}
if (state.buttonType == "Aeon Minimote") {
switch (currentButton) {
case 1: return "Top Left Button"; break
case 2: return "Top Right Button"; break
case 3: return "Lower Left Button"; break
case 4: return "Lower Right"; break
}
}
if (state.buttonType.contains("WD100+ Dimmer")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle\n(See user guide for quirks)"; break
case 6: return "Press & Hold Lower Paddle\n(See user guide for quirks)"; break
case 7: return "Single Tap Upper Paddle\n(See user guide for quirks)"; break
case 8: return "Single Tap Lower Paddle\n(See user guide for quirks)"; break
}
}
if (state.buttonType.contains("WD200+ Dimmer")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle\n(See user guide for quirks)"; break
case 6: return "Press & Hold Lower Paddle\n(See user guide for quirks)"; break
case 7: return "Single Tap Upper Paddle\n(See user guide for quirks)"; break
case 8: return "Single Tap Lower Paddle\n(See user guide for quirks)"; break
case 9: return "4X-Tap Upper Paddle"; break
case 10: return "4X-Tap Lower Paddle"; break
case 11: return "5X-Tap Upper Paddle"; break
case 12: return "5X-Tap Lower Paddle"; break
}
}
if (state.buttonType.contains("WS100+ Switch")) {
switch (currentButton) {
case 1: return "Double-Tap Upper Paddle"; break
case 2: return "Double-Tap Lower Paddle"; break
case 3: return "Triple-Tap Upper Paddle"; break
case 4: return "Triple-Tap Lower Paddle"; break
case 5: return "Press & Hold Upper Paddle"; break
case 6: return "Press & Hold Lower Paddle"; break
case 7: return "Single Tap Upper Paddle"; break
case 8: return "Single Tap Lower Paddle"; break
}
}
if (state.buttonType.contains("Inovelli")) {
switch (currentButton) {
case 1: return "NOT OPERATIONAL - DO NOT USE"; break
case 2: return "2X Tap Upper Paddle = Pushed\n2X Tap Lower Paddle = Held"; break
case 3: return "3X Tap Upper Paddle = Pushed\n3X Tap Lower Paddle = Held"; break
case 4: return "4X Tap Upper Paddle = Pushed\n4X Tap Lower Paddle = Held"; break
case 5: return "5X Tap Upper Paddle = Pushed\n5X Tap Lower Paddle = Held"; break
case 6: return "Hold Upper Paddle = Pushed\nHold Lower Paddle = Held"; break
case 7: if (state.buttonType.contains("Red")) { return "1x Tap Config Button"; break; }
}
}
if (state.buttonType.contains("Zen27")) {
switch (currentButton) {
case 1: return "1 x up"; break
case 2: return "1 x down"; break
case 3: return "2 x up"; break
case 4: return "2 x down"; break
case 5: return "3 x up"; break
case 6: return "3 x down"; break
case 7: return "4 x up"; break
case 8: return "4 x down"; break
case 9: return "5 x up"; break
case 10: return "5 x down"; break
}
}
if (state.buttonType.contains("ZRC-90")) {
switch (currentButton) {
case 1: return "Tap or Hold Button 1"; break
case 2: return "Tap or Hold Button 2"; break
case 3: return "Tap or Hold Button 3"; break
case 4: return "Tap or Hold Button 4"; break
case 5: return "Tap or Hold Button 5"; break
case 6: return "Tap or Hold Button 6"; break
case 7: return "Tap or Hold Button 7"; break
case 8: return "Tap or Hold Button 8"; break
case 9: return "2X Tap Button 1\nHold Not Available"; break
case 10: return "2X Tap Button 2\nHold Not Available"; break
case 11: return "2X Tap Button 3\nHold Not Available"; break
case 12: return "2X Tap Button 4\nHold Not Available"; break
case 13: return "2X Tap Button 5\nHold Not Available"; break
case 14: return "2X Tap Button 6\nHold Not Available"; break
case 15: return "2X Tap Button 7\nHold Not Available"; break
case 16: return "2X Tap Button 8\nHold Not Available"; break
}
}
return "Not Specified By Device"
}
— You are receiving this because you commented. Reply to this email directly, https://github.com/paulsheldon/SmartThings-PS/issues/14?email_source=notifications&email_token=ABG3CHPL46FPRYWJVLBLHW3RAR4I7A5CNFSM4KOALUH2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKPX62I#issuecomment-580878185 view it on GitHub, or https://github.com/notifications/unsubscribe-auth/ABG3CHNSCDQNZ5KUBT5FODTRAR4I7ANCNFSM4KOALUHQ unsubscribe. https://github.com/notifications/beacon/ABG3CHMG2WXSZCYAQ3YJGLLRAR4I7A5CNFSM4KOALUH2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEKPX62I.gif
These are now incorporated in next release
Thanks for adding the new devices.
I didn't see the additional information on the Step 2: Configure Buttons for Selected Devices, so I had to re-add code to def chooseButton() on my local version after pulling your latest release.
for (i in 1..state.buttonCount) {
href "configButtonsPage", title: "Button ${i}" + "\n" + "${getSpecText(i)}", state: getDescription(i) != "Tap to configure" ? "complete" : null, description: getDescription(i), params: [pbutton: i]
You mentioned maybe adding this to an options page so it could be toggled per user, though I'm not sure how to find an options page.
I thought I had done that, I’ll check now and come back to you
From: puzzles312 notifications@github.com Sent: 11 May 2020 19:18 To: paulsheldon/SmartThings-PS SmartThings-PS@noreply.github.com Cc: Paul Sheldon paulsheldon1966@gmail.com; State change state_change@noreply.github.com Subject: Re: [paulsheldon/SmartThings-PS] Adding getSpecText to configButtonsPage (#14)
Thanks for adding the new devices. I didn't see the additional information on the Step 2: Configure Buttons for Selected Devices, so I had to re-add code to def chooseButton() on my local version after pulling your latest release.
for (i in 1..state.buttonCount) {
href "configButtonsPage", title: "Button ${i}" + "\n" + "${getSpecText(i)}", state: getDescription(i) != "Tap to configure" ? "complete" : null, description: getDescription(i), params: [pbutton: i]
You mentioned maybe adding this to an options page so it could be toggled per user, though I'm not sure how to find an options page.
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/paulsheldon/SmartThings-PS/issues/14#issuecomment-626870185 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABG3CHNQJNZFA53EG662KX3RRA6OPANCNFSM4KOALUHQ . https://github.com/notifications/beacon/ABG3CHKFK7TP34YCTI4OWLTRRA6OPA5CNFSM4KOALUH2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEVOUPKI.gif
I find it useful to see the SpecText for each button on the configButtonsPage so I know in advance which button press sequence I'm editing. Looking at the existing code, it didn't seem like I could reuse getSpecText() so I created getSpecTextConfig(i) and replicated with some tweaks.
I edited chooseButton() to say:
and then added
Is there a more eloquent way of reusing getSpecText() instead?