ESP8266 MegaD api
Добавлено: 23 янв 2016, 16:17
Всех приветствую.
Да простит меня Андрей, уж очень заманчив его 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.