Product Review: GE Hinge Pin Smart Door Sensor

What type of devices do these identify themselves at in HA?

Notification Sensor:

<Node id="9" name="main_door_t" location="" basic="4" generic="7" specific="1" roletype="6" devicetype="3072" nodetype="0" type="Notification Sensor" listening="false" frequentListening="false" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Dynamic">
	<Manufacturer id="63" name="GE">
		<Product type="4953" id="3032" name="32563 Hinge Pin Smart Door Sensor" />
	</Manufacturer>
	<CommandClasses>
		<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="4">
			<Instance index="1" />
			<Value type="byte" genre="basic" instance="1" index="0" label="Basic" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
		</CommandClass>
		<CommandClass id="48" name="COMMAND_CLASS_SENSOR_BINARY" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="bool" genre="user" instance="1" index="0" label="Sensor" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False" />
			<SensorMap index="0" type="203" />
		</CommandClass>
		<CommandClass id="90" name="COMMAND_CLASS_DEVICE_RESET_LOCALLY" version="1" request_flags="4" innif="true">
			<Instance index="1" />
		</CommandClass>
		<CommandClass id="94" name="COMMAND_CLASS_ZWAVE_PLUS_INFO" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="byte" genre="system" instance="1" index="0" label="ZWave+ Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="1" />
			<Value type="short" genre="system" instance="1" index="1" label="InstallerIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="3072" />
			<Value type="short" genre="system" instance="1" index="2" label="UserIcon" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="3072" />
		</CommandClass>
		<CommandClass id="112" name="COMMAND_CLASS_CONFIGURATION" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="list" genre="config" instance="1" index="20" label="Change Open/Close Report Method" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
				<Item label="Notification" value="1" />
				<Item label="Basic Set" value="2" />
				<Item label="Basic Report" value="3" />
			</Value>
		</CommandClass>
		<CommandClass id="113" name="COMMAND_CLASS_ALARM" version="4" innif="true">
			<Instance index="1" />
			<Value type="byte" genre="user" instance="1" index="0" label="Alarm Type" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
			<Value type="byte" genre="user" instance="1" index="1" label="Alarm Level" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
			<Value type="byte" genre="user" instance="1" index="2" label="SourceNodeId" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
			<Value type="byte" genre="user" instance="1" index="9" label="Access Control" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="23" />
		</CommandClass>
		<CommandClass id="114" name="COMMAND_CLASS_MANUFACTURER_SPECIFIC" version="1" request_flags="4" innif="true">
			<Instance index="1" />
		</CommandClass>
		<CommandClass id="115" name="COMMAND_CLASS_POWERLEVEL" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="list" genre="system" instance="1" index="0" label="Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
				<Item label="Normal" value="0" />
				<Item label="-1dB" value="1" />
				<Item label="-2dB" value="2" />
				<Item label="-3dB" value="3" />
				<Item label="-4dB" value="4" />
				<Item label="-5dB" value="5" />
				<Item label="-6dB" value="6" />
				<Item label="-7dB" value="7" />
				<Item label="-8dB" value="8" />
				<Item label="-9dB" value="9" />
			</Value>
			<Value type="byte" genre="system" instance="1" index="1" label="Timeout" units="seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
			<Value type="button" genre="system" instance="1" index="2" label="Set Powerlevel" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
			<Value type="byte" genre="system" instance="1" index="3" label="Test Node" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
			<Value type="list" genre="system" instance="1" index="4" label="Test Powerlevel" units="dB" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
				<Item label="Normal" value="0" />
				<Item label="-1dB" value="1" />
				<Item label="-2dB" value="2" />
				<Item label="-3dB" value="3" />
				<Item label="-4dB" value="4" />
				<Item label="-5dB" value="5" />
				<Item label="-6dB" value="6" />
				<Item label="-7dB" value="7" />
				<Item label="-8dB" value="8" />
				<Item label="-9dB" value="9" />
			</Value>
			<Value type="short" genre="system" instance="1" index="5" label="Frame Count" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
			<Value type="button" genre="system" instance="1" index="6" label="Test" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
			<Value type="button" genre="system" instance="1" index="7" label="Report" units="" read_only="false" write_only="true" verify_changes="false" poll_intensity="0" min="0" max="0" />
			<Value type="list" genre="system" instance="1" index="8" label="Test Status" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" vindex="0" size="1">
				<Item label="Failed" value="0" />
				<Item label="Success" value="1" />
				<Item label="In Progress" value="2" />
			</Value>
			<Value type="short" genre="system" instance="1" index="9" label="Acked Frames" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-32768" max="32767" value="0" />
		</CommandClass>
		<CommandClass id="128" name="COMMAND_CLASS_BATTERY" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="byte" genre="user" instance="1" index="0" label="Battery Level" units="%" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="100" />
		</CommandClass>
		<CommandClass id="132" name="COMMAND_CLASS_WAKE_UP" version="2" innif="true">
			<Instance index="1" />
			<Value type="int" genre="system" instance="1" index="0" label="Wake-up Interval" units="Seconds" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
			<Value type="int" genre="system" instance="1" index="1" label="Minimum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="300" />
			<Value type="int" genre="system" instance="1" index="2" label="Maximum Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="86400" />
			<Value type="int" genre="system" instance="1" index="3" label="Default Wake-up Interval" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3600" />
			<Value type="int" genre="system" instance="1" index="4" label="Wake-up Interval Step" units="Seconds" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="60" />
		</CommandClass>
		<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Associations num_groups="1">
				<Group index="1" max_associations="5" label="Group 1" auto="true">
					<Node id="1" />
				</Group>
			</Associations>
		</CommandClass>
		<CommandClass id="134" name="COMMAND_CLASS_VERSION" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="string" genre="system" instance="1" index="0" label="Library Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="3" />
			<Value type="string" genre="system" instance="1" index="1" label="Protocol Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="4.24" />
			<Value type="string" genre="system" instance="1" index="2" label="Application Version" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="1.35" />
		</CommandClass>
	</CommandClasses>
