2 декабря 2016 г.

jarvis

Вторая проблема называется «на кухню кто-то пришел». HikVision оборудован пассивным инфракрасным датчиком движения. И если с Vstarcam задача «на кухню кто-то пришел» не решается вообще никак (потому, что Vstarcam - говно), то у HikVision есть API и /Event/notification/alertStream. Отдаёт события в XML. Три раза в секунду сообщает, что у него всё нормально. И я прямо вот вижу студента, который единственной пока что выросшей прямой извилиной видит буквы XML и использует стандартную библиотеку для парсинга, десятки раз в секунду строя XML дерево и выбрасывая его, поскольку 99% событий нам неинтересны. Вообще, Яша прекрасно помогает прочувствовать проблемы разработки и эксплуатации софта на собственном опыте в занятной, игровой форме, хехе. Ладно, потом расскажу, сейчас про кухню. Сажаем на alertStream отдельный Thread, который блочить нельзя, он должен обрабатывать десятки нотификаций в секунду, так что он просто ставит нужный threading.Event(). Эти эвенты разгребают Духи, в данном случае Дух Кухни. Дух Кухни получает PIR Event с камеры и говорит домашним трудягам зажечь свет. Тут важно, что бы свет был неяркий. Света должно быть недостаточно для того, чтобы камера переключилась в дневной режим, а то наш страж свет вырубит и начнётся неторопливая светомузыка: включили – стало светло, раз светло – выключили, но ведь кто-то есть – включили, стало светло и т.д. Так что неяркий свет, ватт 40-60. В качестве бонуса получаем приятный полумрак, поскольку я не хочу, зайдя ночью на кухню водички пожрать, получить прожектором в морду. Между тем, Дух Кухни ждёт. И если прошло пять минут, а новых алертов нет – значит, все ушли, свет можно выключать. Свет включается и выключается через розетку HS-110, поскольку нормальных умных лампочек опять же нет, да и перегорают они, а розетка – универсальна и легко заменяема #Jarvis

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

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