Sending a Z-Wave Alarm with OpenHAB

Hi,

so far I’ve got a bunch of sensors now that send SENSOR_ALARM which works fine so far.

I’ve also got some fibaro switches that, according to the manual, can react to ALARM commands. The product explorer (HABmin) also verifies that the devices can handle the ALARM command class, but somehow the nodeX.xml doesn’t contain any reference to ALARM and when I try to bind an item to the ALARM command class, I get an error when sending a command to it: “Unknown command class alarm…”.

Do I need to broadcast an alarm in a different way or how is this supposed to work with OpenHAB?

Any help is highly appreciated.

Hmmm - the product explorer doesn’t ‘verify’ anything. The product explorer lists some information that someone added - it might be right, or it might not (hopefully it is, but…).

If the node XML file shows that the class is not supported, then it’s probably not since the node XML file lists the classes that the device reports…

Hi,

Of course, it’s only a database. I’ve found the device on the pepper1 database as well and indeed, the alarm command class isn’t supported according to it. http://www.pepper1.net/zwavedb/device/639

But the configuration parameters mention responses to alarms. Are alarms somehow handled differently and if that’s the case, how can I send these alarms with openhab? Or is this something fibaro specific?

Thank you very much.

There are the two alarm classes - ALARM, and SENSOR_ALARM. To be honest, I’m not sure there’s a lot of difference. They both report the same thing so I don’t think there’s a lot of difference. Some devices will report (for example) a PIR movement sensor using SENSOR_ALARM, and the tamper switch on the same device with ALARM.

Can you post the XML file generated by one of the devices.

Sorry for the somewhat late reply :slight_smile:

It’s not about getting the alarm reported, it’s about how to forward it to a device that can handle it.

Let’s take a Fibaro FGS-222 double relay switch as an example: Both the manual as well as HABmin have some configuration parameters how to respond to an alarm, for example the device can flash the lights when an alarm is received.

But how do I send it to the device?

The Fibaro Smoke sensor can send a smoke alarm and I can bind it to an OpenHAB item like this:

Contact Smoke "Rauchmelder WZ" (gAlarm) { zwave="20:command=sensor_alarm,alarm_type=1" }

Now I want to have a rule to forward the alarm to the devices to respond properly. For the FGS 222 I tried to create the following item:

Switch LichtDGAlarm "DG Licht Alarm" (gAlarmReceiver) { zwave="29:command=ALARM" }

So my first idea to test that was to place the item LichtDGAlarm on a sitemap and toggle it, but the light doesn’t flash as it should be when an alarm is received.

That doesn’t wonder me because according to the XML file for the FGS 222, the device has no clue about alarms.

