Motion sensor hsm100 fail to initialise

Cool - so everything is working then?

I’ll get your device sent back - I’m not sure I’ll be able to do it for a few days as I’m travelling Tue-Fri. I also dont recall if yo gave me the return address so you might want to ping me an email with that at some stage.

My initial tests shows its working, but those were very, very breef tests.
Just to make sure, could you, before returning the device, do some thorough tests, just to make sure?
It would be a pitty if you send it back and some things aren’t working 100% :smile:
I am swamped with work the next couple of days, so my time is also limited.
Its no problem for me if you keep the device a bit longer.

If i recall correctly i did sent you a email with my return address, but i will send you another one :wink: :smile:
No problem!

Thanks for all your hard work!

br,
Raymond

Ok - I’ll hang on to it for a bit. I’m not sure I’ll be able to do too much more testing on this, but if you find any problems let me know and I’ll take a look.

You’re right - I have the email with your address :slight_smile: .

@Avner, @Hamish,
Maybe you guys can also help test this device with the development binding, so we can make 100% sure it’s working as it is suppose to now that Chris has still the device.
Thanks a lot,

Br,
Raymond

I very much want to test it but I’m in a time crunch. I’ll try in the next few days. it will be great if @chris could keep the device for a bit longer.
Thanks

I tested the HSM 100 device and I think that it is working now.
I installed the zwave development binding (see note1) and verified that I can get motion, temperature, and lux events from the device (note2) as well as see them renderred in basicui (note3)

I’m still not clear about how to set the duration for motion alarm to be turned off (see the xml file in note4)
The device turned once from ON to OFF after ~30 min, but then it turned to ON and never back to OFF

Where would I see the duration parameter or other related parameters (e.g. poll period) in the xml file (see note4) or in PaperUI (see note5)?

---------------------------------------------------

note1 - install the zwave development binding

I followed the instructions in here
uninstalled the zwave binding
cd /usr/share/openhab2/addons
wget http://www.cd-jackson.com/downloads/openhab2/org.openhab.binding.zwave-2.1.0-SNAPSHOT.jar
restarted openhab
After this I’m seeing 2 versions for ZWave Binding

bundle:list -s | grep zwave
...
200 | Active    |  80 | 2.1.0.201704162057    | ZWave Binding                                          | org.openhab.binding.zwave
202 | Installed |  80 | 2.0.0                 | ZWave Binding                                          | org.openhab.binding.zwave

note2 - add the HSM100 device, and verify that events are received from the device

I applied hard reset to the zwave controller and included the HAM100 device. After this I was able to see events in the log file events.log

cat /var/log/openhab2/events.log
2017-04-16 21:56:07.229 [ItemStateChangedEvent     ] - Hsm100Lux changed from NULL to 88
...
2017-04-16 21:56:07.578 [ItemStateChangedEvent     ] - Hsm100Temp changed from NULL to 22.8
...
2017-04-16 21:58:02.702 [ItemStateChangedEvent     ] - Hsm100AlarmMotion changed from NULL to ON
...
2017-04-16 22:17:28.215 [ItemStateChangedEvent     ] - Hsm100AlarmMotion changed from ON to OFF

note3 - HSM100 temerature, lux and motion alarm show up in basicui

note4 - HSM100 xml file

