Announcement

Collapse
No announcement yet.

Send Notification Report to a Zwave Device

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Send Notification Report to a Zwave Device

    I have revisited a topic i gave up on when moving to homeseer and its not bugging me enough to revisit.

    I have a Philio Siren (Also sold as Zipato and DLink)

    The siren works as an on/off device to sound the siren. but i used to use a door chime as a door bell as the device has a number of different sounds and i lost this functionality when i started using homeseer.

    With SmartThings i wrote the following Device Type handler which allowed each sound to be selected.

    I then moved to Vera and they had the following workaround which worked well

    but on homeseer im completely stumped. how can i send a Notification Report to a device from a script or plugin. I cant see that Capi control has the capability to do so. so whats the alternative?

    Please help as i need this back in my life.

    any Pointers? i am hoping to get something.

    #2
    Bump. Anyone?

    Comment


      #3
      There are some hidden functions in the z-wave plugin that can be looked at with MS Visual Studio. I recall seeing something that I think can do this. I’ll take a look tomorrow to confirm.
      HS 4.2.8.0: 2134 Devices 1252 Events
      Z-Wave 3.0.10.0: 133 Nodes on one Z-Net

      Comment


        #4
        If you don't find what you're looking for, for a kludge solution you could pick up a used Vera box and connect using 's Vera plugin.
        -Wade

        Comment


          #5
          What are the device information the siren? I remember in a recently Z-Wave plugin beta the Zooz "siren" alarm support was added and this added the Z-Wave "music" capability and that "might" be what's needed to be able to send/request the specific sound option. rjh would know if this support was included in the beta's.

          Comment


            #6
            With thanks to sparkman i have created the following script, just need to change the node number, and get the unique zwave interface string from the zwave.ini. i figured its worth just recording this here as it works very well and i couldn't find and answer at all prior to now.

            Code:
            using System.Diagnostics;
            
            public void Main(object[] parm)
            {
                    //possible parameters Emergency, Fire, Ambulance, Police, DoorChime, BeepBeep
                    var sound = parm[0].ToString();
                    byte[] commandData = new byte[9];
                    switch(sound)
                    {
                            case "Emergency":
                                    commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x0, 0x0 };
                                    break;
                            case "Fire":
                                    commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x2, 0x0, 0x0 };
                                    break;
                            case "Ambulance":
                                    commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x3, 0x0, 0x0 };
                                    break;
                            case "Police":
                                    commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x1, 0x0, 0x0 };
                                    break;
                            case "DoorChime":
                                    commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0x6, 0x16, 0x0, 0x0 };
                                    break;
                            case "BeepBeep":
                                    commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x5, 0x0, 0x0 };
                                    break;
            
                    }
            
                    hs.WriteLog("HourseSiren", "Sounding the Siren With Sound: " + parm);
                    hs.PluginFunction("Z-Wave", "", "SendZwaveRaw", new object[]{90,commandData,commandData.Length,false,"XXXXXXXXX"});
            }

            Comment


              #7
              I am trying to do something similar but in vb to control my Spirit Eurotronics radiator valve.

              But I dont think I got it right.
              I am trying to send a COMMAND_CLASS_SENSOR_MULTILEVEL. I know the data to send (see code example) But I have no clue how to do the sendZwaveRaw.

              If I look at the C++ example above and for example wonder what the false is and "XXXXXXXX". Probably XXXXXX is the HomeId and I don't know what false is.

              Can someone please correct my code below?

              Code:
              Public Sub Main(ByVal Parms As Object)
              
              
                          Dim NodeId As Integer = 3                      ' nodeId of the Spirit Radiator Valve
                          Dim HomeId As String = "D988F7EF"   ' from zwave.ini
              
                          Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H8, &HBE}
                          ' &H31    ' CLASS_SENSOR_MULTILEVEL
                          ' &H5      ' REPORT
                          ' &H1      ' Air Temperature
                          ' &H42    ' b1000010  split up 100 = size (4) 00 = Celcius 010 is 2 decimals
                          ' &H8      '
                          ' &HBE   ' 08BE ===> is 2238
                          ' the bytes above should report the external sensor temp to  22.28 C° on my Spirit Radiator valve
                          ' the 22.38 C is just a test value. It will be read from a mqtt sensor when this works. :)
              
                          'hs.PluginFunction("Z-Wave", "", "SendZwaveRaw", New Object() {Convert.ToByte(NodeId), Bytes, Bytes.Length, False, HomeId})
              
                      End Sub
              The node info:
              Command Classes:
              Supported: Zwaveplus Info, Association, Association Grp Info, Version, Manufacturer Specific, Device Reset Locally, Protection, Sensor Multilevel(V 5), Switch Multilevel(V 1), Mode(V 3), Setpoint(V 3), Battery(V 1), Configuration, Notification(V 8), Powerlevel, Security, Security 2, Transport Service, Supervision, Firmware Update Md
              Supported Secure: Version, Association, Association Grp Info, Manufacturer Specific, Device Reset Locally, Powerlevel, Protection, Sensor Multilevel(Ver 5), Switch Multilevel(Ver 1), Mode(Ver 3), Setpoint(Ver 3), Battery(Ver 1), Configuration, Notification(Ver 8), Supervision, Firmware Update Md

              Comment


                #8
                Originally posted by deloosem View Post
                I am trying to do something similar but in vb to control my Spirit Eurotronics radiator valve.

                But I dont think I got it right.
                I am trying to send a COMMAND_CLASS_SENSOR_MULTILEVEL. I know the data to send (see code example) But I have no clue how to do the sendZwaveRaw.

                If I look at the C++ example above and for example wonder what the false is and "XXXXXXXX". Probably XXXXXX is the HomeId and I don't know what false is.

                Can someone please correct my code below?
                Haven't been able to figure out what the False would do if changed to True. The XXXXXXX is the interface ID, not the Home ID. You can find it in your z-wave.ini file in the Config folder. Looks for something called IFace_0_Unique in the Interfaces section of the file.
                HS 4.2.8.0: 2134 Devices 1252 Events
                Z-Wave 3.0.10.0: 133 Nodes on one Z-Net

                Comment


                  #9
                  Well i solved it: (I was just about to write a follow up that I cracked it, that the notification from you poped up... THX for responding)

                  The test code I have is in .vb:
                  Its works it regulates the valve according to the setpoint set in the device and the external roomsensor I transmit here.
                  This will save me so much work orf not having to come up with PID myself.

                  SO FOR THE EUROTRONIC SPIRIT ZWAVE-PLUS radiator thermostat and probably also for others this works.
                  Code:
                  Public Sub Main(ByVal Parms As Object)
                  
                              ' uncomment the line you want to test
                              Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H8, &HBE}    ' transmits 22.38 c°
                              'Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H5, &HBE}   ' transmits 14.70 c°
                              'Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H7, &H10}    ' transmits 18.08 c°
                  
                              hs.PluginFunction("Z-Wave", "", "SendZwaveRaw", New Object() {3, Bytes, Bytes.Length, False, "XXXXXXXX"})  
                               ' 3 is the node number and "XXXXXXXX" is IFace_0_Unique=xxxxxxxxx in the Z-wave.ini
                  
                          End Sub

                  Comment


                    #10
                    Originally posted by deloosem View Post
                    Well i solved it: (I was just about to write a follow up that I cracked it, that the notification from you poped up... THX for responding)

                    The test code I have is in .vb:
                    Its works it regulates the valve according to the setpoint set in the device and the external roomsensor I transmit here.
                    This will save me so much work orf not having to come up with PID myself.

                    SO FOR THE EUROTRONIC SPIRIT ZWAVE-PLUS radiator thermostat and probably also for others this works.
                    Great, glad you got it working.
                    HS 4.2.8.0: 2134 Devices 1252 Events
                    Z-Wave 3.0.10.0: 133 Nodes on one Z-Net

                    Comment


                      #11
                      I am trying to activate different sounds on my D-link Z510 device by following this post. I created a script from post #6 which I called dlink_siren.c
                      This script is manually triggered in an event. In the event action "Run a Script ..... " I have entered following:
                      In the Sub or Func: switch()
                      Parameters: BeepBeep


                      The "29B3FDF3G3E1" from the code is retrieved from z-wave.ini file for IFace_0_Unique. My node for this device is no 5. The siren doesnt respond to this command.

                      Grateful for some more guidance to get this to work.


                      Code:
                      using System.Diagnostics;
                      
                      public void Main(object[] parm)
                      {
                      //possible parameters Emergency, Fire, Ambulance, Police, DoorChime, BeepBeep, Stop
                      var sound = parm[0].ToString();
                      byte[] commandData = new byte[9];
                      switch(sound)
                      {
                      case "Emergency":
                      commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0x7, 0x1, 0x0, 0x0 };
                      break;
                      case "Fire":
                      commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x2, 0x0, 0x0 };
                      break;
                      case "Ambulance":
                      commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x3, 0x0, 0x0 };
                      break;
                      case "Police":
                      commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x1, 0x0, 0x0 };
                      break;
                      case "DoorChime":
                      commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0x6, 0x16, 0x0, 0x0 };
                      break;
                      case "BeepBeep":
                      commandData = new byte[] { 0x71, 0x5, 0x0, 0x0, 0x0, 0x0, 0xA, 0x5, 0x0, 0x0 };
                      break;
                      case "Stop":
                      commandData = new byte[] { 0x25, 0x1, 0x0 };
                      break;
                      
                      }
                      
                      hs.WriteLog("Siren", "Sounding the Siren With Sound: " + parm);
                      hs.PluginFunction("Z-Wave", "", "SendZwaveRaw", new object[]{5,commandData,commandData.Length,false,"29B3FDF3G3E1"});
                      }

                      Comment


                        #12
                        Originally posted by srki View Post
                        I am trying to activate different sounds on my D-link Z510 device by following this post. I created a script from post #6 which I called dlink_siren.c
                        This script is manually triggered in an event. In the event action "Run a Script ..... " I have entered following:
                        In the Sub or Func: switch()
                        Parameters: BeepBeep


                        The "29B3FDF3G3E1" from the code is retrieved from z-wave.ini file for IFace_0_Unique. My node for this device is no 5. The siren doesnt respond to this command.

                        Grateful for some more guidance to get this to work.
                        You should have Main in the Sub or Func field.
                        HS 4.2.8.0: 2134 Devices 1252 Events
                        Z-Wave 3.0.10.0: 133 Nodes on one Z-Net

                        Comment


                          #13
                          There have been threads regarding ramping z-wave dimmer lights, so what about sending SWITCH_MULTILEVEL_START_LEVEL_CHANGE and such through this method in response to Hold events? Or do dimmers not always pay attention to that?

                          Comment


                            #14
                            Originally posted by deloosem View Post
                            Well i solved it: (I was just about to write a follow up that I cracked it, that the notification from you poped up... THX for responding)

                            The test code I have is in .vb:
                            Its works it regulates the valve according to the setpoint set in the device and the external roomsensor I transmit here.
                            This will save me so much work orf not having to come up with PID myself.

                            SO FOR THE EUROTRONIC SPIRIT ZWAVE-PLUS radiator thermostat and probably also for others this works.
                            Code:
                            Public Sub Main(ByVal Parms As Object)
                            
                            ' uncomment the line you want to test
                            Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H8, &HBE} ' transmits 22.38 c°
                            'Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H5, &HBE} ' transmits 14.70 c°
                            'Dim Bytes = New Byte() {&H31, &H5, &H1, &H42, &H7, &H10} ' transmits 18.08 c°
                            
                            hs.PluginFunction("Z-Wave", "", "SendZwaveRaw", New Object() {3, Bytes, Bytes.Length, False, "XXXXXXXX"})
                            ' 3 is the node number and "XXXXXXXX" is IFace_0_Unique=xxxxxxxxx in the Z-wave.ini
                            
                            End Sub
                            I'd like to add that this works on the Aeotec Thermostat which is also known as Donexon and POPP. BUT as you send a temperature from HS to the thermostat, the temperature child device will not update. However the thermostat will work based on the temperature you sent it. You can test this by setting the set point to 19c and the send 22,38 and it should close. Then sent 14,70 and it should open.
                            Thanks everybody!

                            Comment

                            Working...
                            X