</Node>

I was wondering if something could be done with an input_boolean. Monitor the status of the Access Control… 22 = Open, 23 = Closed. Not sure if that will work. Haven’t used any input_booleans yet.

is Notification Sensor a new type of HA component? I didn’t find it in the component list.

No idea. I’m only trying these because I’ve had them. I’d rather not buy new door sensors when I have perfectly good ones that say 22/23 instead of Open/Close. I’m going to investigate this and I’ll get back to you.

Yes, please let me know too. I really like the hinge sensor and its good to know its an HA thing instead of a sensor thing as that can be fixed in an update at some point.

I thought of working the access control but did not want to mess with it too much in case it was a sensor issue. I did not want to set up several customizations to deal with a broken sensor. If that is not the case, it would make it more worthwhile. However, I would be even more interested in what is missing in HA that prevents these from working out of the box and seeing if that could be fixed easily enough.

Got it, pretty easy:

sensor:    
  - platform: template
      sensors:
        main_door_hindge:
          value_template: "{%if states.sensor.main_door_t_access_control_9_9.state == '23' %}closed{% elif states.sensor.main_door_t_access_control_9_9.state == '22' %}open{% endif %}"
          friendly_name: 'Main Door Status'
        entry_door_hindge:
          value_template: "{%if states.sensor.entry_door_t_access_control_18_9.state == '23' %}closed{% elif states.sensor.entry_door_t_access_control_18_9.state == '22' %}open{% endif %}"
          friendly_name: 'Garage Entry Door Status'   

This changes the state of the template object I believe. As this stands, it changes the word on the sensor which I believe is the state of the new template sensor.

3 Likes

Well, maybe this will turn into a good thing after all. Thanks for posting the code.

1 Like

I’m also experiencing the same issue. The binary sensor always reports off unless i press the button while its in a new state. However, I did manage to get the 22/23 state change working…

A couple things to make note of:

  • The battery was EXTREMELY loose. I had to bend the spring to get a reliable battery connection. It kept cutting out for me.
  • The device is made of two parts - the plastic white part (holds the battery and all the zwave guts), and the metal top part that connects the the hinge. The device WILL NOT report new values in the Notification report unless these two are snugly fit together.

I spent about an hour trying to figure out why the values weren’t changing before I realize there was a sensor inside that knew if the top was securely on or not.

