I am interfacing with a PL_ETH_510, but I believe this applies to most devices. When the Send API event option is set to Send Data On Port 1, could you please detail the format in which the data is sent in when an input changes? I would like to receive unsolicited feedback from the inputs (no polling).
For example, here is one packet I received.
170 6 171 0 1 8 24 0
There is no way on a ProXR device to have the A/D inputs submit push notifications to software. The status of the inputs must be polled to monitor their status.
It appears to work, but I am just unsure of what the protocol is.
The following documentation is taken from https://ncd.io/proxr-quick-start-guide/ at the bottom of section 11.1.
Send API Event:
ProXR AD8 Series controllers have the ability to send simple push notification data when a change is detected on the inputs. When the drop down menu is configured to “Send Event on Port 1”, the controller will generate a packet of data reflecting the state of all inputs. Simply monitor the data sent from the controller while connecting one or more inputs to ground to see the push notification data.
Wow. I have been working with the ProXR series controllers since they were released and I honestly did not know about this.
@Ryan can you comment on this? Ryan is the developer of the ProXR series. I am not sure about the format of the data that is output.
Thanks. We have a third party device that just gives us a momentary contact closure that only last for a brief time. I don’t feel comfortable polling faster that once a second with our control system and that isn’t fast enough to monitor the inputs reliably. My work around for now is to have the input trigger an unused relay that I monitor and then reset it anytime it gets set. This works, but I would like to know about the push events in case there aren’t any spare relays in the future.
So what data do you get when you close the input and what data do you get when you open the input? Sorry I would setup a board here but I can’t right at the moment. I can probably figure out what is going on if you can post the data output when different inputs are closed and opened.
I’m in the same boat. The only board I have to test with is in the field, so I can’t play around with it and reverse engineer the protocol.
When ProXR controllers send Push Notification data, the output format is as follows:
170 NCD API Frame: Header Byte
6 NCD API Frame: Number of Payload Bytes
171 Payload Byte 1: Spontaneous Event Generated by Controller
0 Payload Byte 2: E3C Device Number
1 Payload Byte 3: Data Source (1 = AD8 Inputs)
8 Payload Byte 4: Indicates the Status of the 8 Inputs
24 Payload Byte 5: Indicates Which Bits have Changed
0 Payload Byte 6: Status of Relay Bank 1
124 NCD API Frame: 8-Bit Checksum (Sum of all Payload Bytes Truncated to 8 Bits)
You probably want to look at Payload Byte 4, Maybe 5 (sorry, but I forget exactly). I suggest using Comm Operator to examine data (Integrated into Base Station).
Hope this helps.
Slightly off-topic, but is there a minimum amount of time that an input has to be closed in order to trigger a relay? We have a Lift Master wireless receiver and transmitter connected to the inputs, but the input only closes for a very short period of time when the button is pressed. Initially, I was polling the inputs so it seemed reasonable that we would miss some button presses, but then I switched to have the input trigger a relay. That seemed to work at first, but we are still missing some button presses.
This device includes a de-bounce routine. This prevents the controller from “over-reacting” to rapid inputs. The reaction time is variable. So if you push the button rapidly, it will try to react faster. But if you stop pushing it, it will have a slower reaction time. This is intended operation, as this method helps prevent false positives. Because the CPU is processing many tasks simultaneously, it’s not really feasible to speed up the reaction time. The inputs are ALWAYS analog, NOT digital. Analog gives us much greater flexibility with other functions.
Please let me know if you have more questions.