• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Пример MESH_DEMO

AlexMelven

New member
примеры esp_mesh_sdk_app_* - скорее всего будут удалены из UDK как и ESP8266_MESH_SDK, т.к. Espressif убрала mesh_sdk c github и что с ней дальше будет непонятно.
У них давно уже libmesh.a включен в стандартную SDK, поэтому отдельного MESH_SDK как такового нету. Пример esp_mesh_sdk_app просто устарел, после этого был пример ESP8266_LIGHT_WITH_MESH, который пользуется стандартной SDK, но совсем недавно они его с гитхаб удалили с комментом - обращайтесь за последними исходниками в Espressif. Который соответственно на такие запросы тупо молчит. Хотя пока там этот пример лежал, я его скачать успел. Самого по себе в Eclipse я его заставить работать так и не смог - после исправления всех ошибок компиляции сыплются исключения. Зато работает упрощенный пример ESP8266_MESH_DEMO - я в него начал перетаскивать куски из ESP8266_LIGHT_WITH_MESH - и сейчас три девайса связываются в сетку, один становится рутом, приложение китайское IOT их видит и даже можно управлять лампочками на платах. Кстати, если подключить их libpwm.a, то сразу начинают сыпатсья исключения. Сейчас в моем модифицированном примере используется pwm.c от другого примера UDK - который PWM_demo, он там был свой, не библиотечный. Почему удалили пример светильника с меш - не понятно. То-ли стало суперсекретным, то-ли нарушили чьи-то права.
 

CHERTS

Moderator
Команда форума
Зато работает упрощенный пример ESP8266_MESH_DEMO - я в него начал перетаскивать куски из ESP8266_LIGHT_WITH_MESH - и сейчас три девайса связываются в сетку, один становится рутом, приложение китайское IOT их видит и даже можно управлять лампочками на платах.
Круто, нет желание сделать простой примерчик MESH для UDK?
 

AlexMelven

New member
Круто, нет желание сделать простой примерчик MESH для UDK?
да, без проблем, должен же я быть как-то полезен сообществу, не только глупые вопросы задавать :) Если научите, как правильно создавать проект именно для UDK. А то я сейчас это делаю извращенным методом, ибо не знаю как это делается на самом деле - клонирую например проект с гитхаба, там естественно в Make Target ничего не появляется. Потом из рабочего похожего проекта UDK копирую .project, меняю внутри название на нужное - сразу появляется в Make Target. Makefile тоже беру готовый из похожего проекта, если что-то ругается то правлю. И еще .cproject вроде копирую - не уверен что это тоже нужно. А потом создаю таргеты вручную, основываясь на такие в Makefile. Знаю что это должно быть как-то более правильно. Вон у pvvx клонируешь его вебсервер - и все сразу работает с самого начала.
По поводу примера меш сети - да, хотелось бы до конца разобраться с этим китайским безобразием, т.к. других альтернатив особо нету, все у кого что-то получилось свое, они исходников не дадут, т.к. будут продавать. Пример - некий забугоный chandan2002x, который год давал бинарники своей меш сетки на тестирование другим, потом пропал, потом появился с готовым продуктом - исходников никому не дам. Молодец конечно, так и надо делать. Правда не понятно зачем народ надеждами кормил столько времени, они ему бесплатно тестировали то что он потом будет им же продавать.
Ну а раз китайский пример - значит к нему и приложение IOT manager, которое тоже есть в исходниках. Но у меня пока его скомпилировать в Андроид студио не получилось, так же как и все китайские примеры :) Разобраться в этом менеджере, открутить оттуда китайское облако, чтобы можно было пользовать что-то свое.
 

pvvx

Активный участник сообщества
А это HEKR ESP8266 SDK (китайский вариант SDK от Espressif) UDK будет поддерживать?
-----
Пример - некий забугоный chandan2002x, который год давал бинарники своей меш сетки на тестирование другим, потом пропал, потом появился с готовым продуктом - исходников никому не дам. Молодец конечно, так и надо делать. Правда не понятно зачем народ надеждами кормил столько времени, они ему бесплатно тестировали то что он потом будет им же продавать.
Это нормальная западная практика. Проект с открытыми исходниками у них пишется аналогично - создается пустой проект и принимаются исходники и исправления от пользователей, но автором (с) становится владелец назначивший пустую тему или три первых байта .
 
Последнее редактирование:

AlexMelven

New member
Круто, нет желание сделать простой примерчик MESH для UDK?
Здесь архив с рабочим простым примером MESH_DEMO. Проверьте, возможно тогда можно будет добавить к UDK. В этом примере приложение IOT Espressif не видит запущенные девайсы, хотя во время поиска можно видеть некоторые сообщения в терминале, видимо по UDP. В файле mesh_demo/include/user_config.h нужно исправить MESH_ROUTER_SSID, MESH_ROUTER_PASSWD на данные своего роутера. переменную server_ip ввести айпи адрес своего компьютера, на котором будет запускаться TCP сервер (можно узнать через ipconfig :) В папке mesh_demo лежит скрипт питона с простейшим TCP сервером на порте 7000, который получает пакеты и отправляет их обратно. Если запустить два устройства, то одно из них станет рутом, другое подключится к нему. Раз в 5 секунд оба начнут посылать на сервер пакеты (в данном случае I am station "mac address"). Сообщения, посланные рутом, возвращаются в рут, посланные чилдренами через рут (или как они там между собой подружатся) - возвращаются к этим чилдренам. Путь прописан в заголовке пакета. Чтобы заработал скрипт питона, нужно установить питону gevent. Помню потратил пару часов, пока заработало, сейчас к сожалению все шаги не вспомню, надо было записывать. Но вроде там фишка была в том, что питон должен стоять с последними исправлениями 2.7.4, а gevent берется тут >>
 

Вложения

CHERTS

Moderator
Команда форума
А это HEKR ESP8266 SDK (китайский вариант SDK от Espressif) UDK будет поддерживать?
А зачем? Там чисто все по китайски и для китайцев, я иероглифы не знаю. Они могли бы потрудиться хоть на корявом английском написать, а так очередной проект - очумелые китай-ручки.

Здесь архив с рабочим простым примером MESH_DEMO
Спасибо, вечером посмотрю, адаптирую под UDK.

В этом примере приложение IOT Espressif не видит запущенные девайсы
А как сделать чтобы видело? или IOT Espressif завязан на китайское облако?
 

AlexMelven

New member
А как сделать чтобы видело? или IOT Espressif завязан на китайское облако?
Я его архивировал из UDK, поэтому думаю должно встать сразу. Только удалил жирную папку .git - раз для UDK, подумал она не нужна. Но ругается при компиляции что проект не принадлежит git.
Вы же просили простой проект - это как раз его вариант, почти как Хелоу Ворлд :) Чтобы как минимум разобраться с концептом меш-сети. Можно ведь открыть их PDF из папки документации, что есть там же и делать разные другие запросы или формировать заголовки местные и слать между устройствами сообщения, а потом их обрабатывать. То что видит IOT - там уже лампочка, проект много жирнее, но его тоже можно оформить. Без облака "лампочки" просто не будут видны вне роутера. Можно им сказать чтобы они стучались точно так же на TCP сервер на том скрипте питоновском - как только все лампочки с сервером связываются, в терминале сервера начинается вакханалия из json сообщений :) Ну и как-бы этот проект я только начал заставлять работать, он как-то ведет себя пока не стабильно - если не запустить "сервер" и лампочки не просрутся туда, они какие-то неразговорчивые изначально. Т.е. в IOT они все видны, жмешь на кнопку включения лампочки, она даже может включиться, но в IOT в итоге кнопка включения остается в состоянии "выключено" и тупит. А если запустить скрипт сервера, потом выключить - они начинают живенько включаться-выключаться, становиться разного цвета (в моем проекте трехцветный светодиод подключен). Я таки достучался до того кто непосредственно этим проектом занимается, он обещал последние сырцы прислать. Я ему также описал проблему - что делать если два соседа купят по 10 лампочек и влючат их, они что, пересношаются друг с другом (лампочки, не соседи)? Что делать, как менять групповой ID, при этом чтобы из коробки он был дефолтным? Он ответил - это проблема, которую мы сейчас решаем, если есть хорошие идеи, велкам. Самая простая идея для девайса без кнопки - это наверное чтобы из коробки был отключен меш, включена точка без шифрования. Заходишь в любую точку на страницу, там видны все точки с подобным именем в округе. Выставляешь групповой ID, пароль и жмешь - конфигурировать. Те точки, что на самом деле твои, включат меш, объединятся и начнут работать. Ну подумаешь сосед в этот момент решил заняться тем же самым или включил и оставил, решив попить пива - лампочка по-любому теперь твоя. Новые лампочки можно добавлять в свою сеть таким же образом - зайдя через рут на страницу, либо через приложение типа IOT. Если лампочку решили продать другому владельцу или перенести в другую подсетку - надо зайти через текущий рут и отключить эту лампочку от сетки в первоначальное состояние. Опять же это своеобразная защита от воров лампочек в подъездах. Наступит же когда-то такое время, что эти лампочки будут даже в подъездах :)
 
Сверху Снизу