Beta testers for LOCAL control of Cync by GE devices (must have 1 wifi device)

I have been having a hell of a time trying to get reliable and local only control of Cync by GE smart devices. I took it upon myself to fork and port a local lan controller node app to python and add MQTT control and Hass autodiscovery.

The caveat is this requires DNS redirection. You will need to redirect 1 or all devices from the cync cloud server to a local IP that is running the cync-lan python app.

This requires that you have at least 1 wifi device to act as abridge to the BT mesh for now. In the future I may add BT support. BT only devices can be controlled by a wifi device.

You will have to export devices from cync cloud using the script and then run the script with the exported config. Follow the instructions in the README.

Please beta test and open issues!

The DNS redirect is clever, is this a common technique to gain local control of smart devices? It would kinda be cool to have a home assistant plugin that was based around this entirely, with a database of known smart device servers that you could add to essentially a local dns hosts list to convert any non local device to being locally controlled. Are there any reasons that that wouldn’t work universally? (I would imagine a lot of devices require some sort of encryption or https, so I’m guessing that would get in the way of some compatibility).

Either way I’ll take a look at this, I’ve got a couple of GE Cync lights in the house.

Yes and no. Like you said, most devices use HTTPS, as well as cync. The thing is, cync doesn’t verify the cert, which allows us to MITM traffic to study the binary protocol. If a device does verify certs, there isn’t anything we can do.

A generic DNS redirected server wouldn’t be realistic. Each company has their own binary protocol and such. Not a lot of people take the time to reverse engineer these IoT devices.

Just wanted to let you know that I tried your script with wired Cync toggle switches and it works great!

1 Like

Nice, ATM there is a known bug where the devices go out of sync. They may show a diff state in Hass than they do physically. I think I know the fix, just need to implement it properly. Hopefully fix it this evening.

If you notice your devices displaying incorrect state, restarting cync-lan will get things back in sync.

Do your wired switches have the motion and ambient light sensors? If so and you’re willing, if you can get me some socat debug logs, I may be able to add support for those sensors.

Unfortunately not. They are all just basic on/off toggle switches:

Ah, no worries, I’m glad that the code is working properly for that device.

I have 2x of the Dimmer + Motion Smart switches PN → CSWDMOCBWF1/ST1P - It would be really great to be able to control the color via HA. I am looking for alternatives due to how annoying this actually is LOL. Where do I get you Scat Debug logs?

This doc may explain it: cync-lan/docs/ at 3db94f1f9d246a2840eb4bbf8cf9da51001cbbcc · baudneo/cync-lan · GitHub

The best way to get debugging info:

  • use unbound as DNS server and its custom config to configure views: which will allow you to control the DNS redirection for each individual IP address.
  • Set statis DHCP addresses for your phone, one of the wired switches and 2 VM’s / LXC’s you can use to run socat
  • Setup the unbound views to DNS redirect your phone to 1 server running socat and the wired switch to dns redirect to another server running socat.

The reason we need 2 seperate hosts that runb socat is because we wont be able to tell which device is sending/receiving if more than 1 device connects to a socat server. By having 2 socat servers, you can redirect your phone cync app to one session so it only logs the connection between the original cync-lan server and your phone and the other socat server will log the connection between the original cync server and the wired switch.

Start each session and start sending commands from the cync app. That way we can see what the cycn app sends to the server anmd then what the server sends to the wired switch.

So, if you setup the sessions and then go and walk by it, we should see the motion data and/or the ambient light data. End the sessions, name the output files app.motion.socat.txt for the app ↔ original cync server and motion-switch.socat.txt for the wired switch ↔ original cync server.

Restart the sessions and then go and do a different action, name the file after that action. That way I can study the binary data and try and extract values from it.

I may be over simplifying things, let me know if the doc and this post didnt clear things up.

I am curious as I would like to be a beta tester. I currently have 2 warm dimmer bulb and 4 RGB bulbs and finally 1 LED strips. Would that be ok for me to try your integration?

Yes, the only device that you have that may not work initially is the LED strip, but it also may work if the commands are the same as the LED bulbs.

I just released v0.0.1 and would like to see if it works well for others.