cat /var/lib/openhab2/zwave/network_fd7990ea__node_3.xml
<node>
  <homeId>0xfd7990ea</homeId>
  <nodeId>3</nodeId>
  <version>2</version>
  <manufacturer>0x1e</manufacturer>
  <deviceId>0x1</deviceId>
  <deviceType>0x2</deviceType>
  <listening>false</listening>
  <frequentlyListening>false</frequentlyListening>
  <routing>true</routing>
  <security>false</security>
  <beaming>false</beaming>
  <maxBaudRate>40000</maxBaudRate>
  <sleepDelay>1000</sleepDelay>
  <nodeInformationFrame>
    <commandClass>COMMAND_CLASS_MULTI_CHANNEL</commandClass>
    <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
    <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
    <commandClass>COMMAND_CLASS_WAKE_UP</commandClass>
    <commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
    <commandClass>COMMAND_CLASS_BATTERY</commandClass>
    <commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
    <commandClass>COMMAND_CLASS_NODE_NAMING</commandClass>
    <commandClass>COMMAND_CLASS_VERSION</commandClass>
  </nodeInformationFrame>
  <associationGroups>
    <entry>
      <int>1</int>
      <associationGroup>
        <index>1</index>
        <associations>
          <associationMember>
            <node>1</node>
            <endpoint>0</endpoint>
          </associationMember>
        </associations>
      </associationGroup>
    </entry>
  </associationGroups>
  <endpoints>
    <entry>
      <int>0</int>
      <endPoint>
        <deviceClass>
          <basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
          <genericDeviceClass>GENERIC_TYPE_SENSOR_MULTILEVEL</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_ROUTING_SENSOR_MULTILEVEL</specificDeviceClass>
        </deviceClass>
        <endpointId>0</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses>
          <entry>
            <commandClass>COMMAND_CLASS_BATTERY</commandClass>
            <COMMAND__CLASS__BATTERY>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <batteryLevel>100</batteryLevel>
              <batteryLow>false</batteryLow>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__BATTERY>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_BASIC</commandClass>
            <COMMAND__CLASS__BASIC>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__BASIC>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
            <COMMAND__CLASS__SENSOR__MULTILEVEL>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <sensors>
                <entry>
                  <multilevelSensorType>GENERAL</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>GENERAL</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
              </sensors>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SENSOR__MULTILEVEL>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_ASSOCIATION</commandClass>
            <COMMAND__CLASS__ASSOCIATION>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <maxGroups>1</maxGroups>
            </COMMAND__CLASS__ASSOCIATION>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_NO_OPERATION</commandClass>
            <COMMAND__CLASS__NO__OPERATION>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
            </COMMAND__CLASS__NO__OPERATION>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_WAKE_UP</commandClass>
            <COMMAND__CLASS__WAKE__UP>
              <version>2</version>
              <instances>1</instances>
              <versionSupported>2</versionSupported>
              <targetNodeId>1</targetNodeId>
              <interval>3600</interval>
              <minInterval>360</minInterval>
              <maxInterval>90000</maxInterval>
              <defaultInterval>3600</defaultInterval>
              <intervalStep>360</intervalStep>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__WAKE__UP>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_VERSION</commandClass>
            <COMMAND__CLASS__VERSION>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <libraryType>LIB_SLAVE_ROUTING</libraryType>
              <protocolVersion>2.40</protocolVersion>
              <applicationVersion>1.12</applicationVersion>
            </COMMAND__CLASS__VERSION>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_NODE_NAMING</commandClass>
            <COMMAND__CLASS__NODE__NAMING>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <name></name>
              <location></location>
            </COMMAND__CLASS__NODE__NAMING>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_MULTI_CHANNEL</commandClass>
            <COMMAND__CLASS__MULTI__CHANNEL>
              <version>2</version>
              <instances>1</instances>
              <versionSupported>2</versionSupported>
              <useDestEndpointAsSource>false</useDestEndpointAsSource>
              <endpointsAreTheSameDeviceClass>true</endpointsAreTheSameDeviceClass>
            </COMMAND__CLASS__MULTI__CHANNEL>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_CONFIGURATION</commandClass>
            <COMMAND__CLASS__CONFIGURATION>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <configParameters>
                <entry>
                  <int>1</int>
                  <configurationParameter>
                    <index>1</index>
                    <size>1</size>
                    <value>-56</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>2</int>
                  <configurationParameter>
                    <index>2</index>
                    <size>1</size>
                    <value>20</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>3</int>
                  <configurationParameter>
                    <index>3</index>
                    <size>1</size>
                    <value>-1</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>4</int>
                  <configurationParameter>
                    <index>4</index>
                    <size>1</size>
                    <value>100</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>5</int>
                  <configurationParameter>
                    <index>5</index>
                    <size>1</size>
                    <value>0</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
                <entry>
                  <int>6</int>
                  <configurationParameter>
                    <index>6</index>
                    <size>1</size>
                    <value>-1</value>
                    <readOnly>false</readOnly>
                    <writeOnly>false</writeOnly>
                  </configurationParameter>
                </entry>
              </configParameters>
            </COMMAND__CLASS__CONFIGURATION>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_MANUFACTURER_SPECIFIC</commandClass>
            <COMMAND__CLASS__MANUFACTURER__SPECIFIC>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <initSerialNumber>false</initSerialNumber>
              <deviceManufacturer>30</deviceManufacturer>
              <deviceType>2</deviceType>
              <deviceId>1</deviceId>
            </COMMAND__CLASS__MANUFACTURER__SPECIFIC>
          </entry>
        </supportedCommandClasses>
      </endPoint>
    </entry>
    <entry>
      <int>1</int>
      <endPoint>
        <deviceClass>
          <basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
          <genericDeviceClass>GENERIC_TYPE_SENSOR_MULTILEVEL</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_ROUTING_SENSOR_MULTILEVEL</specificDeviceClass>
        </deviceClass>
        <endpointId>1</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses>
          <entry>
            <commandClass>COMMAND_CLASS_BASIC</commandClass>
            <COMMAND__CLASS__BASIC>
              <endpoint reference="../../../.."/>
              <version>0</version>
              <instances>0</instances>
              <versionSupported>0</versionSupported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__BASIC>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
            <COMMAND__CLASS__SENSOR__MULTILEVEL>
              <endpoint reference="../../../.."/>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <sensors>
                <entry>
                  <multilevelSensorType>GENERAL</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>GENERAL</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
              </sensors>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SENSOR__MULTILEVEL>
          </entry>
        </supportedCommandClasses>
      </endPoint>
    </entry>
    <entry>
      <int>2</int>
      <endPoint>
        <deviceClass>
          <basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
          <genericDeviceClass>GENERIC_TYPE_SENSOR_MULTILEVEL</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_ROUTING_SENSOR_MULTILEVEL</specificDeviceClass>
        </deviceClass>
        <endpointId>2</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses>
          <entry>
            <commandClass>COMMAND_CLASS_BASIC</commandClass>
            <COMMAND__CLASS__BASIC>
              <endpoint reference="../../../.."/>
              <version>0</version>
              <instances>0</instances>
              <versionSupported>0</versionSupported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__BASIC>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
            <COMMAND__CLASS__SENSOR__MULTILEVEL>
              <endpoint reference="../../../.."/>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <sensors>
                <entry>
                  <multilevelSensorType>LUMINANCE</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>LUMINANCE</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
              </sensors>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SENSOR__MULTILEVEL>
          </entry>
        </supportedCommandClasses>
      </endPoint>
    </entry>
    <entry>
      <int>3</int>
      <endPoint>
        <deviceClass>
          <basicDeviceClass>BASIC_TYPE_ROUTING_SLAVE</basicDeviceClass>
          <genericDeviceClass>GENERIC_TYPE_SENSOR_MULTILEVEL</genericDeviceClass>
          <specificDeviceClass>SPECIFIC_TYPE_ROUTING_SENSOR_MULTILEVEL</specificDeviceClass>
        </deviceClass>
        <endpointId>3</endpointId>
        <secureCommandClasses/>
        <supportedCommandClasses>
          <entry>
            <commandClass>COMMAND_CLASS_BASIC</commandClass>
            <COMMAND__CLASS__BASIC>
              <endpoint reference="../../../.."/>
              <version>0</version>
              <instances>0</instances>
              <versionSupported>0</versionSupported>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__BASIC>
          </entry>
          <entry>
            <commandClass>COMMAND_CLASS_SENSOR_MULTILEVEL</commandClass>
            <COMMAND__CLASS__SENSOR__MULTILEVEL>
              <endpoint reference="../../../.."/>
              <version>1</version>
              <instances>1</instances>
              <versionSupported>1</versionSupported>
              <sensors>
                <entry>
                  <multilevelSensorType>TEMPERATURE</multilevelSensorType>
                  <multilevelSensor>
                    <sensorType>TEMPERATURE</sensorType>
                    <initialised>true</initialised>
                  </multilevelSensor>
                </entry>
              </sensors>
              <isGetSupported>true</isGetSupported>
            </COMMAND__CLASS__SENSOR__MULTILEVEL>
          </entry>
        </supportedCommandClasses>
      </endPoint>
    </entry>
  </endpoints>
  <nodeNeighbors>
    <int>1</int>
  </nodeNeighbors>
  <lastReceived>2017-04-17 04:56:07.638 UTC</lastReceived>
