[Solved] Trouble with zwave central scene for Homeseer WS100

I successfully installed a zwave stick yesterday and I ported one of my WS100 switches to my HA network. I can turn the light on/off and dim it. I’ve made the modification to my zwcfg_.xml file to add central scene support…

		    <CommandClass id="91" name="COMMAND_CLASS_CENTRAL_SCENE" version="1" request_flags="4" innif="true" scenecount="0">
				<Instance index="1" />
				<Value type="int" genre="system" instance="1" index="0" label="Scene Count" units="" read_only="true" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="2" />
				<Value type="int" genre="user" instance="1" index="1" label="Top Button Scene" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="3" />
				<Value type="int" genre="user" instance="1" index="2" label="Bottom Button Scene" units="" read_only="false" write_only="false" verify_changes="false" poll_intensity="0" min="-2147483648" max="2147483647" value="0" />
			</CommandClass>

…and I see the events in OZW_log.txt with scene information.

2018-05-06 09:02:35.537 Info, Node002, Received Central Scene set from node 2: scene id=1 in 3 seconds. Sending event notification.

What’s interesting is that last night I was also getting the scene data value but it’s stopped logging for some reason this morning. If I try to add this automation…

- alias: 'Family room dimmer - double tap up'
  trigger:
  - event_type: zwave.scene_activated
    platform: event
    event_data:
      entity_id: zwave.familyroomlights
      scene_id: 1
      scene_data: 3

…I get the following error when validating my config.

Invalid config for [automation]: required key not provided @ data['action']. Got None. (See /config/configuration.yaml, line 212). Please check the docs at https://home-assistant.io/components/automation/

When I check my events it appears I have no available zwave event types.

Can anyone help me figure out what I’m doing wrong? I see a zwscene.xml file that has almost nothing in it. Does it need to be populated?

You don’t have an action.

All automations require a trigger and an action. You are triggering nothing… What are you trying to do?

example:

    - alias: "Do something when i turn on a light"
      trigger:  # <-------- what triggers HA to do something
        - platform: state
          entity_id: light.mylight
          to: 'on'
      action: # the something that HA is doing.
        - service: light.turn_on
          entity_id: light.mysecondlight

I literally took that example from the documentation and changed the entity_id. I do all my automations in node-red so I’m not well versed in yaml automations. Turns out that I also had to express the data as json for it to compile. I’m less concerned with the exact automation than I am capturing scene data from the switch. I took all the sample zwave events in the documentation, put an action to notify my phone for each, restarted, and waited for for system events. Some, like ready, never fired. Then I executed the scene on the switch that corresponds to my action and it didn’t fire. I didn’t mess with it tonight.

You need to make sure HA see’s the events. Turn on debugging in the logs and watch for the events when you press the buttons. If the events don’t appear, then that is your problem. If they do appear, look at the shape of the json and format your trigger properly. My guess is that your events are not being created.

As for ‘literally copying and pasting’ The error you are getting in your log explicitly tells you what the problem is, the problem is that you are missing the action. Depending on the documentation, you could have only pulled the trigger documentation, which is partial. Ether way this is the take away from your error:

So the issue lies in your action or action is missing.

You never posted your full automation, you only posted the trigger part (which has nothing to do with your error). So one must assume you left out the whole action part.

Here’s the link to actual documentation. https://www.home-assistant.io/docs/z-wave/events/. As you can see, there’s no action in any of these and the data is not json (which I had to do to make it compile).

I’ve created automations based on the documentation at that link but the only events that fire are start and completed. Ready, node_event, and scene_activated never fire.

Here are my automations

- id: '1525746959153'
  alias: complete
  trigger:
  - event_data: {}
    event_type: zwave.network_complete
    platform: event
  condition: []
  action:
  - service: notify.ios_jayiphone8
    data:
      message: It's complete

- id: '1525746959154'
  alias: ready
  trigger:
  - event_data: {}
    event_type: zwave.network_ready
    platform: event
  condition: []
  action:
  - service: notify.ios_jayiphone8
    data:
      message: It's ready

- id: '1525746959155'
  alias: start
  trigger:
  - event_data: {}
    event_type: zwave.network_start
    platform: event
  condition: []
  action:
  - service: notify.ios_jayiphone8
    data:
      message: It's started

- id: '1525746959156'
  alias: lights
  trigger:
  - event_data: {"entity_id": "zwave.balconylights"}
    event_type: zwave.node_event
    platform: event
  condition: []
  action:
  - service: notify.ios_jayiphone8
    data:
      message: lights did something


