Can i recreate a Bulb list without discovering them?
Hello Smarthall,
I just tested your script and it works well. I still have some minor questions:
Is it possible to add Bulbs manually to the internal list without using discovery? Can i simply create a Device object by passing the right arguments to its CTOR (DeviceId, Host, Client)? How can i disable discovery when creating the Client? Can i place the next lines into an IF block: self.discover() and the _discoverpoll calls? I would create separate methods for this (start/stop discovery)
What i'm actually looking for is a way to re-create the bulblist from a (db) store. Once it knows (dicovered) the bulbs, there is no need to discover them again. (unless you want to make sure that they are on-line). It should see changes in the bulbs (when the are on-line) as your script does now.
So my main question: Is there an easy way to store/restore bulbs?
Also, please mention in your docs that this is a Python 2.x script.
Hi @VinzzB
Sorry for the late reply.
If you add an if block around these lines you will have a switch for enabling/disabling discovery. I'd suggest making th switch depend on the discover argument on the constructor, for example if its set to None. I'd welcome a PR for this. Keep in mind that discovery doesn't just ensure that new devices are discovered, it is also responsible for detecting devices that may have moved to a new IP address.
As for exporting and loading the current devices this is how I would approach it:
- Add a function to
Clientthat's used to create a new device from adevice_idandhostand return it. - Refactor
Client._servicepacketto use this new function - Add a function to
Clientthat takes a list ofdevice_idandhostpairs creates them with the new function, then when done callsClient.poll_devices(to test availability). - Add a function to
Clientthat exports thedevice_idandhostpairs in the same way the other function takes them
For extra points add hooks so that the Client object itself can be serialised and deserialised with Pickle. :smile:
I'll probably get around to this eventually, but I welcome a PR if you need it sooner.