Страница 1 из 11

Универсальный узел автоматики

Добавлено: Пн дек 30, 2013 6:22 pm
sergejey
Обсуждение страницы Универсальный узел автоматики

Приглашаю попробовать и обсудить проект, над которым я работал в последнее время. Местами, возможно, сыро, но сама концепция вполне рабочая и я уже сделал у себя несколько устройств на этой системе.

Re: Универсальный узел автоматики

Добавлено: Пн дек 30, 2013 7:44 pm
ignat99
О здорово! Спасибо большое, а где брать пропатченную версию образа (с которой Arduino стабильно работает) для TP-Link TPLink W703N. Хотелось бы чтоб всё было под рукой.

Re: Универсальный узел автоматики

Добавлено: Пн дек 30, 2013 9:14 pm
sergejey
ignat99 писал(а):О здорово! Спасибо большое, а где брать пропатченную версию образа (с которой Arduino стабильно работает) для TP-Link TPLink W703N. Хотелось бы чтоб всё было под рукой.
Загрузил сюда плюс добавил ссылку на страницу установки компонентов.

Re: Универсальный узел автоматики

Добавлено: Пт янв 03, 2014 1:06 am
ignat99
sergejey писал(а):
ignat99 писал(а):О здорово! Спасибо большое, а где брать пропатченную версию образа (с которой Arduino стабильно работает) для TP-Link TPLink W703N. Хотелось бы чтоб всё было под рукой.
Загрузил сюда плюс добавил ссылку на страницу установки компонентов.
Залил Скетчь на Ардвино (чтобы мигал по команде)
Залил прошивку и скрипты на TP Link, подключил по WiFi

Захожу в админку (контроль панель) как ignat99
А на сервис CONNECT захожу как ignat
Сгенерировал идентификатор для TP - Link

Прописал его в скриптах на TP-Linc

В результате на CONNECT не могу зарегистрировать этот идентификатор и внести правила.
Пришет:
http://connect.smartliving.ru/index.php ... ices&inst=

Устройсто не найдено!
Регистрация устройства:
Создать новый ID


Нет записей.

Видимо я должен создать какето типовые модули\классны на Мажердоме.
Из присланных вами скриншотов я не чего не понял.

Может быть есть подробная инструкция, как вообще подключать новые устройства ?
Или ссылка на форум (я просмотрел все страницы, но точно не помню где это есть)

Нашёл информацию тут - определение через класс информации для ссылки и возможно формы menu сенсора : http://smartliving.ru/Main/ScMonitorContact
Похоже на то как в Jango через Модель (База данных) определяется админка и фильтры.


Я так понимаю это основной барьер для понимания системы - отстутствие пошаговых офицальных инструкций на создание классов и объектов для различных модулей.

Какой командой (GET запрос с параметрами) отправленной прямо на ip адресс роутера TP Link я могу поморгать свето-диодами Ардвино?

http://192.168.43.241/cgi-bin/master?op=refresh

Unable to launch the requested CGI program:
/www/cgi-bin/master: No such file or directory


http://192.168.43.241/menu.html
Not Found
The requested URL /menu.html was not found on this server.

root@OpenWrt:~# ls -l /www/cgi-bin/master
-rwxr-xr-x 1 root root 1730 Jan 1 00:39 /www/cgi-bin/master

Проблему с мастером исправил. Я забыл установить пакеты (подсознательно думал что они уже установлены ;-)

opkg update
opkg install bash
opkg install coreutils-stty
opkg install kmod-usb-serial
opkg install kmod-usb-serial-ftdi


Переключился на стандартный репозиторий OpenWRT но не смог обновить список пакетов.
Возможно нет места в этой прошивке? Как не странно в стандартной прошивке OpenWRT всё устанавливается без проблем.

Re: Универсальный узел автоматики

Добавлено: Пт янв 03, 2014 11:50 pm
sergejey
Возможно, ещё нужно доустановить wget -- я не помню есть ли он в стандартной прошивке.
Классы никакие создавать не нужно -- эта система не связана с MajorDoMo и работает отдельно (хоть и может быть связана при желании).

Ошибка о том, что устройство не найдено связана с тем, что на connect.smartliving.ru не пришёл запрос с идентификатором устройства, а без предварительной (анонимной) регистрации устройство нельзя подключить к своему аккаунту. Попробуйте в самом деле проверить насчёт wget.

menu.html не появится до первого успешного обновления