- id: '1525746959158'
  alias: Scene
  trigger:
  - event_data: {"entity_id": "zwave.balconylights", "scene_id": 1, "scene_data": 3}
    event_type: zwave.scene_activated
    platform: event
  condition: []
  action:
  - service: notify.ios_jayiphone8
    data:
      message: lights did a scene

I have added my device specific central scene configuration as indicated in the documentation here: https://www.home-assistant.io/docs/z-wave/device-specific/.

Here’s a bit from my OZW_log.txt

2018-05-09 22:20:15.964 Info, Node003, Received Central Scene set from node 3: scene id=1 in 3 seconds. Sending event notification.
2018-05-09 22:20:15.964 Detail, Node003, Initial read of value
2018-05-09 22:20:15.964 Detail, Node003, Notification: ValueChanged

I turned on zwave debugging. I see hundreds of lines that look like the following but nothing that means anything to me.

2018-05-09 22:16:32 DEBUG (Dummy-10) [homeassistant.components.zwave.util] value.command_class 134 not in command_class [49, 50, 113, 156]

…and I just restarted without changing anything to get clean logs for discrete tests and it worked…my scene event fired. The event was logged in the zwave log but not the home-assistant.log. My logger looks like this, do I need to log something else for zwave?

logger:
  default: warning
  logs:
    homeassistant.components.mqtt: debug
    homeassistant.components.zwave: debug

you need to turn on debug for home assistant to see home assistant events. zwave log can be pretty much ignored:

logger:
  default: debug
  logs:
    homeassistant.components.mqtt: debug

As for the event documentation that you posted, that’s only specific to triggers. All automations need to follow a flow designated in the automation documentation:

Anyways, it looks like you got it working.

Wow, that’s a chatty log. I’ve found both json and xml that have the data I need. Does HA track this state somewhere? I don’t see it anywhere in the state of the device. Any ideas if my goal is to use this info in node-red? I tried using both the Rest service and the HA nodes to look at the state of my device but both show me what I see in the state data in HA. I could leave a simple automation in HA that sets an input with a value and then check for a change to that input but that seems a little hacky. I suppose I could do the same thing with MQTT but I’ve never tried to pass an MQTT topic in an automation (and clearly I’m not well versed in HA automations).

Finally, is there a way to trigger a scene from within HA itself?

Here are my relevant captured log entries for reference.

2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] notif_callback : new notification
2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] notif_callback : Notification type : 2, nodeId : 3
2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] addValueId : ValueID : 72057594093944851
2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] addValueId : GetCommandClassId : 91, GetType : 3
2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] addValueId : Notification : {'notificationType': 'ValueChanged', 'homeId': 4064968902, 'nodeId': 3, 'valueId': {'homeId': 4064968902, 'nodeId': 3, 'commandClass': 'COMMAND_CLASS_CENTRAL_SCENE', 'instance': 1, 'index': 1, 'id': 72057594093944851, 'genre': 'User', 'type': 'Int', 'value': 3, 'label': 'Top Button Scene', 'units': '', 'readOnly': False}}
2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] notif_callback : call callback context
2018-05-10 08:27:31 DEBUG (Dummy-10) [openzwave] zwcallback args=[{'notificationType': 'ValueChanged', 'homeId': 4064968902, 'nodeId': 3, 'valueId': {'homeId': 4064968902, 'nodeId': 3, 'commandClass': 'COMMAND_CLASS_CENTRAL_SCENE', 'instance': 1, 'index': 1, 'id': 72057594093944851, 'genre': 'User', 'type': 'Int', 'value': 3, 'label': 'Top Button Scene', 'units': '', 'readOnly': False}}]
2018-05-10 08:27:31 DEBUG (Dummy-10) [openzwave] Z-Wave Notification ValueChanged : {'notificationType': 'ValueChanged', 'homeId': 4064968902, 'nodeId': 3, 'valueId': {'homeId': 4064968902, 'nodeId': 3, 'commandClass': 'COMMAND_CLASS_CENTRAL_SCENE', 'instance': 1, 'index': 1, 'id': 72057594093944851, 'genre': 'User', 'type': 'Int', 'value': 3, 'label': 'Top Button Scene', 'units': '', 'readOnly': False}}
2018-05-10 08:27:31 DEBUG (Dummy-10) [libopenzwave] notif_callback : end
2018-05-10 08:27:31 INFO (MainThread) [homeassistant.core] Bus:Handling <Event zwave.scene_activated[L]: entity_id=zwave.balconylights, node_id=3, scene_id=1, scene_data=3>
2018-05-10 08:27:31 DEBUG (MainThread) [homeassistant.components.api] STREAM 1875796496 FORWARDING <Event zwave.scene_activated[L]: entity_id=zwave.balconylights, node_id=3, scene_id=1, scene_data=3>
2018-05-10 08:27:31 DEBUG (MainThread) [homeassistant.components.api] STREAM 1875796496 WRITING data: {"event_type": "zwave.scene_activated", "data": {"entity_id": "zwave.balconylights", "node_id": 3, "scene_id": 1, "scene_data": 3}, "origin": "LOCAL", "time_fired": "2018-05-10T12:27:31.337516+00:00"}
2018-05-10 08:27:31 INFO (MainThread) [homeassistant.components.automation] Executing Scene

That is your event. Looks like it’s classified as ‘INFO’. So you should be able to filter out all that debug crap by changing your config to:

logger:
  default: info
  logs:
    homeassistant.components.mqtt: debug

I don’t think HA holds on to the events, it just executes them. I could be wrong though. You can peal out the information from triggers inside your automations using templating. Check out the documentation:

Sorry I can’t help here, never used Node Red. May want to create another post about ‘node-red capturing events’ or something like that. I’m sure there is a ton of people who can help.

MQTT is easy to use but can be a pain in the ass to set up. If you are using node red, i’d start there first personally. The documentation for MQTT is here::

EDIT: Also, I’m not sure how to change your scene from HA to the device.

You should check out node-red. IT will change your life. There’s a short learning curve but I’m now doing things with automations that would be really hard in yaml (at least for me). Then again, I’m conversant in javascript and had never seen yaml before HA.

For example, my wife struggles to use an established pattern for watching TV and she doesn’t always understand the dynamics between tv and receiver inputs, zones, etc. I’m now tracking state using TCP sockets so if she picks up a random remote and tries to use it, I can recognize the keypress, check my states, and correct any necessary device states. I don’t know that I’m actually using HA for any of it. HA really becomes just another source of information.

I actually figured out how to get the events in node-red. Using the events: all node of the node-red-contrib-home-assistant nodes set I was able to filter out my event and act upon it. I now have scenes controlled by node-red!

Not sure this function stub is helpful for anyone else but here it is. This is specific for the WD100 and WS100 Homeseer switches.

if (msg.payload.event_type != "zwave.scene_activated")
    return [null, msg];

var scene_id = msg.payload.event.scene_id;
var scene_data = msg.payload.event.scene_data;
var scene_state = scene_id == 1 ? "on" : "off";
var scene_action = "";
switch(scene_data) {
    case 0:
        scene_action = "Single tap";
        break;
    case 1:
        scene_action = "Release";
        break;
    case 2:
        scene_action = "Tap and hold";
        break;
    case 3:
        scene_action = "Double tap";
        break;
    case 4:
        scene_action = "Triple tap";
        break;
        
}
 
msg.payload = {
    entity_id : msg.payload.event.entity_id,
    scene: scene_action + " " + scene_state
}
return [msg,null];
 
// Action	        scene_id	scene_data
// Single tap on	    1	        0
// Single tap off	    2	        0
// Double tap on	    1	        3
// Double tap off	    2	        3
// Triple tap on	    1	        4
// Triple tap off	    2	        4
// Tap and hold on	    1	        2
// Tap and hold off	2	        2
5 Likes

Hi Jay, this is exactly what I’m looking to do. However, not sure where to add the code after adding the all events node. Can you share what your flow looks like (screenshot or import) if possible? Thanks

Here’s a subflow that I use. It could stand to be refactored and the node.log statements removed.