After that, i was able to get the 22/23 status change mentioned above on the sensor.ge_32563_hinge_pin_smart_door_sensor_access_control_37_9 device.

Hope this helps someone!

1 Like

Can you go through the steps that you went through again. There was a place there where you went into ozwcp and it seemed kind of like “magic happened”. Can you shed some light on the magic?

Are you stuck somewhere? I just went through setup last night, I can probably help while its fresh in my mind :slight_smile:

I’ve been rebuilding my install for the past 3 days. But the last I had, was, the hinge was recognized by HA but no matter what I did with the switch, nothing changed in HA. The light on the switch would turn on and off as the door opened. I could hear the click as it passed by the trigger point, but nothing changed in the HA screens. I figured at that point, I probably needed to go into ozwcp and do whatever magic was done, but couldn’t get ozwcp to install. So that’s when I started rebuilding my environment. Now I have an environment where I can get into ozwcp :slight_smile: so i’m ready to get back to it.

SUCCESS!!! I did it through AppDaemon instead of through YAML, just because that’s where all of my automations are. But, it works!!!

Here is what I found out (some of this is a re-hash)

  1. The little button on the side controls the mode of the device.
  2. you have to have the device not talking to a zwave network to configure it.
    1. you can do this by turning off the zwave network momentarily through HA configuring it and turning the zwave network back on.
  3. you change nodes by pressing the button 5 times, relatively fast. if your zwave network is still connnected to the device, the lights won't flash.
  4. Note: I am going to call the modes based on the number of flashes you get after pressing the button 5 times.
  5. Modes:
    1. mode 3: does nothing I can tell
    2. mode 2: does nothing I can tell
    3. mode 1: works (sends messages to HA)
  6. As everyone has figured out, when the sensor.ge_32563_hinge_pin_smart_door_sensor_access_control_3_9 returns 22 the door is closed, 23 means the door is open.
  7. The state change of these numbers happens immediately when the door is open or closed.
  8. if the button is pressed once, it will return a message that has more information and switches the GE 32563 Hinge Pin Smart Door Sensor Sensor state.

Next:

  • I am going to reach out to GE/Jasco and see if I can get a better description of what the modes do and what the different values returned by the device actually mean. (wish me luck).
  • Wink is supposed to have support for this sometime in the next month or so. (Keep your fingers crossed)
  • It would be nice if someone that knows the HA sensor code would put address this and make it a standard part of HA. (hint hint)
2 Likes

I just setup a second one of these. It helped me immediately that I did a device reset on it by pressing the button 10x in rapid succession. I then added the device in OZWCP and started up HA. Got the 22/23 state change going just fine!

1 Like

You guys are amazing. I was working with this sensor for a few hours running into all of the same issues. I had eventually worked out the button pushing to reset and that got me paired, but then the issue of open/closed not working. I was trying to figure out how to deal with mapping the access control values when Google lead me here. I am grateful for this forum!

I took the example above one step further and took advantage of a binary sensor and its class called “opening.”

binary_sensor:
  - platform: template
    sensors:
      kitchen_to_garage_door:
        value_template: "{{ states.sensor.kitchen_to_garage_door_sensor_access_control_12_9.state == '22' }}"
        friendly_name: 'Kitchen to Garage Door'
        device_class: "opening"
        entity_id: sensor.kitchen_to_garage_door_sensor_access_control_12_9

entity_id: isn’t required but the documentation seems to indicate it helps out with Home Assistant performance.

2 Likes

Picked one of these up as my first foray into zwave. Got it paired, created the template sensor and have open/close reporting on the front end.

However, after a short period it stops reporting changes, any idea why? Any config options to change?

The sensor still lights up each time the door is opened.

Make sure your Zwave config didn’t rename the sensor. Open your Zwave config and make sure it has a name associated with the zwave index.

This ended up being an issue with the USB pass through on my ESXi host. Not sure what the issue was but I moved back to a Pi and everything works fine.

Man, I just had issues with this device and I had to reset to factory defaults… I forgot how I set it up and your post refreshed my memory. The little graphic in the corner of the manual is terrible.

Do you know whether these sensors are available in Europe on the European Z-wave frequencies?