Мой дневник

Проект Thing-W (IoT esp8266)

UPD 12-01-2017: проект остановлен, по причине перехода на mongoose-iot с javascript на борту. Однако общие принципы остаются.

Предисловие.

Интернет вещей – новомодное понятие, набирает силу.  Наверное клево когда дом умный, но снабдить все вещи модулями и написать менеджера всех вещей – задача достойная Геракла. Поэтому есть идея идти путем постепенного наращивания системы.

Существующие платформы пока находятся в состоянии войны. OIC vs AllJoin, MQTT vs ZeroMQ итп, лучше пока туда не лезть. OpenSource системы ближе, OpenHAB и FreeDomotic вполне пригодны для управления, но плагин для устройств все равно нужно написать. Кроме того, нужно предусмотреть ситуацию когда менеджер недоступен.

Цель проекта: создание универсального (насколько возможно) модуля управления для различных устройств, со следующими свойствами:

  • управление по WiFi
  • устройство может быть как отдельной точкой доступа, так и входить в домашнюю сеть
  • устройством можно управлять через браузер (http) либо через систему управления (сначала будем смотреть на FreeDomotic, возможно OpenHAB, возможно что-то еще)
  • устройство регистрируется в dhcp с заданным именем хоста, а также отвечает на mDNS запрос <имя>.local  (режиме wifi-клиента), в режиме AP имеет фиксированный адрес 192.168.4.1
  • отказоустойчивость: если не найдена точка доступа, устройство продолжает ее искать. Для управления достаточно создать временную точку доступа на мобильном телефоне. Переключение в режим собственной точки доступа решено не делать, так как в случае большого числа устройств будет много “шума” в wifi.
  • автоматическое управление устройством возможно по http. в будущем добавим MQTT и ZeroMQ.

Веб-интерфейс:

  • Устройство имеет страницу настроек /config: простейший набор форм для задания ssid, пароля, имени устройства, загрузки страницы dasboard
  • Страницу панели управления / (dashboard) – единая страница управления устройством.
  • Набор handler-ов для отправки параметров: /on /off итп, зависит от типа устройства (все же не будет единой прошивки для всего)
  • Набор sensor-ов для получения данных: /name /power /temperature итп
  • Dashboard использует XMLHttpRequest для отправки команд на контролы и для получения данных от сенсоров.
  • Получение данных от сенсоров возможно асинхронно, по setInterval(), что позволяет видеть изменения сенсоров при управлении с другого устройства.
  • Возможно также получать данные с сенсоров синхронно, по нажатию контрола, это определяется скриптом на странице
  • Страница dashboard может быть модифицирована и записана в устройство OTA через страницу настроек.
  • Прошивка устройства OTA может быть реализована, при наличии устройства с достаточным количеством памяти (на данный момент требуется>1Мбайт)

Скриншоты страниц устройств:

Основная страница, dashboard для простого выключателя:

kit-lan

/config вкомпилен в устройство, поэтому минимален:

kit-lan-config

02-11-2016

Добавлен сенсор движения.

Увеличение “интеллектуальности” отдельного устройства приводит к существенному усложнению работ и настроек.  Поэтому тоже прихожу к выводу, что устройства должны быть простыми и управляться с центрального хоста. Например, детектор движения – отдельное устройство, выключатель – отдельное, датчик освещенности – отдельное итп.  Но это в свою очередь ведет к удорожанию системы и слишком большому числу wifi-клиентов.

В качестве решения  предполагается

  • установка центрального устройства управления со стандартным именем.
  • внедрение MQTT возможен со временем, на текущем этапе достаточно http
  • объединение функционала нескольких устройств в одном модуле, например датчика движения и контроллера освещения.

Тем не менее для простоты начального внедрения нужно оставить возможность ручного управления по http.

 

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: