В общем создал я поделие. WEB сервер на ESP8266. Аналог Arduino Mega Server и WEB свалке от pvvx.
Текущий статус 80% от первой беты, сейчас в общий доступ ничего не положу, т.к. товар надо показать лицом, а красивого лица нету
Ищу сообщника который поможет сделать красивый понятный функциональный интерфейс для демонстрации возможностей решения. На данный момент проект предполагается сделать свободным, потому никаких денег не предлагаю. Сообщник получит необходимые исходники и пояснения. Найдутся желающие - велком в ветку и в личку.
Мое решение я создаю как интерфейс для системы управления теплым полом, т.е. это полтора десятка различных датчиков (температуры воды - на 1wire, воздуха - китайские беспроводные от метеостанций, давления, ...) и набор реле (клапаны, насосы, котел, ...). Цель текущего проекта сделать именно интерфейс, без привязки логики к коду системы. Датчики распределены в пространстве. Т.о. есть необходимость связи нескольких систем в одну посредством беспроводных средств. Т.е. датчики будут на одной ESP, а WEB сервер - на другой.
Но проект строится как универсальный. Ни в одной строчке кода не будет привязки к конкретным задачам. Текущий проект призван сделать универсальные WEB интерфейс, систему сенсоров и логический контроллер.
Описание существующего функционала и планы, отличия от аналогов:
Я анализировал два решения - они в начале топика.
AMS мне не понравилось структурой и малой функциональностью.
Свалка - да простит меня автор, мое мнение субъективно - она и есть свалка. Ничего не понятно, кроме того что это круто. Необходимо использовать Эклипс, иначе собрать эту свалку не возможно. Да и функционал хромает.
Что сделал я:
Проект разрабатывается в Visual Micro, весь проект - набор нескольких проектов, в которых из одних исходников собирается именно то решение, которое требуется, с учетом нужного функционала. Используются стандартные библиотеки и классы ESP, никаких собственных стеков TCP и пр. - может и есть нестабильности в работе, зато все понятно. При желании, свалив все в один каталог можно скомпилировать в Aduino или в другой среде.
Сейчас параметры кода такие:
Program size: 312 831 bytes (used 30% of a 1 044 464 byte maximum) (12,41 secs)
Minimum Memory Usage: 44488 bytes (54% of a 81920 byte maximum)
Несколько ESP могут объединяться в систему. При этом каждая из ESP может быть как сервером датчиков, так и клиентом, или одновременно (сейчас не реализовано, только идея, а идея - 50% решения). При этом совершенно не важно куда именно подключен конкретный датчик. На каждой ESP из системы будут видны все датчики всех ESP. Датчики адресуются по именам. Соответствие имен датчиков и их ID указывается на той ESP, к которой они физически подключены. Состав показателей датчиков может быть произвольный. Обязательными показателями являются:
Так же будут виртуальные датчики, значения для которых будут задаваться в файле настроек. Это позволит простым образом унифицировать обращение к датчикам и настройкам на всех ESP в сети.
Автономные датчики - никаких сетей NFR24. Как я понимаю, ESP умеет спать самостоятельно. Поэтому может использоваться как автономный датчик. Если надо что-то другое, то имеет смысл выделить отдельную ESP как сервер датчиков, который собирает данные и отдает их ESP которая делает интерфейс. А логический контролер может быть на третьей ESP.
Реализован WEB сервер с минимальным набором встроенных сервисов. Не отключаемых сервисов на данный момент 3:
Все остальное может опционально:
Вот.
Написал тут много, а показать нечего. Рисовать не умею, дизайнер из меня хреновый. Навыки HTML базовые. С программированием Arduino / ESP знаком полгода (иногда бывает час-два в день или в неделю на это ). Как готовить Git - не знаю.
Я программирую на языке очень далеком от С, и текущий проект - хобби.
Кто хочет сделать интересную штуку - приглашаю к сотрудничеству.
Текущий статус 80% от первой беты, сейчас в общий доступ ничего не положу, т.к. товар надо показать лицом, а красивого лица нету
Ищу сообщника который поможет сделать красивый понятный функциональный интерфейс для демонстрации возможностей решения. На данный момент проект предполагается сделать свободным, потому никаких денег не предлагаю. Сообщник получит необходимые исходники и пояснения. Найдутся желающие - велком в ветку и в личку.
Мое решение я создаю как интерфейс для системы управления теплым полом, т.е. это полтора десятка различных датчиков (температуры воды - на 1wire, воздуха - китайские беспроводные от метеостанций, давления, ...) и набор реле (клапаны, насосы, котел, ...). Цель текущего проекта сделать именно интерфейс, без привязки логики к коду системы. Датчики распределены в пространстве. Т.о. есть необходимость связи нескольких систем в одну посредством беспроводных средств. Т.е. датчики будут на одной ESP, а WEB сервер - на другой.
Но проект строится как универсальный. Ни в одной строчке кода не будет привязки к конкретным задачам. Текущий проект призван сделать универсальные WEB интерфейс, систему сенсоров и логический контроллер.
Описание существующего функционала и планы, отличия от аналогов:
Я анализировал два решения - они в начале топика.
AMS мне не понравилось структурой и малой функциональностью.
Свалка - да простит меня автор, мое мнение субъективно - она и есть свалка. Ничего не понятно, кроме того что это круто. Необходимо использовать Эклипс, иначе собрать эту свалку не возможно. Да и функционал хромает.
Что сделал я:
Проект разрабатывается в Visual Micro, весь проект - набор нескольких проектов, в которых из одних исходников собирается именно то решение, которое требуется, с учетом нужного функционала. Используются стандартные библиотеки и классы ESP, никаких собственных стеков TCP и пр. - может и есть нестабильности в работе, зато все понятно. При желании, свалив все в один каталог можно скомпилировать в Aduino или в другой среде.
Сейчас параметры кода такие:
Program size: 312 831 bytes (used 30% of a 1 044 464 byte maximum) (12,41 secs)
Minimum Memory Usage: 44488 bytes (54% of a 81920 byte maximum)
Несколько ESP могут объединяться в систему. При этом каждая из ESP может быть как сервером датчиков, так и клиентом, или одновременно (сейчас не реализовано, только идея, а идея - 50% решения). При этом совершенно не важно куда именно подключен конкретный датчик. На каждой ESP из системы будут видны все датчики всех ESP. Датчики адресуются по именам. Соответствие имен датчиков и их ID указывается на той ESP, к которой они физически подключены. Состав показателей датчиков может быть произвольный. Обязательными показателями являются:
- ID - я решил, что все датчики будут иметь 16 битный ID, если физический длиннее - берем CRC16.
- Name,
- Type,
- Source - адрес ESP к которой подключен датчик
- TimeLabel - метка времени получения данных датчиков. Чтобы все хорошо работало, нужно чтобы время было синхронизировано на всех ESP.
- Остальной набор будет зависеть от типа датчика. Но все значения будут int32. Если надо дробные - использовать показатели с фиксированной запятой, например "temperatureX10"
Так же будут виртуальные датчики, значения для которых будут задаваться в файле настроек. Это позволит простым образом унифицировать обращение к датчикам и настройкам на всех ESP в сети.
Автономные датчики - никаких сетей NFR24. Как я понимаю, ESP умеет спать самостоятельно. Поэтому может использоваться как автономный датчик. Если надо что-то другое, то имеет смысл выделить отдельную ESP как сервер датчиков, который собирает данные и отдает их ESP которая делает интерфейс. А логический контролер может быть на третьей ESP.
Реализован WEB сервер с минимальным набором встроенных сервисов. Не отключаемых сервисов на данный момент 3:
- Текущее время. Просто транслирует текущее время. Настройки синхронизации пока нет, сервер пока в коде написан. Но сейчас сервер умеет быть как клиентом NTP, так и сервером. Т.е. одна ESP (любая из сети) может смотреть в инет или иметь RTC, и раздавать время остальным.
- Настройки WiFi. Если ESP не настроена для подключения к роутеру, она переходит в режим точки доступа. Присутствует элементарный интерфейс для настройки подключения. Если хочется не элементарный, а с рюшками - надо просто реализовать htm страницу (если включена поддержка файловой системы) с красивой формой. А сервис для применения изменений уже есть. Встроенный интерфейс выглядит так: , а можно загрузить страницу, и будет несколько иначе:
- Встроенная справка по реализованным сервисам. Т.е. встроенная страница 404 содержит описание возможных сервисов с параметрами. Может быть заменена загрузкой страницы 404.htm (если включена поддержка файловой системы).
Все остальное может опционально:
- Поддержка файловой системы SPIFFS.
- Редактор файлов (интернет не требуется, ~100KB на FS). Будет в т.ч. использоваться для редактирования настроек, которые будут в файлах.
- Редактироваться настройки так же могут WEB интерфейсе (не реализовано). Хранение настроек - в файлах.
- Поддержка активного содержимого на стороне сервера. Да-да, сервер уже умеет исполнять скрипты. На данный момент он умеет исполнять их из файлов, файл запускается только из консоли COM. Скрипты могут выполняться в фоне. Запускаться автоматически при старте ESP. Т.о. ESP превращается в простой логический контролер. Скриптовый язык простой, но может расширяться функциями на С. Работа с пинами - в базе, работа с FS присутствует. Редактироваться скрипты могут средствами браузера и ESP.
- Сервер не умеет модифицировать файлы (ну кроме как скриптом), всякие метки, метаблоки и пр. не предусмотрены. Модификация страниц происходит на стороне клиента (AJAX) или скриптом.
- Поддерживаются web-сокеты.
- Поддерживаются датчики 1wire, набор датчиков на одной шине. Адреса в коде указывать не надо.
- Поддерживаюся китайские метеодатчики ( ), набор датчиков на одном приемнике.
Вот.
Написал тут много, а показать нечего. Рисовать не умею, дизайнер из меня хреновый. Навыки HTML базовые. С программированием Arduino / ESP знаком полгода (иногда бывает час-два в день или в неделю на это ). Как готовить Git - не знаю.
Я программирую на языке очень далеком от С, и текущий проект - хобби.
Кто хочет сделать интересную штуку - приглашаю к сотрудничеству.
Последнее редактирование: