ESP8266 MegaD api
ESP8266 MegaD api
Всех приветствую.
Да простит меня Андрей, уж очень заманчив его api для мегадевайса, решил частично позаимствовать для организации исполнительного модуля на базе ESP-12f (можно и другие ESP8266).
Собственно небольшой итог по проделанной работе. По возможностям устройство практически приблизилось к MegaD, основные отличия:
- в первую очередь стабильность работы, Wi-Fi есть Wi-Fi, время отклика отстает от оригинального устройства,
- некоторый функционал связанный с использованием портов в режиме raw у MegaD, естественно упирается в пункт см. выше.
Поддерживаемые микросхемы:
Датчики:
- DS18B20 - температура;
- DHT11/DHT2x(AM2302, AM2303) - температура, влажность;
- BMP085/180 - температура, давление;
- BME280 - температура, влажность, давление;
- Si7021 - температура, влажность;
- BH1750 - освещенность;
Расширители портов IO:
- PCA9685 - выход PWM;
- MCP23017 - IN и OUT;
- WS281x - RGB;
Дисплеи:
- PCF8574 - i2c->HD44780
- SSD1306 - OLED
Список изменений:
03.06.2017 - 0.34b12
- мелкие правки,
- исправлены проблемы с возвратом статуса обновления прошивки,
- временно отключен MQTT,
07.02.2017 - 0.34b10
- оптимизированная разметка EEPROM,
- добавлен механизм первоначальной инициализации устройства, в дальнейшем позволит избежать проблем с EEPROM при переходе на новые версии прошивок со значительными изменениями в коде,
- мелкие правки,
- после прошивки ВСЕ параметры кроме SSID и пароля сети будут сброшены,
05.02.2017 - 0.34b9
- под хранение ID выделено 4 байта,
- добавлена поддержка MQTT, минимально:
* устройство подключается к брокеру по IP сервера,
* подписывается на топик равный ID устройства, в который возможна отправка стандартных команд для мегаД "3:2",
* идентификатор устройства MQTT соответствует "MD_id", где id соответственно ID устройства,
* для набортных портов io появилась возможность обработки событий Act&MQTT при этом пропадает поле Net. Пример команды для MQTT следующий "9oiy_3:2" где 9oiy - id устройства, в этот топик будет отправлено сообщение (команда - 3:2),
01.02.2017 - 0.34b7
- добавлена поддержка датчика Si7021, возможно будет работать HTU21 не проверял,
- изменён адрес для PCA9685 (теперь 0x41), пин A0 притянуть к VCC, на устройствах от rvv необходимо передвинуть перемычку рядом с микросхемой,
- мелкие правки.
04.01.2017 - 0.34b5
- добавлен термостат для шины 1-wire (работает пока только Act),
- организован пул команд Act и NetAct для термостатов на шине 1-wire, MCP, в планах для прочих i2c_DSen.
02.01.2017 - 0.34b4
- добавлен гистерезис для каждого порта, а также для ADC, для DSen "значение" * 0.1 градус, для ADC максимальный суммарный гистерезис в 510 пунктов т.е. +-255,
- для модулей ESP-01 выделен порт для DSenBUS (функция аппаратного сброса отключена), прочие варианты не убирал, у кого есть модуль могут проверить IN, OUT и остальные,
- исправлен выбор режимов работы порта io2 для модуля ESP-01,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
17.12.2016 - 0.34b2
- возможность определения количества датчиков на шине, максимум 10 штук поле Count,
- возможность сохранения порядка датчиков,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
15.12.2016 - 0.34b1
- поддержка шины для DS18B20 только на P0 (io5).
есть поддержка:
* 10 датчиков,
* получение значений по ?pt=0&cmd=get и ?cmd=all,
* периодическая отправки данных на сервер,
* опрос датчиков по заданному периоду, как и для DSen.
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
06.12.2016 - 0.33
- отображение SSID в поле ввода,
- отображение номера IO на закладке порта во всех режимах работы,
- мелкие правки,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
29.08.2016 - 0.33b4
- исправлен локальный PWM (ранее игнорировалось значение больше 127),
- OLED: отображение прогресса и статуса сброса SSID,
- новый SDK 1.5.4,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
27.08.2016 - 0.33b3
- исправлен режим работы PCA9685 для совместимости с модулями Андрея,
- OLED: отображение FW, IP, RSSID,
- на вкладке INF под Up: отображается информация по какому событию был сброс устройства,
- мелкие правки.
20.07.2016 - 0.32
- поддержка датчика BME280, адрес 0x76,
- сброс настроек Wi-Fi сети при замыкании GPIO1 на GND в течении 5 секунд, затем происходит перезагрузка устройства. При использовании нужно учесть тот факт, что на GPIO1 при перезапуске появляется мусор с UART, поэтому для защиты порта ESP нужно использовать ограничительный резистор,
- заглушка на http://IPEsp/favicon.ico, некоторые браузеры постоянно перезапрашивают иконку сайта до получения 404,
- для датчика BMP085/180 убрал значение, а также параметры для калибровки высоты, из-за этого сдвинулась область в EEPROM в которой хранятся параметры для MCP23017. Придётся настроить заново,
14.07.2016 - 0.31
- оптимизация, значительное увеличение производительности, уменьшение времени отклика на запросы,
- для MCP23017 добавлена возможность выбора режима работы с сервером:
Default - отправка команд на сервер при отсутствии ответа выполняется Act если прописан,
Act - локальное действие, соответственно,
сохранение параметров по кнопке Save,
- для PCA9685 снята инверсия, теперь логика работы аналогична MegaD,
12.07.2016 - 0.31b3
- для PCA9685, меню приведено к общему виду,
- исправлена ошибка в работе с портами PCA9685,
- опрос состояния ADC только по таймеру, т.е. значение будет обновлять с периодом заданным в настройках порта, ранее значение при отправке на сервер, в web и по наличию модификаторов "<" или ">" в Act проверялось по запросу,
- версия для модулей ESP-01 (нет выводов не распаянных на гребёнке платы),
- добавлен аппаратный сброс конфигурации Wi-Fi сети, только в нормальном режиме работы (не AP), по однократному замыканию GPIO1(uart-Tx) на GND,
11.07.2016 - 0.31b2
- изменения для расширителя портов MCP23017:
поддержка режимов P, R и P&R для портов IN микросхемы MCP,
меню для портов MCP как для внутренних,
отправка модификатора при размыкании контакта на сервер в режимах R и P&R, как для внутренних портов,
возможность маскирования прерывания от MCP, любой вход может быть использован независимо от остальных,
сохранение параметров для MCP производится только по Set Default,
10.07.2016 - 0.31b1
- добавлена возможность настройки портов MCP23017:
любой порт может быть IN и OUT,
события от порта IN отправляются только на сервер,
работа возможна только в режиме Pulse,
одновременно возможна обработка прерывания только от одного порта (т.е. пока не будет отпущена кнопка сработавшего порта, статус следующей кнопки будет игнорироваться),
для работы с портами в режиме IN необходимо подключить вывод INTA или INTB микросхемы к GPIO3 ESP,
направление режима работы порта отображается символами ">" - выход и "<" - вход,
08.07.2016 - 0.30
- поддержка датчиков DHT11, просьба проверить, в наличии нет,
- инициализация GPIO после изменения типа порта без перезагрузки устройства,
- немного изменен алгоритм сброса настроек, возможно решит проблему смены Wi-Fi сети,
- сквозная нумерация для i2c датчиков, доступ к значению возможен по /sec/?cmd=get&pt=X где X номер порта/пина как на устройстве, так и внешнего датчика. Номер "виртуального" порта можно узнать на закладке самого датчика, также он будет совпадать с порядковым номером параметра в запросе к серверу или в ответе на /sec/?cmd=all,
06.07.2016 - 0.29
- поддержка датчика BH1750, также устройство отправляет значение интенсивности света на сервер megad.php?mdid=130&all=......;light:2800 в люксах,
- возможность указать гистерезис для датчиков температуры (одно значение для всех), с шагом в 0,1 градус С, значение одно как в + так и в -,
20.06.2016 - 0.28
- исправлена ошибка при опросе датчика 1W,
- добавлено динамическое заполнение портов при подключении MCP и PCA (если одна микросхема то нумерация внешних портов 10-25, если обе то 10-25 MCP и 26-41 PCA).
17.06.2016 - 0.27
- исправлено отображение температуры при отсутствии датчиков 1W, было temp: -0.06, теперь при ошибках с датчиками temp: и hum: будут возвращать nan,
- добавлена отправка состояния портов PCA9685 на сервер, а также проверка таковых GET запросами, (/sec/?cmd=all, /sec/?pt=41&cmd=get),
- мелкие правки, оптимизация.
11.06.2016 - 0.26
- поддержка PCA9685, пока только управление + статус в web, состояния по умолчанию еще нет,
- отображение версии SDK в Info.
08.06.2016 - 0.25
- отправка состояния датчика BMP на сервер: /megad.php?mdid=35&all=OFF;OFF/0;OFF;RGB;temp:22.31;OFF/0;.......;OFF;temp:21.80/pres:745.66 если подключен,
- возможность опроса датчика BMP GET запросом: /sec/?bmp=1,
- оптимизирована работа с MCP23017.
29.05.2016 - 0.24
- исправлена ошибка в работе с командами a:0 и a:1 из Act,
- MCP23017 - все порты на выход, возможность сохранения состояния по умолчанию.
22.05.2016 - 0.23
Что имеем на данном этапе:
0 - Прошивка и первое включение.
Для прошивки необходима программа nodemcu-flasher, более подробно есть тут mysku.ru со всеми ссылками. По десять раз расписывать как подключать и как прошивать не вижу смысла.
После прошивки и первого включения устройство создаст открытую Wi-Fi сеть SID: ESPap. Необходимо подключиться к этой сети и набрать в браузере адрес http://192.168.4.1/, если все верно откроется страничка Config.
1 - Config.
- закладка Wi-Fi:
PIN: 123 - не знаю нужен ли кастомный,
SID: - имя сети,
PaS: - пароль сети,
- закладка IP:
Ip cfg: - выпадающий список, два варианта Static/DHCP, устройство имеет постоянные настройки IP, MASK, GW или получает их с DHCP сервера локальной сети пользователя, ну и параметры EspIp, Mask, DGW.
- закладка SRV:
DSen P: период опроса цифровых датчиков аргумент *0.1s (20*0.1s = 2s),
BMCal: параметр для калибровки высоты над уровнем моря,
Srv: IP адрес сервера,
Scr: скрипт на сервере,
Eid: ID устройства,
Srv loop: период отправки состояния портов на сервер *10s.
- закладка Reset:
различные варианты сброса настроек устройства, перезагрузка,
- закладка Info:
информация о устройстве, uptime, обновление прошивки, конфигурация и режим работы памяти, адреса подключенных устройств на шине I2C.
2 - Главная страница устройства:
Доступная по адресу http://ESPip/sec/ отображает список портов и устройств подключенных к ESP.
3 - соответствия портов:
P0 - GPIO5
P1 - GPIO4
P2 - GPIO15 - не может быть DSen, либо входом с внешним резистором подтяжки,
P3 - GPIO13
P4 - GPIO12
P5 - GPIO14
P6 - GPIO16
P7 - GPIO0 - не может быть прямым выходом, (нельзя подключать прямую нагрузку),
P8 - GPIO2 - не может быть прямым выходом, (нельзя подключать прямую нагрузку),
P9 - ADC
4 - режимы работы портов, Type:
- IN - дискретный вход.
P1/OFF/1 - статус порта, где:
P1 - номер порта,
OFF - состояние, контакт разомкнут,
1 - счетчик.
mod - аналогично MegaD (есть дополнительный параметр M)
P - только при замыкании контакта,
R - только при размыкании контакта,
P&R - как на замыкание, так и на размыкание,
M - пока контакт замкнут выполняется команда Act, Net и сервер при этом игнорируются, необходим для совместного использования с модификатором ~.
Action (Act) - локальное действие,
Формат поля Action аналогичен MegaD: X:Y;X:Y;X:Y
где, X - номер порта, а Y (0 - выключить, 1 - включить, 2 - изменить состояние на противоположное, 3 - выставить состояние порта OUT в соответствии с портом IN, 4 - аналогично параметру 3 но инверсно).
Поддерживаются параметры:
p - значение параметра задаётся в десятых долях секунды, т.е. при значении 100 задержка составит 10 с. например команда 0:1;p100;0:0 включит 0-й порт на 10 секунд, параметр доступен только для локальных портов ESP,
a:0 - выключить все выходы,
a:1 - включить все входы (порт PWM примет значение 255),
* - модификатор отвечающий за изменение состояния порта PWM, если указать явное значение параметра (например 0:*255) порт при очередном выполнении команды будет принимать противоположное состояние, если не указывать значение после модификатора (например 0:*) порт при очередном выполнении команды примет предыдущее состояние (например было 120 примет 0 при повторной команде примет 120),
~ - модификатор плавного изменения состояния порта PWM должен иметь значение шага (например 0:~5). Изменение состояния порта происходит от 0 -> 255 -> 0 с заданным шагом,
< > - модификаторы условия для проверки состояния датчиков температуры и значения ADC, команда 5:<25;0:2 проверит значение температуры на датчике подключенном к 5 порту и при удовлетворении условию сменит состояние на 0-м порту.
NetAction (Net) - URL вызываемый по событию, аналогично MegaD.
Поддерживаются аргументы 3 и 4.
Возможности указать порт нет, всегда использует 80-й.
Для каждого порта с типом IN, DSen, ADC имеется возможность выбора одного из вариантов выполнения команд:
Default:
- сервер -> если сервер не отвечает Act,
- Net.
Act - только Act, что прописано в конфиге для сервера и Net значения не имеет.
Net - аналогично Act.
Net&Act - соответственно Net и Act,
Net>Act - Act выполняется при отсутствии ответа на Net.
- OutSW - дискретный выход, аналогично MegaD,
P2/OFF - состояние порта, где:
P2 - номер порта,
OFF - текущее состояние порта, в данном случае выключен,
Ниже ссылка которая имеет вид "ON" или "OFF" в зависимости от текущего состояния порта.
Default - состояние порта после перезагрузки устройства.
- OutSL - ведомый дискретный выход,
Mast - позволяет выбрать один из локальных портов с типом OUT,
Может работать в 4-х режимах:
Same - повторяет состояние,
Invert - инвертирует,
Flicker - при состоянии "Master" порта ON на SL_OUT подаётся периодический сигнал,
Pulse - срабатывает один раз при изменении состояния "Master" порта 0->1.
- OutPWM - выход с функцией PWM, аналогично MegaD.
P0 - номер порта,
PWM (0-255) - поле для установки значения порта, Set применяет параметры.
Default: - значение 0-255 которое будет выставлено на порту при запуске.
- DSen - вход для подключения цифровых датчиков. Функционал Act и Net аналогичен порту IN.
Sen - выбор типа датчика, поддерживаются DS18B20, DHT22.
mod - режим работы порта
Norm - значения не проверяются,
Для температуры:
T> - считается активным, если значение больше заданного порога (в момент перехода),
T< - считается активным, если значение меньше заданного порога (в момент перехода),
T<> - считается активным, если значение проходит порог как в меньшую, так и в большую сторону,
Аналогично для влажности:
H>, H<, H<> - при использовании датчика DHT22.
val - пороговое значение температуры или влажности.
- ADC - вход АЦП (аналого-цифровой преобразователь) может принимать значение в диапазоне от 0 до 1023. Функционал Act и Net аналогичен порту IN.
Period - частота опроса порта, значение от 0 (не будет опрашиваться) до 255 * 0.1 с. т.е. при значении 100 порт будет опрашиваться раз в 10 секунд.
mod - режим работы АЦП порта
Norm - значения не проверяются,
> - считается активным, если значение больше заданного порога (в момент перехода),
< - считается активным, если значение меньше заданного порога (в момент перехода),
<> - считается активным, если значение проходит порог как в меньшую, так и в большую сторону.
val - пороговое значение
- WS281x - используется для подключения светодиодных RGB лент на чипах серии WS281x.
Параметры R G B соответствуют значениям цветов.
Count - количество пикселей в ленте, максимальное значение 1023,
URL для управления http://espIP/sec/?pt=3&r=25&g=25&b=25
- I2C - порты используемые для шины I2C, только GPIO0 и GPIO2, любой может быть использован как SDA и SCL соответственно.
Устройства:
MCP23017 - с адресом 0x20:
Поддерживается:
- управление портами как для OutSW, нумерация портов начинается с 10, например /sec/?cmd=10:x,
- все порты на вывод,
- есть возможность задать состояние по умолчанию,
PCF8574 - I2C LCD пока только 16x2, адрес 0x27, параметры для управления дисплеем /sec/?lcd=1&row=0&col=0&cmd=ESP где:
lcd=1 - выбор дисплея,
row=0 - номер строки,
col=0 - номер столбца,
cmd=ESP - значение для вывода,
bl=1 - включить подсветку,
bl=2 - выключить подсветку,
cl=1 - очистить дисплей.
BMP085/180 - датчик температуры и атмосферного давления.
5 - URL для управления и получения статусов портов, аналогично MegaD:
получение состояния порта - http://espIP/sec/?pt=4&cmd=get
изменение состояния порта - http://espIP/sec/?cmd=2:1 для PWM http://espIP/sec/?cmd=3:150
установка значения счетчика для порта IN - http://espIP/sec/?pt=4&cnt=12
получение состояния всех портов - http://espIP/sec/?cmd=all
6 - отправка данных на сервер , аналогично MegaD:
сообщения вида - http://ip-address/script?pt=n&m=1&cnt=12
Где:
ip-address - адрес сервера,
scipt - скрипт,
pt=n - номер активного порта,
m=1 - направление перехода через значение для ADC и DSen, определение отпускания кнопки для IN.
Да простит меня Андрей, уж очень заманчив его api для мегадевайса, решил частично позаимствовать для организации исполнительного модуля на базе ESP-12f (можно и другие ESP8266).
Собственно небольшой итог по проделанной работе. По возможностям устройство практически приблизилось к MegaD, основные отличия:
- в первую очередь стабильность работы, Wi-Fi есть Wi-Fi, время отклика отстает от оригинального устройства,
- некоторый функционал связанный с использованием портов в режиме raw у MegaD, естественно упирается в пункт см. выше.
Поддерживаемые микросхемы:
Датчики:
- DS18B20 - температура;
- DHT11/DHT2x(AM2302, AM2303) - температура, влажность;
- BMP085/180 - температура, давление;
- BME280 - температура, влажность, давление;
- Si7021 - температура, влажность;
- BH1750 - освещенность;
Расширители портов IO:
- PCA9685 - выход PWM;
- MCP23017 - IN и OUT;
- WS281x - RGB;
Дисплеи:
- PCF8574 - i2c->HD44780
- SSD1306 - OLED
Список изменений:
03.06.2017 - 0.34b12
- мелкие правки,
- исправлены проблемы с возвратом статуса обновления прошивки,
- временно отключен MQTT,
07.02.2017 - 0.34b10
- оптимизированная разметка EEPROM,
- добавлен механизм первоначальной инициализации устройства, в дальнейшем позволит избежать проблем с EEPROM при переходе на новые версии прошивок со значительными изменениями в коде,
- мелкие правки,
- после прошивки ВСЕ параметры кроме SSID и пароля сети будут сброшены,
05.02.2017 - 0.34b9
- под хранение ID выделено 4 байта,
- добавлена поддержка MQTT, минимально:
* устройство подключается к брокеру по IP сервера,
* подписывается на топик равный ID устройства, в который возможна отправка стандартных команд для мегаД "3:2",
* идентификатор устройства MQTT соответствует "MD_id", где id соответственно ID устройства,
* для набортных портов io появилась возможность обработки событий Act&MQTT при этом пропадает поле Net. Пример команды для MQTT следующий "9oiy_3:2" где 9oiy - id устройства, в этот топик будет отправлено сообщение (команда - 3:2),
01.02.2017 - 0.34b7
- добавлена поддержка датчика Si7021, возможно будет работать HTU21 не проверял,
- изменён адрес для PCA9685 (теперь 0x41), пин A0 притянуть к VCC, на устройствах от rvv необходимо передвинуть перемычку рядом с микросхемой,
- мелкие правки.
04.01.2017 - 0.34b5
- добавлен термостат для шины 1-wire (работает пока только Act),
- организован пул команд Act и NetAct для термостатов на шине 1-wire, MCP, в планах для прочих i2c_DSen.
02.01.2017 - 0.34b4
- добавлен гистерезис для каждого порта, а также для ADC, для DSen "значение" * 0.1 градус, для ADC максимальный суммарный гистерезис в 510 пунктов т.е. +-255,
- для модулей ESP-01 выделен порт для DSenBUS (функция аппаратного сброса отключена), прочие варианты не убирал, у кого есть модуль могут проверить IN, OUT и остальные,
- исправлен выбор режимов работы порта io2 для модуля ESP-01,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
17.12.2016 - 0.34b2
- возможность определения количества датчиков на шине, максимум 10 штук поле Count,
- возможность сохранения порядка датчиков,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
15.12.2016 - 0.34b1
- поддержка шины для DS18B20 только на P0 (io5).
есть поддержка:
* 10 датчиков,
* получение значений по ?pt=0&cmd=get и ?cmd=all,
* периодическая отправки данных на сервер,
* опрос датчиков по заданному периоду, как и для DSen.
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
06.12.2016 - 0.33
- отображение SSID в поле ввода,
- отображение номера IO на закладке порта во всех режимах работы,
- мелкие правки,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
29.08.2016 - 0.33b4
- исправлен локальный PWM (ранее игнорировалось значение больше 127),
- OLED: отображение прогресса и статуса сброса SSID,
- новый SDK 1.5.4,
- имеется проблема с отображением статуса прошивки, не возвращает результат обновления по OTA.
27.08.2016 - 0.33b3
- исправлен режим работы PCA9685 для совместимости с модулями Андрея,
- OLED: отображение FW, IP, RSSID,
- на вкладке INF под Up: отображается информация по какому событию был сброс устройства,
- мелкие правки.
20.07.2016 - 0.32
- поддержка датчика BME280, адрес 0x76,
- сброс настроек Wi-Fi сети при замыкании GPIO1 на GND в течении 5 секунд, затем происходит перезагрузка устройства. При использовании нужно учесть тот факт, что на GPIO1 при перезапуске появляется мусор с UART, поэтому для защиты порта ESP нужно использовать ограничительный резистор,
- заглушка на http://IPEsp/favicon.ico, некоторые браузеры постоянно перезапрашивают иконку сайта до получения 404,
- для датчика BMP085/180 убрал значение, а также параметры для калибровки высоты, из-за этого сдвинулась область в EEPROM в которой хранятся параметры для MCP23017. Придётся настроить заново,
14.07.2016 - 0.31
- оптимизация, значительное увеличение производительности, уменьшение времени отклика на запросы,
- для MCP23017 добавлена возможность выбора режима работы с сервером:
Default - отправка команд на сервер при отсутствии ответа выполняется Act если прописан,
Act - локальное действие, соответственно,
сохранение параметров по кнопке Save,
- для PCA9685 снята инверсия, теперь логика работы аналогична MegaD,
12.07.2016 - 0.31b3
- для PCA9685, меню приведено к общему виду,
- исправлена ошибка в работе с портами PCA9685,
- опрос состояния ADC только по таймеру, т.е. значение будет обновлять с периодом заданным в настройках порта, ранее значение при отправке на сервер, в web и по наличию модификаторов "<" или ">" в Act проверялось по запросу,
- версия для модулей ESP-01 (нет выводов не распаянных на гребёнке платы),
- добавлен аппаратный сброс конфигурации Wi-Fi сети, только в нормальном режиме работы (не AP), по однократному замыканию GPIO1(uart-Tx) на GND,
11.07.2016 - 0.31b2
- изменения для расширителя портов MCP23017:
поддержка режимов P, R и P&R для портов IN микросхемы MCP,
меню для портов MCP как для внутренних,
отправка модификатора при размыкании контакта на сервер в режимах R и P&R, как для внутренних портов,
возможность маскирования прерывания от MCP, любой вход может быть использован независимо от остальных,
сохранение параметров для MCP производится только по Set Default,
10.07.2016 - 0.31b1
- добавлена возможность настройки портов MCP23017:
любой порт может быть IN и OUT,
события от порта IN отправляются только на сервер,
работа возможна только в режиме Pulse,
одновременно возможна обработка прерывания только от одного порта (т.е. пока не будет отпущена кнопка сработавшего порта, статус следующей кнопки будет игнорироваться),
для работы с портами в режиме IN необходимо подключить вывод INTA или INTB микросхемы к GPIO3 ESP,
направление режима работы порта отображается символами ">" - выход и "<" - вход,
08.07.2016 - 0.30
- поддержка датчиков DHT11, просьба проверить, в наличии нет,
- инициализация GPIO после изменения типа порта без перезагрузки устройства,
- немного изменен алгоритм сброса настроек, возможно решит проблему смены Wi-Fi сети,
- сквозная нумерация для i2c датчиков, доступ к значению возможен по /sec/?cmd=get&pt=X где X номер порта/пина как на устройстве, так и внешнего датчика. Номер "виртуального" порта можно узнать на закладке самого датчика, также он будет совпадать с порядковым номером параметра в запросе к серверу или в ответе на /sec/?cmd=all,
06.07.2016 - 0.29
- поддержка датчика BH1750, также устройство отправляет значение интенсивности света на сервер megad.php?mdid=130&all=......;light:2800 в люксах,
- возможность указать гистерезис для датчиков температуры (одно значение для всех), с шагом в 0,1 градус С, значение одно как в + так и в -,
20.06.2016 - 0.28
- исправлена ошибка при опросе датчика 1W,
- добавлено динамическое заполнение портов при подключении MCP и PCA (если одна микросхема то нумерация внешних портов 10-25, если обе то 10-25 MCP и 26-41 PCA).
17.06.2016 - 0.27
- исправлено отображение температуры при отсутствии датчиков 1W, было temp: -0.06, теперь при ошибках с датчиками temp: и hum: будут возвращать nan,
- добавлена отправка состояния портов PCA9685 на сервер, а также проверка таковых GET запросами, (/sec/?cmd=all, /sec/?pt=41&cmd=get),
- мелкие правки, оптимизация.
11.06.2016 - 0.26
- поддержка PCA9685, пока только управление + статус в web, состояния по умолчанию еще нет,
- отображение версии SDK в Info.
08.06.2016 - 0.25
- отправка состояния датчика BMP на сервер: /megad.php?mdid=35&all=OFF;OFF/0;OFF;RGB;temp:22.31;OFF/0;.......;OFF;temp:21.80/pres:745.66 если подключен,
- возможность опроса датчика BMP GET запросом: /sec/?bmp=1,
- оптимизирована работа с MCP23017.
29.05.2016 - 0.24
- исправлена ошибка в работе с командами a:0 и a:1 из Act,
- MCP23017 - все порты на выход, возможность сохранения состояния по умолчанию.
22.05.2016 - 0.23
Что имеем на данном этапе:
0 - Прошивка и первое включение.
Для прошивки необходима программа nodemcu-flasher, более подробно есть тут mysku.ru со всеми ссылками. По десять раз расписывать как подключать и как прошивать не вижу смысла.
После прошивки и первого включения устройство создаст открытую Wi-Fi сеть SID: ESPap. Необходимо подключиться к этой сети и набрать в браузере адрес http://192.168.4.1/, если все верно откроется страничка Config.
1 - Config.
- закладка Wi-Fi:
PIN: 123 - не знаю нужен ли кастомный,
SID: - имя сети,
PaS: - пароль сети,
- закладка IP:
Ip cfg: - выпадающий список, два варианта Static/DHCP, устройство имеет постоянные настройки IP, MASK, GW или получает их с DHCP сервера локальной сети пользователя, ну и параметры EspIp, Mask, DGW.
- закладка SRV:
DSen P: период опроса цифровых датчиков аргумент *0.1s (20*0.1s = 2s),
BMCal: параметр для калибровки высоты над уровнем моря,
Srv: IP адрес сервера,
Scr: скрипт на сервере,
Eid: ID устройства,
Srv loop: период отправки состояния портов на сервер *10s.
- закладка Reset:
различные варианты сброса настроек устройства, перезагрузка,
- закладка Info:
информация о устройстве, uptime, обновление прошивки, конфигурация и режим работы памяти, адреса подключенных устройств на шине I2C.
2 - Главная страница устройства:
Доступная по адресу http://ESPip/sec/ отображает список портов и устройств подключенных к ESP.
3 - соответствия портов:
P0 - GPIO5
P1 - GPIO4
P2 - GPIO15 - не может быть DSen, либо входом с внешним резистором подтяжки,
P3 - GPIO13
P4 - GPIO12
P5 - GPIO14
P6 - GPIO16
P7 - GPIO0 - не может быть прямым выходом, (нельзя подключать прямую нагрузку),
P8 - GPIO2 - не может быть прямым выходом, (нельзя подключать прямую нагрузку),
P9 - ADC
4 - режимы работы портов, Type:
- IN - дискретный вход.
P1/OFF/1 - статус порта, где:
P1 - номер порта,
OFF - состояние, контакт разомкнут,
1 - счетчик.
mod - аналогично MegaD (есть дополнительный параметр M)
P - только при замыкании контакта,
R - только при размыкании контакта,
P&R - как на замыкание, так и на размыкание,
M - пока контакт замкнут выполняется команда Act, Net и сервер при этом игнорируются, необходим для совместного использования с модификатором ~.
Action (Act) - локальное действие,
Формат поля Action аналогичен MegaD: X:Y;X:Y;X:Y
где, X - номер порта, а Y (0 - выключить, 1 - включить, 2 - изменить состояние на противоположное, 3 - выставить состояние порта OUT в соответствии с портом IN, 4 - аналогично параметру 3 но инверсно).
Поддерживаются параметры:
p - значение параметра задаётся в десятых долях секунды, т.е. при значении 100 задержка составит 10 с. например команда 0:1;p100;0:0 включит 0-й порт на 10 секунд, параметр доступен только для локальных портов ESP,
a:0 - выключить все выходы,
a:1 - включить все входы (порт PWM примет значение 255),
* - модификатор отвечающий за изменение состояния порта PWM, если указать явное значение параметра (например 0:*255) порт при очередном выполнении команды будет принимать противоположное состояние, если не указывать значение после модификатора (например 0:*) порт при очередном выполнении команды примет предыдущее состояние (например было 120 примет 0 при повторной команде примет 120),
~ - модификатор плавного изменения состояния порта PWM должен иметь значение шага (например 0:~5). Изменение состояния порта происходит от 0 -> 255 -> 0 с заданным шагом,
< > - модификаторы условия для проверки состояния датчиков температуры и значения ADC, команда 5:<25;0:2 проверит значение температуры на датчике подключенном к 5 порту и при удовлетворении условию сменит состояние на 0-м порту.
NetAction (Net) - URL вызываемый по событию, аналогично MegaD.
Поддерживаются аргументы 3 и 4.
Возможности указать порт нет, всегда использует 80-й.
Для каждого порта с типом IN, DSen, ADC имеется возможность выбора одного из вариантов выполнения команд:
Default:
- сервер -> если сервер не отвечает Act,
- Net.
Act - только Act, что прописано в конфиге для сервера и Net значения не имеет.
Net - аналогично Act.
Net&Act - соответственно Net и Act,
Net>Act - Act выполняется при отсутствии ответа на Net.
- OutSW - дискретный выход, аналогично MegaD,
P2/OFF - состояние порта, где:
P2 - номер порта,
OFF - текущее состояние порта, в данном случае выключен,
Ниже ссылка которая имеет вид "ON" или "OFF" в зависимости от текущего состояния порта.
Default - состояние порта после перезагрузки устройства.
- OutSL - ведомый дискретный выход,
Mast - позволяет выбрать один из локальных портов с типом OUT,
Может работать в 4-х режимах:
Same - повторяет состояние,
Invert - инвертирует,
Flicker - при состоянии "Master" порта ON на SL_OUT подаётся периодический сигнал,
Pulse - срабатывает один раз при изменении состояния "Master" порта 0->1.
- OutPWM - выход с функцией PWM, аналогично MegaD.
P0 - номер порта,
PWM (0-255) - поле для установки значения порта, Set применяет параметры.
Default: - значение 0-255 которое будет выставлено на порту при запуске.
- DSen - вход для подключения цифровых датчиков. Функционал Act и Net аналогичен порту IN.
Sen - выбор типа датчика, поддерживаются DS18B20, DHT22.
mod - режим работы порта
Norm - значения не проверяются,
Для температуры:
T> - считается активным, если значение больше заданного порога (в момент перехода),
T< - считается активным, если значение меньше заданного порога (в момент перехода),
T<> - считается активным, если значение проходит порог как в меньшую, так и в большую сторону,
Аналогично для влажности:
H>, H<, H<> - при использовании датчика DHT22.
val - пороговое значение температуры или влажности.
- ADC - вход АЦП (аналого-цифровой преобразователь) может принимать значение в диапазоне от 0 до 1023. Функционал Act и Net аналогичен порту IN.
Period - частота опроса порта, значение от 0 (не будет опрашиваться) до 255 * 0.1 с. т.е. при значении 100 порт будет опрашиваться раз в 10 секунд.
mod - режим работы АЦП порта
Norm - значения не проверяются,
> - считается активным, если значение больше заданного порога (в момент перехода),
< - считается активным, если значение меньше заданного порога (в момент перехода),
<> - считается активным, если значение проходит порог как в меньшую, так и в большую сторону.
val - пороговое значение
- WS281x - используется для подключения светодиодных RGB лент на чипах серии WS281x.
Параметры R G B соответствуют значениям цветов.
Count - количество пикселей в ленте, максимальное значение 1023,
URL для управления http://espIP/sec/?pt=3&r=25&g=25&b=25
- I2C - порты используемые для шины I2C, только GPIO0 и GPIO2, любой может быть использован как SDA и SCL соответственно.
Устройства:
MCP23017 - с адресом 0x20:
Поддерживается:
- управление портами как для OutSW, нумерация портов начинается с 10, например /sec/?cmd=10:x,
- все порты на вывод,
- есть возможность задать состояние по умолчанию,
PCF8574 - I2C LCD пока только 16x2, адрес 0x27, параметры для управления дисплеем /sec/?lcd=1&row=0&col=0&cmd=ESP где:
lcd=1 - выбор дисплея,
row=0 - номер строки,
col=0 - номер столбца,
cmd=ESP - значение для вывода,
bl=1 - включить подсветку,
bl=2 - выключить подсветку,
cl=1 - очистить дисплей.
BMP085/180 - датчик температуры и атмосферного давления.
5 - URL для управления и получения статусов портов, аналогично MegaD:
получение состояния порта - http://espIP/sec/?pt=4&cmd=get
изменение состояния порта - http://espIP/sec/?cmd=2:1 для PWM http://espIP/sec/?cmd=3:150
установка значения счетчика для порта IN - http://espIP/sec/?pt=4&cnt=12
получение состояния всех портов - http://espIP/sec/?cmd=all
6 - отправка данных на сервер , аналогично MegaD:
сообщения вида - http://ip-address/script?pt=n&m=1&cnt=12
Где:
ip-address - адрес сервера,
scipt - скрипт,
pt=n - номер активного порта,
m=1 - направление перехода через значение для ADC и DSen, определение отпускания кнопки для IN.
Последний раз редактировалось llams 03 июн 2017, 17:02, всего редактировалось 67 раз.
-
- Сообщения: 77
- Зарегистрирован: 22 ноя 2013, 03:17
Re: ESP8266 MegaD api
Уже заметное количество просмотров и тишина.
А имхо - прикольная идея!
Вопрос для меня только в том - удастся ли сделать так, чтобы 8266 работала стабильно. Я уже много раз сталкивался с мнением, что эта железка не самая стабильная.
А имхо - прикольная идея!
Вопрос для меня только в том - удастся ли сделать так, чтобы 8266 работала стабильно. Я уже много раз сталкивался с мнением, что эта железка не самая стабильная.
-
- Сообщения: 400
- Зарегистрирован: 21 сен 2013, 00:38
Re: ESP8266 MegaD api
У себя использую несколько ESP для управления шторами - уже около года, довольно стабильно работают.
А так - идея неплоха, особенно для не критических направлений. В критически - важных предпочту всё-же медь. Тем более всё равно питание кидать )
А так - идея неплоха, особенно для не критических направлений. В критически - важных предпочту всё-же медь. Тем более всё равно питание кидать )
-
- Сообщения: 21
- Зарегистрирован: 15 окт 2013, 09:04
Re: ESP8266 MegaD api
Идея интересная, особенно с WS2812. Спасибо, на работе как-нибудь попробую.
Ну конкретно у моей ESP-07 аптайм уже 32 дня. Правда прошивка в среде Arduino писана. Эти модули вообще капризные к питанию.Sergey Borovkov писал(а): Вопрос для меня только в том - удастся ли сделать так, чтобы 8266 работала стабильно. Я уже много раз сталкивался с мнением, что эта железка не самая стабильная.
Последний раз редактировалось Acid_Reptile 24 янв 2016, 10:57, всего редактировалось 2 раза.
Re: ESP8266 MegaD api
llams, обязательно изгаляться с установкой настройки сети через 192.168.4.1.
Или это нужно чтобы вынести мозг, потенциальным пользователям?
Вообще если что-то хочешь выложить то выкладывай и сырцы, а не пудри могз тем, что
только знакомишся с Ардуино.
Или это нужно чтобы вынести мозг, потенциальным пользователям?
Вообще если что-то хочешь выложить то выкладывай и сырцы, а не пудри могз тем, что
только знакомишся с Ардуино.
Re: ESP8266 MegaD api
VGer, наоборот все проще некуда. Без настройки сети через 192.168.4.1 потенциальному пользователю придётся изгаляться с Arduino IDE для ESP8266. Проще пару раз перегрузить устройство, чем разбираться в актуальности библиотек.
Re: ESP8266 MegaD api
Теперь есть:
- поддержка DHT22 и DHT11,
- для сценариев на порты PWM модификатор "*" работает как на меге,
- счетчики для входов, аналогично..... /sec/?pt=3&cnt=200,
- перезапись ячеек памяти при сохранении настроек только при изменении (может будет жить дольше).
- поддержка DHT22 и DHT11,
- для сценариев на порты PWM модификатор "*" работает как на меге,
- счетчики для входов, аналогично..... /sec/?pt=3&cnt=200,
- перезапись ячеек памяти при сохранении настроек только при изменении (может будет жить дольше).
Последний раз редактировалось llams 05 фев 2016, 02:25, всего редактировалось 2 раза.
-
- Сообщения: 213
- Зарегистрирован: 16 авг 2011, 14:07
- Откуда: Россия,Тюмень
- Контактная информация:
Re: ESP8266 MegaD api
Молодца, плюс один девайс будет
Re: ESP8266 MegaD api
Без исходников это всё пустое.
Re: ESP8266 MegaD api
Снимаю свою шляпу...
На неделе буду тестить на такой штуковинке http://ru.aliexpress.com/item/ESP8266-s ... 98010.html
Чем обусловлено задействование именно этих портов?
P0 - GIPO4
P1 - GIPO2
P2 - GIPO15
P3 - GIPO13
P4 - GIPO12
P5 - GIPO14
P5 - GIPO16
А куда дели GIPO5, GIPO0? (Я бы его заменил GPIO16 на GPIO5). А порты 2 и 0 можно использывать для подключения I2C устройств и в том числе расширителей MCP23017 и получим еще 16 портов.
Т.К. GPIO16 судя по рекомендациям может используется для SleepMode.
А еще можно и ADC использывать...
Вообще судя по другим форумам были рекомендации по использыванию GPIO... http://homes-smart.ru/index.php/oborudo ... na-esp8266. Конечно может это касается только для проекта homes-smart ?
PS: Хочу чтобы и MQTT еще было (ну когда нибудь... в будующем) . Как правило брокер всегда используется свой.
Только вот с топиками и метриками нужно всем миром (конечно не без помощи Андрея), названия придумать.
На неделе буду тестить на такой штуковинке http://ru.aliexpress.com/item/ESP8266-s ... 98010.html
Чем обусловлено задействование именно этих портов?
P0 - GIPO4
P1 - GIPO2
P2 - GIPO15
P3 - GIPO13
P4 - GIPO12
P5 - GIPO14
P5 - GIPO16
А куда дели GIPO5, GIPO0? (Я бы его заменил GPIO16 на GPIO5). А порты 2 и 0 можно использывать для подключения I2C устройств и в том числе расширителей MCP23017 и получим еще 16 портов.
Т.К. GPIO16 судя по рекомендациям может используется для SleepMode.
А еще можно и ADC использывать...
Вообще судя по другим форумам были рекомендации по использыванию GPIO... http://homes-smart.ru/index.php/oborudo ... na-esp8266. Конечно может это касается только для проекта homes-smart ?
PS: Хочу чтобы и MQTT еще было (ну когда нибудь... в будующем) . Как правило брокер всегда используется свой.
Только вот с топиками и метриками нужно всем миром (конечно не без помощи Андрея), названия придумать.
Re: ESP8266 MegaD api
MSapogov
Да сбстна выбор портов ничем не обусловлен, удобно использовать на макетке, заполнял по мере роста прошивки.
За ссылки спасибо, приведу к должному виду согласно ограничениями.
Пара правок и моментов:
- переделал страничку привязки устройства к сети, теперь так: поле PIN для защиты конфига от случайного сброса. Пока PIN: 123 потом подумаю как лучше реализовать.
- Reset сброс всех настроек, затирает весь EEPROM,
- при включении ожидание Wi-Fi, при отсутствии в течении 15 секунд (примерно) правильный перевод в режим AP.
- cоответствие портов GPIO:
P0 - GIPO5
P1 - GIPO4
P2 - GIPO2
P3 - GIPO15
P4 - GIPO13
P5 - GIPO12
P6 - GIPO14
P7 - GIPO16
На данный момент ту.ду. следующий:
- переподключение к Wi-Fi при потере сети (при перезагрузке роутера),
- статический IP,
- возможность выбора частоты ШИМ в web-морде,
- АЦП,
- возможность выбора частоты опроса датчиков в web-морде.
Словил забавный глюк с Wi-Fi, иногда не подключается после изменения настроек сети, хотя sid и пароль верны. Изменение их на произвольные, перезагрузка и выставление верных помогает (возможно это косяк браузера, пока отловить закономерность не могу).
Да сбстна выбор портов ничем не обусловлен, удобно использовать на макетке, заполнял по мере роста прошивки.
За ссылки спасибо, приведу к должному виду согласно ограничениями.
Пара правок и моментов:
- переделал страничку привязки устройства к сети, теперь так: поле PIN для защиты конфига от случайного сброса. Пока PIN: 123 потом подумаю как лучше реализовать.
- Reset сброс всех настроек, затирает весь EEPROM,
- при включении ожидание Wi-Fi, при отсутствии в течении 15 секунд (примерно) правильный перевод в режим AP.
- cоответствие портов GPIO:
P0 - GIPO5
P1 - GIPO4
P2 - GIPO2
P3 - GIPO15
P4 - GIPO13
P5 - GIPO12
P6 - GIPO14
P7 - GIPO16
На данный момент ту.ду. следующий:
- переподключение к Wi-Fi при потере сети (при перезагрузке роутера),
- статический IP,
- возможность выбора частоты ШИМ в web-морде,
- АЦП,
- возможность выбора частоты опроса датчиков в web-морде.
Словил забавный глюк с Wi-Fi, иногда не подключается после изменения настроек сети, хотя sid и пароль верны. Изменение их на произвольные, перезагрузка и выставление верных помогает (возможно это косяк браузера, пока отловить закономерность не могу).
Последний раз редактировалось llams 05 фев 2016, 02:24, всего редактировалось 1 раз.
Re: ESP8266 MegaD api
Пока заметил, что при отсутствии датчика 1W - выдает temp: -0.06.
При DHT-шках выдает: nan
Не будет так, что при временом пропадании WiFi (или минимальном сигнале), он сам перейдет в режим AP?
Тесты продолжаются.
PS: Добавить в ту.ду:
Обновление по воздуху (при флеше от 1Мб).
Индикация уровня сигнала в ДБм. (rssi -49 dBm)
При DHT-шках выдает: nan
Это только при включении модуля?- при включении ожидание Wi-Fi, при отсутствии в течении 15 секунд (примерно) правильный перевод в режим AP.
Не будет так, что при временом пропадании WiFi (или минимальном сигнале), он сам перейдет в режим AP?
Тесты продолжаются.
PS: Добавить в ту.ду:
Обновление по воздуху (при флеше от 1Мб).
Индикация уровня сигнала в ДБм. (rssi -49 dBm)
Re: ESP8266 MegaD api
А если немного заморочится то можно расширить кол во портов I/O до ... с помощью например той же PCF8574 или MCP23017. Шим там не пролезет конечно, но дискретные ввод/вывод волне
Re: ESP8266 MegaD api
Я про это и говорил уже...Evgeniy писал(а):А если немного заморочится то можно расширить кол во портов I/O до ... с помощью например той же PCF8574 или MCP23017. Шим там не пролезет конечно, но дискретные ввод/вывод волне
Может 0 и 2 GPIO (Они по умолчанию как-раз должны быть притянуты к Vcc через 10К) зарезервировать для I2C MCP23017 (i2c адрес 0x20 (A0,A1,A2 на GND)), на ней хоть можно читать состояния выводов или входов (вроде) и PWM. Так-же на эту шину можно ой.... сколько всего по навешать...
Только Вот с MegaD API совместимость нарушится...
Re: ESP8266 MegaD api
Почему нарушится? Если будет прописано изначально использование расширителя портов, то все будет работать также, только портов будет больше и некоторые не будут работать пока не подключите микросхему.
Re: ESP8266 MegaD api
MSapogov
По вашему ту.ду:
- с размером памяти может быть трабл... пока для разных модулей свои прошивки, как собрать в одну не знаю, возможно в этом нет необходимости.
- 0 и 2 действительно оставлю под I2C, 2 пока нужен для отладки.
По вашему ту.ду:
- с размером памяти может быть трабл... пока для разных модулей свои прошивки, как собрать в одну не знаю, возможно в этом нет необходимости.
- 0 и 2 действительно оставлю под I2C, 2 пока нужен для отладки.
Последний раз редактировалось llams 05 фев 2016, 02:23, всего редактировалось 2 раза.
Re: ESP8266 MegaD api
Да, только при включении модуля, позже добавлю возврат в режим клиента по истечении определённого времени (выключили свет, роутер стартует дольше чем ESP).MSapogov писал(а): Это только при включении модуля?
Не будет так, что при временом пропадании WiFi (или минимальном сигнале), он сам перейдет в режим AP?
На данный момент при пропадании сигнала ничего не меняется, при появлении в эфире нужной Wi-Fi ESP нормально возвращается сеть без перезагрузок и сбросов статусов пинов.
Re: ESP8266 MegaD api
Лучше сделать возврат в режим точки доступа при определенной комбинации состояния портов например, т.е. принудительно, но внешним воздействием, можно наверное и порт выделить отдельный на это и повесить на него кнопку ресета.
Re: ESP8266 MegaD api
В одном из проектов это реализовано или тройной ресет с интервалом примерно 1 сек... или замыканием TX+RX между собой при подаче питания.nevkon писал(а):Лучше сделать возврат в режим точки доступа при определенной комбинации состояния портов например, т.е. принудительно, но внешним воздействием, можно наверное и порт выделить отдельный на это и повесить на него кнопку ресета.
Только как это в программном виде, я не знаю.