Can't change sound selection on Neo Coolcam siren

For @JvS mainly :smiley:

My Neo Coolcam should allow me to select what sound it plays when the alarm goes off. However if I try to change it via script or through the z-wave configuration GUI it won’t change.

Zwave cfg file has this.

				<Value type="list" genre="config" instance="1" index="5" label="Alarm Music Index" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="10" vindex="9" size="1">
					<Help>This parameter defines the alarm music index for siren play different music when alarm occurs. There are 10 different music for user selection</Help>
					<Item label="1" value="1" />
					<Item label="2" value="2" />
					<Item label="3" value="3" />
					<Item label="4" value="4" />
					<Item label="5" value="5" />
					<Item label="6" value="6" />
					<Item label="7" value="7" />
					<Item label="8" value="8" />
					<Item label="9" value="9" />
					<Item label="10" value="10" />
				</Value>

I can see all the options in the GUI but if I try to set it to one of them I get nothing in OZW_Log.txt and it doesn’t save. Other parameters seem to save ok and give logs.

@Soul here’s the full copy of my Siren config from zwcfg, so you can compare with your own. Thinking back I do believe I used ozcp to generate this working config and then copied it over to the HA zwcfg.
I think you should be able to use this config in your file (overwrite your current Siren config, just make sure to use your own Node Id and name. (and all the usual caveats such as backing up your original file etc etc)

<Node id="10" name="alarm_notificator" location="" basic="4" generic="16" specific="5" roletype="7" devicetype="3840" nodetype="0" type="Siren" listening="false" frequentListening="true" beaming="true" routing="true" max_baud_rate="40000" version="4" query_stage="Complete">
	<Manufacturer id="258" name="Neo CoolCam">
		<Product type="3" id="1088" name="Siren Alarm" />
	</Manufacturer>
	<CommandClasses>
		<CommandClass id="32" name="COMMAND_CLASS_BASIC" version="1" request_flags="4" mapping="37">
			<Instance index="1" />
		</CommandClass>
		<CommandClass id="37" name="COMMAND_CLASS_SWITCH_BINARY" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="bool" genre="user" instance="1" index="0" label="Switch" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="0" value="False" />
		</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="3840" />
			<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="3840" />
		</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="1" label="Alarm Music Volume" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="3" vindex="0" size="1">
				<Help>This parameter defines the output volume when siren plays door bell music. Door Bell music volume is divided into 3 stages</Help>
				<Item label="Low" value="1" />
				<Item label="Middle" value="2" />
				<Item label="High" value="3" />
			</Value>
			<Value type="list" genre="config" instance="1" index="2" label="Alarm Music Duration Time" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="255" vindex="1" size="1">
				<Help>This Parameter defines the alarm music duration time when siren receive an alarm sensor notification report or an alarm command from controller. The duration time is divided into 5 stages.</Help>
				<Item label="Off" value="0" />
				<Item label="30 second" value="1" />
				<Item label="1 minute" value="2" />
				<Item label="5 minute" value="3" />
				<Item label="Always on" value="255" />
			</Value>
			<Value type="byte" genre="config" instance="1" index="3" label="Door Bell Music Duration Time" units="minute" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="255">
				<Help>This parameter defines the door bell music duration time when siren receives a door/window sensor notification report or an alarm command (BASIC_SET = 0x02) from controller. The door bell music will be played always if this parameter is set to 255. The door bell music will not be played if this parameter is set to 0. Other values are the door bell music playing duration time.</Help>
			</Value>
			<Value type="list" genre="config" instance="1" index="4" label="Door Bell Music Volume" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="3" vindex="0" size="1">
				<Help>This parameter defines the output volume when siren plays alarm music. Door Bell music volume is divided into 3 stages</Help>
				<Item label="Low" value="1" />
				<Item label="Middle" value="2" />
				<Item label="High" value="3" />
			</Value>
			<Value type="list" genre="config" instance="1" index="5" label="Alarm Music Index" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="10" vindex="8" size="1">
				<Help>This parameter defines the alarm music index for siren play different music when alarm occurs. There are 10 different music for user selection</Help>
				<Item label="Doorbell" value="1" />
				<Item label="Fur Elise" value="2" />
				<Item label="Doorbell Extended" value="3" />
				<Item label="Alert" value="4" />
				<Item label="William Tell" value="5" />
				<Item label="Rondo Alla Turca" value="6" />
				<Item label="Police Siren" value="7" />
				<Item label="Evacuation" value="8" />
				<Item label="Beep Beep" value="9" />
				<Item label="Beep" value="10" />
			</Value>
			<Value type="list" genre="config" instance="1" index="6" label="Door Bell Music Index" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="10" vindex="9" size="1">
				<Help>This parameter defines the door bell music index for siren play different music when alarm occurs. There are 10 different music for user selection.</Help>
				<Item label="Doorbell" value="1" />
				<Item label="Fur Elise" value="2" />
				<Item label="Doorbell Extended" value="3" />
				<Item label="Alert" value="4" />
				<Item label="William Tell" value="5" />
				<Item label="Rondo Alla Turca" value="6" />
				<Item label="Police Siren" value="7" />
				<Item label="Evacuation" value="8" />
				<Item label="Beep Beep" value="9" />
				<Item label="Beep" value="10" />
			</Value>
			<Value type="list" genre="config" instance="1" index="7" label="Configure Default Siren On Mode" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="1" max="2" vindex="0" size="1">
				<Help>This parameter defines the default music index, volume and the duration time for 3 siren on. This parameter can be selected between ALARM MUSIC and DOOR BELL MUSIC. The settings for ALARM MUSIC MODE defines by Param #1, #2 and #5. The settings for DOOR BELL MUSIC MODE defines by Param #3, #4 and #6</Help>
				<Item label="Alarm music" value="1" />
				<Item label="Door bell music" value="2" />
			</Value>
			<Value type="list" genre="config" instance="1" index="8" label="Configure Alarm Led Enable" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="1" size="1">
				<Help>This parameter defines the default led enable status when siren is on for ALARM MUSIC MODE</Help>
				<Item label="Disable" value="0" />
				<Item label="Enable" value="1" />
			</Value>
			<Value type="list" genre="config" instance="1" index="9" label="Door Bell Led Enable" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="1" vindex="0" size="1">
				<Help>This parameter defines the default led enable status when siren is on for DOOR BELL MUSIC MODE</Help>
				<Item label="Disable" value="0" />
				<Item label="Enable" value="1" />
			</Value>
		</CommandClass>
		<CommandClass id="113" name="COMMAND_CLASS_ALARM" version="8" request_flags="2" 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" />
		</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="74" />
		</CommandClass>
		<CommandClass id="133" name="COMMAND_CLASS_ASSOCIATION" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Associations num_groups="3">
				<Group index="1" max_associations="5" label="Lifeline" auto="true">
					<Node id="1" />
				</Group>
				<Group index="2" max_associations="5" label="Send Binary Switch Report" auto="false" />
				<Group index="3" max_associations="5" label="Send Notification Report" auto="false" />
			</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="6" />
			<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.38" />
			<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="2.94" />
		</CommandClass>
		<CommandClass id="135" name="COMMAND_CLASS_INDICATOR" version="1" request_flags="4" innif="true">
			<Instance index="1" />
			<Value type="byte" genre="user" instance="1" index="0" label="Indicator" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="0" max="255" value="0" />
		</CommandClass>
	</CommandClasses>
</Node>

Cheer mate!!! Will give it a go when I get a minute :smile:

Works a treat mate thanks! Tested changing from doorbell mode to alarm mode and back using scripts and that worked as well :smiley:

Might be worth us coming up with a different set of labels for the doorbell sounds though - the noises aren’t the same as the Alarm ones…

Glad to hear it works!

As to the noises, I think they are the same for doorbell and alarm for me. Need to try that sometime. I think you can simply change the names (values) in the zwcfg file though.

Hi!

Jumping in to this thread, hope it’s ok. Otherwise just say.

I have a neo coolcam siren and wants to use it as both doorbell and alarm, is it possible to get two switches that sets of different sounds? Now I can just set of the one configured in the parameters with the switch.

Running latest HA on Intel NUC via docker and apple home app via HomeKit component, therefor I want a switch so I can make the automations in the home app.

Thanks in advance!

@bubbzy

You should be able to do what I’ve done. Call a script to change from doorbell to alarm (or vice-versa) then tell the siren to make a noise.

sound_siren_in_doorbell_mode:
alias: “Sound Siren In Doorbell Mode”
sequence:
- service: zwave.set_config_parameter
data_template: {
“node_id”: 7,
“parameter”: 7,
“value”: “Door bell music”
}
- service: switch.turn_on
entity_id: switch.neo_coolcam_alarm_switch

sound_siren_in_alarm_mode:
alias: “Sound Siren In Alarm Mode”
sequence:
- service: zwave.set_config_parameter
data_template: {
“node_id”: 7,
“parameter”: 7,
“value”: “Alarm music”
}
- service: switch.turn_on
entity_id: switch.neo_coolcam_alarm_switch

Hi,
I’m replying to you as hopefully you will get the notification as well as https://community.home-assistant.io/u/Soul
I got 2 off these sirens and was hoping to use them for various purposes with scripts to change the music and volume. This thread seemed the answer.
but (though it’s hard to read your code as the formatting is not preserved) I’ve done my versions just to swap between ‘Alarm’ and ‘Door Bell’ as yours did.
I manually changed the alarm music to be different to door bell music and then run the scripts …
They both play the same music ???

script:
  #script to allow variable delay between sensors agreeing unoccupied and setting to off
  sc_siren01_notify_drbll:
    alias: Siren 01 Door Bell
    sequence:
      - service: switch.turn_on
        entity_id: switch.shenzen_siren01_switch
      - service: zwave.set_config_parameter
        # node_id: siren1 = 41, siren2 = 42
        #parameter: 1-9
        #values:
        data_template: {
          "node_id": 41,
          "parameter": 7,
          "value": “Door bell music”
          }
          # "parameter": "{{ states('input_number.in_siren01_prmtr') | int }}",
          # "value": "{{ states('input_number.in_siren01_value') | int }}"
          # }
      - service: switch.turn_on
        entity_id: switch.shenzen_siren01_switch
      - delay: "00:00:{{ states('input_number.in_siren01_drtn') | int }}"
      - service: switch.turn_off
        entity_id: switch.shenzen_siren01_switch

  sc_siren01_notify_alarm:
    alias: Siren 01 Alarm
    sequence:
      - service: switch.turn_on
        entity_id: switch.shenzen_siren01_switch
      - service: zwave.set_config_parameter
        # node_id: siren1 = 41, siren2 = 42
        #parameter: 1-9
        #values:
        data_template: {
          "node_id": 41,
          "parameter": 7,
          "value": “Alarm music”
          }
          # "parameter": "{{ states('input_number.in_siren01_prmtr') | int }}",
          # "value": "{{ states('input_number.in_siren01_value') | int }}"
          # }
      - service: switch.turn_on
        entity_id: switch.shenzen_siren01_switch
      - delay: "00:00:{{ states('input_number.in_siren01_drtn') | int }}"
      - service: switch.turn_off
        entity_id: switch.shenzen_siren01_switch

I’ve even commented out the parts where I would have populated the data fields from the UI
Can either of you see what I’ve done wrong ?
Thanks In Advance
Mutt

Did you update your zwcfg with the updated sets of config for the siren? I think I used JvS’ above.

If you don’t and your zwcfg doesn’t have all the different attributes for it I think it’ll just play the default siren whenever you turn it on.

So, Cut and paste this to a text editor, search and repalce the node number
and then paste the result into my /config/zwcfg_0xe5c7ca5f.xml file ???
twice in my case as I have two of them ?

This should just work off the bat, why do they make it difficult ? >: - (((((
Thanks again

Hi Johan,
Sorry to resurect this but I’m having the same issue.
I copied your data into a txt file, compared it with the relevant data from mine and apart from the manufacturers name (Yours says Neo Coolcam - mine says Shenzen Electronics (still says Neo Coolcam on the front of the device though)) the node: number (mines 41) all the other data matched up apart from a few config parameters. The BIG difference I spotted was that your file was missing a tab from the beggining of each line (to match up with the dataset from my data object and all the others in the same file. so I added a tab to each line) I cut a pasted it in. Restarted and when I checked the file, it had removed the changes I just made.
I assume I’ve missed a step or done something stupid or was the missing tab gone for a reason ?
Thanks in Advance

Hi @Mutt. I just had a look, there is a tab in front of every line in my zwcfg file.

If your cfg is the same as mine, no need to change it I think. Below is a script I use to change the sound of the siren for your reference. Perhaps it helps:

alarm_turnedoff_sound:
  alias: alarm turned off sound
  sequence:
    - service: zwave.set_config_parameter
      data_template: {
        "node_id": 10,
        "parameter": 5,
        "value": "Alert"
        }
    - delay:
        milliseconds: 500
    - service: switch.turn_on
      entity_id: switch.alarm_notificator_switch
    - delay:
        seconds: 1
    - service: switch.turn_off
      entity_id: switch.alarm_notificator_switch

Looking at your code I notice you do it the other way around, first turn the siren on and then change the sound. I don’t think that’ll work. Perhaps you can try to 1st change the sound and then turn on the alarm.

I also built in the delays because zwave being asynchronous I want to give the system some time to propogate the sound change command before turning the siren on.

Let me know how you get on!

Thanks,
I messed up when I was cutting and pasting, the turn on should not have been before the parameters in fact if you look again at my code I turn it on again after the parameters. I feel pretty stupid about that.
Thanks for your code and the tip about delay, seems logical.
I’ll give it a go over the weekend and let you know how it goes
Thanks again
Mutt

I was just installed a Neo Siren Alarm. I was about to start experimenting when I saw JvS’s excellent tip on the z-wave configuration.

The only thing that needs to be replaced is the CommandClass tag for id=“112”. This is a three-liner in the default configuration and much, much longer as seen in JvS’s example config file. Some other thing, specifically the version tags near the end of the configuration, are specific to an installation. They may make no difference, but it’s probably better to keep the ones you get from your default configuration.

In other words, just replace CommandClass 112 (COMMAND_CLASS_CONFIGURATION).

For completeness:

  1. Stop the server
  2. Make a backup copy of the z-wave configuration file (mine is /home/homeassistant/zwcfg_0xe696b7a9.xml
  3. Edit the z-wave configuration so that node id 112 looks like JvS’s example.
  4. Restart the server
  5. Go to the configuration menu, select z-wave configuration, select the Neo siren under Nodes
  6. Go down to Node Config Options. The different parameters should now be listed. To change from alarm to doorbell, for example, choose Config Parameter “7: Configure Default Siren On Mode”. In the Config Value below, you get the choices “Alarm music” and “Door bell music”. Select “Door bell music”. Then click the SET CONFIG PARAMETER link below that. Go through the same process to set the melody, volume, duration, etc.

Does anyone know where i can find the zwave config file now using Z-Wave JS?