![]() |
|
![]() |
#1 |
Junior Member
Регистрация: 18.08.2016
Адрес: Тюмень
Сообщений: 15
Вес репутации: 0 ![]() |
![]()
1. Это не ошибка, клиент пытается переподключиться, при успешном реконнекте получает все актуальные данные.
2. В соответствующих полях датчиков и исполнительных устройств появляются ошибки, их количество, время и т.д. Возникают события реакцию на которые можно настроить в системе как обычный сценарий. Контроллер при неудачной отправке событий на сервер может выполнить сценарий сетевой с другим контроллером в обход сервера и/или выполнить сценарий внутри себя(эти сценарии естественно примитивные включить выключить переключить какие-то порты) 3. Смотря какой датчик, например если это дс18х20 то мы об этом узнаем и что-то можем сделать. Если это к примеру аналоговый датчик протечки то для определения обрыва нужно ставить сопротивление между плюсом и входом датчика у аналогового блока, тогда мы при обрыве получим определенный сигнал и сможем его обработать на сервере. 4. Ну тут хз, смотря о чем речь. Железный сервер? Тогда можно настроить критические сценарии на контроллере т.е. если сервер не ответил то после секундного ожидания свет всеравно включится по сценарию в контроллере и т.д. Тут нужно все продумывать. Если про программный сервер то таких случаев пока не было(ну т.е. на первых этапах бывало пару раз) Тут я стараюсь писать безопасный код с полным логированием всех нештатных ситуаций, логи пишутся в базу а если она недоступна или если сервак запущен из консоли то вывод идет еще и в консоль для удобной отладки. Да, связь по хттп. Ну т.е. еслии серверу нужно включить свет то он отправляет запрос к контроллеру по типу http://192.168.88.102/?cf=cmd&pt=5&pn=7 и контроллер включает 7 пин на 5 порту. Соответственно если сработал вход на контроллере или был опрошен датчик то контроллер отправляет запрос серверу в котором указывает кто он и что сработало. В контроллере стоит сетевой стек enc28j60. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Спасибо.
То есть схема такая? ![]() А как реализовали обратную связь? Например я нажал кнопку (в веб-интерфейсе) "включить свет", что происходит, сигнал уходит на сервер и...?
__________________
istarik.ru |
![]() |
![]() |
![]() |
#3 |
Junior Member
Регистрация: 18.08.2016
Адрес: Тюмень
Сообщений: 15
Вес репутации: 0 ![]() |
![]()
Да, схема такая, плюс к ардуине цепляются исполнительные модули.
Пользователь жмет кнопку в интерфейсе, команда уходит на сервер по вебсокету, сервер обрабатывает и решает что делать. Если пришла команда включить свет то сервак посылает команду на включение реле для контроллера все это записывает в базу и рассылает всем подключенным пользователям. Если команда не прошла то пишет ошибки и всех оповещает. Т.е. у нас нет никаких аджаксов и задержек. Как только один пользователь подвинул ползунок например цвета ргб ленты, все остальные клиенты об этом сразу узнают и если у них открыт этот же виджет управления лентой то ползунох синхронно ползет. Я особо не смотрел мажордомо, но мне кажется там такого нет, поправьте если не так. |
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
... Сокеты вёщь шикарная, но к сожалению есть достаточно много людей у которых установлены старые браузеры. Я столкнулся с этими проблемами года два наза, может сейчас уже такого нет. ... Цитата:
__________________
istarik.ru Последний раз редактировалось stD; 26.08.2016 в 20:38. |
||
![]() |
![]() |
![]() |
#5 | |
Junior Member
Регистрация: 18.08.2016
Адрес: Тюмень
Сообщений: 15
Вес репутации: 0 ![]() |
![]() Цитата:
Сокеты работают во всех нормальных браузерах, даже в ие вроде появились. В общем на десктопе есть из чего выбрать а на андроиде и айосе точно есть. |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Вот здесь Вы пишите:
Цитата:
1. Пользователь жмет кнопку в интерфейсе. 2. Команда уходит на сервер по вебсокету, сервер обрабатывает и решает что делать. 3. Если пришла команда включить свет, то сервак посылает контроллеру команду на включение реле. 4. Записывает (команду) в базу и рассылает статус всем подключенным пользователям. Так происходит?
__________________
istarik.ru |
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Регистрация: 18.08.2016
Адрес: Тюмень
Сообщений: 15
Вес репутации: 0 ![]() |
![]()
Да,все правильно
|
![]() |
![]() |
![]() |
#8 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
А если нажать физическую кнопку включения освещения, то как Ваш сервер определит что освещение включено?
|
![]() |
![]() |
![]() |
#9 | |
Junior Member
Регистрация: 18.08.2016
Адрес: Тюмень
Сообщений: 15
Вес репутации: 0 ![]() |
![]() Цитата:
Сервер рассылает новый статус только после выполнения команды контроллером, если контроллер не ответил то статус не меняется. |
|
![]() |
![]() |
![]() |
#10 | ||
Senior Member
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1312 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() Цитата:
Цитата:
Я правильно понял?
__________________
istarik.ru |
||
![]() |
![]() |
![]() |
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|