Tags: OpenWRT Toolchain, C/C++, TCP/IP, SDDP, Control4
Objective: Implement the SDDP protocol so that it could publish both the MediaTek 7688 gateway and all its connected Zigbee devices to a Control4 Director.
Stack: SDDP, TCP/IP, C/C++, OpenWRT Toolchain
Programming Languages: C/C++
Solutions provided:
- Zigbee Device Discovery
- SDDP Broadcasts for each Zigbee Device
- SDDP Broadcasts for the MediaTek 7688 gateway
- Installation and exhaustive testing
Approach: First I studied the SDDP protocol specification and analyzed the reference implementation provided. Since the source code provided is for broadcasting a single device, I created a separate service broker that fires a single broadcasting process for each device that is connected to the gateway. Each device presents different information to the Control4 director, which is collected by the service broker and passed to the SDDP broadcaster process through the command line. I also implemented each Control4 driver in a way so that it’s capable of decoding the information provided through the SDDP protocol in order to correctly configure the driver’s behavior. For example, a Zigbee light bulb may act differently from a Zigbee LED Controller, and that is controlled by the SDDP broker. The system is easily scalable, as any new device will simply fire another SDDP broadcaster process, and all the system behavior is configurable through text files.