<node>
  <deviceClass>
    <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
    <genericDeviceClass>BINARY_SWITCH</genericDeviceClass>
    <specificDeviceClass>POWER_SWITCH_BINARY</specificDeviceClass>
  </deviceClass>
  <homeId>0xd79b4be3</homeId>
  <nodeId>29</nodeId>
  <version>4</version>
  <name>Dachbodenlicht</name>
  <location>Dachboden</location>
  <manufacturer>0x10f</manufacturer>
  <deviceId>0x1002</deviceId>
  <deviceType>0x202</deviceType>
  <listening>true</listening>
  <frequentlyListening>false</frequentlyListening>
  <routing>true</routing>
  <security>false</security>
  <beaming>true</beaming>
  <maxBaudRate>40000</maxBaudRate>
  <nodeInformationFrame/>
  <supportedCommandClasses>
    <entry>
      <commandClass>NO_OPERATION</commandClass>
      <noOperationCommandClass>
        <version>1</version>
        <instances>1</instances>
      </noOperationCommandClass>
    </entry>
    <entry>
      <commandClass>CONFIGURATION</commandClass>
      <configurationCommandClass>
        <version>1</version>
        <instances>1</instances>
        <configParameters>
          <entry>
            <int>32</int>
            <configurationParameter>
              <index>32</index>
              <size>1</size>
              <value>3</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>1</int>
            <configurationParameter>
              <index>1</index>
              <size>1</size>
              <value>-1</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>33</int>
            <configurationParameter>
              <index>33</index>
              <size>1</size>
              <value>3</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>3</int>
            <configurationParameter>
              <index>3</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>4</int>
            <configurationParameter>
              <index>4</index>
              <size>2</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>5</int>
            <configurationParameter>
              <index>5</index>
              <size>2</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>6</int>
            <configurationParameter>
              <index>6</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>7</int>
            <configurationParameter>
              <index>7</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>39</int>
            <configurationParameter>
              <index>39</index>
              <size>2</size>
              <value>600</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>40</int>
            <configurationParameter>
              <index>40</index>
              <size>1</size>
              <value>2</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>41</int>
            <configurationParameter>
              <index>41</index>
              <size>1</size>
              <value>2</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>42</int>
            <configurationParameter>
              <index>42</index>
              <size>1</size>
              <value>2</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>43</int>
            <configurationParameter>
              <index>43</index>
              <size>1</size>
              <value>2</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>13</int>
            <configurationParameter>
              <index>13</index>
              <size>1</size>
              <value>1</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>14</int>
            <configurationParameter>
              <index>14</index>
              <size>1</size>
              <value>1</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>15</int>
            <configurationParameter>
              <index>15</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>16</int>
            <configurationParameter>
              <index>16</index>
              <size>1</size>
              <value>0</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>30</int>
            <configurationParameter>
              <index>30</index>
              <size>1</size>
              <value>3</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
          <entry>
            <int>31</int>
            <configurationParameter>
              <index>31</index>
              <size>1</size>
              <value>3</value>
              <readOnly>false</readOnly>
              <writeOnly>false</writeOnly>
            </configurationParameter>
          </entry>
        </configParameters>
      </configurationCommandClass>
    </entry>
    <entry>
      <commandClass>ASSOCIATION</commandClass>
      <associationCommandClass>
        <version>1</version>
        <instances>1</instances>
        <configAssociations>
          <entry>
            <int>1</int>
            <associationGroup>
              <Index>1</Index>
              <Nodes>
                <int>1</int>
              </Nodes>
            </associationGroup>
          </entry>
          <entry>
            <int>2</int>
            <associationGroup>
              <Index>2</Index>
              <Nodes>
                <int>1</int>
              </Nodes>
            </associationGroup>
          </entry>
          <entry>
            <int>3</int>
            <associationGroup>
              <Index>3</Index>
              <Nodes>
                <int>1</int>
              </Nodes>
            </associationGroup>
          </entry>
        </configAssociations>
        <maxGroups>3</maxGroups>
      </associationCommandClass>
    </entry>
    <entry>
      <commandClass>MANUFACTURER_SPECIFIC</commandClass>
      <manufacturerSpecificCommandClass>
        <version>1</version>
        <instances>1</instances>
      </manufacturerSpecificCommandClass>
    </entry>
    <entry>
      <commandClass>SWITCH_ALL</commandClass>
      <switchAllCommandClass>
        <version>1</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
        <mode>SWITCH_ALL_INCLUDE_OFF_ONLY</mode>
      </switchAllCommandClass>
    </entry>
    <entry>
      <commandClass>MULTI_INSTANCE</commandClass>
      <multiInstanceCommandClass>
        <version>2</version>
        <instances>1</instances>
        <endpoints>
          <entry>
            <int>1</int>
            <endPoint>
              <deviceClass>
                <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
                <genericDeviceClass>BINARY_SWITCH</genericDeviceClass>
                <specificDeviceClass>POWER_SWITCH_BINARY</specificDeviceClass>
              </deviceClass>
              <endpointId>1</endpointId>
              <supportedCommandClasses>
                <entry>
                  <commandClass>BASIC</commandClass>
                  <basicCommandClass>
                    <version>0</version>
                    <instances>0</instances>
                    <isGetSupported>true</isGetSupported>
                  </basicCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_BINARY</commandClass>
                  <binarySwitchCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                  </binarySwitchCommandClass>
                </entry>
              </supportedCommandClasses>
            </endPoint>
          </entry>
          <entry>
            <int>2</int>
            <endPoint>
              <deviceClass>
                <basicDeviceClass>ROUTING_SLAVE</basicDeviceClass>
                <genericDeviceClass>BINARY_SWITCH</genericDeviceClass>
                <specificDeviceClass>POWER_SWITCH_BINARY</specificDeviceClass>
              </deviceClass>
              <endpointId>2</endpointId>
              <supportedCommandClasses>
                <entry>
                  <commandClass>BASIC</commandClass>
                  <basicCommandClass>
                    <version>0</version>
                    <instances>0</instances>
                    <isGetSupported>true</isGetSupported>
                  </basicCommandClass>
                </entry>
                <entry>
                  <commandClass>SWITCH_BINARY</commandClass>
                  <binarySwitchCommandClass>
                    <version>1</version>
                    <instances>1</instances>
                    <isGetSupported>true</isGetSupported>
                  </binarySwitchCommandClass>
                </entry>
              </supportedCommandClasses>
            </endPoint>
          </entry>
        </endpoints>
        <endpointsAreTheSameDeviceClass>true</endpointsAreTheSameDeviceClass>
      </multiInstanceCommandClass>
    </entry>
    <entry>
      <commandClass>VERSION</commandClass>
      <versionCommandClass>
        <version>1</version>
        <instances>1</instances>
        <libraryType>LIB_SLAVE_ENHANCED</libraryType>
        <protocolVersion>3.52</protocolVersion>
        <applicationVersion>2.2</applicationVersion>
      </versionCommandClass>
    </entry>
    <entry>
      <commandClass>BASIC</commandClass>
      <basicCommandClass>
        <version>1</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
      </basicCommandClass>
    </entry>
    <entry>
      <commandClass>SWITCH_BINARY</commandClass>
      <binarySwitchCommandClass>
        <version>1</version>
        <instances>1</instances>
        <isGetSupported>true</isGetSupported>
      </binarySwitchCommandClass>
    </entry>
  </supportedCommandClasses>
  <nodeNeighbors>
    <int>1</int>
    <int>6</int>
    <int>8</int>
    <int>24</int>
    <int>26</int>
    <int>27</int>
  </nodeNeighbors>
  <lastSent>2016-08-27 18:28:24.790 UTC</lastSent>
  <lastReceived>2016-08-27 18:28:33.782 UTC</lastReceived>
</node>