Zoom Room controls: 'operation_time_started' and 'operation_time_ended' rules ignored

Apologies if this is the wrong forum; I was referred here by zoomus.zendesk.com.

We have a simple JSON profile that lets us power a Samsung QBT display off or on. So far, so good.

I’ve added what I believe are the correct rules to turn the display on or off based on our operation times. Unfortunately, these are ignored; the display never turns on or off from the schedule.

Is there anything special we have to do to use these rules when setting operation times?

Sample code:

{
“about”: {
“app”: “CCI Zoom Room Profile Maker”,
“version”: “v0.2.5”,
“url”: “Zoom Room Controls Profile Maker”,
“created”: “Tue, 12 Sep 2023 20:06:17 GMT”
},
“adapters”: [
{
“model”: “iTachIP2SL”,
“ip”: “x.x.x.x”,
“ports”: [
{
“id”: “display”,
“name”: “E4320”,
“settings”: {
“baud_rate”: “9600”,
“flow_control”: “FLOW_NONE”,
“parity”: “PARITY_NO”
},
“methods”: [
{
“id”: “powerOff”,
“name”: “Power Off Display”,
“command”: “\xAA\x11\xFE\x01\x00\x10”,
“type”: “action”
},
{
“id”: “powerOn”,
“name”: “Power On Display”,
“command”: “\xAA\x11\xFE\x01\x01\x11”,
“type”: “action”
}
]
}
]
}
],
“styles”: [
“display.icon=icon_tv”,
“display.powerOff.icon=icon_power”,
“display.powerOn.icon=icon_power”
],
“rules”: {
“operation_time_started”: [
“display.powerOn”
],
“operation_time_ended”: [
“display.powerOff”
]
}
}

Hi @henry.tolino
Thanks for reaching out to the Zoom Developer Forum!
For this issue, this Developer Forum is the right place to reach out to!
Could you please share with me what endpoint are you trying to hit with this request body so I can take a look into it?
Unfortunately, I do not have the right devices to test on my end but I can definitely take a look into it
Cheers,
Elisa

Thank you for getting back to me! Just to confirm: when you ask about the endpoint, are you referring to the local device that he Zoom Room controller is running on? We’re not trying to POST or PUT this; it’s the JSON configuration for our test Zoom room.

Sorry for the confusion,

Henry

Hi @henry.tolino
Thanks for clarifying, yes I was asking for the endpoint I thought you were making an API call.
I am not very familiar with the configuration ad usage of Zoom room control
Would you mind sending me the link to the Docs you are using for this so I can take a look

Thanks again for the assistance. A good explanation of the Zoom room controls is at https://support.zoom.us/hc/en-us/articles/360033716572-Room-Controls-for-Zoom-Rooms .

If there’s anything else I can provide, please let me know.

Henry

Hi @henry.tolino
Thanks for sharing that link with me.
Again, I am not familiar with this configuration but I found in the link you shared that the rules show a different command:


"rules": {
          "meeting_started": [
                             "display.power.on",
                             "camera.power.wake"
                             ]
          ),
          "meeting_ended": [
                           "display.power.off"
                           ]
          }

can you try changing your display.powerOn to display.power.on??

Was this working in the past and now it is not?

Thank you for your suggestion. I believe the ‘.on’ and ‘.off’ constructs only work if ‘power’ uses parameters. Instead, we use individual commands for powerOn and powerOff.

Hope this helps!

Henry

Hi @henry.tolino
Thank you for your patience. I am still looking into this and will hopefully bring you an update shortly.

I appreciate it. Thank you once again.

Henry

Hi @henry.tolino

At first inspection, it appears you’re short a \ for the hex values, so that may be your issue with those commands working. correct formatting on your command might look more like

{
     “id”: “powerOn”,
     “name”: “Power On Display”,
     “command”: “\\xAA\\x11\\xFE\\x01\\x01\\x11”,
     “type”: “action”

Out of curiosity, are manual commands working and automated ones are not?

Please let us know if this helps or if you continue having issues.

Good catch on the \ - thanks. And yes - the manual commands work just fine; the automation does not.

I’ll update the file tomorrow and see how things go.

Thanks again,

Henry

Hello again! My message was bounced back because of the inserted image. Is there a way I can send you the screen grab directly?

Thanks again,

Henry

Here’s the content from the bounced message:

Good Morning! Unfortunately, our profile does have the escaped-backslashes in place for the hex values; I believe this is taken care of when we upload the JSON file.

I’ve inserted a screen grab of part of the profile. Am I still missing a backslash? Sometimes, my bifocals let me down.

Thanks once again,

Henry

Sorry the image feature seems to be not working well for you @henry.tolino . You should be able to upload an image in the reply box, but you could also drop a link in I think to a google photo location or whatnot so I can take a look at what you’re seeing.

If the manual commands are working, my suspicion is that the codes themselves for the commands are not at fault.

Two different avenues to explore here:

  1. the operation time isn’t actually being activated
  • this can happen for a variety of reasons including the configuration of the room, the configuration of connected integration hardware, or even physical in-room conditions (have I debugged this type of issue for weeks just to find that housekeeping was coming by and wiping the screen every few hours to keep it awake? I have).
  1. something in the selected command shown here isn’t operating for some reason (I know, super specific). Generally speaking, I’ve been really impressed by the CCI builder and think Steve and David to a great job on that tool, but I reviewed the generated code in an IDE anyway to look for formatting issues or similar and didn’t find any issues.
  • in this case, I’d recommend loading a second command in the rules that fires out to something easy to monitor like node red listening on an HTTP RX block or something similar
  • alternatively, you could debug the command itself by using the same command designator on another rule like ‘meeting_started’ so that you can rapidly test this state and see if the command is firing.

in light of either of these two approaches not yielding a diagnostic result, we’d likely be best served to return to the support ticket and open an engineering request for review through there (which will require log gathering, etc).

Hopefully the above is helpful in finding a clear indication of what’s occuring. Please let us know when you’ve had the chance to test using the above methods and what the results are so we can help to resolve further.

1 Like

I’ll avoid commenting on our housekeeping folks. Let’s just say I don’t believe that will be a problem.

I like the idea of trying it on something like ‘meeting started.’ I’ll see if I can schedule the room and give it a go.

I really appreciate your patience while we try to puzzle this out.

Thanks again,

Henry

Hey there @henry.tolino ,

Just wanted to follow up and ensure we couldn’t provide further help at this time as it has been a week since your last reply. That said, I know that fire-fighting is unpredictable so no big deal if you haven’t had time to poke at this yet.

Thanks!

Good Morning! Sorry for not following-up; I thought the next move was yours.

We’ve opened a ticket and my understanding is they’re going to refer things to Engineering (as you said). I’ll let you know what they fine.

Thanks again for the assistance,

Henry

Sounds good my friend. Thanks for the update. We’ll go ahead and keep the pressure on in the support ticket from here. Have a great day.

1 Like

I am having a similar issue with operation_timer_started. I can create controls for meeting start/stop and mic mute with no issue but when I try to control devices using the operation timer it does not work.
The following commands do not happen at the beginning or end of operation time. I have adjusted operation time in the portal but never see these events execute. Am I missing something?

“operation_time_started”: [
“generic_crestron1.power.PrivacyOff”
],
“operation_time_ended”: [
“generic_crestron1.power.PrivacyOn”
]

The same commands work fine for other events.

“meeting_started”: [
“generic_crestron1.power.PrivacyOff”
],
“meeting_ended”: [
“generic_crestron1.power.PrivacyOn”
],