For those using Aeon MiniMote, how do you remember what does what?

I love this button controller devices, but what is everyone doing to remember what button does what, single press, press & hold.

I find a few options like even the wall mount Vizia RF 4 button scene controller, but nothing has a good labelling option :smile:

thanks

Printed labels from a Brother P-Touch.

2 Likes

I only have it assigned to 2 modes. And I mapped them out what I thought was a intuitive.

I do have it written down somewhere just in case.

I label mine as well, but using a Dymo Label Maker.

2 Likes

I have two, the family one is programmed the same for push and hold buttons for simplicity. The key layout is in relationship to the location of the room lights and is Velcroed to my oak trim. The other one is bedside and I have 8 functions programmed, including dim on push and full on hold.

BTW- the first battery recharge lasted about 2-1/2 months. I have v1 with software update.

What he said.
What he said

I just have a map in my head of which button controls which device.

The only thing I have is under the slide out (bottom side) is a number for which minimote it is. 1 is in the living room, 2 is in the bedroom, just in case I move them around.
I did that with a sharpie

I just print out a small 1" x 2" label like below using Arial Narrow font, then I cut out a piece of clear packing tape and stick the label to the bottom part of the minimote. It just fits. Maybe not that pretty looking but it works for me.

Pushed/Held Buttons

  1. Office Light
  2. Desk Light
  3. Fireplace LED Light
  4. Living Room Light
  5. Office Ceiling Fan
  6. Office Fan
  7. Media Center
  8. Everything Off

2 Likes

I have done exactly what @Jimxenus did except that I bolded the push action to differentiate it from the push and hold.

I liked @Jimxenus method for the minimote itself. I used his technique in Word to define larger numbers and like @daven bolded the push action. I then added the light gray lines between the buttons for clarity. I just used scotch tape on the sides and over the front for mild protection from dirt and fingerprints.

But I also changed out my device type to @Kyse improved UI for Aeon Minimote so that I get the equivalent labeling capability on my smart phone app. I don’t have to guess what button does what with the Minimote. :slightly_smiling:
You get to label both the green “PRESS” as well as the blue “HOLD” functions.

7 Likes

2 Likes

Old thread, I know.

Here’s how I do it. I print on to clear sticker paper (I use the Silhouette brand).

IMG_9020

And I’m using a modified version of Kyse’s handler …

1 Like

Haha, are there some “special” lamps that you don’t want anyone to know about? :blush:

That would be telling.

Your DTH is a little cleaner visually than Kyse’s, mind sharing the code? :slight_smile:

Absolutely. This is the code:

Note, you will need to change the labels for your buttons in lines 85 though 110. While you can set the labels in prefs, there is a limitation in the code and the labels get lost after you tap a button thus the need for hard-coding them.

/*
 *
 *  Modified by: Nezmo
 *  Modified and extended from SmartThings Kyse Aeon Minimote Device Handler Template.
 *  Changed to move away from using a list to display buttons.
 *
 *  Copyright 2015 SmartThings
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 */

metadata {
	definition (name: "Nezmo's Aeon Minimote (Family Room)", namespace: "Nezmo68", author: "Nezmo") {
		capability "Actuator"
		capability "Button"
		capability "Configuration"
		capability "Sensor"
        
		attribute "numButtons", "STRING"
        
        // Virtual Button Attributes for defining button labels.
        attribute "lblPush1", "STRING"
        attribute "lblHold1", "STRING"
        attribute "lblPush2", "STRING"
        attribute "lblHold2", "STRING"
        attribute "lblPush3", "STRING"
        attribute "lblHold3", "STRING"
        attribute "lblPush4", "STRING"
        attribute "lblHold4", "STRING"
        
		command "pushed"
        command "held"
        command "pushed", [int]
        command "held", [int]
        command "push1"
        command "hold1"
        command "push2"
        command "hold2"
        command "push3"
        command "hold3"
        command "push4"
        command "hold4"

		fingerprint deviceId: "0x0101", inClusters: "0x86,0x72,0x70,0x9B", outClusters: "0x26,0x2B"
		fingerprint deviceId: "0x0101", inClusters: "0x86,0x72,0x70,0x9B,0x85,0x84", outClusters: "0x26" // old style with numbered buttons
	}

	simulator {
		status "pushed 1":  "command: 2001, payload: 01"
		status "held 1":  "command: 2001, payload: 15"
		status "pushed 2":  "command: 2001, payload: 29"
		status "held 2":  "command: 2001, payload: 3D"
		status "pushed 3":  "command: 2001, payload: 51"
		status "held 3":  "command: 2001, payload: 65"
		status "pushed 4":  "command: 2001, payload: 79"
		status "held 4":  "command: 2001, payload: 8D"
		status "wakeup":  "command: 8407, payload: "
	}
    
    preferences {
    	section ("Labels") {
            input("lblPush1", "text", title: "Label for Button 1 Push?", required: true, displayDuringSetup: true, defaultValue: "Push 1", description: "Label for the first push button.")  
            input("lblHold1", "text", title: "Label for Button 1 Hold?", required: true, displayDuringSetup: true, defaultValue: "Hold 1", description: "Label for the first hold button.")  
            input("lblPush2", "text", title: "Label for Button 2 Push?", required: true, displayDuringSetup: true, defaultValue: "Push 2", description: "Label for the second push button.")  
            input("lblHold2", "text", title: "Label for Button 2 Hold?", required: true, displayDuringSetup: true, defaultValue: "Hold 2", description: "Label for the second hold button.")  
            input("lblPush3", "text", title: "Label for Button 3 Push?", required: true, displayDuringSetup: true, defaultValue: "Push 3", description: "Label for the third push button.")  
            input("lblHold3", "text", title: "Label for Button 3 Hold?", required: true, displayDuringSetup: true, defaultValue: "Hold 3", description: "Label for the third hold button.")  
            input("lblPush4", "text", title: "Label for Button 4 Push?", required: true, displayDuringSetup: true, defaultValue: "Push 4", description: "Label for the fourth push button.")  
            input("lblHold4", "text", title: "Label for Button 4 Hold?", required: true, displayDuringSetup: true, defaultValue: "Hold 4", description: "Label for the fourth hold button.")  
        }
    }

	tiles (scale: 2) { 
            standardTile("Push", "device.button", width: 2, height: 4) {
            	state("default", label: "Push", defaultState: true, backgroundColor: "#ffffff", icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Minimote-narrow.png", canChangeIcon: true, canChangeBackground: true)
            }
            standardTile("Push 1", "device.lblPush${1}", width: 2, height: 2, decoration: "flat") { 
            	state("default", label: 'Lamp', action: "push${1}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-1.png", canChangeBackground: true)
            }
            standardTile("Push 2", "device.lblPush${2}", width: 2, height: 2, decoration: "flat") {
            	state("default", label: 'Entryway Lamps', action: "push${2}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-2.png", canChangeBackground: true) 
            }
            standardTile("Push 3", "device.lblPush${3}", width: 2, height: 2, decoration: "flat") {
				state("default", label: "Fan", action: "push${3}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-3.png", canChangeBackground: true)
            }
            standardTile("Push 4", "device.lblPush${4}", width: 2, height: 2, decoration: "flat") {
            	state("default", label: "Kitchen Bar", action: "push${4}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-4.png", canChangeBackground: true) 
            }
            standardTile("Hold" ,"device.button", width: 2, height: 4) {
            	state("default", label: "Hold", defaultState: true, backgroundColor: "#ffffff", icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Minimote-narrow.png", canChangeIcon: true, canChangeBackground: true)
            }
            standardTile("Hold 1", "device.lblHold${1}", width: 2, height: 2, decoration: "flat") {
				state("default", label: 'Landing Lights', action: "hold${1}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-1.png", canChangeBackground: true)
            }
            standardTile("Hold 2", "device.lblHold${2}", width: 2, height: 2, decoration: "flat") {
            	state("default", label: '', action: "hold${2}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-2.png", canChangeBackground: true) 
            }
            standardTile("Hold 3", "device.lblHold${3}", width: 2, height: 2, decoration: "flat") {
				state("default", label: '', action: "hold${3}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-3.png", canChangeBackground: true)
            }
            standardTile("Hold 4", "device.lblHold${4}", width: 2, height: 2, decoration: "flat") {
            	state("default", label: 'Kitchen Sink', action: "hold${4}", defaultState: true, icon: "https://raw.githubusercontent.com/Nezmo68/SmartThingsPublic/master/Button-4.png", canChangeBackground: true)
            }
        	standardTile("configure", "device.configure", inactiveLabel: false, decoration: "flat") {
      		state "configure", label: '', action:"configuration.configure", icon:"st.secondary.configure"
        	}
	}
}

def installed() {
initLabels()
}

def updated() {
	initLabels()
}

def initLabels() {
    (1..4).each { button ->
    	["Push","Hold"].each { action ->
           	def descriptionText = "Updating button ${button} ${action}"
            def settingName = "lbl${action}${button}"
            log.debug descriptionText + ": ${settings[settingName]}"
			sendEvent(name: "lbl${action}${button}", value: "${settings[settingName]}", descriptionText: descriptionText, isStateChange: true, displayed: false)
		}
    }
}

def parse(String description) {
	def results = []
	if (description.startsWith("Err")) {
	    results = createEvent(descriptionText:description, displayed:true)
	} else {
		def cmd = zwave.parse(description, [0x2B: 1, 0x80: 1, 0x84: 1])
    	if(cmd) results += zwaveEvent(cmd)
		if(!results) results = [ descriptionText: cmd, displayed: false ]
	}
	//log.debug("Parsed '$description' to $results")
	return results
}

def zwaveEvent(physicalgraph.zwave.commands.wakeupv1.WakeUpNotification cmd) {
	def results = [createEvent(descriptionText: "$device.displayName woke up", isStateChange: false)]
    
    results += configurationCmds().collect{ response(it) }
	results << response(zwave.wakeUpV1.wakeUpNoMoreInformation().format())

	return results
}

def buttonEvent(button, held) {
	// Leaving value as pushed or held to stay compatible with Button Controller Smart App for now.
	button = button as Integer
	if (held) {
		createEvent(name: "button", value: "held", data: [buttonNumber: button, action: (held ? "held" : "pushed")], source: "DEVICE", descriptionText: "$device.displayName button $button was held", isStateChange: true)
	} else {
		createEvent(name: "button", value: "pushed", data: [buttonNumber: button, action: (held ? "held" : "pushed")], source: "DEVICE", descriptionText: "$device.displayName button $button was pushed", isStateChange: true)
	}
}

def zwaveEvent(physicalgraph.zwave.commands.sceneactivationv1.SceneActivationSet cmd) {
	Integer button = ((cmd.sceneId + 1) / 2) as Integer
	Boolean held = !(cmd.sceneId % 2)
	buttonEvent(button, held)
}

def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicSet cmd) {
	Integer button = (cmd.value / 40 + 1) as Integer
	Boolean held = (button * 40 - cmd.value) <= 20
	buttonEvent(button, held)
}

def zwaveEvent(physicalgraph.zwave.Command cmd) {
	[ descriptionText: "$device.displayName: $cmd", linkText:device.displayName, displayed: false ]
}

def configurationCmds() {
	def cmds = []
	def hubId = zwaveHubNodeId
	(1..4).each { button ->
		cmds << zwave.configurationV1.configurationSet(parameterNumber: 240+button, scaledConfigurationValue: 1).format()
	}
	(1..4).each { button ->
		cmds << zwave.configurationV1.configurationSet(parameterNumber: (button-1)*40, configurationValue: [hubId, (button-1)*40 + 1, 0, 0]).format()
		cmds << zwave.configurationV1.configurationSet(parameterNumber: (button-1)*40 + 20, configurationValue: [hubId, (button-1)*40 + 21, 0, 0]).format()
	}
	cmds
}

def configure() {
	// Set the number of buttons to 4
	sendEvent(name: "numButtons", value: "4", displayed: false)

	def cmds = configurationCmds()
	//log.debug("Sending configuration: $cmds")
	return cmds
}

def push1() {
	pushed(1)
}

def push2() {
	pushed(2)
}

def push3() {
	pushed(3)
}

def push4() {
	pushed(4)
}

def pushed(button) {
	sendEvent(name: "button", value: "pushed", data: [buttonNumber: button, action: "pushed"], source: "COMMAND", descriptionText: "$device.displayName button $button was pushed", isStateChange: true)
}

def hold1() {
	held(1)
}

def hold2() {
	held(2)
}

def hold3() {
	held(3)
}

def hold4() {
	held(4)
}

def held(button) {
    sendEvent(name: "button", value: "held", data: [buttonNumber: button, action: "held"], source: "COMMAND", descriptionText: "$device.displayName button $button was held", isStateChange: true)
}

See this this thread for some other options.

Gave it a try but rendering on an Android is a little funky :slight_smile:

1 Like

Sorry about that. I do not have an Android device to test with. It’s a known issue that things can render differently between iOS and Android.

I can try some things but it will be after Thanksgiving now.

Don’t have a pic, but we go low tech…small pieces of blue painters tape above each bottom with the device name abbreviated/written on the tape.

We only use the push mode for each button.