25 ноября 2016 г.

jarvis

Кроме того, розетки позволяют включать и выключать свет. Начнём с простого: свет в комнате. Если я дома и темно, то надо включить свет. Если же ушёл, лег спать или стало светло – выключить. С «ушел» и «лег спать» мы разобрались. Осталось разобраться с «темно». В комнате стоит Samsung Galaxy Note 2 с IP Webcam. И работает камерой. С него можно по HTTP стянуть кадр. Дальше берём ImageStat из Python Imaging Library и смотрим среднее значение по каналу яркости. Как показал опыт, если меньше тридцати – то уже давно пора включать. А если больше 70 – то выключать. Вообще 9 – это кромешная тьма, 130-140 – зимний день или люстра. Проверяем через каждые пять минут – и вуаля. Из смешного: когда я ложусь спать, Яша желает мне спокойной ночи и выключает свет. Вот я накодил, ложусь спать, свет выключается, а Яша молчит. Лезу в код – а там флажок anton_sleeping ставится первым делом, Яша видит, что я сплю, и молчит, как и положено. Тишина должна быть в библиотеке, когда хозяин спит. Хорошо, переставил флажок в конец и задержку поставил, чтобы Яша всё успел рассказать. Ложусь спать, Яша пожелал спокойной ночи, свет погас… И снова включился. Потому, что проверяльщик из другого треда обнаружил, что я не сплю (задержку же поставил), а в комнате темно. И устранил непорядок. С третьего раза подобрал нужную последовательность, но кодить лучше на свежую голову. Кстати, про треды: весь умный дом (или, как ехидно замечают некоторые «полуумный дом») вынесен в отдельный процесс, поскольку в ходе становления он частенько падает, что не повод ронять всего Яшу. И перезапускается, что опять же не повод перезапускать всего Яшу. А так shutdown.py home, python Home.py prod. Удобно #Jarvis

Комментариев нет:

Отправить комментарий