API Options (updated: 03 May 2017, 12:23:21)

Экспериментальная функция полного управления модулем через API используя GET запрос или MQTT. Функция позволяет так же создавать и восстанавливать резервную копию настроек. Основана на JSON формате.

В целях безопасности, если модуль находится в публичном доступе, то необходимо обязательно включать опцию Full Security.

Управление через GET запросы

http://[ip_adr]/jsonoptions?select=XXXXX , где ХХХХ - имя вкладки (main, hardware, servers и прочие, all - выведет все настройки). В ответ покажет настройки в json формате.

Пример 1: http://192.168.100.1/jsonoptions?select=thermostat - выдаст содержимое настрок термостата

 

Пример 2: http://192.168.100.1/jsonoptions?select=all - выдаст содержимое всех настроек модуля

 

http://[ip_adr]/jsonoptions?write=XXXXX , где ХХХХ параметры в json формате, можно отправлять только параметры, которые требуется изменить. После отправки покажет OK и число измененных параметров.

Пример: http://192.168.100.1/jsonoptions?write={"hardware":{"interval":2,"i2c":{"scl":5,"sda":4},"ds18b20":{"en":1,"gpio":13}} -установит настройки секции hardware

При попытке чтения или отправки чрезмерно большого пакета данных возможен отказ или сбой в работе прошивки. Используйте вместо секции all чтение секций по раздельности.


Управление через MQTT

При включенной опции модуль ESP подписывается на MQTT брокере на топики login/hostname/optionsget и login/hostname/optionsset и публикует ответы в топик login/hostname/optionsdata

Если в топик login/hostname/optionsget отправить 0, в ответ в топик login/hostname/optionsdata в json формате придет список вкладок, доступных для конфигурации на модуле. 

Если в топик login/hostname/optionsget отправить название вкладки, в ответ в топик login/hostname/optionsdata в json формате придет список параметров вкладки, доступных для конфигурации на модуле, и их текущие значения.

Если в топик login/hostname/optionsset отправить настройки в json формате (аналогичном полученному на предыдущем шаге), настройки на модуле будут изменены. Допускается публикация только тех параметров, значения которых должны быть изменены.



Опция находится в разработке и требуется дописать большой объем кода для поддержки всех опций прошивки. На данный момент добавлена поддержка вкладок/опций:

main (не реализована установка времени)

servers (настройка серверов)

hardware (пока не все устройства)

gpiomode (режимы работы GPIO: out , outinv , input , outf , outinvf )

interrupt (прерывания, режимы: counter , activesend , key , timekey)

linesdesigner (конструктор строк)

thermostat (требуется знать ID датчика для его установки)

ping (ping тест)

phoneaccess (список доступа телефонов для GSM control)

ipsecurity

display (частично реализовано)

vgpio

vsens

template (sms/email шаблоны)

wol

mp3 (mp3 uart конструктор фраз)

scheduler (планировщик задач)

promode (активация ключа)

ddns (myddns.ru)

logic2 (Логический модуль 2, не отображается в секции all , ограничено до 5 шагов,требуется знать ID датчика для его установки)

notifications (настройки уведомлений от gsm и sms сервисов)

emailnotice (emeil уведомления)

gsmcontrol

pwm

irrec (ИК приемник)

rcrec (RCswitch приёмник)

mcpgpio (MCP23017)

narodmonget ( Narodmon GET)

Функции, которые пока не поддерживаются:

MPR121, FM радио, NRF24 хаб, RCswitch датчики, дисплеи, Remap ADC, Коррекция датчиков, RFID замок, Wiegand26/34,  iButton, SD логгер, Email check, NooLite MR1132, Interpreter, VirtualWire 433/315



Пример json пакета настроек:

