nathanw wrote:Having read up on UPnP, I think the issue is that the plugin is only doing the SSDP broadcast during the discovery interval, but both that broadcast and the replies to the search have a "CACHE-CONTROL: max-age=100" header that says that the advertisement is only guaranteed valid for that long (The UPnP spec suggests a value of 1800 seconds here; I'm guessing that the Echo is substituting that value for the 100 before expiring its cache).
The real mystery is why other people don't seem to have this problem.
I'm by no means an expert on UPnP, so you might be right.
nathanw wrote: * Every instance of this plugin is using the same UUID, which was the same one in the hueAndMe.py script. I think this is supposed to be generated by the hub/plugin, not constant across the universe.
I briefly tried to generate a unique UUID via the uuid Python module, but it didn't seem to work. I didn't spend much time trying to figure it out though so I may have been doing something stupid.
nathanw wrote: * The whole business of not being able to listen for UDP multicast at the same time as another process feels wrong; it's *multi*cast, after all. Some application of the socket option SO_REUSEPORT might be in order, although that requires that the competing UPnP daemons also are using it - but there's a reasonable chance that they did.
Again, not an expert, so that may solve the issue.
nathanw wrote:I'm going to check in with my employer if I can contribute patches directly, otherwise, should I just raise issues on the github page?
I'm not going to guarantee that issues raised anywhere get addressed, at least by me. I do think adding specific coding/technical issues on Github is the best place for them. We've got our hands full with Indigo 7 so I'm not going to have a lot of time to work on it. I will accept pretty much any pull request as long as it passes a cursory glance. If someone wants to take over managing the repo that's also fine with me! To answer your question from Github, I intentionally didn't add any license or any copyrights, primarily because it's a derivative work from other sources that also don't include any license. We'll look into the appropriate action WRT licenses.