[{"id":"6013efbe.3a657","type":"function","z":"b805b5cc.a88948","name":"z-wave scene","func":"if (msg.payload.event_type != \"zwave.scene_activated\")\n    return null;\n\nvar scene_id = msg.payload.event.scene_id;\nvar scene_data = msg.payload.event.scene_data;\nvar scene_state = scene_id == 1 ? \"on\" : \"off\";\nvar scene_action = \"\"; var scene_tap; var scene_hold = false; var scene_release = false;\nswitch(scene_data) {\n    case 0:\n        case 7680:\n        scene_action = \"Single tap\";\n        scene_tap = 1;\n        break;\n    case 1:\n    case 7740:\n        scene_action = \"Release\";\n        scene_release = true;\n        break;\n    case 2:\n    case 7800:\n        scene_action = \"Tap and hold\";\n        scene_hold = true;\n        break;\n    case 3:\n    case 7860:\n        scene_action = \"Double tap\";\n        scene_tap = 2;\n        break;\n    case 4: \n    case 7920:\n        scene_action = \"Triple tap\";\n        scene_tap = 3;\n        break;\n    case 7980:\n        scene_action = \"Four tap\";\n        scene_tap = 4;\n        break;\n    case 8040:\n        scene_action = \"five tap\";\n        scene_tap = 5;\n        break;\n}\n\nvar entity_id = msg.payload.event.entity_id;\n\nmsg.payload = {\n    old: msg.payload,\n    node_id: msg.payload.event.node_id,\n    entity_id : entity_id,\n    scene_state: scene_state,\n    scene_tap: scene_tap,\n    scene_hold: scene_hold,\n    scene_release: scene_release,\n    scene_action: scene_action + \" \" + scene_state\n};\n\nflow.set('scene', msg.payload);\n\nreturn msg;\n \n// Action\t        scene_id\tscene_data\n// Single tap on\t    1\t        0\n// Single tap off\t    2\t        0\n// Double tap on\t    1\t        3\n// Double tap off\t    2\t        3\n// Triple tap on\t    1\t        4\n// Triple tap off\t    2\t        4\n// Tap and hold on\t    1\t        2\n// Tap and hold off\t    2\t        2\n","outputs":1,"noerr":0,"x":220,"y":100,"wires":[["ce5b671c.dcfb98"]]},{"id":"ce5b671c.dcfb98","type":"function","z":"b805b5cc.a88948","name":"Parse Request","func":"var scene = flow.get('scene');\nvar id = scene.node_id;\nnode.log('id: ' + id);\nnode.log('entity_id: ' + scene.entity_id);\nvar nodes = global.get(\"zwave-lights\");\nvar matchingNode = nodes.find(x => x.node_id === id);\n\nnode.log('match: ' + JSON.stringify(matchingNode));\nnode.log('match id: ' + matchingNode.node_id);\nnode.log('match entity_id: ' + matchingNode.entity_id);\n\nvar match = { \n        entity_id: matchingNode.entity_id, \n        node_id: matchingNode.node_id,\n        scene: scene.scene_action\n    };\nmsg.payload = match;\nreturn msg;  \n\n\n","outputs":1,"noerr":0,"x":400,"y":100,"wires":[[]]},{"id":"fe4de5f1.b531f8","type":"server-events","z":"b805b5cc.a88948","name":"Scene","server":"3b1a3739.f37638","event_type":"zwave.scene_activated","x":70,"y":80,"wires":[["d725b7ff.7f4c28","6013efbe.3a657"]]},{"id":"3b1a3739.f37638","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true}]

And then here’s an automation that uses the scene subflow.

[{"id":"b805b5cc.a88948","type":"subflow","name":"Z-Wave Scene","info":"","in":[],"out":[{"x":520,"y":100,"wires":[{"id":"ce5b671c.dcfb98","port":0}]}]},{"id":"e31cddcc.41ea1","type":"comment","z":"b805b5cc.a88948","name":"Scene","info":"","x":70,"y":20,"wires":[]},{"id":"6013efbe.3a657","type":"function","z":"b805b5cc.a88948","name":"z-wave scene","func":"if (msg.payload.event_type != \"zwave.scene_activated\")\n    return null;\n\nvar scene_id = msg.payload.event.scene_id;\nvar scene_data = msg.payload.event.scene_data;\nvar scene_state = scene_id == 1 ? \"on\" : \"off\";\nvar scene_action = \"\"; var scene_tap; var scene_hold = false; var scene_release = false;\nswitch(scene_data) {\n    case 0:\n        case 7680:\n        scene_action = \"Single tap\";\n        scene_tap = 1;\n        break;\n    case 1:\n    case 7740:\n        scene_action = \"Release\";\n        scene_release = true;\n        break;\n    case 2:\n    case 7800:\n        scene_action = \"Tap and hold\";\n        scene_hold = true;\n        break;\n    case 3:\n    case 7860:\n        scene_action = \"Double tap\";\n        scene_tap = 2;\n        break;\n    case 4: \n    case 7920:\n        scene_action = \"Triple tap\";\n        scene_tap = 3;\n        break;\n    case 7980:\n        scene_action = \"Four tap\";\n        scene_tap = 4;\n        break;\n    case 8040:\n        scene_action = \"five tap\";\n        scene_tap = 5;\n        break;\n}\n\nvar entity_id = msg.payload.event.entity_id;\n\nmsg.payload = {\n    old: msg.payload,\n    node_id: msg.payload.event.node_id,\n    entity_id : entity_id,\n    scene_state: scene_state,\n    scene_tap: scene_tap,\n    scene_hold: scene_hold,\n    scene_release: scene_release,\n    scene_action: scene_action + \" \" + scene_state\n};\n\nflow.set('scene', msg.payload);\n\nreturn msg;\n \n// Action\t        scene_id\tscene_data\n// Single tap on\t    1\t        0\n// Single tap off\t    2\t        0\n// Double tap on\t    1\t        3\n// Double tap off\t    2\t        3\n// Triple tap on\t    1\t        4\n// Triple tap off\t    2\t        4\n// Tap and hold on\t    1\t        2\n// Tap and hold off\t    2\t        2\n","outputs":1,"noerr":0,"x":220,"y":100,"wires":[["ce5b671c.dcfb98"]]},{"id":"ce5b671c.dcfb98","type":"function","z":"b805b5cc.a88948","name":"Parse Request","func":"var scene = flow.get('scene');\nvar id = scene.node_id;\nnode.log('id: ' + id);\nnode.log('entity_id: ' + scene.entity_id);\nvar nodes = global.get(\"zwave-lights\");\nvar matchingNode = nodes.find(x => x.node_id === id);\n\nnode.log('match: ' + JSON.stringify(matchingNode));\nnode.log('match id: ' + matchingNode.node_id);\nnode.log('match entity_id: ' + matchingNode.entity_id);\n\nvar match = { \n        entity_id: matchingNode.entity_id, \n        node_id: matchingNode.node_id,\n        scene: scene.scene_action\n    };\nmsg.payload = match;\nreturn msg;  \n\n\n","outputs":1,"noerr":0,"x":400,"y":100,"wires":[[]]},{"id":"d725b7ff.7f4c28","type":"function","z":"b805b5cc.a88948","name":"Build MQTT topic & payload","func":"if (msg.payload.event_type != \"zwave.scene_activated\")\n    return null;\n\nvar scene_id = msg.payload.event.scene_id;\nvar scene_data = msg.payload.event.scene_data;\nvar scene_state = scene_id == 1 ? \"on\" : \"off\";\nvar scene_action = \"\"; var scene_tap; var scene_hold = false; var scene_release = false;\nswitch(scene_data) {\n    case 0:\n        case 7680:\n        scene_action = \"Single tap\";\n        scene_tap = 1;\n        break;\n    case 1:\n    case 7740:\n        scene_action = \"Release\";\n        scene_release = true;\n        break;\n    case 2:\n    case 7800:\n        scene_action = \"Tap and hold\";\n        scene_hold = true;\n        break;\n    case 3:\n    case 7860:\n        scene_action = \"Double tap\";\n        scene_tap = 2;\n        break;\n    case 4: \n    case 7920:\n        scene_action = \"Triple tap\";\n        scene_tap = 3;\n        break;\n    case 7980:\n        scene_action = \"Four tap\";\n        scene_tap = 4;\n        break;\n    case 8040:\n        scene_action = \"five tap\";\n        scene_tap = 5;\n        break;\n}\n\nvar nodes = global.get(\"zwave-lights\");\nvar matchingNode = nodes.find(x => x.node_id === msg.payload.event.node_id);\n\n    \nmsg.topic = \"scene/\" + matchingNode.entity_id;    \nmsg.payload = { \n    entity_id: matchingNode.entity_id, \n    node_id: matchingNode.node_id,\n    scene: {\n        text: scene_action,\n        state: scene_state,\n        tap: scene_tap,\n        hold: scene_hold,\n        release: scene_release,\n        father: \"Luke\"\n    }\n};\n    \nreturn msg;  \n\n \n// Action\t        scene_id\tscene_data\n// Single tap on\t    1\t        0\n// Single tap off\t    2\t        0\n// Double tap on\t    1\t        3\n// Double tap off\t    2\t        3\n// Triple tap on\t    1\t        4\n// Triple tap off\t    2\t        4\n// Tap and hold on\t    1\t        2\n// Tap and hold off\t    2\t        2\n","outputs":1,"noerr":0,"x":260,"y":60,"wires":[["40db4d4a.e94c74"]]},{"id":"40db4d4a.e94c74","type":"mqtt out","z":"b805b5cc.a88948","name":"","topic":"","qos":"0","retain":"false","broker":"68c7942b.be311c","x":450,"y":60,"wires":[]},{"id":"fe4de5f1.b531f8","type":"server-events","z":"b805b5cc.a88948","name":"Scene","server":"3b1a3739.f37638","event_type":"zwave.scene_activated","x":70,"y":80,"wires":[["d725b7ff.7f4c28","6013efbe.3a657"]]},{"id":"68c7942b.be311c","type":"mqtt-broker","z":"","name":"local","broker":"192.168.3.3","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"3b1a3739.f37638","type":"server","z":"","name":"Home Assistant","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true},{"id":"fa7d551b.02e1a8","type":"subflow:b805b5cc.a88948","z":"9a37571a.30c2c8","name":"","env":[],"x":100,"y":2440,"wires":[["4ab92096.f197e","1e1b0fa6.6cf49","9c5f5b24.546b98","a7efb27f.cf659"]]},{"id":"4ab92096.f197e","type":"switch","z":"9a37571a.30c2c8","name":"Kitchen Switch?","property":"payload.entity_id","propertyType":"msg","rules":[{"t":"eq","v":"light.kitchen","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":280,"y":2280,"wires":[["b3e2c444.b24788"]]},{"id":"b3e2c444.b24788","type":"switch","z":"9a37571a.30c2c8","name":"Scene","property":"payload.scene","propertyType":"msg","rules":[{"t":"eq","v":"Single tap on","vt":"str"},{"t":"eq","v":"Double tap on","vt":"str"},{"t":"eq","v":"Triple tap on","vt":"str"},{"t":"eq","v":"Single tap off","vt":"str"},{"t":"eq","v":"Double tap off","vt":"str"},{"t":"eq","v":"Triple tap off","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":430,"y":2280,"wires":[["1b782182.dacc2e"],["1eeff527.2d12fb"],["ce2a9e11.ce7e6"],["a5609ceb.a5de7"],["6440b30d.b2d4cc"],["48532ae0.b283f4"]]},{"id":"1b782182.dacc2e","type":"api-call-service","z":"9a37571a.30c2c8","name":"All Kitchen lights on","server":"b2fdd11b.5cb2a","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"light.kitchen, light.island_lights, light.cabinet_lights\"}","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":660,"y":2140,"wires":[[]]},{"id":"1eeff527.2d12fb","type":"api-call-service","z":"9a37571a.30c2c8","name":"Overhead Kitchen lights on","server":"b2fdd11b.5cb2a","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"light.kitchen\"}","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":680,"y":2200,"wires":[[]]},{"id":"ce2a9e11.ce7e6","type":"api-call-service","z":"9a37571a.30c2c8","name":"Kitchen accent lights on","server":"b2fdd11b.5cb2a","service_domain":"light","service":"turn_on","data":"{\"entity_id\":\"light.island_lights, light.cabinet_lights\"}","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":670,"y":2260,"wires":[[]]},{"id":"a5609ceb.a5de7","type":"api-call-service","z":"9a37571a.30c2c8","name":"All Kitchen lights off","server":"b2fdd11b.5cb2a","service_domain":"light","service":"turn_off","data":"{\"entity_id\":\"light.kitchen, light.island_lights, light.cabinet_lights\"}","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":660,"y":2320,"wires":[[]]},{"id":"6440b30d.b2d4cc","type":"api-call-service","z":"9a37571a.30c2c8","name":"Overhead Kitchen lights off","server":"b2fdd11b.5cb2a","service_domain":"light","service":"turn_off","data":"{\"entity_id\":\"light.kitchen\"}","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":680,"y":2380,"wires":[[]]},{"id":"48532ae0.b283f4","type":"api-call-service","z":"9a37571a.30c2c8","name":"Kitchen accent lights off","server":"b2fdd11b.5cb2a","service_domain":"light","service":"turn_off","data":"{\"entity_id\":\"light.island_lights, light.cabinet_lights\"}","mergecontext":"","output_location":"payload","output_location_type":"msg","mustacheAltTags":false,"x":670,"y":2440,"wires":[[]]},{"id":"b2fdd11b.5cb2a","type":"server","z":"","name":"Home Assistant (local)","legacy":false,"hassio":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true}]

Let me know if that helps.