Прошивка выдает и принимает json только одной строкой ! Ниже текст с форматированием для удобства примера.
{
   "main":{
      "hostname":"esptest",
      "admin":{
         "login":"",
         "passw":"",
         "security":0
      },
      "wifi":{
         "apname":"megarouter",
         "appassw":"20100100",
         "apmode":0,
         "ip":"192.168.1.200",
         "gw":"192.168.1.1",
         "staticip":1
      },
      "ntp":{
         "utc":3,
         "ip":"85.114.26.194"
      }
   },
   "hardware":{
      "interval":2,
      "i2c":{
         "scl":5,
         "sda":4
      },
      "ds18b20":{
         "en":1,
         "gpio":13
      }
   },
   "servers":{
      "mjd":{
         "en":1,
         "ip":"192.168.1.154",
         "interval":300
      },
      "narodmon":{
         "en":1,
         "interval":5
      },
      "flymon":{
         "en":1
      },
      "mqtt":{
         "en":0,
         "interval":60,
         "server":"mqtt.wifi-iot.com",
         "port":1883,
         "login":"maksms",
         "passw":"pass"
      }
   },
   "promode":{
      "en":1,
      "key":"78J7941000"
   },
   "gpiomode":{
      "0":"",
      "1":"",
      "2":"",
      "3":"",
      "4":"",
      "5":"",
      "12":"",
      "13":"",
      "14":"",
      "15":"",
      "16":"out" // возможные варианты: out , outinv , input , outf , outinvf
   },
   "display":{
      "mode":"oled", // выбран тип дисплея oled, возможны варианты: lcd1602, lcd2004, tft
      "backlight":1,
      "dislogo":0
   },
   "phoneaccess":{
      "1":"79091441234",
      "2":""
   },
   "interrupt":{
      "divider":10,
      "mode":"neg",
      "1":{
         "intgpio":0,
         "keygpio":5,
         "mode":"",
         "timeforkey":10
      },
      "2":{
         "intgpio":0,
         "keygpio":193,
         "mode":"key" // возможные варианты: counter , activesend , key , timekey
      },
      "3":{
         "intgpio":255,
         "keygpio":2,
         "mode":""
      },
      "4":{
         "intgpio":255,
         "keygpio":2,
         "mode":""
      }
   },
   "scheduler":{
      "1":{
         "hour":6,
         "min":0,
         "week":"1,2", // дни недели, тут только понедельник и вторник
         "mode":"display",
         "num":1,
         "state":1
      },
      "2":{
         "hour":22,
         "min":0,
         "week":"1,2,3,4,5,6,7",
         "mode":"display",
         "num":0,
         "state":0
      }
   },
   "linesdesigner":{
      "1":"_DSW1_ !! _VDD_ ! _GPIO16_ !",
      "2":"_CNT1I_",
      "3":"Сегодня _DATE_ _WEEK_ . дома _DSW1_ градусов",
      "4":"_DATE_ _WEEK_"
   },
   "ping":{
      "en":0,
      "ip":"8.8.8.8",
      "gpio":255
   },
   "ipsecurity":{
      "en":1,
      "homeen":1,
      "ipaccess":{
         "1":"192.168.1.255",
         "2":"109.194.190.101",
         "3":"255.255.255.255",
         "4":"192.168.100.255",
         "5":"255.255.255.255"
      }
   },
   "vgpio":{
      "20":154,
      "40":170,
      "60":177
   },
   "vsens":{
      "1":{
         "ip":"192.168.1.177",
         "sens":{
            "1":2,
            "2":3,
            "3":7,
            "4":5,
            "5":6
         }
      },
      "2":{
         "ip":"192.168.1.153",
         "sens":{
            "1":2,
            "2":3,
            "3":0,
            "4":0,
            "5":0
         }
      },
      "3":{
         "ip":"255.255.255.255",
         "sens":{
            "1":31,
            "2":31,
            "3":31,
            "4":31,
            "5":31
         }
      }
   },
   "notifications":{
      "interrupt":0,
      "pingalarm":1,
      "gsmen":1,
      "fone":"79005123456"
   },
   "emailnotice":{
      "emailen":1,
      "mailfrom":"mail@wifi-iot.ru",
      "server":"smtp-devices.yandex.com",
      "port":25,
      "login":"mail@wifi-iot.ru",
      "passw":"12345",
      "mailto":"mail@ya.ru"
   },
   "template":{ // тексты шаблонов уведомлений
    "1":{
         "txt":"DS: _DSW1_ VS: _VS11_ IP: _IP_",
         "cmd":"cmd1"
      },
      "2":{
         "txt":"no sms text",
         "cmd":"cmd2"
      },
      "3":{
         "txt":"no sms text",
         "cmd":"cmd3"
      }
   },
   "mp3":{
      "1":"0,0,41,T111",
      "2":"0",
      "3":"0"
   }
}