Re: Универсальный узел автоматики

Добавлено: Сб янв 04, 2014 2:41 pm
ignat99
wget стоит

Полагаю проблема была в том, что я не запустил:

4. Включить автоматическую загрузку основного цикла командой
/etc/init.d/arduino enable

Требуется ли эта команда для автозапуска или достаточно один раз ввести предыдущую команду?
ln -s /etc/init.d/arduino /etc/rc.d/S50arduino

Так как подумал, что это исключительно для взаимодействия с arduino.
Между тем на TPLink, хватило место для mosquitto.
Полагаю, целесобразно разделять циклы на подписчиков (sub - Мажардомо) и публишеров (pub - Ардуино)?
А между писателями и подписчиками - брокер MQTT.
http://jpmens.net/2013/02/25/lots-of-me ... to-broker/
http://mosquitto.org/

Не совсем понял, почему публикация внутренних правил привязана к удалённому серверу и не возможно сделать всё локально.
Я конечно понимаю, что хорошо дать возможность людям обмениваться идеями\скриптами и попутно пополнять клиенсткую базу, но соображения о сохранности частных данных и финансовой ответстванности за них, заставляют задуматься :-) А между тем Mosquitto поддерживает SSL/TLS для шифрования трафика.

Re: Универсальный узел автоматики

Добавлено: Вс янв 05, 2014 11:54 pm
sergejey
ignat99 писал(а):wget стоит

Полагаю проблема была в том, что я не запустил:

4. Включить автоматическую загрузку основного цикла командой
/etc/init.d/arduino enable

Требуется ли эта команда для автозапуска или достаточно один раз ввести предыдущую команду?
ln -s /etc/init.d/arduino /etc/rc.d/S50arduino
Так как подумал, что это исключительно для взаимодействия с arduino.
команда с enable как раз создаёт символьную ссылку для авто-запуска, т.е. тоже самое, только короче. без этой команды устройство автоматически не запустит цикл и не зарегистрируется в connect-е.
ignat99 писал(а): Между тем на TPLink, хватило место для mosquitto.
Полагаю, целесобразно разделять циклы на подписчиков (sub - Мажардомо) и публишеров (pub - Ардуино)?
А между писателями и подписчиками - брокер MQTT.
http://jpmens.net/2013/02/25/lots-of-me ... to-broker/
http://mosquitto.org/
MQTT интересная вещь, но, признаться, этот протокол я у себя не использую, хоть и сделал поддержку его в MajorDoMo. Пока не так много устройств, которые его используют. На практике я сталкивался только с проектом X13Home, но в целом штука перспективная.
ignat99 писал(а):Не совсем понял, почему публикация внутренних правил привязана к удалённому серверу и не возможно сделать всё локально.
Я конечно понимаю, что хорошо дать возможность людям обмениваться идеями\скриптами и попутно пополнять клиенсткую базу, но соображения о сохранности частных данных и финансовой ответстванности за них, заставляют задуматься :-) А между тем Mosquitto поддерживает SSL/TLS для шифрования трафика.
Дело не в пополнении "клиентской базы", если так можно выразиться. Просто я не нашёл простого способа сделать систему настройки правил на самом устройстве. Точнее, проблем с настройкой правил особо нет -- можно вручную программировать всё на bash-скрипте, ведь исходный код правил остаётся открытым, как и сам цикл, выполняющийся на устройстве. Но для организации такого веб-интерфейса, который работает на connect-е, мне необходим был на устройстве PHP и MySQL, а это уже слишком тяжёлая артиллерия для роутеров. В общем, нет необходимости подключаться к коннекту -- можно взять основу в виде цикла и самому его дописать под свои нужды.

Re: Универсальный узел автоматики

