Popp Keypad

Anybody had any luck with receiving a scene_id with PINs?

Here there is sort of a fix, but I don’t know how to implement it: https://groups.google.com/forum/#!topic/openzwave/GhFLrGwlpaA

I get the following in the zwave-logfile when entering the pin for my scene 2:
Info, Node056, Received Central Scene set from node 56: scene id=2 in 0 seconds. Sending event notification. Warning, Node056, No ValueID created for Scene 2

I however am not in luck picking up that event as a trigger in an automation like this:
Event type: zwave.scene_activated
Event data:
{
“entity_id”: “zwave.popp_keypad”,
“scene_id”: “2”
}

Sorry for replying specifically to you @Andreas_Ziegenfeldt but you you seem to have the keypad working.
Do you get the same “No ValueID created for Scene [#]” in your ozw-log after the “Received Central Scene set from node [#]: scene id=[#] in 0 seconds. Sending event notification.” when entering a valid pin on the Poop keypad? If yes: Do you pick this event up as trigger in an automation?

Hi @KKlitgaard,
I was facing the same problem: “No ValueID created for Scene [#]” in the ozw log and no scene triggered in home assistant.
Here is how I solved it:

  • stop home assistant

  • edit the zwcfg_xxx.xml file like this

  • add the following line in the COMMAND_CLASS_CENTRAL_SCENE relative to your Popp Keypad

     			<Value type="int" genre="user" instance="1" index="1" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="2" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="3" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="4" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="5" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="6" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="7" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="8" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="9" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="10" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="11" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="12" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="13" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="14" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="15" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="16" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="17" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="18" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="19" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="20" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="21" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="22" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
     			<Value type="int" genre="user" instance="1" index="23" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
    

The result should look like this:

		<CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" issecured="true" innif="true" scenecount="0">
			<Instance index="1" />
			<Value type="int" genre="system" instance="1" index="0" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="1" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="2" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="3" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="4" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="5" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="6" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="7" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="8" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="9" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="10" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="11" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="12" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="13" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="14" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="15" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="16" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="17" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="18" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="19" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="20" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="21" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="22" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			<Value type="int" genre="user" instance="1" index="23" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
		</CommandClass>
  • Save the file and restart home assistant
3 Likes

That’s perfect. Thank you!

Hi,

I’m having troubles aswell. I used the Value template in the Command_Class_central_scene, but I don’t see any events in my logs.
Extra information i need:

  • Did you use MM->4->* to include or MM->3->* to include the keypad?
  • Did you include it as secure or as non-secure into HA, or does this not matter?
  • I mistakenly entered 2 scenes with the same PIN, could this be a problem? (best remove one of them i guess).

Thank you in advance!

Kind regards,
Jeroen

I used 4>* after hitting “Add node secure”.

I already had added a network key to my Z-wave-part of configuration.yaml

I would remove one of the identical pins.

What are you logger settings in configuration.yaml?

I have the keypad working, but only half of the entered pins are received in Hass. I think it is caused by bad signal due the brick wall between the nearest powered Z-wave device (a multisensor 6 with usb-power) and the keypad outside. Also the keypad doesn’t have any Z-wave neighbors - unlike all my other devices.

Hi @KKlitgaard,

Thank you for your respons.
I also added it with the 4>* as secure with the network key in my configuration.yaml.
Logger setting are default, should I set them to debug to receive the info?
I will remove the identical pin en let you know if this changes anything.
Something I do notice is that I only have “Keypad Alarm level, Alarm type and Keypad sensor” I don’t have the Access Control or SourceNodeId in HA.
Keypad Sensor, alarm level and alarm type never change whatever button i press or code i enter.

When I double press the ring button I do get a respose:
2018-12-09 11:03:51.704 Info, Node003, Sending (WakeUp) message (Callback ID=0x52, Expected Reply=0x04) - SensorBinaryCmd_Get (Node=3): 0x01, 0x09, 0x00, 0x13, 0x03, 0x02, 0x30, 0x02, 0x25, 0x52, 0xa1
2018-12-09 11:03:51.712 Detail, Node003, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2018-12-09 11:03:51.712 Detail, Node003, ZW_SEND_DATA delivered to Z-Wave stack
2018-12-09 11:03:51.728 Detail, Node003, Received: 0x01, 0x07, 0x00, 0x13, 0x52, 0x00, 0x00, 0x02, 0xbb
2018-12-09 11:03:51.729 Detail, Node003, ZW_SEND_DATA Request with callback ID 0x52 received (expected 0x52)
2018-12-09 11:03:51.729 Info, Node003, Request RTT 25 Average Request RTT 52
2018-12-09 11:03:51.729 Detail, Expected callbackId was received
2018-12-09 11:04:01.705 Error, Node003, ERROR: Dropping command, expected response not received after 1 attempt(s)
2018-12-09 11:04:01.705 Detail, Node003, Removing current message
2018-12-09 11:04:01.705 Detail, Node003, Notification: Notification - TimeOut
2018-12-09 11:04:01.715 Detail,
2018-12-09 11:04:01.716 Info, Node003, Sending (WakeUp) message (Callback ID=0x53, Expected Reply=0x04) - BatteryCmd_Get (Node=3): 0x01, 0x09, 0x00, 0x13, 0x03, 0x02, 0x80, 0x02, 0x25, 0x53, 0x10
2018-12-09 11:04:01.724 Detail, Node003, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2018-12-09 11:04:01.724 Detail, Node003, ZW_SEND_DATA delivered to Z-Wave stack
2018-12-09 11:04:01.740 Detail, Node003, Received: 0x01, 0x07, 0x00, 0x13, 0x53, 0x00, 0x00, 0x02, 0xba
2018-12-09 11:04:01.740 Detail, Node003, ZW_SEND_DATA Request with callback ID 0x53 received (expected 0x53)
2018-12-09 11:04:01.740 Info, Node003, Request RTT 24 Average Request RTT 38
2018-12-09 11:04:01.741 Detail, Expected callbackId was received
2018-12-09 11:04:01.755 Detail, Node003, Received: 0x01, 0x09, 0x00, 0x04, 0x00, 0x03, 0x03, 0x80, 0x03, 0x64, 0x15
2018-12-09 11:04:01.756 Detail,
2018-12-09 11:04:01.756 Info, Node003, Response RTT 40 Average Response RTT 168
2018-12-09 11:04:01.756 Info, Node003, Received Battery report from node 3: level=100
2018-12-09 11:04:01.756 Detail, Node003, Refreshed Value: old value=100, new value=100, type=byte
2018-12-09 11:04:01.756 Detail, Node003, Changes to this value are not verified
2018-12-09 11:04:01.756 Detail, Node003, Expected reply and command class was received
2018-12-09 11:04:01.757 Detail, Node003, Message transaction complete
2018-12-09 11:04:01.757 Detail,
2018-12-09 11:04:01.757 Detail, Node003, Removing current message
2018-12-09 11:04:01.757 Detail, Node003, Notification: ValueChanged
2018-12-09 11:04:01.775 Detail, Node003, Query Stage Complete (Dynamic)
2018-12-09 11:04:01.775 Detail, Node003, AdvanceQueries queryPending=0 queryRetries=0 queryStage=Configuration live=1
2018-12-09 11:04:01.775 Detail, Node003, QueryStage_Configuration
2018-12-09 11:04:01.775 Detail, Node003, QueryStage_Complete
2018-12-09 11:04:01.775 Detail, Node003, Queuing (WakeUp) WakeUpCmd_NoMoreInformation (Node=3): 0x01, 0x09, 0x00, 0x13, 0x03, 0x02, 0x84, 0x08, 0x25, 0x54, 0x19
2018-12-09 11:04:01.775 Warning, CheckCompletedNodeQueries m_allNodesQueried=1 m_awakeNodesQueried=1
2018-12-09 11:04:01.775 Detail, Node003, Notification: NodeQueriesComplete
2018-12-09 11:04:01.777 Detail,
2018-12-09 11:04:01.777 Info, Node003, Sending (WakeUp) message (Callback ID=0x54, Expected Reply=0x13) - WakeUpCmd_NoMoreInformation (Node=3): 0x01, 0x09, 0x00, 0x13, 0x03, 0x02, 0x84, 0x08, 0x25, 0x54, 0x19
2018-12-09 11:04:01.786 Detail, Node003, Received: 0x01, 0x04, 0x01, 0x13, 0x01, 0xe8
2018-12-09 11:04:01.786 Detail, Node003, ZW_SEND_DATA delivered to Z-Wave stack
2018-12-09 11:04:01.802 Detail, Node003, Received: 0x01, 0x07, 0x00, 0x13, 0x54, 0x00, 0x00, 0x02, 0xbd
2018-12-09 11:04:01.802 Detail, Node003, ZW_SEND_DATA Request with callback ID 0x54 received (expected 0x54)
2018-12-09 11:04:01.802 Info, Node003, Request RTT 24 Average Request RTT 31
2018-12-09 11:04:01.802 Info, Node003, Node 3 has been marked as asleep
2018-12-09 11:04:01.802 Detail, Expected callbackId was received
2018-12-09 11:04:01.803 Detail, Expected reply was received
2018-12-09 11:04:01.803 Detail, Message transaction complete
2018-12-09 11:04:01.803 Detail,
2018-12-09 11:04:01.803 Detail, Node003, Removing current message
2018-12-09 11:04:01.803 Detail, Node003, Notification: Notification - Node Asleep

Kind regards,
Jeroen

This is just what I was looking for. I see online price at 180 Euro,

Generally zwave stuff costs almost 10 times more then 433/zigbee comparable product, can’t understad (and accept) such a big price difference.

Unfortunately no zigbee keypad (that I know of), and of course a 433 solution is not safe for key codes.

hi @KKlitgaard

I got it to work :slight_smile:
Removed and re-added the keypad from zwave, made a new code with an ID and changed the xml file and everything is working now !

Thanks for the help.

Kind regards,
Jeroen

Yes the price difference is rather big but there is no other comparible product that offers a multi-code wireless keypad that you can include in almost any opensource controller.
433 as far as i know doesn’t allow two way communication so no way of knowing if your command was acctualy received.
Zigbee is a good alternative but I’m not sure if this allows for secure communication for edge devices.

Kind regards,
Jeroen

No problem :slight_smile:

yes unfortunately. Will have to wait that prices go dsown. A keypad for 180 Eiuro is overpriced in my opinion

How do you do to remove an old PIN? I can set a PIN code with HA, but I have no luck with changing or removing the code.

I can’t for the life of me get this working.

I have a network_key in the configuration.yaml.

I press 4 then * to include it and it all shows up fine, I set a pin code 8 * and set a master code 8 * 20

I editing the xml file with the correct scene class.

Nothing shows up the logs on a successful ping or bad pin entry.

Do I have to be using OpenZW for this?

Nevermind I fixed it. The little magnet has slipped in the back cover and so wasn’t disabling the tamper alarm which was preventing the signal being sent.

How did you find this out? I haven’t seen this solution mentioned anywhere else and it’s the only way to make it work!