BLYNK integration
BLYNK integration
Приветствую!
По линии работы senior devops/middle dev (js/c#) ну и думаю на junior C++ потяну. IOT было интересно всегда, сейчас очень много интересного и умного построено на ESP8266/EPS32. Завязал все это дело на Blynk SDK (blynk.cc).
Причина лишь одна - opensource backend, приличный Android/IOS APP, есть API. По сути дела ребята дорастили MQTT функционал. Важное для меня здесь - классное мобильное приложение, с уведомлениями и прочими фичами. Конкурентов на сегодня достойных не видел (если упустил, подскажите).
Сигнализация была у меня на ESP32, но руки довести до ума не дошли. Плюс слабые познания в электронике не дали сделать хорошую обвязку PIR датчикам.
https://github.com/hostmit/esp32-alarm
Приобрел 7S, и хочу интегрировать ее в Blynk. Тех сап сказал, что они юзают штатную прошивку и управление AT командами.
https://github.com/espressif/ESP8266_AT
Вот она, для меня неудобна тем, что я не знаком с ESPRESSIF SDK, использовал всегда ARDUINO SDK.
Планирую написать обработчик их AT команд, добавить WEB API (ESPAsyncWebServer) ну и транслитерировать все это дело в BLYNK. Изначально беру ESP32, более удобная платформа, таски, и прочие фичи, за пару баксов разницы...
Так вот собственно вопросы:
1) Есть где-либо информация о AT командах, которые шлёт микропроцессор в ESP? Даташит?
2) Кто либо уже работал в этом направлении? Интеграция в Blynk? Поделитесь наработками.
3) Есть ли желающие с С++ бекграундом принять участе в данном деле, код так или иначе будет паблик, гитхаб.
По линии работы senior devops/middle dev (js/c#) ну и думаю на junior C++ потяну. IOT было интересно всегда, сейчас очень много интересного и умного построено на ESP8266/EPS32. Завязал все это дело на Blynk SDK (blynk.cc).
Причина лишь одна - opensource backend, приличный Android/IOS APP, есть API. По сути дела ребята дорастили MQTT функционал. Важное для меня здесь - классное мобильное приложение, с уведомлениями и прочими фичами. Конкурентов на сегодня достойных не видел (если упустил, подскажите).
Сигнализация была у меня на ESP32, но руки довести до ума не дошли. Плюс слабые познания в электронике не дали сделать хорошую обвязку PIR датчикам.
https://github.com/hostmit/esp32-alarm
Приобрел 7S, и хочу интегрировать ее в Blynk. Тех сап сказал, что они юзают штатную прошивку и управление AT командами.
https://github.com/espressif/ESP8266_AT
Вот она, для меня неудобна тем, что я не знаком с ESPRESSIF SDK, использовал всегда ARDUINO SDK.
Планирую написать обработчик их AT команд, добавить WEB API (ESPAsyncWebServer) ну и транслитерировать все это дело в BLYNK. Изначально беру ESP32, более удобная платформа, таски, и прочие фичи, за пару баксов разницы...
Так вот собственно вопросы:
1) Есть где-либо информация о AT командах, которые шлёт микропроцессор в ESP? Даташит?
2) Кто либо уже работал в этом направлении? Интеграция в Blynk? Поделитесь наработками.
3) Есть ли желающие с С++ бекграундом принять участе в данном деле, код так или иначе будет паблик, гитхаб.
Re: BLYNK integration
1. всю служебную информация, в том числе и отправляемые АТ-команды на ESP8266, можно с помощью конфигуратора записать в лог-файл. там достаточно легко получить необходимую вам инфо. вот пример - урывки из лога
Receive from WiFi:
ready
Send to WiFi: AT
Receive from WiFi: AT
OK
Send to WiFi: ATE0
Receive from WiFi: ATE0
OK
Send to WiFi: AT+GMR
Receive from WiFi: AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
compile time:May 20 2016 15:08:19
OK
Send to WiFi: AT+CWMODE=1
Receive from WiFi:
OK
Send to WiFi: AT+CWJAP=...
Receive from WiFi: WIFI CONNECTED
Receive from WiFi: WIFI GOT IP
Receive from WiFi:
OK
Send to WiFi: AT+CIPMODE=0
Receive from WiFi:
OK
Send to WiFi: AT+CIPMUX=0
Receive from WiFi:
OK
Send to WiFi: AT+CIPSTART="TCP","
Send to WiFi: ok.webhop.net
Send to WiFi: ",
Send to WiFi: 31200
Send to WiFi:
Receive from WiFi: CONNECT
OK
Send to WiFi: AT+CIPSENDEX=2048
Receive from WiFi:
OK
>
Send to WiFi: {864287035399268,00FF,5600,623F0000,0000,00,8080808080808080,0000000000000000000000000000000000000000000000000000000000000000,024C024B0000000000000FFB0FEC012E032F0331033103310331032F0FDD0FDB,9.4.2,OKO-PRO-X,,,,,,,,,,,,,,,,,,,,,,,,821455000000,,}
Send to WiFi:
Send to WiFi: \0
Receive from WiFi:
Recv 247 bytes
Receive from WiFi:
SEND OK
Receive from WiFi:
+IPD,43:COMMAND:;
SERVER CLOCK:2020-02-18 16:26:16
перечень доступных АТ-команд для ESP8266 есть в инете
https://www.espressif.com/sites/default ... set_en.pdf
Receive from WiFi:
ready
Send to WiFi: AT
Receive from WiFi: AT
OK
Send to WiFi: ATE0
Receive from WiFi: ATE0
OK
Send to WiFi: AT+GMR
Receive from WiFi: AT version:1.1.0.0(May 11 2016 18:09:56)
SDK version:1.5.4(baaeaebb)
compile time:May 20 2016 15:08:19
OK
Send to WiFi: AT+CWMODE=1
Receive from WiFi:
OK
Send to WiFi: AT+CWJAP=...
Receive from WiFi: WIFI CONNECTED
Receive from WiFi: WIFI GOT IP
Receive from WiFi:
OK
Send to WiFi: AT+CIPMODE=0
Receive from WiFi:
OK
Send to WiFi: AT+CIPMUX=0
Receive from WiFi:
OK
Send to WiFi: AT+CIPSTART="TCP","
Send to WiFi: ok.webhop.net
Send to WiFi: ",
Send to WiFi: 31200
Send to WiFi:
Receive from WiFi: CONNECT
OK
Send to WiFi: AT+CIPSENDEX=2048
Receive from WiFi:
OK
>
Send to WiFi: {864287035399268,00FF,5600,623F0000,0000,00,8080808080808080,0000000000000000000000000000000000000000000000000000000000000000,024C024B0000000000000FFB0FEC012E032F0331033103310331032F0FDD0FDB,9.4.2,OKO-PRO-X,,,,,,,,,,,,,,,,,,,,,,,,821455000000,,}
Send to WiFi:
Send to WiFi: \0
Receive from WiFi:
Recv 247 bytes
Receive from WiFi:
SEND OK
Receive from WiFi:
+IPD,43:COMMAND:;
SERVER CLOCK:2020-02-18 16:26:16
перечень доступных АТ-команд для ESP8266 есть в инете
https://www.espressif.com/sites/default ... set_en.pdf
тяжело начинать с нуля, но тяжелее с глубокого минуса
Re: BLYNK integration
Спасибо. Как я понимаю, есть же еще обработчик ошибок от ESP? Дроп соединений и т.п.?
Re: BLYNK integration
согласно официальному документу, ссылку на который я дал выше, вот такой перечень сообщений может выдавать ESP8266
Конечно же, при "ненормальном" обрыве тср-соединения ничего еср-шка не выдаст. и узнать об таком обрыве можно лишь при попытке передать что-либо в сокет. В приборе сделана следущая логика: если через вифи не удается установить соединение с сервером и передать ему пакет, то переходим на мобильный интернет (гсм-модуль), но периодически пробуем установить коннект через вифи.тяжело начинать с нуля, но тяжелее с глубокого минуса
Re: BLYNK integration
Еще раз спасибо за разъяснения. Еще вопросик:
Настроил ВХОД4 как управление постановкой/снятием с охраны (подачей земли на него). Управляю этим с другой ESP через оптопару - та часть где приемный диод стоит между землей и ВХОД4.
Есть ли варианты подать выход с GPIO напрямую? LOW работать будет, а вот HIGH? Что с той стороны? Через резистор? Или оставить оптопару с развязкой.
Настроил ВХОД4 как управление постановкой/снятием с охраны (подачей земли на него). Управляю этим с другой ESP через оптопару - та часть где приемный диод стоит между землей и ВХОД4.
Есть ли варианты подать выход с GPIO напрямую? LOW работать будет, а вот HIGH? Что с той стороны? Через резистор? Или оставить оптопару с развязкой.
Re: BLYNK integration
пины проца для входов там в режиме АДС
тяжело начинать с нуля, но тяжелее с глубокого минуса
Re: BLYNK integration
Итак early sketch тут
https://gitlab.com/hostmit-esp8266/s7
Набросал немного итемов в приложение
http://h.pi.hostmit.net/i/photo_2020-03-10_07-02-13.jpg
Идея сохранить штатный функционал S7 + наростить своим. Самая главная проблема для меня - использовать уже готовые RFID сканеры на входах, для контроля 2х зон (у меня 2 здания). RFID выполнены в виде rfid rc522 (та версия где ключ в закрытом виде хранится на карте) + esp8266. Они стоят снаружи, при поднесении карты они бросают ASYNC UDP PACKET в мультикаст. В пакете JSON с зоной и ключём. Главное устройство (на S7) подписано на тот же мультикаст, при получении пакета сравнивают с базой ключей и меняют состояние сигнализации для данной зоны. Так же, главное устройство каждые 500мс в мультикаст шлёт состояние сигнализации, снова json async udp пакет. На блоках RFID стоит светодиод, который в зависимости от статуса зоны горит или нет
https://gitlab.com/hostmit-esp8266/s7-rfid
Итак проблемы с которыми я столкнулся:
1) ESP8266 не лучший вариант для такого количества задач, очевидно перейду на ESP32. Во-первых один аппаратный UART усложняет отладку, пришлось использовать async udp logger -> graylog (gelf). Софтварный UART плох, потому что нет входящего буфера. У ESP32 два аппаратных UART. Кроме того, тяжелые блочащие операции, например BLYNK.run(), на пол секунды подвешивают поток. У ESP такие вещи можно забиндить на второе ядро.
2) Не работает штатное приложение. TCP соединение есть, пакет отправляется {data}, но в приложении не видно. Поставлю свой сервер ОККО. @boby, не подскажешь, куда рыть?
Пока все. Буду апдейтить по возможности.
https://gitlab.com/hostmit-esp8266/s7
Набросал немного итемов в приложение
http://h.pi.hostmit.net/i/photo_2020-03-10_07-02-13.jpg
Идея сохранить штатный функционал S7 + наростить своим. Самая главная проблема для меня - использовать уже готовые RFID сканеры на входах, для контроля 2х зон (у меня 2 здания). RFID выполнены в виде rfid rc522 (та версия где ключ в закрытом виде хранится на карте) + esp8266. Они стоят снаружи, при поднесении карты они бросают ASYNC UDP PACKET в мультикаст. В пакете JSON с зоной и ключём. Главное устройство (на S7) подписано на тот же мультикаст, при получении пакета сравнивают с базой ключей и меняют состояние сигнализации для данной зоны. Так же, главное устройство каждые 500мс в мультикаст шлёт состояние сигнализации, снова json async udp пакет. На блоках RFID стоит светодиод, который в зависимости от статуса зоны горит или нет
https://gitlab.com/hostmit-esp8266/s7-rfid
Итак проблемы с которыми я столкнулся:
1) ESP8266 не лучший вариант для такого количества задач, очевидно перейду на ESP32. Во-первых один аппаратный UART усложняет отладку, пришлось использовать async udp logger -> graylog (gelf). Софтварный UART плох, потому что нет входящего буфера. У ESP32 два аппаратных UART. Кроме того, тяжелые блочащие операции, например BLYNK.run(), на пол секунды подвешивают поток. У ESP такие вещи можно забиндить на второе ядро.
2) Не работает штатное приложение. TCP соединение есть, пакет отправляется {data}, но в приложении не видно. Поставлю свой сервер ОККО. @boby, не подскажешь, куда рыть?
Пока все. Буду апдейтить по возможности.
Re: BLYNK integration
Приложение заработало... кстати как-то не устойчиво оно работает, и раньше не устойчиво. Те же команды через BLYNK улетают куда быстрее. Запущу в докере этот мега-jar... Нет бы на ноде написали Ну до того же тяжелая эта JAVA...
Re: BLYNK integration
Забираю свои слова назад, не такой уж тяжелый JRE.
Работает существенно быстрее, чем фри паблик инстанс на DC воле Камон, кто хостится на воле, когда есть hetzner?
Вобщем все получается. Нужно время или контрибьюторы
Код: Виділити все
2df1b2bbe323 registry.gitlab.com/hostmit-private/c1-hetzner:s7backend-master "java -jar /app/tcp_…" 2 minutes ago Up 2 minutes 0.0.0.0:31200->31200/tcp s7backend_s7backend_1 32.8kB (virtual 285MB)
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2df1b2bbe323 s7backend_s7backend_1 0.16% 99.78MiB / 3.758GiB 2.59% 14.3kB / 11.5kB 13.8MB / 0B 523
Вобщем все получается. Нужно время или контрибьюторы
Re: BLYNK integration
Забыл добавить, я использую ESP8266 12e. На ESP-01 собраться отказалось, там 512КБ места, а я активно использую ОТА, это отъедает еще кусочек. Можно конечно ужиматься, но в 2020 уже как-то не хочется.
@boby подскажи пожалуйста, 3.3В я прозвонил, идет одна линия питания на 433MHZ модуль и на ESP-01 на S7. Первого у меня нет, но я хочу вместо ESP-01 поставить ESP32, который будет попрожорливее. Как там по питанию? Линейная понижайка или ШИМ? Можно даташит или инфу, хватит ли мне для ESP32.
@boby подскажи пожалуйста, 3.3В я прозвонил, идет одна линия питания на 433MHZ модуль и на ESP-01 на S7. Первого у меня нет, но я хочу вместо ESP-01 поставить ESP32, который будет попрожорливее. Как там по питанию? Линейная понижайка или ШИМ? Можно даташит или инфу, хватит ли мне для ESP32.