Добавлено: Пн янв 06, 2014 12:23 am
ignat99
sergejey писал(а):
MQTT интересная вещь, но, признаться, этот протокол я у себя не использую, хоть и сделал поддержку его в MajorDoMo. Пока не так много устройств, которые его используют. На практике я сталкивался только с проектом X13Home, но в целом штука перспективная.
ignat99 писал(а):Не совсем понял, почему публикация внутренних правил привязана к удалённому серверу и не возможно сделать всё локально.
Я конечно понимаю, что хорошо дать возможность людям обмениваться идеями\скриптами и попутно пополнять клиенсткую базу, но соображения о сохранности частных данных и финансовой ответстванности за них, заставляют задуматься :-) А между тем Mosquitto поддерживает SSL/TLS для шифрования трафика.
Дело не в пополнении "клиентской базы", если так можно выразиться. Просто я не нашёл простого способа сделать систему настройки правил на самом устройстве. Точнее, проблем с настройкой правил особо нет -- можно вручную программировать всё на bash-скрипте, ведь исходный код правил остаётся открытым, как и сам цикл, выполняющийся на устройстве. Но для организации такого веб-интерфейса, который работает на connect-е, мне необходим был на устройстве PHP и MySQL, а это уже слишком тяжёлая артиллерия для роутеров. В общем, нет необходимости подключаться к коннекту -- можно взять основу в виде цикла и самому его дописать под свои нужды.
На MQTT правила задаются через именование заголовков : Например - sensors/COMPUTER_NAME/temperature/HARDDRIVE_NAME

http://mosquitto.org/man/mqtt-7.html

Если мы заменим отдельно слово на "+", мы (как подписчик) будем получать всю информацию, которую мы выбрали.
Таким образом можно установить правила, для реакции на события от отдельных групп сенсоров.

Настройка же сенсоров (например клиента на Arduino будет сводитьсям к опеределению правильных Топиков в соответствии с выбранной иерархией сигналов). Основной цикл есть в самом клиенте Москино (MQTT).

http://knolleary.net/arduino-client-for-mqtt/
https://github.com/knolleary/pubsubclie ... Client.cpp

IMHO


Проблема была в формате перевода строки в файле /etc/master/cycle.sh
Пришлось убрать 145 символов возврата каретки (^M - виндоус формат).

После этого я появился на карте пользователей, но устройство по прежнему не регистриурется на сервисе CONNECT, таким образом заметно что из за этого сервиса пользователь может потерять много времени.

Я так понял, дело в отсутствии программы настройки правил, думаю логичным решением является программа для различных мобильных платформ (например на Cordova). Эта программа должна дать возможность пользователю сканировать план помещения и определять правила для обмена информацией между сенсорами и эффекторами.

Вот в этом куске в конце cycle.sh снова появились ^M - которые выдают ошибку на моём роутере.
Возмоно нужны какие то системные установки, что бы bash их игнорировала?

Профиксил и этот баг. В конфиг файле и основном цикле:
vi /etc/master/settings.sh
vi /etc/master/cycle.sh

Опять же были лишние символы ^M, которые мешали коннекту.
Так же там был не правильно указан порт USB для Arduino
Правильное значение для TP-Link
ARDUINO_PORT=/dev/ttyACM0

Проверил: Заявленные возможности раотают= Arduino мигает.

Замечания:
1. Создание протокола очень муторное занятие с кучей перемнных, публикация руководства в виде скриншотов, на мой взгляд слишком не продуктивна. Предлагаю делать описание в виде иерархических JSON, MQTT объектов, которые могут быть представлены в графическом виде, текстовом, выполнены на удалённом сервере, выполнены на локальном сервере, сохранены в профиле пользователя, серриализованы для передачи библиотекой cPickle или pickle.

2.Протокол для передачи должен быть TLS.

3. Использовние bash вместо Cи или Python или JS или LUA считаю временным решением.

4. Вместо Arduino лучше использовать STM32f4 или более продвинутый модуль (NooLight) с возможностью прошивки через USB прямо с роутера и/или с беспроводным интерфейсом (Впрочем под Arduino тоже есть утилиты командной строки).

Re: Универсальный узел автоматики

Добавлено: Вт янв 07, 2014 6:18 pm
artko
ignat99 писал(а): 4. Вместо Arduino лучше использовать STM32f4 или более продвинутый модуль (NooLight) с возможностью прошивки через USB прямо с роутера и/или с беспроводным интерфейсом (Впрочем под Arduino тоже есть утилиты командной строки).
STMF32F4 в домашней автоматике? Зачем эти многоногие могучие монстры там?

Re: Универсальный узел автоматики

Добавлено: Вт янв 07, 2014 6:30 pm
ignat99
artko писал(а):
ignat99 писал(а): 4. Вместо Arduino лучше использовать STM32f4 или более продвинутый модуль (NooLight) с возможностью прошивки через USB прямо с роутера и/или с беспроводным интерфейсом (Впрочем под Arduino тоже есть утилиты командной строки).
STMF32F4 в домашней автоматике? Зачем эти многоногие могучие монстры там?
Ну, я слышал, можно делать программы на LUA и Python на нём.