</node>

note5 - device parameters in PaperUI

I’m also not sure - I don’t think I saw the device report an OFF - only ON. There was a config parameter (param 1 I think) that stated it set the off time, but I’m not convinced it did anything. I know I was configuring the device as I could turn the LED off on the front.

Maybe this is something for you all to look at while I still have the device - I don’t think there’s a lot I can do about this but best to try now if possible.

Although I got some motion alarm events, I don’t think the device is useful in its current state. It didn’t issue any motion alarms besides the ones I reported, even after several hours of activity.
The device LED is blinking when there is motion near it indicating that it is sensitive to the motion but this is not shown in openhab2 :disappointed:

I’ll have to leave this to you to resolve I’m afraid - if the device doesn’t issue alarms, then the binding can’t do anything…

I would check the configuration - if you don’t think the binding is doing something right then let me know and I’ll take a look.

The device that I’m using is the Ezmotion+ According to the manual here the parameter that is responsible for the duration between ON and OFF commands is parameter 2 (see note1), which is indeed set to its default value (20 min) in PaperUI.
I’ll test the device more tonight to check why it is not sending ON / OFF commands reliably.

@chris, is the + version supported now? I do see only one version for ezmotion in the device list (in here) and I think it is for the NON + one

note1 - parameter 2 dictates the duration between ON and OFF

Yes - I suspect we need to split the two devices into separate database entries if they are different (ie parameters or command classes are different). From what I’ve seen, they could be different, but I can’t find any logs or XML files from your device any more (all the dropbox links don’t work).

Which xml / log file were you looking for specifically? I recovered the files. Can you try again accessing the log / xml files ?

Hi guys, iirc the only difference between the 2 versions is that the plus version has a extra parameter 6, that’s what the manuals are saying :wink:

@chris, I want to reduce the “on time” (parameter 2) from 20 min (the default value) to e.g. 3 min to test motion alarms going on/off.
In PaperUI, the save button is always disabled. How can I persist the new value?
Would I need to wake up the device?

Did you try it from HABmin? I did encounter such behavior too from another device, @chris maybe a bug?

The usual reason for this is that PaperUI checks that parameters are within limits - presumably something is out of bounds.

@chris, @Avner, do you guys also experience the behavior that sometimes HABmin states that the controller can’t communicate with HSM100 device? Restarting the binding solves the problem.
I am not sure if its the binding (dev-binding) or if its the device.
One of my HSM100 (mains powered) is 10 cm away from the controller!

On another note, whats your experience so far with the device and the dev-binding?

br,
Raymond

What do you mean exactly - can you show me the screenshot? It might be that the controller is reporting the device as failed - this is something I need to look at, but it’s not at the top of the list just yet.

I’m not using the device (it’s all packed up awaiting it’s call to go home :wink: ).

I was able to set the device to

  • on-time (parameter 2) - 3 min
  • polling-time - 10 min
    With these settings I was hoping to see on/off every 3 min (or every ~10 min since it was mentioned here that triggering an off/on event be a combination of both the polling-time and the on-time) but I did not see such events.
    The log file shows a Queue full error on the zwave thread (note1) so maybe the missing events problem is not related to specifically to the device this time (I’ll add another device and check if the missing events were specific to the device or due to a more general zwave problem).
    @chris, do you know what could cause the Queue full error on the zwave thread?

– note1 - Queue full error on the zwave thread

cat /var/log/openhab2/openhab.log
...
2017-04-17 05:43:28.805 [ERROR] [WaveSerialHandler$ZWaveReceiveThread] - Exception during ZWave thread. 
java.lang.IllegalStateException: Queue full
	at java.util.AbstractQueue.add(AbstractQueue.java:98)[:1.8.0_121]
	at java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:312)[:1.8.0_121]
	at org.openhab.binding.zwave.internal.protocol.ZWaveTransactionManager.processReceiveMessage(ZWaveTransactionManager.java:345)[200:org.openhab.binding.zwave:2.1.0.201704162057]
	at org.openhab.binding.zwave.internal.protocol.ZWaveController.incomingPacket(ZWaveController.java:1215)[200:org.openhab.binding.zwave:2.1.0.201704162057]
	at org.openhab.binding.zwave.handler.ZWaveControllerHandler.incomingMessage(ZWaveControllerHandler.java:636)[200:org.openhab.binding.zwave:2.1.0.201704162057]
	at org.openhab.binding.zwave.handler.ZWaveSerialHandler$ZWaveReceiveThread.run(ZWaveSerialHandler.java:320)[200:org.openhab.binding.zwave:2.1.0.201704162057]

Its working atm, when it happens again i will make a screenshot.