Ответ 1
Я согласен, что это может раздражать то, что последнее состояние лампочки не сохраняется. На сайте разработчика Hue есть поток который дает некоторое представление:
- По всей видимости, есть внутренние дискуссии по этой теме. Команда Philips не решила осуществить восстановление предыдущего состояния из-за "соображений безопасности": пользователь мог остаться в темноте, если она использует электрический переключатель, но предыдущее состояние было "выключено". Это мнение было подтверждено в твитте. Пока еще нет определенного вывода в этой теме.
- Вы можете сделать обходной путь и постоянно записывать состояние каждой лампы и при необходимости восстанавливать. Существует Node.JS script на GitHub, который, похоже, делает именно это. Если вы хотите запустить это как автономное решение, купите малину Pi (или что-то подобное).
Одной из проблем с решением на основе SDK является латентность: в моей настройке требуется от 3 до 9 секунд, чтобы распознать лампочку как включенную и около 20-30 секунд, чтобы распознать выключенную лампочку.
Вот мой код Python для контроля доступности моих лампочек, используя python-hue-client:
from hueclient.api import hue_api
from hueclient.models.light import Light
from datetime import datetime
from subprocess import call
if __name__ == '__main__':
my_ids = (1, 4, 5) # IDs of my light bulbs
def handle(resource, field, previous, current):
print "{} {}: changed reachability from {} to {}".format(datetime.now().isoformat(), resource.name, previous, current)
hue_api.authenticate_interactive(app_name='test-app')
# register my light bulbs
for id in my_ids:
light = Light.objects.get(id=id)
print "{}: reachability is {}".format(light.name, light.state.reachable)
# Monitor only the reachability of the light
light.monitor(field=lambda l: l.state.reachable, callback=handle, poll_interval=0.1)
print("Starting monitoring. Control-c to exit.")
# Start the monitoring loop
hue_api.start_monitor_loop()