├── .gitignore ├── Action.ino ├── Cmd.ino ├── IR.ino ├── Json.ino ├── LICENSE ├── MQTT.ino ├── Main.ino ├── NTP.ino ├── README.md ├── RGBJAL.ino ├── SSDP.ino ├── Scenary.ino ├── Sensors.ino ├── Sonoff_WiFi_switch.ino ├── Timers.ino ├── Upgrade.ino ├── WIFI.ino ├── Web.ino ├── build ├── 2016 │ ├── build.0x00000_flash_size_1Mb.256Kb_2016.12.08.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2016.12.09.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2016.12.10.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2016.12.11.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2016.12.14.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2016.12.16.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2016.12.14.bin │ └── spiffs.0xBB000_flash_size_1Mb.256Kb_2016.12.16.bin ├── 2017 │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.01.09.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.01.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.02.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.04.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.06.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.09.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.18.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.20.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.21.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.22.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.23.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.24.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.02.25.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.03.02.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.03.09.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.03.22.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.03.24.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.04.18.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.04.20.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.04.22.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.04.23.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.04.24.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.07.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.08.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.15.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.16.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.17.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.26.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.28.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.05.31.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.02.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.03.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.05.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.06.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.07.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.08.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.12.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.17.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.06.21.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.04.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.05.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.06.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.07.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.10.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.11.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.12.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.14.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.16.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.17.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.07.31.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.01.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.05.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.07.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.08.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.09.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.10.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.21.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.29.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.30.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.08.31.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.09.04.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.09.11.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.09.13.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.09.20.bin │ ├── build.0x00000_flash_size_1Mb.256Kb_2017.10.11.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.01.09.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.02.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.04.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.06.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.09.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.18.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.20.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.23.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.02.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.09.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.22.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.24.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.18.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.20.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.22.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.23.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.24.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.07.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.08.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.15.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.16.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.17.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.26.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.28.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.31.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.02.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.03.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.05.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.06.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.07.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.08.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.12.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.17.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.21.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.04.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.05.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.06.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.07.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.10.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.11.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.12.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.14.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.16.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.17.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.31.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.01.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.05.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.07.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.08.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.09.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.10.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.21.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.29.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.30.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.31.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.04.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.11.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.13.bin │ ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.20.bin │ └── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.10.11.bin ├── ESP8266Flasher.exe ├── README.md ├── Sonoff_Updater.ino.generic.bin ├── Sonoff_Updater2.ino.generic.bin ├── build.0x00000_flash_size_1Mb.256Kb_2017.10.16.bin ├── build.0x00000_flash_size_1Mb.256Kb_2018.12.02.bin ├── build.0x00000_flash_size_1Mb.256Kb_2018.12.03.bin ├── spiffs.0xBB000_flash_size_1Mb.256Kb_2017.10.16.bin └── spiffs.0xBB000_flash_size_1Mb.256Kb_2018.12.03.bin ├── data ├── block-A0.htm.gz ├── block-analog.htm.gz ├── block-humidity.htm.gz ├── block-jalousie.htm.gz ├── block-leakag.htm.gz ├── block-livolo.htm.gz ├── block-macros.htm.gz ├── block-pow.htm.gz ├── block-relay.htm.gz ├── block-rgb.htm.gz ├── block-rgb0.htm.gz ├── block-rgb1.htm.gz ├── block-rgbs.htm.gz ├── block-shim.htm.gz ├── block-temperature.htm.gz ├── buildpach.txt ├── chart.json.gz ├── command-help.json.gz ├── config.save.json ├── configs.json.gz ├── configs │ ├── jalousie.txt │ ├── manually.txt │ ├── rgb-shim.txt │ ├── rgb.txt │ ├── smart-room.txt │ ├── sonoff-pow.txt │ ├── sonoff-rf.txt │ └── wifi-relay-5v.txt ├── css │ └── build.css.gz ├── debug.json.gz ├── donate.htm.gz ├── edit.htm.gz ├── favicon.ico ├── first-connect.json.gz ├── furnace.json.gz ├── header.json.gz ├── help.htm.gz ├── img │ ├── swatches.png │ └── swatches1.png ├── index.htm.gz ├── index.htm.json.gz ├── index.json.gz ├── index2.htm.gz ├── index2.htm.json.gz ├── index3.htm.gz ├── index3.htm.json.gz ├── index4.htm.gz ├── index4.htm.json.gz ├── index5.htm.gz ├── index5.htm.json.gz ├── index6.htm.gz ├── index6.htm.json.gz ├── jalousie.json.gz ├── js │ ├── build.chart.js.gz │ └── function.js.gz ├── lang │ ├── lang.en.json.gz │ ├── lang.lv.json.gz │ ├── lang.ru.json.gz │ └── lang.ua.json.gz ├── livolo.json.gz ├── new_page.json ├── page.htm.gz ├── relay.json.gz ├── relay1.json ├── rgb.json.gz ├── rgb0.json.gz ├── rgb1.json.gz ├── rgbs.json.gz ├── robots.txt ├── scenary.json.gz ├── scenary.save.txt ├── scenary │ ├── jalousie.txt │ ├── manually.txt │ ├── rgb-shim.txt │ ├── rgb.txt │ ├── smart-room.txt │ ├── sonoff-pow.txt │ ├── sonoff-rf.txt │ └── wifi-relay-5v.txt ├── setup.json.gz ├── shim.json.gz ├── starting.json.gz ├── timer.json.gz └── timer.save.json ├── dev_data ├── block-A0.htm ├── block-humidity.htm ├── block-jalousie.htm ├── block-leakag.htm ├── block-livolo.htm ├── block-macros.htm ├── block-pow.htm ├── block-relay.htm ├── block-rgb.htm ├── block-rgb0.htm ├── block-rgb1.htm ├── block-rgbs.htm ├── block-shim.htm ├── block-temperature.htm ├── chart.json ├── command-help.json ├── configs.json ├── css │ ├── bootstrap.min.css │ ├── chartist.min.css │ └── style.css ├── debug.json ├── donate.htm ├── edit.htm ├── first-connect.json ├── furnace.json ├── header.json ├── help.htm ├── index.htm ├── index.htm.json ├── index2.htm ├── index2.htm.json ├── index3.htm ├── index3.htm.json ├── index4.htm ├── index4.htm.json ├── index5.htm ├── index5.htm.json ├── index6.htm ├── index6.htm.json ├── jalousie.json ├── js │ ├── chart.js │ ├── chartist.min.js │ ├── function.js │ └── siema.min.js ├── lang │ ├── lang.en.json │ ├── lang.lv.json │ ├── lang.ru.json │ └── lang.ua.json ├── livolo.json ├── page.htm ├── relay.json ├── rgb.json ├── rgb0.json ├── rgb1.json ├── rgbs.json ├── scenary.json ├── setup.json ├── shim.json ├── starting.json └── timer.json ├── hw_timer.c ├── hw_timer.h ├── pre-commit.sh ├── sets.h └── tutorial ├── download.png ├── esp8266_12_wiring.png ├── esp8266_esp01_horizontal-01.png ├── esp8266_esp12e_horizontal-01.png ├── esp8266_wiring.png ├── id_block.png ├── jalousie.png ├── mqtt ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png └── 7.png ├── nodemcu-flasher.png ├── pins-edit.gif ├── pins-edit.png ├── question.png ├── screen1.png ├── screen2.png ├── screen3.png ├── screen4.png ├── smart-home-icon.gif └── sonoff.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | # https://git-scm.com/docs/gitignore 2 | # https://help.github.com/articles/ignoring-files 3 | # Example .gitignore files: https://github.com/github/gitignore 4 | /bower_components/ 5 | /node_modules/ 6 | /Sonoff_WiFi_switch.ino.generic.bin 7 | -------------------------------------------------------------------------------- /Cmd.ino: -------------------------------------------------------------------------------- 1 | // ---------------Инициализация модулей 2 | void initCMD() { 3 | 4 | sCmd.addCommand("UART", uart); 5 | //sCmd.addCommand("ONEWIRE", initOneWire); 6 | sCmd.addCommand("NTP", initNTP); 7 | sCmd.addCommand("UPGRADE", initUpgrade); 8 | #ifdef ddnsM 9 | sCmd.addCommand("DDNS", initDDNS); 10 | #endif 11 | sCmd.addCommand("A0", initA0); 12 | sCmd.addCommand("TACH", initTach); 13 | sCmd.addCommand("DHT", initDHT); 14 | #ifdef Si7021 15 | sCmd.addCommand("SI7021", initSi7021); 16 | #endif 17 | sCmd.addCommand("DS18B20", initOneWire); 18 | sCmd.addCommand("TIMERS", initTimers); 19 | #ifdef pinOutM 20 | sCmd.addCommand("PINOUT", initPinOut); 21 | sCmd.addCommand("RELAY", initRelay); 22 | #endif 23 | #ifdef DimmerM 24 | sCmd.addCommand("DIMMER", initDimmer); 25 | #endif 26 | #ifdef POW 27 | sCmd.addCommand("POW", initHLW8012); 28 | #endif 29 | #ifdef JalousieM 30 | sCmd.addCommand("JALOUSIE", initJalousie); 31 | #endif 32 | #ifdef mqttM 33 | sCmd.addCommand("MQTT", initMQTT); 34 | #endif 35 | #ifdef rgbM 36 | sCmd.addCommand("RGB", initRGB); 37 | #endif 38 | #ifdef rgbShimM 39 | sCmd.addCommand("SRGB", initRGBSHIM); 40 | #endif 41 | sCmd.addCommand("RF-RECEIVED", rfReceived); 42 | sCmd.addCommand("RF-TRANSMITTER", rfTransmitter); 43 | sCmd.addCommand("IR-RECEIVED", irReceived); 44 | #ifdef irTransmitterM 45 | sCmd.addCommand("IR-TRANSMITTER", irTransmitter); 46 | #endif 47 | sCmd.addCommand("RF-LIVOLO", rfLivolo); 48 | sCmd.addCommand("BUZZER", initBuzzer); 49 | sCmd.addCommand("print", printTest); 50 | sCmd.addCommand("ALARM", alarmGet); 51 | sCmd.addCommand("//", alarmComm); 52 | sCmd.addCommand("#", alarmOff); 53 | sCmd.addCommand("GET", initGet); 54 | sCmd.addCommand("ADMIN", initAdmin); 55 | commandsReg("GET"); 56 | sCmd.addCommand("reset", initReset); 57 | commandsReg("reset"); 58 | sCmd.setDefaultHandler(unrecognized); 59 | } 60 | 61 | void unrecognized(const char *command) { 62 | Serial.println("What?"); 63 | } 64 | void initReset() { 65 | ESP.restart(); 66 | } 67 | void alarmComm() { 68 | //Serial.println("Comment?"); 69 | } 70 | void initAdmin() { 71 | modulesReg("admin"); 72 | } 73 | 74 | void alarmOff() { 75 | //Serial.println("CommandOff?"); 76 | } 77 | 78 | void alarmGet() { 79 | String volume = readArgsString(); 80 | String high = readArgsString(); 81 | String low = readArgsString(); 82 | alarmLoad(volume, high, low); 83 | } 84 | 85 | 86 | void initGet() { 87 | String urls = readArgsString(); 88 | if (urls.indexOf("/") == 0) urls = "http://"+getSetup(ipS)+urls; 89 | //Serial.println(urls); 90 | if (urls.indexOf("{{") != -1) { 91 | String param = urls; 92 | do { 93 | param = deleteBeforeDelimiter(param, "{{"); 94 | String test = selectToMarker(param, "}}"); 95 | param = deleteBeforeDelimiter(param, "}}"); 96 | urls.replace("{{" + test + "}}", getStatus(test)); 97 | } while (param.length() != 0); 98 | } 99 | //Serial.println(urls); 100 | String answer = emptyS; 101 | HTTPClient http; 102 | http.begin(urls); //HTTP 103 | int httpCode = http.GET(); 104 | if (httpCode == HTTP_CODE_OK) { 105 | answer = http.getString(); 106 | } 107 | http.end(); 108 | } 109 | 110 | // По комманде print печатает аргумент для тастов 111 | void printTest() { 112 | Serial.println("Test " + readArgsString()); 113 | } 114 | 115 | // Настраивает Serial по команде sCmd.addCommand("Serial", uart); 116 | void uart() { 117 | Serial.end(); 118 | Serial.begin(readArgsInt()); 119 | delay(100); 120 | Serial.println(); 121 | } 122 | 123 | // Читает аргументы из команд каждый слежующий вызов читает следующий аргумент возвращает String 124 | String readArgsString() { 125 | String arg; 126 | arg = sCmd.next(); 127 | //Serial.println(arg); 128 | if (arg == emptyS) arg = emptyS; 129 | return arg; 130 | } 131 | // Читает аргументы из команд каждый слежующий вызов читает следующий аргумент возвращает Int 132 | int readArgsInt() { 133 | char *arg; 134 | arg = sCmd.next(); 135 | if (arg != NULL) { 136 | return atoi(arg); 137 | } 138 | else { 139 | return 0; 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /Json.ino: -------------------------------------------------------------------------------- 1 | // ------------- Чтение значения json ------------------- 2 | String jsonRead(String &json, String name) { 3 | DynamicJsonBuffer jsonBuffer; 4 | JsonObject& root = jsonBuffer.parseObject(json); 5 | return root[name].as(); 6 | } 7 | int jsonReadToInt(String &json, String name) { 8 | return jsonRead(json, name).toInt(); 9 | } 10 | float jsonReadToFloat(String &json, String name) { 11 | return jsonRead(json, name).toFloat(); 12 | } 13 | // -------------- Чтение configSetup ------------------------------- 14 | String getSetup(String Name) { 15 | return jsonRead(configSetup, Name); 16 | } 17 | int getSetupInt(String Name) { 18 | return jsonReadToInt(configSetup, Name); 19 | } 20 | float getSetupFloat(String Name) { 21 | return jsonReadToFloat(configSetup, Name); 22 | } 23 | // -------------- Чтение configOptions -------------------- 24 | String getOptions(String Name) { 25 | return jsonRead(configOptions, Name); 26 | } 27 | int getOptionsInt(String Name) { 28 | return jsonReadToInt(configOptions, Name); 29 | } 30 | float getOptionsFloat(String Name) { 31 | return jsonReadToFloat(configOptions, Name); 32 | } 33 | // -------------- Чтение configJson ----------------------------------------------- 34 | String getStatus(String Name) { 35 | return jsonRead(configJson, Name); 36 | } 37 | int getStatusInt(String Name) { 38 | return jsonReadToInt(configJson, Name); 39 | } 40 | float getStatusFloat(String Name) { 41 | return jsonReadToFloat(configJson, Name); 42 | } 43 | 44 | // ------------- Запись значения json String ---------------- 45 | void jsonWrite(String &json, String name, String volume) { 46 | DynamicJsonBuffer jsonBuffer; 47 | JsonObject& root = jsonBuffer.parseObject(json); 48 | root[name] = volume; 49 | json = emptyS; 50 | root.printTo(json); 51 | } 52 | // ------------- Запись значения json int ---------------- 53 | void jsonWrite(String &json, String name, int volume) { 54 | DynamicJsonBuffer jsonBuffer; 55 | JsonObject& root = jsonBuffer.parseObject(json); 56 | root[name] = volume; 57 | json = emptyS; 58 | root.printTo(json); 59 | } 60 | // ------------- Запись значения json float ---------------- 61 | void jsonWrite(String &json, String name, float volume) { 62 | DynamicJsonBuffer jsonBuffer; 63 | JsonObject& root = jsonBuffer.parseObject(json); 64 | root[name] = volume; 65 | json = emptyS; 66 | root.printTo(json); 67 | } 68 | // ------------- Отправить данные в Setup String ------------------------------ 69 | void sendSetup(String Name, String volume) { 70 | jsonWrite(configSetup, Name, volume); 71 | } 72 | // ------------- Отправить данные в Setup int ----------------------- 73 | void sendSetup(String Name, int volume) { 74 | jsonWrite(configSetup, Name, volume); 75 | } 76 | // ------------- Отправить данные в Setup float ------------ 77 | void sendSetupF(String Name, float volume) { 78 | jsonWrite(configSetup, Name, volume); 79 | } 80 | // ------------- Отправить данные в Status String ------------------------------ 81 | boolean sendStatus(String Name, String volume) { 82 | jsonWrite(configJson, Name, volume); 83 | return true; 84 | } 85 | // ------------- Отправить данные в Status int ----------------------- 86 | boolean sendStatus(String Name, int volume) { 87 | jsonWrite(configJson, Name, volume); 88 | return true; 89 | } 90 | // ------------- Отправить данные в Status float ---------- 91 | boolean sendStatusF(String Name, float volume) { 92 | jsonWrite(configJson, Name, volume); 93 | return true; 94 | } 95 | // ------------- Отправить данные в Options String ------------------------------ 96 | void sendOptions(String Name, String volume) { 97 | jsonWrite(configOptions, Name, volume); 98 | } 99 | // ------------- Отправить данные в Options int ----------------------- 100 | void sendOptions(String Name, int volume) { 101 | jsonWrite(configOptions, Name, volume); 102 | } 103 | // ------------- Отправить данные в Options float ---------- 104 | void sendOptionsF(String Name, float volume) { 105 | jsonWrite(configOptions, Name, volume); 106 | } 107 | // ------------- Копируем параметр из Setup Options 108 | void setupToOptions(String Name){ 109 | sendOptions(Name,getSetup(Name)); 110 | } 111 | // ------------- Копируем параметр из Setup Options 112 | void setupToStatus(String Name){ 113 | sendStatus(Name,getSetup(Name)); 114 | } 115 | 116 | 117 | -------------------------------------------------------------------------------- /NTP.ino: -------------------------------------------------------------------------------- 1 | #include //Содержится в пакете 2 | void initNTP() { 3 | if (getStatusInt(wifiS) == 3) { //Если есть подключение к роутеру 4 | String ntpTemp = readArgsString(); 5 | sendOptions(ntp1S, ntpTemp); 6 | ntpTemp = readArgsString(); 7 | sendOptions(ntp2S, ntpTemp); 8 | //Serial.println(getOptions(messageS)); 9 | if ( getOptions(messageS) == emptyS) { // Если нет связи с интернет пробуем получить время с роутера 10 | sendOptions(ntp1S, WiFi.gatewayIP().toString()); // Для этого заменяем адрес NTP сервера на адрес роутера 11 | } 12 | sCmd.addCommand("time", handle_time); 13 | timeSynch(); 14 | //Serial.println(GetTime()); 15 | if (GetTime() != "00:00:00") { // Проверка на получение времени 16 | // задача проверять таймеры каждую секунду обновлять текущее время. 17 | ts.add(tNTP, 1000, [&](void*) { 18 | String timeNow = GetTime(); 19 | if (timeNow == "00:00:00") { // в это время синхронизируем с внешним сервером 20 | String timeNow = GetWeekday(); // Новая дата 21 | sendStatus(weekdayS, timeNow); 22 | timeSynch(); 23 | loadTimer(); 24 | 25 | } 26 | 27 | if (timeNow == getOptions("timersT")) { 28 | sCmd.readStr(getOptions("timersC")); 29 | if (getOptions("timersR")=="1") delTimer(); 30 | sendOptions("timersT", " "); 31 | sendOptions("timersC", " "); 32 | loadTimer(); 33 | } 34 | sendStatus(timeS, timeNow); 35 | sendOptions(timeS, timeNow); 36 | jsonWrite(configSetup, timeS, timeNow); 37 | }, nullptr, true); 38 | sCmd.addCommand("zone", handle_timeZone); 39 | modulesReg("ntp"); 40 | } 41 | } 42 | } 43 | 44 | // ------------------------------ Установка времянной зоны 45 | void handle_timeZone() { 46 | int timezone = readArgsInt(); 47 | sendSetup(timeZoneS, timezone); 48 | sendOptions(timeZoneS, timezone); 49 | timeSynch(); 50 | saveConfigSetup (); 51 | } 52 | 53 | // ------------------------------ Комманда синхронизации времени 54 | void handle_time() { 55 | timeSynch(); 56 | statusS = "{}"; 57 | jsonWrite(statusS, "title", "{{LangTime1}} " + GetTime() + ""); 58 | } 59 | 60 | void timeSynch() { 61 | uint8_t zone = getOptionsInt(timeZoneS); 62 | String ntp1 = getOptions(ntp1S); 63 | String ntp2 = getOptions(ntp2S); 64 | if (ntp1 == emptyS) ntp1 = "ntp1.vniiftri.ru"; 65 | if (ntp2 == emptyS) ntp2 = "ru.pool.ntp.org"; 66 | if (WiFi.status() == WL_CONNECTED) { 67 | // Инициализация UDP соединения с NTP сервером 68 | configTime(zone * 3600, 0, ntp1.c_str(), ntp2.c_str()); 69 | uint8_t i = 0; 70 | while (!time(nullptr) && i < 10) { 71 | i++; 72 | delay(100); 73 | } 74 | String timeNow = GetTime(); 75 | jsonWrite(configSetup, timeS, timeNow); 76 | sendStatus(timeS, timeNow); 77 | timeNow = GetWeekday(); 78 | sendStatus(weekdayS, timeNow); 79 | } 80 | } 81 | // Получение текущего времени 82 | String GetTime() { 83 | time_t now = time(nullptr); // получаем время с помощью библиотеки time.h 84 | String Time; // Строка для результатов времени 85 | Time += ctime(&now); // Преобразуем время в строку формата Thu Jan 19 00:55:35 2017 86 | uint8_t i = Time.indexOf(":"); //Ишем позицию первого символа : 87 | Time = Time.substring(i - 2, i + 6); // Выделяем из строки 2 символа перед символом : и 6 символов после 88 | return Time; // Возврашаем полученное время 89 | } 90 | 91 | // Получение даты 92 | String GetDate() { 93 | time_t now = time(nullptr); // получаем время с помощью библиотеки time.h 94 | String Data; // Строка для результатов времени 95 | Data += ctime(&now); // Преобразуем время в строку формата Thu Jan 19 00:55:35 2017 96 | Data.replace("\n", emptyS); 97 | uint8_t i = Data.lastIndexOf(" "); //Ишем позицию последнего символа пробел 98 | String Time = Data.substring(i - 8, i + 1); // Выделяем время и пробел 99 | Data.replace(Time, emptyS); // Удаляем из строки 8 символов времени и пробел 100 | return Data; // Возврашаем полученную дату 101 | } 102 | // Получение дня недели 103 | String GetWeekday() { 104 | String Data = GetDate(); 105 | uint8_t i = Data.indexOf(" "); //Ишем позицию первого символа пробел 106 | String weekday = Data.substring(i - 3, i); // Выделяем время и пробел 107 | return weekday; 108 | } 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ESP8266 (Arduino) 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # Upload instruction 10 | 11 | ## Specification .bin files 12 | ![download](https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/master/tutorial/download.png) 13 | 14 | 15 | # Download [Build.Spiffs.flash.1Mb.256Kb.2018.12.03.zip](https://github.com/tretyakovsa/Sonoff_WiFi_switch/releases/download/3.0/Build.Spiffs.flash.1Mb.256Kb.2018.12.03.zip) 16 | 17 | ![nodemcu-flasher](https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/master/tutorial/nodemcu-flasher.png) 18 | ### NodeMCU Flasher 19 | https://github.com/nodemcu/nodemcu-flasher 20 | Download Release: [Win32](https://github.com/nodemcu/nodemcu-flasher/blob/master/Win32/Release/ESP8266Flasher.exe) or [Win64](https://github.com/nodemcu/nodemcu-flasher/blob/master/Win64/Release/ESP8266Flasher.exe). 21 | 22 | 23 | ## Work example (Video) 24 | 25 | [![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/rNLlpkg2BGI/0.jpg)](https://www.youtube.com/playlist?list=PL6NJTNxbvy-IPTDQk8XjTV41oRrFafrRi) 26 | 27 | 28 | ## Features 29 | - NTP 30 | - DDNS 31 | - MQTT 32 | - TIMERS 33 | - DHT11, DHT22, AM2302, RHT03, DS18B20 34 | - A0 35 | - TACH 8 max (button, movement, gercon, othe) 36 | - RELAY 4 max 37 | - JALOUSIE 38 | - WS2811/WS2812/NeoPixel LEDs 39 | - RGB 5050/3528/2835 40 | - RF-RECEIVED 41 | - RF-TRANSMITTER 42 | - RF-LIVOLO 43 | - IR-RECEIVED 44 | - IR-TRANSMITTER 45 | 46 | ### Schematic 47 | 48 | ![alt](https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/master/tutorial/sonoff.jpg) 49 | 50 | 51 | ## Мобильное приложение 52 | 53 | Репозиторий: [https://github.com/tutaf/iot-room-finder](https://github.com/tutaf/iot-room-finder) 54 | Скачать можно в [Google Play](https://play.google.com/store/apps/details?id=com.tutaf.iotroomfinder) 55 | Запуская приложение, в локальную сеть оно отправляет UPnP пакет. Та ESP которая первая ответит откроется в вашем браузере. Таким образом вам не нужно запоминать IP адреса устройств. 56 | Большое спасибо Андрею. 57 | 58 | ## Othe... 59 | 60 | #### Jalousie: [https://github.com/tretyakovsa/jaluzi](https://github.com/tretyakovsa/jaluzi) 61 | 62 | #### RGB: [https://github.com/renat2985/rgb](https://github.com/renat2985/rgb) 63 | 64 | 65 | #### Themes you can download here: [https://bootswatch.com/3/](https://bootswatch.com/3/) 66 | 67 | 68 | ## Donation 69 | 70 | If you like this project, you can give me a cup of coffee :) 71 | 72 | #### YandexMoney 73 | 74 | - 410011740665305 75 | 76 | #### WebMoney 77 | 78 | - Z343206590467 79 | - R124424038680 80 | - U883416626152 81 | - E211342115147 82 | 83 | #### AdvCash 84 | 85 | - U 0586 7862 1354 86 | - E 8788 6352 1126 87 | - R 7705 0208 6566 88 | 89 | #### PayPal 90 | 91 | - [Send 5Eur](https://www.paypal.me/renat2985/5) 92 | 93 | #### Revolut 94 | 95 | - [Send 2Eur](https://rev.money/r/ABpLzS4IIV) 96 | - [Send 5Eur](https://rev.money/r/7iw2mWpy3n) 97 | 98 | -------------------------------------------------------------------------------- /SSDP.ino: -------------------------------------------------------------------------------- 1 | void initSSDP() { 2 | String temp = getSetup(ssdpS); 3 | if (temp == emptyS or temp == "Sonoff") { 4 | temp = "Sonoff";//+jsonRead(configSetup, macS); 5 | sendSetup(ssdpS, temp); 6 | //sendStatus(ssdpS, temp); 7 | } 8 | HTTP.on("/ssdp.list.json", HTTP_GET, []() { 9 | httpOkJson(ssdpList); 10 | }); 11 | if (getStatusInt(wifiS) == 3) { //Если есть подключение к роутеру 12 | // Включаем определение имени для Windows 13 | //LLMNR.begin(temp.c_str()); 14 | //NBNS.begin(temp.c_str()); 15 | unsigned int localPort = 1901; 16 | udp.begin(localPort); 17 | // SSDP дескриптор 18 | HTTP.on("/description.xml", HTTP_GET, []() { 19 | SSDP.schema(HTTP.client()); 20 | }); 21 | SSDP.setDeviceType("upnp:rootdevice"); 22 | SSDP.setSchemaURL("description.xml"); 23 | SSDP.setHTTPPort(80); 24 | SSDP.setName(getSetup(ssdpS)); 25 | SSDP.setSerialNumber(chipID); 26 | SSDP.setURL("/"); 27 | SSDP.setModelName(getSetup(configsS)); 28 | SSDP.setModelNumber(chipID + "/" + getSetup(ssdpS)); 29 | SSDP.setModelURL("https://github.com/tretyakovsa/Sonoff_WiFi_switch"); 30 | SSDP.setManufacturer("Tretyakov Sergey, Kevrels Renats"); 31 | SSDP.setManufacturerURL("http://www.esp8266-arduinoide.ru"); 32 | SSDP.begin(); 33 | 34 | // Установить имя устройства 35 | HTTP.on("/device", HTTP_GET, []() { 36 | String ssdpName = HTTP.arg("ssdp"); 37 | sendSetup(ssdpS, ssdpName); 38 | sendOptions(ssdpS, ssdpName); 39 | SSDP.setName(ssdpName); 40 | SSDP.setModelNumber(chipID + "/" + getSetup(ssdpS)); 41 | String space = HTTP.arg("space"); 42 | sendSetup(spaceS, space); 43 | sendOptions(spaceS, space); 44 | jsonWrite(modules, ssdpS, getSetup(ssdpS)); 45 | jsonWrite(modules, spaceS, space); 46 | httpOkText(); 47 | saveConfigSetup(); 48 | requestSSDP(); 49 | }); 50 | 51 | // Каждые 60 секунд проверяем не изиенился ли адрес ip 52 | ts.add(tIP, 60000, [&](void*) { 53 | ipChanges(); 54 | // Serial.println("SSDP"); 55 | //safeDataToFile(1, stateA0S, getStatusInt(stateA0S)); 56 | }, nullptr, true); 57 | // задача проверять наличие устройств в сети каждые 60 секунд. 58 | ts.add(tSSDP, 60000, [&](void*) { 59 | requestSSDP(); 60 | //Serial.println(ssdpList); 61 | //Serial.println("requestSSDP "+GetTime()); 62 | }, nullptr, true); 63 | } 64 | } 65 | // ------------- SSDP запрос 66 | void requestSSDP () { 67 | if (WiFi.status() == WL_CONNECTED) { 68 | ssdpList="{}"; 69 | jsonWrite(ssdpList, getSetup(ssdpS), WiFi.localIP().toString()); 70 | IPAddress ssdpAdress(239, 255, 255, 250); 71 | unsigned int ssdpPort = 1900; 72 | char ReplyBuffer[] = "M-SEARCH * HTTP/1.1\r\nHost:239.255.255.250:1900\r\nST:upnp:rootdevice\r\nMan:\"ssdp:discover\"\r\nMX:3\r\n\r\n"; 73 | udp.beginPacket(ssdpAdress, ssdpPort); 74 | udp.write(ReplyBuffer); 75 | udp.endPacket(); 76 | } 77 | } 78 | // ------------- Чтение ответа от устройств SSDP слушаем порт все время 79 | void handleSSDP() { 80 | if (getStatusInt(wifiS) == 3) { //Если есть подключение к роутеру 81 | String input_string; 82 | String chipIDremote; 83 | String ssdpName; 84 | char packetBuffer[512]; 85 | int packetSize = udp.parsePacket(); 86 | if (packetSize) { 87 | int len = udp.read(packetBuffer, 512); 88 | if (len > 0) packetBuffer[len] = 0; 89 | input_string += packetBuffer; 90 | int i = input_string.indexOf("Arduino"); 91 | if (i > 0) { 92 | chipIDremote = deleteBeforeDelimiter(input_string, "Arduino"); 93 | chipIDremote = selectToMarker(chipIDremote, "\n"); 94 | ssdpName = selectToMarkerLast(chipIDremote, "/"); 95 | ssdpName = selectToMarker(ssdpName, "\r"); 96 | chipIDremote = selectToMarkerLast(chipIDremote, "/"); 97 | chipIDremote = selectToMarker(chipIDremote, "\r"); 98 | // строку input_string сохраняю для расширения 99 | jsonWrite(ssdpList, chipIDremote, udp.remoteIP().toString()); 100 | } 101 | } 102 | } 103 | } 104 | // Каждые 30 секунд проверяем не изиенился ли адрес ip 105 | void ipChanges() { 106 | String ip = WiFi.localIP().toString(); 107 | if (jsonRead(configSetup, ipS) != ip) { 108 | sendStatus(ipS, ip); 109 | jsonWrite(configSetup, ipS, ip); 110 | jsonWrite(modules, ipS, getOptions(ipS)); 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /Scenary.ino: -------------------------------------------------------------------------------- 1 | void initScenary() { 2 | sCmd.addCommand("if", ifCommand); 3 | sCmd.addCommand("or", orCommand); 4 | sCmd.addCommand("and", andCommand); 5 | sCmd.addCommand("id", idNot); 6 | sCmd.addCommand("then", thenCommand); 7 | HTTP.on("/setscenary", HTTP_GET, []() { 8 | loadScenary(); 9 | //String alarmSet = "ALARM " + stateA0S + " " + highalarmA0S + " " + lowalarmA0S; 10 | //sCmd.readStr(alarmSet); 11 | //alarmSet = "ALARM " + stateA0S + " " + highalarmA0S + " " + lowalarmA0S; 12 | alarmLoadModules(); 13 | loadTimer(); 14 | httpOkText(); 15 | }); 16 | loadScenary(); 17 | } 18 | void loadScenary() { 19 | Scenary = readFile(ScenaryS, 4096); 20 | Scenary.replace("\r\n", "\n"); 21 | Scenary.replace("\n\n", "\n"); 22 | Scenary += "\n"; 23 | //writeFile("test.text",Scenary); 24 | 25 | } 26 | // Ничего не делать если комманда id 27 | void idNot() {} 28 | 29 | void handleScenary() { 30 | yield(); 31 | if (flag) { // если произошло изменение в данных config.live.json 32 | //Serial.println(flag); 33 | //addFileString("events.txt",configJson+"\r\n"); 34 | goCommands(Scenary); // Делаем разбор сценариев 35 | webSocket.broadcastTXT(configJson); 36 | //Serial.println(configJson); 37 | sendStatus("voice", emptyS); 38 | flag = false; 39 | } 40 | } 41 | // Разбор команды if 42 | void ifCommand() { 43 | thenOk = false; // сброс признака 44 | orCommand(); 45 | } 46 | void andCommand() { 47 | String Name = readArgsString(); // Какой параметр проверяем 48 | String Condition = readArgsString(); // Операция 49 | String Volume = readArgsString(); // Значение параметра 50 | String test = getStatus(Name); // получить текущее значение параметра 51 | 52 | // Serial.print(Name); 53 | // Serial.print("="); 54 | // Serial.println("and"); 55 | 56 | if (thenOk) { 57 | thenOk = false; // сброс признака 58 | testCommand(Volume, Condition, test); 59 | } 60 | } 61 | 62 | void orCommand() { 63 | String Name = readArgsString(); // Какой параметр проверяем 64 | String Condition = readArgsString(); // Операция 65 | String Volume = readArgsString(); // Значение параметра 66 | String test = getStatus(Name); // получить текущее значение параметра 67 | 68 | // Serial.print(Name); 69 | // Serial.print("="); 70 | // Serial.println("or"); 71 | 72 | testCommand(Volume, Condition, test); 73 | } 74 | 75 | void testCommand(String Volume, String Condition, String test) { 76 | // последовательно проверяем параметр на соответствие операции сравнения 77 | // и поднимаем признак исполнения then 78 | if (Condition == "=") { 79 | if (Volume == test) thenOk = true; 80 | } 81 | if (Condition == ">") { 82 | if (Volume.toFloat() < test.toFloat()) thenOk = true; 83 | } 84 | if (Condition == "<") { 85 | if (Volume.toFloat() > test.toFloat()) thenOk = true; 86 | } 87 | if (Condition == "<=") { 88 | if (Volume.toFloat() >= test.toFloat()) thenOk = true; 89 | } 90 | if (Condition == ">=") { 91 | if (Volume.toFloat() <= test.toFloat()) thenOk = true; 92 | } 93 | if (Condition == "!=") { 94 | if (Volume != test) thenOk = true; 95 | } 96 | } 97 | 98 | 99 | // Выполнение then 100 | void thenCommand() { 101 | if (thenOk) { 102 | String ssdp = jsonRead(configSetup, ssdpS); 103 | String test = readArgsString(); 104 | String comm = readArgsString(); 105 | comm += " " + readArgsString(); 106 | comm += " " + readArgsString(); 107 | comm += " " + readArgsString(); 108 | comm += " " + readArgsString(); 109 | comm += " " + readArgsString(); 110 | comm += " " + readArgsString(); 111 | // Если это локальное устройство 112 | if (ssdp == test or test == "this") { 113 | // Serial.println("comm= "); 114 | // Serial.println(comm); 115 | sendOptions("test", comm); 116 | sCmd.readStr(comm); 117 | } 118 | else { 119 | // Serial.println("comm= "); 120 | // Serial.println(comm); 121 | //http://192.168.0.91/cmd?command=relay on 1 122 | String urls = "http://"; 123 | String ip = jsonRead(ssdpList, test); 124 | urls += ip; 125 | urls += "/cmd?command=" + comm; 126 | urls.replace(" ", "%20"); 127 | if (ip != emptyS) { 128 | sendOptions("test", comm); 129 | getURL(urls); 130 | } 131 | } 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /Sonoff_WiFi_switch.ino: -------------------------------------------------------------------------------- 1 | // 392997 - 446904 = 44655 2 | //#define Si7021 3 | //#define POW 4 | //#define mqttM //9496 5 | #define ddnsM //1384 - 1012 6 | #define rgbM // 1824 - 2700 7 | #define rgbShimM //2480 - 2016 8 | //#define irTransmitterM //9312 9 | #define pinOutM // 1608 - 1848 10 | //#define JalousieM //1408 - 1628 11 | //#define DimmerM // 784 12 | //#define safeData 13 | //#define macros 14 | #define webSocketM 15 | #include "sets.h" 16 | 17 | void setup() { 18 | //Serial.begin(115200); 19 | //Serial.println(); 20 | chipID = String( ESP.getChipId() ) + "-" + String( ESP.getFlashChipId() ); 21 | TickerScheduler(1); 22 | SPIFFS.begin(); 23 | HTTP.begin(); 24 | configSetup = readFile(fileConfigS, 4096 ); 25 | initCMD(); 26 | initWIFI(); 27 | initHTTP(); 28 | //initUpgrade(); 29 | initFS(); 30 | initSSDP(); 31 | initScenary(); 32 | setupToInit(); 33 | #ifdef webSocketM 34 | initWebSoket(); 35 | #endif 36 | //testPin(); 37 | } 38 | 39 | void loop() { 40 | ts.update(); 41 | HTTP.handleClient(); 42 | dnsServer.processNextRequest(); 43 | handleSSDP(); 44 | handleScenary(); 45 | HTTPWAN.handleClient(); 46 | #ifdef mqttM 47 | handleMQTT(); 48 | #endif 49 | #ifdef rgbM 50 | ws2812fx.service(); 51 | //ws2812fx[1].service(); 52 | #endif 53 | handleRfReceiv(); 54 | handleButtons(); 55 | #ifdef webSocketM 56 | webSocket.loop(); 57 | #endif 58 | } 59 | -------------------------------------------------------------------------------- /Timers.ino: -------------------------------------------------------------------------------- 1 | void initTimers() { 2 | loadTimer(); 3 | modulesReg("timers"); 4 | } 5 | void delTimer() { 6 | String jsonTimer = readFile(configTimerS, 4096); 7 | DynamicJsonBuffer jsonBuffer; 8 | JsonObject& Timers = jsonBuffer.parseObject(jsonTimer); 9 | JsonArray& nestedArray = Timers["timer"].asArray(); 10 | uint8_t y=255; 11 | for (int i = 0; i <= nestedArray.size() - 1; i++) { 12 | if (Timers["timer"][i]["id"] == idTime) y = i; 13 | } 14 | if (y!=255){ 15 | nestedArray.removeAt(y); 16 | jsonTimer = emptyS; 17 | Timers.printTo(jsonTimer); 18 | writeFile(configTimerS, jsonTimer); 19 | //Serial.println(jsonTimer); 20 | } 21 | } 22 | 23 | void loadTimer() { 24 | //Serial.println("Load"); 25 | long lminTime = 86400; 26 | String jsonTimer = readFile(configTimerS, 4096); 27 | String Weekday = GetWeekday(); 28 | comTime = emptyS; 29 | // Получаем текущий день недели в виде числа 30 | uint8_t iDay = 7; 31 | if (Weekday == "Sun") iDay = 0; 32 | if (Weekday == "Mon") iDay = 1; 33 | if (Weekday == "Tue") iDay = 2; 34 | if (Weekday == "Wed") iDay = 3; 35 | if (Weekday == "Thu") iDay = 4; 36 | if (Weekday == "Fri") iDay = 5; 37 | if (Weekday == "Sat") iDay = 6; 38 | // Приготовились читать массив таймеров 39 | DynamicJsonBuffer jsonBuffer; 40 | JsonObject& Timers = jsonBuffer.parseObject(jsonTimer); 41 | JsonArray& nestedArray = Timers["timer"].asArray(); 42 | // Сколько тамеров в массиве 43 | int j = nestedArray.size(); 44 | // Если есть таймеры 45 | if (j != 0) { 46 | // Перебор всех по порядку 47 | for (int i = 0; i <= j - 1; i++) { 48 | // Возьмем только те которые соответствуют текущему дню недели 49 | String week = Timers["timer"][i]["day"].as(); // признак принодлежности к дню недели 50 | int ind = week.substring(iDay, iDay + 1).toInt(); // Выделяем нужный день недели 51 | if (ind) { // Если день недели совпадает 52 | String idTimes = Timers["timer"][i]["id"].as(); 53 | if (idTimes.indexOf(":")==-1) idTimes=emptyS; 54 | String nextTime1 = Timers["timer"][i]["time1"].as(); 55 | String nextcom1 = Timers["timer"][i]["com1"].as(); 56 | String nextRun1 = Timers["timer"][i]["run1"].as(); 57 | String nextId = Timers["timer"][i]["id"].as(); 58 | int active = Timers["timer"][i]["active"]; 59 | if (timeToLong(nextTime1) >= timeToLong(GetTime()) && !active) { 60 | if (lminTime >= timeToLong(nextTime1)) { 61 | lminTime = timeToLong(nextTime1); 62 | minTime = nextTime1; 63 | comTime = nextcom1; 64 | runTime = nextRun1; 65 | idTime = nextId; 66 | } 67 | } 68 | sendOptions("timersT", minTime); 69 | sendOptions("timersC", comTime); 70 | sendOptions("timersR", runTime); 71 | } 72 | } 73 | } 74 | //Serial.println(minTime); 75 | } 76 | 77 | 78 | 79 | long timeToLong(String Time) { 80 | //"00:00:00" время в секунды 81 | long second = selectToMarker(Time, ":").toInt() * 3600; //общее количество секунд в полных часах 82 | Time = deleteBeforeDelimiter (Time, ":"); // Теперь здесь минуты секунды 83 | second += selectToMarker(Time, ":").toInt() * 60; // Добавим секунды из полных минут 84 | Time = deleteBeforeDelimiter (Time, ":"); // Теперь здесь секунды 85 | second += selectToMarker(Time, ":").toInt(); // Добавим секунды 86 | return second; 87 | } 88 | 89 | int timeToMin(String Time) { 90 | //"00:00:00" время в секунды 91 | long min = selectToMarker(Time, ":").toInt() * 60; //общее количество секунд в полных часах 92 | Time = deleteBeforeDelimiter (Time, ":"); // Теперь здесь минуты секунды 93 | min += selectToMarker(Time, ":").toInt(); // Добавим секунды из полных минут 94 | return min; 95 | } 96 | 97 | String timeToString(long Time) { 98 | String str; 99 | uint8_t temp = (Time / 3600); 100 | if (temp < 10) str += "0"; 101 | str += temp; // здесь часы 102 | str += ":"; 103 | Time = (Time - temp * 3600); // отбросим часы 104 | temp = (Time / 60); 105 | if (temp < 10) str += "0"; 106 | str += temp; // здесь минуты 107 | str += ":"; 108 | Time = (Time - temp * 60); // отбросим минуты здесь секунды 109 | if (Time < 10) str += "0"; 110 | str += Time; 111 | return str; 112 | } 113 | -------------------------------------------------------------------------------- /Upgrade.ino: -------------------------------------------------------------------------------- 1 | void initUpgrade() { 2 | // Добавляем функцию Update для перезаписи прошивки по Wi-Fi при 1М(256K SPIFFS) и выше 3 | httpUpdater.setup(&HTTP); 4 | HTTP.on("/upgrade", webUpgrade); // запустить обновление 5 | modulesReg("upgrade"); 6 | } 7 | // ----------------------- Обновление с сайта 8 | void webUpgrade() { 9 | String refresh = "

Update module...
90 seconds...

"; 10 | httpOkHtml(refresh); 11 | //httpOkJson(refresh); 12 | String Timerset = readFile(configTimerS, 4096); 13 | String spiffsData = HTTP.arg(spiffsS); 14 | if (spiffsData != emptyS) { 15 | spiffsData = spiffsData.substring(spiffsData.lastIndexOf("/") + 1); // выделяем имя файла 16 | ESPhttpUpdate.rebootOnUpdate(false); 17 | //Serial.println(spiffsData); 18 | t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs(HTTP.arg(spiffsS)); 19 | switch(ret) { 20 | case HTTP_UPDATE_FAILED: 21 | sendSetup(spiffsDataS, "Spiffs_FAILED"); 22 | statistics(); 23 | break; 24 | case HTTP_UPDATE_NO_UPDATES: 25 | sendSetup(spiffsDataS, "Spiffs_NO_UPDATES"); 26 | statistics(); 27 | break; 28 | case HTTP_UPDATE_OK: 29 | sendSetup(spiffsDataS, "Spiffs_UPDATE_OK"); 30 | statistics(); 31 | break; 32 | } 33 | writeFile(configTimerS, Timerset); 34 | if (Scenary !=emptyS){ 35 | writeFile(ScenaryS, Scenary); 36 | } 37 | sendSetup(spiffsDataS, spiffsData); 38 | saveConfigSetup (); 39 | } 40 | String buildData = HTTP.arg("build"); 41 | if (buildData != emptyS) { 42 | //Serial.println(buildData); 43 | writeFile("buildPach.txt", buildData); 44 | buildData = buildData.substring(buildData.lastIndexOf("/") + 1); // выделяем имя файла 45 | sendSetup(buildDataS, buildData); 46 | saveConfigSetup (); 47 | ESPhttpUpdate.rebootOnUpdate(true); 48 | String updatePatch = "http://backup.privet.lv/esp/sonoff/Sonoff_Updater.ino.generic.bin"; 49 | //Serial.println(updatePatch); 50 | t_httpUpdate_return jet = ESPhttpUpdate.update(updatePatch); 51 | switch(jet) { 52 | case HTTP_UPDATE_FAILED: 53 | sendSetup(buildDataS, "build_FAILED"); 54 | statistics(); 55 | break; 56 | case HTTP_UPDATE_NO_UPDATES: 57 | sendSetup(buildDataS, "build_NO_UPDATES"); 58 | statistics(); 59 | break; 60 | case HTTP_UPDATE_OK: 61 | sendSetup(buildDataS, "build_UPDATE_OK"); 62 | statistics(); 63 | break; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.08.bin -------------------------------------------------------------------------------- /build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.09.bin -------------------------------------------------------------------------------- /build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.10.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.10.bin -------------------------------------------------------------------------------- /build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.11.bin -------------------------------------------------------------------------------- /build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.14.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.14.bin -------------------------------------------------------------------------------- /build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/build.0x00000_flash_size_1Mb.256Kb_2016.12.16.bin -------------------------------------------------------------------------------- /build/2016/spiffs.0xBB000_flash_size_1Mb.256Kb_2016.12.14.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/spiffs.0xBB000_flash_size_1Mb.256Kb_2016.12.14.bin -------------------------------------------------------------------------------- /build/2016/spiffs.0xBB000_flash_size_1Mb.256Kb_2016.12.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2016/spiffs.0xBB000_flash_size_1Mb.256Kb_2016.12.16.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.01.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.01.09.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.01.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.01.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.02.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.04.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.04.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.06.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.06.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.09.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.18.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.18.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.20.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.21.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.22.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.22.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.23.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.23.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.24.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.25.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.02.25.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.02.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.09.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.22.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.22.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.03.24.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.18.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.18.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.20.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.22.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.22.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.23.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.23.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.04.24.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.07.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.08.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.15.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.15.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.16.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.17.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.26.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.26.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.28.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.28.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.05.31.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.02.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.03.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.03.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.05.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.05.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.06.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.06.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.07.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.08.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.12.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.12.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.17.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.06.21.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.04.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.04.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.05.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.05.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.06.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.06.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.07.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.10.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.10.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.11.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.12.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.12.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.14.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.14.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.16.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.17.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.07.31.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.01.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.01.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.05.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.05.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.07.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.08.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.09.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.10.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.10.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.21.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.29.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.29.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.30.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.08.31.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.04.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.04.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.11.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.13.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.13.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.09.20.bin -------------------------------------------------------------------------------- /build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.10.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/build.0x00000_flash_size_1Mb.256Kb_2017.10.11.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.01.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.01.09.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.02.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.04.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.04.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.06.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.06.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.09.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.18.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.18.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.20.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.23.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.02.23.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.02.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.09.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.22.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.22.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.03.24.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.18.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.18.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.20.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.22.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.22.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.23.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.23.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.24.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.04.24.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.07.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.08.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.15.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.15.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.16.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.17.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.26.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.26.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.28.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.28.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.05.31.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.02.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.03.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.03.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.05.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.05.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.06.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.06.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.07.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.08.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.12.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.12.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.17.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.06.21.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.04.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.04.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.05.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.05.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.06.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.06.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.07.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.10.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.10.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.11.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.12.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.12.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.14.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.14.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.16.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.17.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.17.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.07.31.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.01.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.01.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.05.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.05.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.07.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.07.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.08.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.08.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.09.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.09.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.10.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.10.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.21.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.21.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.29.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.29.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.30.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.30.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.31.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.08.31.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.04.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.04.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.11.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.13.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.13.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.20.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.09.20.bin -------------------------------------------------------------------------------- /build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.10.11.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/2017/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.10.11.bin -------------------------------------------------------------------------------- /build/ESP8266Flasher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/ESP8266Flasher.exe -------------------------------------------------------------------------------- /build/README.md: -------------------------------------------------------------------------------- 1 | # Specification .bin files 2 | 3 | - Module: Generic ESP8266 Module 4 | - Flash Size: 1M(256K SPIFFS) 5 | - CPU Frequency: 80Mhz 6 | - Flash Mode: dio 7 | - Flash Frequency: 40Mhz 8 | - Upload Speed: 115200 9 | 10 | 11 | ## NodeMCU Flasher 12 | 13 | [https://github.com/nodemcu/nodemcu-flasher](https://github.com/nodemcu/nodemcu-flasher) 14 | 15 | Download Release: [Win32](https://github.com/nodemcu/nodemcu-flasher/blob/master/Win32/Release/ESP8266Flasher.exe) or 16 | [Win64](https://github.com/nodemcu/nodemcu-flasher/blob/master/Win64/Release/ESP8266Flasher.exe). 17 | 18 | ### Usage 19 | 20 | ![alt](https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/master/tutorial/nodemcu-flasher.png) 21 | 22 | 23 | ![alt](https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/master/tutorial/esp8266_wiring.png) 24 | -------------------------------------------------------------------------------- /build/Sonoff_Updater.ino.generic.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/Sonoff_Updater.ino.generic.bin -------------------------------------------------------------------------------- /build/Sonoff_Updater2.ino.generic.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/Sonoff_Updater2.ino.generic.bin -------------------------------------------------------------------------------- /build/build.0x00000_flash_size_1Mb.256Kb_2017.10.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/build.0x00000_flash_size_1Mb.256Kb_2017.10.16.bin -------------------------------------------------------------------------------- /build/build.0x00000_flash_size_1Mb.256Kb_2018.12.02.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/build.0x00000_flash_size_1Mb.256Kb_2018.12.02.bin -------------------------------------------------------------------------------- /build/build.0x00000_flash_size_1Mb.256Kb_2018.12.03.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/build.0x00000_flash_size_1Mb.256Kb_2018.12.03.bin -------------------------------------------------------------------------------- /build/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.10.16.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/spiffs.0xBB000_flash_size_1Mb.256Kb_2017.10.16.bin -------------------------------------------------------------------------------- /build/spiffs.0xBB000_flash_size_1Mb.256Kb_2018.12.03.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/build/spiffs.0xBB000_flash_size_1Mb.256Kb_2018.12.03.bin -------------------------------------------------------------------------------- /data/block-A0.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-A0.htm.gz -------------------------------------------------------------------------------- /data/block-analog.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-analog.htm.gz -------------------------------------------------------------------------------- /data/block-humidity.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-humidity.htm.gz -------------------------------------------------------------------------------- /data/block-jalousie.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-jalousie.htm.gz -------------------------------------------------------------------------------- /data/block-leakag.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-leakag.htm.gz -------------------------------------------------------------------------------- /data/block-livolo.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-livolo.htm.gz -------------------------------------------------------------------------------- /data/block-macros.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-macros.htm.gz -------------------------------------------------------------------------------- /data/block-pow.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-pow.htm.gz -------------------------------------------------------------------------------- /data/block-relay.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-relay.htm.gz -------------------------------------------------------------------------------- /data/block-rgb.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-rgb.htm.gz -------------------------------------------------------------------------------- /data/block-rgb0.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-rgb0.htm.gz -------------------------------------------------------------------------------- /data/block-rgb1.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-rgb1.htm.gz -------------------------------------------------------------------------------- /data/block-rgbs.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-rgbs.htm.gz -------------------------------------------------------------------------------- /data/block-shim.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-shim.htm.gz -------------------------------------------------------------------------------- /data/block-temperature.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/block-temperature.htm.gz -------------------------------------------------------------------------------- /data/buildpach.txt: -------------------------------------------------------------------------------- 1 | http://backup.privet.lv/esp/sonoff/build.0x00000_flash_size_1Mb.256Kb_2018.12.02.bin -------------------------------------------------------------------------------- /data/chart.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/chart.json.gz -------------------------------------------------------------------------------- /data/command-help.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/command-help.json.gz -------------------------------------------------------------------------------- /data/config.save.json: -------------------------------------------------------------------------------- 1 | {"lang":"ru","setIndex":"","SSDP":"Sonoff","space":"home","ssid":"","ssidPass":"","wifiConnect":15,"wifiBlink":13,"checkboxIP":"0","ip":"","subnet":"","getway":"","dns":"","timeZone":8,"ssidAP":"Sonoff-Start","ssidApPass":"","configs":"sonoff-rf","ddns":"","ddnsName":"","ddnsPort":8080,"mqttServer":"","mqttPort":15535,"mqttUser":"","mqttPass":"","time":"00:00:00"} -------------------------------------------------------------------------------- /data/configs.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/configs.json.gz -------------------------------------------------------------------------------- /data/configs/jalousie.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | RELAY 16 1 0 0 {{LangrelayName}}_1 7 | # RELAY 15 2 0 0 {{LangrelayName}}_2 8 | # RELAY 13 3 0 0 {{LangrelayName}}_3 9 | # RELAY 14 4 0 0 {{LangrelayName}}_4 10 | // {{LangConfSerial}} 11 | # UART 115200 12 | # print print 13 | // {{LangConfNTP}} 14 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 15 | // {{LangConfTIMERS}} 16 | TIMERS 17 | // {{LangConfDDNS}} 18 | # DDNS 19 | // {{LangConfDHT}} 20 | # DHT 14 21 | // {{LangConfDS18B20}} 22 | # DS18B20 14 23 | // Подключается только на 4 и 5 GPIO, совместно с DHT не работает. 24 | # SI7021 25 | // {{LangConfA0}} 26 | # A0 27 | // {{LangConfTach}} 28 | TACH 0 0 20 0 29 | # TACH 0 1 20 0 30 | # TACH 0 2 20 0 31 | # TACH 0 3 20 0 32 | # TACH 0 4 20 0 33 | # TACH 0 5 20 0 34 | # TACH 0 6 20 0 35 | # TACH 0 7 20 0 36 | // {{LangConfBUZZER}} 37 | # BUZZER 16 38 | // {{LangConfRGB}} 39 | # RGB 5 15 0 ff0000 100 255 3 {{LangrgbName}} 40 | // {{LangConfRGBS}} 41 | # SRGB 12 4 5 0 ffffff 100 255 {{LangrgbName}} 42 | // {{LangConfJalousie}} 43 | JALOUSIE 4 12 13 44 | // {{LangConfRfReceived}} 45 | # RF-RECEIVED 3 433 46 | // {{LangConfRfTransmitter}} 47 | # RF-TRANSMITTER 1 433 48 | # RF-LIVOLO 1 49 | // {{LangConfIrReceived}} 50 | # IR-RECEIVED 0 51 | // {{LangConfIrTransmitter}} 52 | # IR-TRANSMITTER 14 53 | // {{LangConfMQTT}} 54 | # MQTT 55 | // {{LangConfAdmin}} 56 | # ADMIN -------------------------------------------------------------------------------- /data/configs/manually.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 17 1 1 0 LedConnectedWiFi 5 | # PINOUT 21 2 0 0 PinOutName2 6 | # PINOUT 37 3 0 0 PinOutName3 7 | // {{LangConfRelay}} 8 | # RELAY 18 1 1 0 {{LangrelayName}}_1 9 | # RELAY 22 2 0 0 {{LangrelayName}}_2 10 | # RELAY 38 3 0 0 {{LangrelayName}}_3 11 | # RELAY 14 4 0 0 {{LangrelayName}}_4 12 | // {{LangConfSerial}} 13 | # UART 115200 14 | # print print 15 | // {{LangConfNTP}} 16 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 17 | // {{LangConfTIMERS}} 18 | TIMERS 19 | // {{LangConfDDNS}} 20 | # DDNS 21 | // {{LangConfDHT}} 22 | # DHT 14 23 | // {{LangConfDS18B20}} 24 | # DS18B20 14 25 | // Подключается только на 4 и 5 GPIO, совместно с DHT не работает. 26 | # SI7021 27 | // {{LangConfA0}} 28 | A0 29 | // {{LangConfTach}} 30 | # TACH 0 0 20 0 31 | # TACH 0 1 20 0 32 | # TACH 0 2 20 0 33 | # TACH 0 3 20 0 34 | # TACH 0 4 20 0 35 | # TACH 0 5 20 0 36 | # TACH 0 6 20 0 37 | # TACH 0 7 20 0 38 | // {{LangConfBUZZER}} 39 | # BUZZER 16 40 | // {{LangConfRGB}} 41 | # RGB 5 15 0 ff0000 100 255 3 {{LangrgbName}} 42 | // {{LangConfNRGB}} 43 | # NRGB 1 0 0 15 0 ff5000 200 255 0 44 | # NRGB 3 1 1 15 0 ff5000 200 255 0 45 | // Включить аудио модуль 46 | AUDIO 47 | // Пуль 48 | PULT 9600 13 15 2 49 | // {{LangConfRGBS}} 50 | # SRGB 12 4 5 0 ffffff 100 255 {{LangrgbName}} 51 | // {{LangConfJalousie}} 52 | # JALOUSIE 4 12 13 53 | // {{LangConfRfReceived}} 54 | # RF-RECEIVED 3 433 55 | // {{LangConfRfTransmitter}} 56 | # RF-TRANSMITTER 1 433 57 | # RF-LIVOLO 1 58 | // {{LangConfIrReceived}} 59 | # IR-RECEIVED 0 60 | // {{LangConfIrTransmitter}} 61 | # IR-TRANSMITTER 14 62 | # RC522 63 | // {{LangConfMQTT}} 64 | # MQTT 65 | // {{LangConfAdmin}} 66 | ADMIN 67 | -------------------------------------------------------------------------------- /data/configs/rgb-shim.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | # RELAY 12 1 0 0 {{LangrelayName}}_1 7 | # RELAY 15 2 0 0 {{LangrelayName}}_2 8 | # RELAY 13 3 0 0 {{LangrelayName}}_3 9 | # RELAY 14 4 0 0 {{LangrelayName}}_4 10 | // {{LangConfSerial}} 11 | # UART 115200 12 | # print print 13 | // {{LangConfNTP}} 14 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 15 | // {{LangConfTIMERS}} 16 | TIMERS 17 | // {{LangConfDDNS}} 18 | # DDNS 19 | // {{LangConfDHT}} 20 | # DHT 14 21 | // {{LangConfDS18B20}} 22 | # DS18B20 14 23 | // Подключается только на 4 и 5 GPIO, совместно с DHT не работает. 24 | # SI7021 25 | // {{LangConfA0}} 26 | # A0 27 | // {{LangConfTach}} 28 | TACH 0 0 20 0 29 | # TACH 0 1 20 0 30 | # TACH 0 2 20 0 31 | # TACH 0 3 20 0 32 | # TACH 0 4 20 0 33 | # TACH 0 5 20 0 34 | # TACH 0 6 20 0 35 | # TACH 0 7 20 0 36 | // {{LangConfBUZZER}} 37 | # BUZZER 16 38 | // {{LangConfRGB}} 39 | # RGB 5 15 0 ff0000 100 255 3 {{LangrgbName}} 40 | // {{LangConfNRGB}} 41 | # NRGB 1 0 0 15 0 ff5000 200 255 0 42 | # NRGB 3 1 1 15 0 ff5000 200 255 0 43 | // {{LangConfRGBS}} 44 | # SRGB 12 4 5 0 ffffff 100 255 {{LangrgbName}} 45 | // Видимый ШИМ <Номер реле> <ШИМ> <Инверсия> <Имя кнопи реле> 46 | SHIM 12 0 100 1 R 47 | SHIM 13 1 10 1 R 48 | SHIM 14 2 10 1 R 49 | // Невидимый ШИМ <Номер реле> <ШИМ> <Инверсия> <Имя кнопи реле> 50 | # SHIMOUT 4 1 0 0 G 51 | # SHIMOUT 5 2 0 0 B 52 | // {{LangConfJalousie}} 53 | # JALOUSIE 4 12 13 54 | // {{LangConfRfReceived}} 55 | # RF-RECEIVED 3 433 56 | // {{LangConfRfTransmitter}} 57 | # RF-TRANSMITTER 1 433 58 | # RF-LIVOLO 1 59 | // {{LangConfIrReceived}} 60 | # IR-RECEIVED 0 61 | // {{LangConfIrTransmitter}} 62 | # IR-TRANSMITTER 14 63 | // {{LangConfMQTT}} 64 | # MQTT 65 | // {{LangConfAdmin}} 66 | # ADMIN 67 | -------------------------------------------------------------------------------- /data/configs/rgb.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | # RELAY 12 1 0 0 {{LangrelayName}}_1 7 | # RELAY 15 2 0 0 {{LangrelayName}}_2 8 | # RELAY 13 3 0 0 {{LangrelayName}}_3 9 | # RELAY 14 4 0 0 {{LangrelayName}}_4 10 | // {{LangConfSerial}} 11 | # UART 115200 12 | # print print 13 | // {{LangConfNTP}} 14 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 15 | // {{LangConfTIMERS}} 16 | TIMERS 17 | // {{LangConfDDNS}} 18 | # DDNS 19 | // {{LangConfDHT}} 20 | # DHT 14 21 | // {{LangConfDS18B20}} 22 | # DS18B20 14 23 | // Подключается только на 4 и 5 GPIO, совместно с DHT не работает. 24 | # SI7021 25 | // {{LangConfA0}} 26 | # A0 27 | // {{LangConfTach}} 28 | TACH 0 0 20 0 29 | # TACH 0 1 20 0 30 | # TACH 0 2 20 0 31 | # TACH 0 3 20 0 32 | # TACH 0 4 20 0 33 | # TACH 0 5 20 0 34 | # TACH 0 6 20 0 35 | # TACH 0 7 20 0 36 | // {{LangConfBUZZER}} 37 | # BUZZER 16 38 | // {{LangConfRGB}} 39 | RGB 2 15 0 ff00s00 100 255 3 {{LangrgbName}} 40 | // {{LangConfNRGB}} 41 | NRGB 1 0 0 15 0 ff5000 200 255 0 42 | # NRGB 3 1 1 15 0 ff5000 200 255 0 43 | // {{LangConfRGBS}} 44 | # SRGB 12 4 5 0 ffffff 100 255 {{LangrgbName}} 45 | // {{LangConfJalousie}} 46 | # JALOUSIE 4 12 13 47 | // {{LangConfRfReceived}} 48 | # RF-RECEIVED 3 433 49 | // {{LangConfRfTransmitter}} 50 | # RF-TRANSMITTER 1 433 51 | # RF-LIVOLO 1 52 | // {{LangConfIrReceived}} 53 | # IR-RECEIVED 0 54 | // {{LangConfIrTransmitter}} 55 | # IR-TRANSMITTER 14 56 | // {{LangConfMQTT}} 57 | # MQTT 58 | // {{LangConfAdmin}} 59 | # ADMIN 60 | -------------------------------------------------------------------------------- /data/configs/smart-room.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | RELAY 12 1 1 1 {{LangrelayName}}_1 7 | RELAY 15 2 1 1 {{LangrelayName}}_2 8 | RELAY 13 3 1 1 {{LangrelayName}}_3 9 | // {{LangConfSerial}} 10 | # UART 115200 11 | # print print 12 | // {{LangConfNTP}} 13 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 14 | // {{LangConfTIMERS}} 15 | TIMERS 16 | // {{LangConfDDNS}} 17 | DDNS 18 | // {{LangConfDHT}} 19 | # DHT 4 20 | // {{LangConfDS18B20}} 21 | # DS18B20 5 22 | // Подключается только на 4 и 5 GPIO, совместно с DHT не работает. 23 | # SI7021 24 | // {{LangConfA0}} 25 | A0 26 | // {{LangConfTach}} 27 | # TACH 0 0 20 0 28 | # TACH 2 1 20 0 29 | // {{LangConfBUZZER}} 30 | # BUZZER 16 31 | # tone 2400 200 32 | // {{LangConfRGB}} 33 | # RGB 5 15 1 ff0000 100 255 3 {{LangrgbName}} 34 | // {{LangConfRGBS}} 35 | # SRGB 3 4 5 1 ffffff 100 255 {{LangrgbName}} 36 | // {{LangConfJalousie}} 37 | # JALOUSIE 3 4 5 38 | // {{LangConfRfReceived}} 39 | # RF-RECEIVED 3 433 40 | // {{LangConfRfTransmitter}} 41 | # RF-TRANSMITTER 1 433 42 | # RF-LIVOLO 1 43 | // {{LangConfIrReceived}} 44 | IR-RECEIVED 0 45 | // {{LangConfIrTransmitter}} 46 | IR-TRANSMITTER 14 47 | // {{LangConfMQTT}} 48 | MQTT 49 | // {{LangConfAdmin}} 50 | ADMIN -------------------------------------------------------------------------------- /data/configs/sonoff-pow.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | RELAY 12 1 1 0 {{LangrelayName}}_1 7 | // {{LangConfSerial}} 8 | # UART 115200 9 | # print print 10 | // {{LangConfNTP}} 11 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 12 | // {{LangConfTIMERS}} 13 | TIMERS 14 | // {{LangConfDDNS}} 15 | # DDNS 16 | // {{LangConfTach}} 17 | TACH 0 0 20 0 18 | # TACH 0 1 20 0 19 | # TACH 0 2 20 0 20 | // {{LangConfPOW}} 21 | POW 2000 22 | # POW 2000 14 13 5 23 | // {{LangConfMQTT}} 24 | # MQTT 25 | // {{LangConfAdmin}} 26 | # ADMIN -------------------------------------------------------------------------------- /data/configs/sonoff-rf.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | RELAY 12 1 1 0 {{LangrelayName}}_1 7 | // {{LangConfSerial}} 8 | # UART 115200 9 | # print print 10 | // {{LangConfNTP}} 11 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 12 | // {{LangConfTIMERS}} 13 | TIMERS 14 | // {{LangConfDDNS}} 15 | # DDNS 16 | // {{LangConfDHT}} 17 | # DHT 4 18 | // {{LangConfDS18B20}} 19 | # DS18B20 14 20 | // {{LangConfTach}} 21 | TACH 0 0 20 0 22 | # TACH 0 1 20 0 23 | # TACH 0 2 20 0 24 | // {{LangConfMQTT}} 25 | # MQTT 26 | // {{LangConfAdmin}} 27 | # ADMIN -------------------------------------------------------------------------------- /data/configs/wifi-relay-5v.txt: -------------------------------------------------------------------------------- 1 | // {{LangUpgrade1}} 2 | UPGRADE 3 | // {{LangConfPinout}} 4 | # PINOUT 13 1 1 0 LedConnectedWiFi 5 | // {{LangConfRelay}} 6 | RELAY 18 1 1 0 {{LangrelayName}}_1 7 | RELAY 19 2 1 0 {{LangrelayName}}_2 8 | RELAY 20 3 1 0 {{LangrelayName}}_3 9 | RELAY 21 4 1 0 {{LangrelayName}}_4 10 | // {{LangConfNTP}} 11 | NTP ntp1.vniiftri.ru ntp2.vniiftri.ru 12 | // {{LangConfTIMERS}} 13 | TIMERS 14 | // {{LangConfDDNS}} 15 | # DDNS 16 | // {{LangConfDHT}} 17 | # DHT 14 18 | // {{LangConfDS18B20}} 19 | # DS18B20 14 20 | // Подключается только на 4 и 5 GPIO, совместно с DHT не работает. 21 | # SI7021 22 | // {{LangConfA0}} 23 | # A0 24 | // {{LangConfTach}} 25 | TACH 0 0 20 0 26 | # TACH 0 1 20 0 27 | # TACH 0 2 20 0 28 | // {{LangConfBUZZER}} 29 | # BUZZER 16 30 | // {{LangConfRGB}} 31 | # RGB 5 15 0 ff0000 100 255 3 {{LangrgbName}} 32 | // {{LangConfRGBS}} 33 | # SRGB 12 4 5 0 ffffff 100 255 {{LangrgbName}} 34 | // {{LangConfJalousie}} 35 | # JALOUSIE 4 12 13 36 | // {{LangConfRfReceived}} 37 | # RF-RECEIVED 3 433 38 | // {{LangConfRfTransmitter}} 39 | # RF-TRANSMITTER 1 433 40 | # RF-LIVOLO 1 41 | // {{LangConfIrReceived}} 42 | # IR-RECEIVED 0 43 | // {{LangConfIrTransmitter}} 44 | # IR-TRANSMITTER 14 45 | // {{LangConfMQTT}} 46 | # MQTT 47 | // {{LangConfAdmin}} 48 | # ADMIN -------------------------------------------------------------------------------- /data/css/build.css.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/css/build.css.gz -------------------------------------------------------------------------------- /data/debug.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/debug.json.gz -------------------------------------------------------------------------------- /data/donate.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/donate.htm.gz -------------------------------------------------------------------------------- /data/edit.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/edit.htm.gz -------------------------------------------------------------------------------- /data/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/favicon.ico -------------------------------------------------------------------------------- /data/first-connect.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/first-connect.json.gz -------------------------------------------------------------------------------- /data/furnace.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/furnace.json.gz -------------------------------------------------------------------------------- /data/header.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/header.json.gz -------------------------------------------------------------------------------- /data/help.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/help.htm.gz -------------------------------------------------------------------------------- /data/img/swatches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/img/swatches.png -------------------------------------------------------------------------------- /data/img/swatches1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/img/swatches1.png -------------------------------------------------------------------------------- /data/index.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index.htm.gz -------------------------------------------------------------------------------- /data/index.htm.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index.htm.json.gz -------------------------------------------------------------------------------- /data/index.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index.json.gz -------------------------------------------------------------------------------- /data/index2.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index2.htm.gz -------------------------------------------------------------------------------- /data/index2.htm.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index2.htm.json.gz -------------------------------------------------------------------------------- /data/index3.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index3.htm.gz -------------------------------------------------------------------------------- /data/index3.htm.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index3.htm.json.gz -------------------------------------------------------------------------------- /data/index4.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index4.htm.gz -------------------------------------------------------------------------------- /data/index4.htm.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index4.htm.json.gz -------------------------------------------------------------------------------- /data/index5.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index5.htm.gz -------------------------------------------------------------------------------- /data/index5.htm.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index5.htm.json.gz -------------------------------------------------------------------------------- /data/index6.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index6.htm.gz -------------------------------------------------------------------------------- /data/index6.htm.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/index6.htm.json.gz -------------------------------------------------------------------------------- /data/jalousie.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/jalousie.json.gz -------------------------------------------------------------------------------- /data/js/build.chart.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/js/build.chart.js.gz -------------------------------------------------------------------------------- /data/js/function.js.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/js/function.js.gz -------------------------------------------------------------------------------- /data/lang/lang.en.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/lang/lang.en.json.gz -------------------------------------------------------------------------------- /data/lang/lang.lv.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/lang/lang.lv.json.gz -------------------------------------------------------------------------------- /data/lang/lang.ru.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/lang/lang.ru.json.gz -------------------------------------------------------------------------------- /data/lang/lang.ua.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/lang/lang.ua.json.gz -------------------------------------------------------------------------------- /data/livolo.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/livolo.json.gz -------------------------------------------------------------------------------- /data/new_page.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "./lang/lang.ru.json" 4 | ], 5 | "title": [{ 6 | "type":"text", 7 | "title":"NewPage" 8 | }], 9 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 10 | "content":[ 11 | 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /data/page.htm.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/page.htm.gz -------------------------------------------------------------------------------- /data/relay.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/relay.json.gz -------------------------------------------------------------------------------- /data/relay1.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs": [ 3 | 4 | "/config.live.json", 5 | "/config.setup.json", 6 | "/lang/lang.ru.json", 7 | "socket {{ip}}:81/" 8 | ], 9 | "title": "Главная", 10 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 11 | "content": [ 12 | { 13 | "type": "h5", 14 | "title": "{{SSDP}}", 15 | "class":"alert-warning" 16 | }, 17 | { 18 | "type": "h2", 19 | "title": "{{relay1}}" 20 | }, 21 | { 22 | "type":"button", 23 | "title":"({{state5}}?'{{LangOff}}':'{{LangOn}}')", 24 | "name":"relay2", 25 | "response":"[[relay2]]", 26 | "action":"pin?n=5", 27 | "class":"'btn btn-block btn-'+({{state5}}?'danger':'primary')" 28 | }, 29 | { 30 | "type": "hr" 31 | }, 32 | { 33 | "type": "link", 34 | "title": "Таймеры", 35 | "action": "/page.htm?timers", 36 | "class": "btn btn-block btn-success" 37 | }, 38 | { 39 | "type": "link", 40 | "title": "Конфигурация WIFI", 41 | "action": "/page.htm?setup", 42 | "class": "btn btn-block btn-success" 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /data/rgb.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/rgb.json.gz -------------------------------------------------------------------------------- /data/rgb0.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/rgb0.json.gz -------------------------------------------------------------------------------- /data/rgb1.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/rgb1.json.gz -------------------------------------------------------------------------------- /data/rgbs.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/rgbs.json.gz -------------------------------------------------------------------------------- /data/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: * -------------------------------------------------------------------------------- /data/scenary.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary.json.gz -------------------------------------------------------------------------------- /data/scenary.save.txt: -------------------------------------------------------------------------------- 1 | if Tach0 = 1 2 | then this relay not 1 3 | id 3345 4 | if Tach0 = 1 5 | then this rgb not 6 | id 2334 7 | if Tach0 = 1 8 | then this rgbs not 9 | id 2373 10 | if Tach0 = 1 11 | then this jalousie not 12 | id 1967 13 | -------------------------------------------------------------------------------- /data/scenary/jalousie.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/jalousie.txt -------------------------------------------------------------------------------- /data/scenary/manually.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/manually.txt -------------------------------------------------------------------------------- /data/scenary/rgb-shim.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/rgb-shim.txt -------------------------------------------------------------------------------- /data/scenary/rgb.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/rgb.txt -------------------------------------------------------------------------------- /data/scenary/smart-room.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/smart-room.txt -------------------------------------------------------------------------------- /data/scenary/sonoff-pow.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/sonoff-pow.txt -------------------------------------------------------------------------------- /data/scenary/sonoff-rf.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/sonoff-rf.txt -------------------------------------------------------------------------------- /data/scenary/wifi-relay-5v.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/scenary/wifi-relay-5v.txt -------------------------------------------------------------------------------- /data/setup.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/setup.json.gz -------------------------------------------------------------------------------- /data/shim.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/shim.json.gz -------------------------------------------------------------------------------- /data/starting.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/starting.json.gz -------------------------------------------------------------------------------- /data/timer.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/data/timer.json.gz -------------------------------------------------------------------------------- /data/timer.save.json: -------------------------------------------------------------------------------- 1 | {"timer":[]} 2 | -------------------------------------------------------------------------------- /dev_data/block-A0.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |

{{LangA0}}

5 |
6 |
7 | {{LangOptions1}} 8 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /dev_data/block-humidity.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |

{{LangHumidity}}

5 |
6 |
7 | {{LangOptions1}} 8 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /dev_data/block-jalousie.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 |
12 |
13 | {{LangOptions1}} 14 | 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /dev_data/block-leakag.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 |
12 |
13 | {{LangOptions1}} 14 | 15 |
16 |
17 |
18 | -------------------------------------------------------------------------------- /dev_data/block-livolo.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 | {{LangOptions1}} 24 | 25 |
26 |
27 |
28 | -------------------------------------------------------------------------------- /dev_data/block-macros.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | {{macrosList}} 11 |
12 | 15 |
16 |
17 | -------------------------------------------------------------------------------- /dev_data/block-pow.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |

POW

5 |
6 |
7 | {{LangOptions1}} 8 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /dev_data/block-relay.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 | 12 | 13 | 14 | 15 |
16 |
17 | {{LangOptions1}} 18 | 19 |
20 |
21 |
22 | -------------------------------------------------------------------------------- /dev_data/block-rgb.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 | 12 |
13 |
14 | {{LangOptions1}} 15 | 16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /dev_data/block-rgb0.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 | 12 |
13 |
14 | {{LangOptions1}} 15 | 16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /dev_data/block-rgb1.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 | 12 |
13 |
14 | {{LangOptions1}} 15 | 16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /dev_data/block-rgbs.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | 6 | 7 |
    {{timerList}}
8 |
9 |
10 | 11 | 12 |
13 |
14 | {{LangOptions1}} 15 | 16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /dev_data/block-shim.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |
5 | {{LangOptions1}} 6 | 7 |
8 |
9 |
10 | -------------------------------------------------------------------------------- /dev_data/block-temperature.htm: -------------------------------------------------------------------------------- 1 |
2 |
3 |
{{SSDP}}
4 |

{{LangTemperature}}

5 |
6 |
7 | {{LangOptions1}} 8 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /dev_data/chart.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangChart}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-default" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"chart", 27 | "title":"{{LangChart}}", 28 | "state":"charts.json?data={{urlArray1}}&data1={{urlArray2}}&data2={{urlArray3}}", 29 | "style":"height:400px;margin-left:-20px", 30 | "options":"fullWidth:true" 31 | }, 32 | 33 | 34 | { 35 | "type":"link", 36 | "title":" {{LangSetting3}}", 37 | "action":"/page.htm?setup", 38 | "class":"btn btn-block btn-default" 39 | }, 40 | { 41 | "type":"link", 42 | "module":"admin", 43 | "title":"{{LangReset1}}", 44 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 45 | "class":"btn btn-block btn-warning" 46 | } 47 | 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /dev_data/configs.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs": [ 3 | "/config.setup.json", 4 | "/lang/lang.{{lang}}.json", 5 | "/modules.json" 6 | ], 7 | "title": [{ 8 | "type":"text", 9 | "title":"Configs" 10 | }], 11 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 12 | "content": [ 13 | { 14 | "type":"h5", 15 | "title":"{{SSDP}}", 16 | "class":"alert-default" 17 | }, 18 | 19 | { 20 | "type":"loadJson", 21 | "state":"header.json" 22 | }, 23 | 24 | { 25 | "type":"h2", 26 | "title":"{{LangType}} {{configs}}" 27 | }, 28 | { 29 | "type":"text", 30 | "name":"alert-gpio", 31 | "title":"NodeMCU, Wemos to ESP GPIO PIN:
RX = GPIO 3
TX = GPIO 1
D0 = GPIO 16
D1 = GPIO 5
D2 = GPIO 4
D3 = GPIO 0
D4 = GPIO 2
D5 = GPIO 14
D6 = GPIO 12
D7 = GPIO 13
D8 = GPIO 15
", 32 | "class":"alert alert-info {{alert-gpio}}" 33 | }, 34 | { 35 | "type":"configs", 36 | "state":"{{urlArray1}}.txt" 37 | }, 38 | { 39 | "type":"text", 40 | "name":"alert-cloud", 41 | "title":"{{LangCloud}}", 42 | "class":"alert alert-info {{alert-cloud}}", 43 | "style":"margin-top:20px;" 44 | }, 45 | { 46 | "type":"hr" 47 | }, 48 | { 49 | "type":"link", 50 | "title":" {{LangSetting3}}", 51 | "action":"/page.htm?setup", 52 | "class":"btn btn-block btn-default" 53 | }, 54 | { 55 | "type":"link", 56 | "module":"admin", 57 | "title":"{{LangReset1}}", 58 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 59 | "class":"btn btn-block btn-warning" 60 | } 61 | 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /dev_data/debug.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.options.json", 4 | "/lang/lang.{{lang}}.json", 5 | "/config.admin.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"Debug" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-danger" 18 | }, 19 | { 20 | "type":"loadJson", 21 | "state":"header.json" 22 | }, 23 | { 24 | "type":"text", 25 | "class":"alert alert-dismissible alert-info", 26 | "title":"
GitHub Wiki
GET управление
JSON файлы системы и local help
Возможности page.htm?*
MQTT управление
Часто задоваемые вопросы
{{LangNewIssues}}" 27 | }, 28 | { 29 | "type":"hr" 30 | }, 31 | 32 | { 33 | "type":"input", 34 | "name":"config-button", 35 | "state":"{{configs}}", 36 | "style":"display:none" 37 | }, 38 | 39 | { 40 | "type":"text", 41 | "title":"{{LangUpgradeBeta}}
{{LangUpgradeInfo}}


", 42 | "style":"width:50%;display:inline" 43 | }, 44 | { 45 | "type":"link", 46 | "title":"Spiffs", 47 | "action":"/upgrade?spiffs=http://backup.privet.lv/esp/Sonoff_WiFi_switch.spiffs.bin", 48 | "class":"btn btn-block btn-default", 49 | "style":"width:50%;display:inline" 50 | }, 51 | { 52 | "type":"link", 53 | "title":"Build", 54 | "action":"/upgrade?build=http://backup.privet.lv/esp/Sonoff_WiFi_switch.ino.generic.bin", 55 | "class":"btn btn-block btn-default", 56 | "style":"width:50%;display:inline" 57 | }, 58 | { 59 | "type":"link", 60 | "title":"Spiffs & Build", 61 | "action":"/upgrade?spiffs=http://backup.privet.lv/esp/Sonoff_WiFi_switch.spiffs.bin&build=http://backup.privet.lv/esp/Sonoff_WiFi_switch.ino.generic.bin", 62 | "class":"btn btn-block btn-default", 63 | "style":"width:50%;display:inline" 64 | }, 65 | { 66 | "type":"hr" 67 | }, 68 | { 69 | "type":"scenary-test" 70 | }, 71 | { 72 | "type":"hr" 73 | }, 74 | { 75 | "type":"h4", 76 | "title":"('{{flashChip}}'.slice(4)=='85'?'Flash Chip: {{flashChip}} Bad':'Flash Chip: {{flashChip}}')", 77 | "style":"text-align:left;" 78 | }, 79 | { 80 | "type":"h4", 81 | "title":"Flash Size: {{ideFlashSize}} bytes", 82 | "style":"text-align:left" 83 | }, 84 | { 85 | "type":"h4", 86 | "title":"Real Flash Size: {{realFlashSize}} bytes", 87 | "style":"text-align:left" 88 | }, 89 | { 90 | "type":"h4", 91 | "title":"Free space for the sketch: {{FreeSketchSpace}} bytes", 92 | "style":"text-align:left" 93 | }, 94 | { 95 | "type":"h4", 96 | "title":"Flash Chip Speed: {{flashChipSpeed}} MHz", 97 | "style":"text-align:left" 98 | }, 99 | { 100 | "type":"h4", 101 | "title":"Flash Chip Mode: {{flashChipMode}}", 102 | "style":"text-align:left" 103 | }, 104 | { 105 | "type":"h4", 106 | "title":"CPU Freq: {{cpuFreqMHz}} MHz", 107 | "style":"text-align:left" 108 | }, 109 | { 110 | "type":"hr" 111 | }, 112 | { 113 | "type":"h4", 114 | "title":"MAC: {{mac}}", 115 | "style":"text-align:left" 116 | }, 117 | { 118 | "type":"h4", 119 | "title":"Spiffs: {{spiffsData}}", 120 | "style":"text-align:left" 121 | }, 122 | { 123 | "type":"h4", 124 | "title":"Build: {{buildData}}", 125 | "style":"text-align:left" 126 | }, 127 | 128 | { 129 | "type":"h4", 130 | "title":"buildDay: {{buildDay}}", 131 | "style":"text-align:left" 132 | }, 133 | { 134 | "type":"h4", 135 | "title":"buildTime: {{buildTime}}", 136 | "style":"text-align:left" 137 | }, 138 | 139 | 140 | { 141 | "type":"hr" 142 | }, 143 | { 144 | "type":"h4", 145 | "title":"File system:
Всего: {{totalBytes}} bytes
Использовано: {{usedBytes}} bytes
Размер страницы и блока: {{blockSize}}
Размер страницы: {{pageSize}}
Количество одновременно открытых файлов: {{maxOpenFiles}}
Максимальная возможная длина имени файла: {{maxPathLength}}", 146 | "style":"text-align:left" 147 | }, 148 | { 149 | "type":"hr" 150 | }, 151 | { 152 | "type":"text", 153 | "title":"('{{message}}'!='Registered'?'
Not full version
{{LangPay}}
':'')" 154 | }, 155 | { 156 | "type":"h4", 157 | "title":"('{{message}}'=='Registered'?'
Full version! Thanks!
':'')" 158 | }, 159 | { 160 | "type":"hr" 161 | }, 162 | { 163 | "type":"link", 164 | "title":" {{LangSetting3}}", 165 | "action":"/page.htm?setup", 166 | "class":"btn btn-block btn-default" 167 | }, 168 | { 169 | "type":"link", 170 | "title":"{{LangReset1}}", 171 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 172 | "class":"btn btn-block btn-warning" 173 | } 174 | ] 175 | } 176 | -------------------------------------------------------------------------------- /dev_data/donate.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | 16 | 17 | 19 | 20 | Donate 21 | 22 | 23 | 33 |
34 |
35 |

Здесь вы можете сделать Donate и получить полную версию

36 |
37 |

Полная версия стоит 3$ (3€, 202RUB). Если необходимо зарегистрировать больше 1 ESP цена за каждую 2$ (2€, 135RUB): 38 | 39 | 66 | 67 | 68 | 69 | 97 | 98 |
70 | YandexMoney 71 | 75 |
WebMoney 76 | 83 |
AdvCash 84 | 90 |
Revolut 91 | 95 |
PayPal 96 |
99 |

100 | 101 |
102 |

Обязательно в платеже укажите свой Skype login или e-mail по которому можно будет с вами связаться

103 | 104 |

По всем вопросам, пожалуйста, обращайся в: Skype: renat2985, vtplus 105 | или E-mail: renat2985@gmail.com 106 |
*После оплаты, в течении 24 часов с вами свяжется администратор.

107 | 108 | 133 | 134 |
135 |
136 |
137 | 138 | 139 | -------------------------------------------------------------------------------- /dev_data/first-connect.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.options.json", 4 | "/config.setup.json", 5 | "/lang/lang.{{lang}}.json" 6 | ], 7 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 8 | "content":[ 9 | { 10 | "type":"h5", 11 | "title":"{{SSDP}}", 12 | "class":"alert-warning" 13 | }, 14 | { 15 | "type":"select", 16 | "state":"{{lang}}", 17 | "name":"languages", 18 | "action":"/lang?set=[[languages]]", 19 | "response":"page.htm?{{urlArray0}}", 20 | "style":"margin-top:-47px;float:right;width:70px", 21 | "title":{"ru":"RU","en":"EN","lv":"LV","ua":"UA"} 22 | }, 23 | 24 | 25 | { 26 | "type":"link", 27 | "title":" {{LangSetting3}}", 28 | "action":"page.htm?setup", 29 | "class":"btn btn-block btn-default" 30 | }, 31 | 32 | 33 | { 34 | "type":"hr" 35 | }, 36 | 37 | { 38 | "type":"text", 39 | "title":"('{{flashChip}}'.slice(4)=='85'?'
YOU ESP8266 BED FLASH CHIP: {{flashChip}}
':'')" 40 | }, 41 | 42 | { 43 | "type":"h2", 44 | "title":"{{LangType}}" 45 | }, 46 | 47 | { 48 | "type":"select", 49 | "name":"build", 50 | "class":"btn btn-block btn-info btn-lg", 51 | "style":"height:auto;", 52 | "state":"{{configs}}", 53 | "action":"/configs?set=[[build]]", 54 | "title":{ 55 | "sonoff-rf":"Sonoff-rf / Sonoff TH16 / Wi-Fi Smart Socket", 56 | "sonoff-pow":"Sonoff-Pow ({{LangSoon}})", 57 | "rgb":"RGB (WS2811/WS2812/NeoPixel LEDs)", 58 | "rgb-shim":"RGB SHIM (5050/3528/2835)", 59 | "jalousie":"{{LangJalousie}}", 60 | "smart-room":"Smart-Room", 61 | "wifi-relay-5v":"WiFi Relay 5v", 62 | "manually":"Manually" 63 | } 64 | }, 65 | 66 | 67 | { 68 | "type":"hr" 69 | }, 70 | 71 | 72 | { 73 | "type":"h2", 74 | "title":"{{LangDevice}}" 75 | }, 76 | { 77 | "type":"text", 78 | "title":"('{{SSDP}}'=='Sonoff'?'
{{LangSSDPAlert}}
':'')" 79 | }, 80 | { 81 | "type":"input", 82 | "title":"{{LangDevice}}", 83 | "name":"ssdp", 84 | "state":"{{SSDP}}", 85 | "style":"width:50%;display:inline", 86 | "pattern":"[0-9a-zA-Z\\-]{1,15}|[0-9а-яА-Я\\-]{1,7}" 87 | }, 88 | { 89 | "type":"input", 90 | "title":"{{LangSpace}}", 91 | "name":"space", 92 | "state":"{{space}}", 93 | "style":"width:50%;display:inline", 94 | "pattern":"[0-9a-zA-Zа-яА-Я\\-]{1,20}" 95 | }, 96 | { 97 | "type":"button", 98 | "title":"{{LangSave}}", 99 | "action":"device?ssdp=[[ssdp]]&space=[[space]]", 100 | "class":"btn btn-block btn-success" 101 | }, 102 | 103 | 104 | { 105 | "type":"hr" 106 | }, 107 | 108 | 109 | { 110 | "type":"text", 111 | "name":"ip-adress", 112 | "title":"

{{LangConnect1}}

", 113 | "style":"position:fixed;top:30%;left:50%;width:400px;margin-left:-200px;text-align:center;", 114 | "class":"pop-up hidden" 115 | }, 116 | 117 | 118 | { 119 | "type":"text", 120 | "title":"{{LangWiFi3}}", 121 | "class":"alert alert-dismissible alert-danger" 122 | }, 123 | 124 | 125 | { 126 | "type":"h2", 127 | "title":"{{LangWiFi2}}" 128 | }, 129 | 130 | 131 | { 132 | "type":"wifi", 133 | "title":"{{LangWiFi1}}", 134 | "name":"ssid", 135 | "state":"{{ssid}}", 136 | "pattern":".{1,}" 137 | }, 138 | { 139 | "type":"password", 140 | "title":"{{LangPass}}", 141 | "name":"ssidPass", 142 | "state":"{{ssidPass}}", 143 | "pattern":".{8,}" 144 | }, 145 | { 146 | "type":"button", 147 | "title":"{{LangSave}}", 148 | "class":"btn btn-block btn-success", 149 | "action":"ssid?ssid=[[ssid]]&ssidPass=[[ssidPass]]&checkboxIP=0" 150 | }, 151 | 152 | 153 | { 154 | "type":"hr" 155 | }, 156 | 157 | { 158 | "type":"text", 159 | "title":"Вы должны знать: После каждого включения устройство пытается отправить данные на наш сервер о дате включения и какое это включение, после аварийного падения или простой перезапуск. Это позволяет вам и нам быстро выявить проблемные версии и выпустить новые. Эти данные можно увидеть нажав: Конфигурация / Настройки разработчика / Starting log.", 160 | "class":"alert alert-dismissible alert-info" 161 | }, 162 | 163 | { 164 | "type":"hr" 165 | }, 166 | 167 | { 168 | "type":"link", 169 | "title":"{{LangReset1}}", 170 | "name":"titi", 171 | "action":"javascript:toggle('ip-adress');send_request_post(this,'restartWiFi','{{ip-adress}}');", 172 | "class":"btn btn-block btn-warning" 173 | } 174 | ]} 175 | -------------------------------------------------------------------------------- /dev_data/furnace.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-info" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | { 25 | "type":"button", 26 | "title":"⇑ 0", 27 | "module":"furnace0", 28 | "response":"[[furnace0-state]]", 29 | "action":"furnace 0 up", 30 | "class":"'btn btn-block btn-lg btn-primary", 31 | "style":"width:50%;display:inline-block" 32 | }, 33 | { 34 | "type":"button", 35 | "title":"⇑ 2", 36 | "module":"furnace1", 37 | "response":"[[furnace1-state]]", 38 | "action":"furnace 1 up", 39 | "class":"'btn btn-block btn-lg btn-primary", 40 | "style":"width:50%;display:inline-block" 41 | }, 42 | 43 | { 44 | "type":"h4", 45 | "name":"furnace0-state", 46 | "module":"furnace0", 47 | "title":"{{stateFurnace0}}", 48 | "style":"text-align: center;width:50%;display:inline-block" 49 | }, 50 | { 51 | "type":"h4", 52 | "name":"furnace1-state", 53 | "module":"furnace1", 54 | "title":"{{stateFurnace1}}", 55 | "style":"text-align: center;width:50%;display:inline-block" 56 | }, 57 | { 58 | "type":"button", 59 | "title":"⇓ 1", 60 | "module":"furnace0", 61 | "response":"[[furnace0-state]]", 62 | "action":"furnace 0 down", 63 | "class":"'btn btn-block btn-lg btn-primary", 64 | "style":"width:50%;display:inline-block" 65 | }, 66 | { 67 | "type":"button", 68 | "title":"⇓ 3", 69 | "module":"furnace1", 70 | "response":"[[furnace1-state]]", 71 | "action":"furnace 1 down", 72 | "class":"'btn btn-block btn-lg btn-primary", 73 | "style":"width:50%;display:inline-block" 74 | }, 75 | { 76 | "type":"hr" 77 | }, 78 | { 79 | "type":"link", 80 | "title":" {{LangSetting3}}", 81 | "action":"/page.htm?setup", 82 | "class":"btn btn-block btn-default" 83 | }, 84 | { 85 | "type":"link", 86 | "module":"admin", 87 | "title":"{{LangReset1}}", 88 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 89 | "class":"btn btn-block btn-warning" 90 | } 91 | ] 92 | } 93 | -------------------------------------------------------------------------------- /dev_data/header.json: -------------------------------------------------------------------------------- 1 | { 2 | "json-header-json":[ 3 | { 4 | "type":"select", 5 | "state":"{{lang}}", 6 | "name":"languages", 7 | "action":"/lang?set=[[languages]]", 8 | "response":"page.htm?{{urlArray0}}", 9 | "style":"margin-top:-47px;float:right;width:70px", 10 | "title":{"ru":"RU","en":"EN","lv":"LV","ua":"UA"} 11 | }, 12 | 13 | { 14 | "type":"link", 15 | "title":"{{LangDevices}}", 16 | "action":"/", 17 | "class":"btn btn-danger", 18 | "style":"width:80%;" 19 | }, 20 | { 21 | "type":"link", 22 | "title":"", 23 | "action":"/page.htm?scenary", 24 | "class":"btn btn-info", 25 | "style":"width:10%;" 26 | }, 27 | { 28 | "type":"link", 29 | "class":"btn btn-default dropdown-toggle", 30 | "action":"/page.htm?timer", 31 | "title":"", 32 | "style":"width:10%;" 33 | }, 34 | { 35 | "type":"link", 36 | "title":"br", 37 | "class":"btn btn-block", 38 | "style":"display:none" 39 | }, 40 | { 41 | "type":"link", 42 | "title":"{{LangOptions1}} RGB SHIM", 43 | "module":"rgbs", 44 | "action":"/page.htm?rgbs", 45 | "class":"btn btn-block btn-default", 46 | "style":"('{{urlArray0}}'=='rgbs'?'display:none':'')" 47 | }, 48 | { 49 | "type":"link", 50 | "title":"{{LangOptions1}} RGB", 51 | "module":"rgb", 52 | "action":"/page.htm?rgb", 53 | "class":"btn btn-block btn-default", 54 | "style":"('{{urlArray0}}'=='rgb'?'display:none':'')" 55 | }, 56 | { 57 | "type":"link", 58 | "title":"{{LangOptions1}} RGB 0", 59 | "module":"rgb0", 60 | "action":"/page.htm?rgb0", 61 | "class":"btn btn-block btn-default", 62 | "style":"('{{urlArray0}}'=='nrgb0'?'display:none':'')" 63 | }, 64 | { 65 | "type":"link", 66 | "title":"{{LangOptions1}} RGB 1", 67 | "module":"rgb1", 68 | "action":"/page.htm?rgb1", 69 | "class":"btn btn-block btn-default", 70 | "style":"('{{urlArray0}}'=='nrgb1'?'display:none':'')" 71 | }, 72 | { 73 | "type":"link", 74 | "title":"{{LangOptions1}} SHIM", 75 | "module":"shim", 76 | "action":"/page.htm?shim", 77 | "class":"btn btn-block btn-default", 78 | "style":"('{{urlArray0}}'=='shim'?'display:none':'')" 79 | }, 80 | { 81 | "type":"link", 82 | "title":"{{LangOptions1}} Relay", 83 | "module":"relay", 84 | "action":"/page.htm?relay", 85 | "class":"btn btn-block btn-default", 86 | "style":"('{{urlArray0}}'=='relay'?'display:none':'')" 87 | }, 88 | { 89 | "type":"link", 90 | "title":"{{LangOptions1}} Jalousie", 91 | "module":"jalousie", 92 | "action":"/page.htm?jalousie", 93 | "class":"btn btn-block btn-default", 94 | "style":"('{{urlArray0}}'=='jalousie'?'display:none':'')" 95 | }, 96 | { 97 | "type":"link", 98 | "title":"{{LangOptions1}} Livolo", 99 | "module":"rfLivolo", 100 | "action":"/page.htm?livolo", 101 | "class":"btn btn-block btn-default", 102 | "style":"('{{urlArray0}}'=='livolo'?'display:none':'')" 103 | }, 104 | { 105 | "type":"link", 106 | "title":" {{LangSetting3}}", 107 | "action":"/page.htm?setup", 108 | "class":"btn btn-block btn-default", 109 | "style":"('{{urlArray0}}'=='setup'?'display:none':'')" 110 | }, 111 | 112 | { 113 | "type":"link", 114 | "module":"admin", 115 | "title":"Ctrl+M", 116 | "style":"width:20%;", 117 | "action":"javascript:toggle('edit-content');toggle('url-content');", 118 | "class":"btn btn-sm btn-primary" 119 | }, 120 | { 121 | "type":"link", 122 | "module":"admin", 123 | "title":"File manager", 124 | "action":"/edit", 125 | "class":"btn btn-sm btn-primary", 126 | "style":"width:20%;" 127 | }, 128 | { 129 | "type":"link", 130 | "module":"admin", 131 | "title":"Debug", 132 | "action":"/page.htm?debug", 133 | "class":"btn btn-sm btn-primary", 134 | "style":"width:20%;" 135 | }, 136 | { 137 | "type":"link", 138 | "module":"admin", 139 | "title":"{{LangReset1}}", 140 | "style":"width:40%;", 141 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 142 | "class":"btn btn-sm btn-warning" 143 | }, 144 | { 145 | "type":"hr" 146 | }, 147 | { 148 | "type":"text", 149 | "name":"restart-esp", 150 | "title":"

{{LangReset1}}

", 151 | "style":"position:fixed;top:30%;left:50%;width:400px;margin-left:-200px;text-align:center;", 152 | "class":"pop-up hidden" 153 | }, 154 | { 155 | "type":"link", 156 | "class":"btn btn-default top", 157 | "action":"#", 158 | "title":"TOP" 159 | } 160 | ] 161 | } 162 | -------------------------------------------------------------------------------- /dev_data/help.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | Помощь 25 | 26 | 27 |
28 |
29 |

Wiki

30 |

Sonoff WiFi switch, RGB, Jalousie

31 |
32 |

GET JSON

33 |

GET /config.live.json

34 |

Динамические данные

35 |
Loading...
36 | 37 |

GET /config.options.json

38 |

Основные настройки

39 |
Loading...
40 | 41 |

GET /config.setup.json

42 |

Данные для страинцы "Конфигурация"

43 |
Loading...
44 | 45 |

GET /config.save.json

46 |

Файл хранится на ESP и содержит в себе все настройки (Эти настройки восстанавливаются посте рестарта)

47 |
Loading...
48 | 49 |

GET /ssdp.list.json

50 |

Количество устройст найденых в локальной сети.

51 |
Loading...
52 | 53 |

GET /modules.json

54 |
Loading...
55 | 56 |

GET /timer.save.json

57 |

Таймеры включения\выключения устройсва

58 |
Loading...
59 | 60 |

GET /lang/lang.ru.json

61 |

Изменить язык можно GET запросом /lang?set=en

62 |
Loading...
63 |

Cookie

64 |

Список ваших Cookie

65 |
Loading...
66 |
67 |
68 | 69 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /dev_data/index.htm.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.setup.json", 4 | "/lang/lang.{{lang}}.json" 5 | ], 6 | "content":[], 7 | "top-content":[], 8 | "left-content":[ 9 | { 10 | "type":"h5", 11 | "title":"{{LangIssues}}", 12 | "style":"margin-top:-17px;float:left;margin-left:40px;" 13 | }, 14 | { 15 | "type":"issues", 16 | "state":"10", 17 | "class":"block" 18 | }, 19 | { 20 | "type":"link", 21 | "class":"btn btn-default top", 22 | "action":"#", 23 | "title":"TOP" 24 | } 25 | ], 26 | "header-left":[ 27 | { 28 | "type":"h1", 29 | "title":"{{space}}." 30 | }, 31 | { 32 | "type":"h3", 33 | "name":"update", 34 | "title":"{{SSDP}}", 35 | "style":"color:#999;margin-top:-10px" 36 | } 37 | ], 38 | "header-right":[ 39 | { 40 | "type":"link", 41 | "class":"btn btn-info dropdown-toggle", 42 | "action":"/page.htm?scenary", 43 | "title":" {{LangScenary}}" 44 | }, 45 | { 46 | "type":"link", 47 | "class":"btn btn-default dropdown-toggle", 48 | "action":"/page.htm?timer", 49 | "title":" {{LangTimer}}" 50 | }, 51 | { 52 | "type":"link", 53 | "class":"btn btn-default dropdown-toggle", 54 | "action":"https://github.com/tretyakovsa/Sonoff_WiFi_switch/issues\" target=\"_blank", 55 | "title":" {{LangHelp}}" 56 | }, 57 | { 58 | "type":"dropdown", 59 | "name":"design", 60 | "class":"btn btn-warning", 61 | "title":{ 62 | "#":"{{LangDesign}} ", 63 | "/skins?set=index.htm":"Default", 64 | "/skins?set=index2.htm":"Inline", 65 | "/skins?set=index3.htm":"Block", 66 | "/skins?set=index4.htm":"Life" 67 | } 68 | }, 69 | { 70 | "type":"select", 71 | "state":"{{lang}}", 72 | "name":"languages", 73 | "action":"/lang?set=[[languages]]", 74 | "response":"/", 75 | "style":"width:70px", 76 | "class":"hidden-xs", 77 | "title":{"ru":"RU","en":"EN","lv":"LV","ua":"UA"} 78 | } 79 | ] 80 | } 81 | -------------------------------------------------------------------------------- /dev_data/index2.htm.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.setup.json", 4 | "/lang/lang.{{lang}}.json" 5 | ], 6 | "content":[], 7 | "top-content":[], 8 | "right-content":[ 9 | { 10 | "type":"h5", 11 | "title":"{{LangIssues}}", 12 | "style":"margin-top:0;float:left;margin-left:40px;" 13 | }, 14 | { 15 | "type":"issues", 16 | "state":"10", 17 | "class":"block" 18 | }, 19 | { 20 | "type":"link", 21 | "class":"btn btn-default top", 22 | "action":"#", 23 | "title":"TOP" 24 | } 25 | ], 26 | 27 | "header-left":[ 28 | { 29 | "type":"h1", 30 | "title":"{{space}}." 31 | }, 32 | { 33 | "type":"h3", 34 | "name":"update", 35 | "title":"{{SSDP}}", 36 | "style":"color:#999;margin-top:-10px" 37 | } 38 | ], 39 | "header-right":[ 40 | { 41 | "type":"link", 42 | "class":"btn btn-info dropdown-toggle", 43 | "action":"/page.htm?scenary", 44 | "title":" {{LangScenary}}" 45 | }, 46 | { 47 | "type":"link", 48 | "class":"btn btn-default dropdown-toggle", 49 | "action":"/page.htm?timer", 50 | "title":" {{LangTimer}}" 51 | }, 52 | { 53 | "type":"link", 54 | "class":"btn btn-default dropdown-toggle", 55 | "action":"https://github.com/tretyakovsa/Sonoff_WiFi_switch/issues\" target=\"_blank", 56 | "title":" {{LangHelp}}" 57 | }, 58 | { 59 | "type":"dropdown", 60 | "name":"design", 61 | "class":"btn btn-warning", 62 | "title":{ 63 | "#":"{{LangDesign}} ", 64 | "/skins?set=index.htm":"Default", 65 | "/skins?set=index2.htm":"Inline", 66 | "/skins?set=index3.htm":"Block", 67 | "/skins?set=index4.htm":"Life" 68 | } 69 | }, 70 | { 71 | "type":"select", 72 | "state":"{{lang}}", 73 | "name":"languages", 74 | "action":"/lang?set=[[languages]]", 75 | "response":"/", 76 | "style":"width:70px", 77 | "class":"hidden-xs", 78 | "title":{"ru":"RU","en":"EN","lv":"LV","ua":"UA"} 79 | } 80 | ] 81 | } 82 | -------------------------------------------------------------------------------- /dev_data/index3.htm.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.setup.json", 4 | "/lang/lang.{{lang}}.json" 5 | ], 6 | "content":[], 7 | "top-content":[], 8 | "bottom-content":[ 9 | { 10 | "type":"issues", 11 | "state":"5", 12 | "class":"block", 13 | "style":"width:45%;float:left;" 14 | }, 15 | { 16 | "type":"commits", 17 | "state":"5", 18 | "class":"block", 19 | "style":"width:45%;float:left;" 20 | }, 21 | { 22 | "type":"link", 23 | "class":"btn btn-default top", 24 | "action":"#", 25 | "title":"TOP" 26 | } 27 | ], 28 | 29 | "header-left":[ 30 | { 31 | "type":"h1", 32 | "title":"{{space}}." 33 | }, 34 | { 35 | "type":"h3", 36 | "name":"update", 37 | "title":"{{SSDP}}", 38 | "style":"color:#999;margin-top:-10px" 39 | } 40 | ], 41 | "header-right":[ 42 | { 43 | "type":"link", 44 | "class":"btn btn-info dropdown-toggle", 45 | "action":"/page.htm?scenary", 46 | "title":" {{LangScenary}}" 47 | }, 48 | { 49 | "type":"link", 50 | "class":"btn btn-default dropdown-toggle", 51 | "action":"/page.htm?timer", 52 | "title":" {{LangTimer}}" 53 | }, 54 | { 55 | "type":"link", 56 | "class":"btn btn-default dropdown-toggle", 57 | "action":"https://github.com/tretyakovsa/Sonoff_WiFi_switch/issues\" target=\"_blank", 58 | "title":" {{LangHelp}}" 59 | }, 60 | { 61 | "type":"dropdown", 62 | "name":"design", 63 | "class":"btn btn-warning", 64 | "title":{ 65 | "#":"{{LangDesign}} ", 66 | "/skins?set=index.htm":"Default", 67 | "/skins?set=index2.htm":"Inline", 68 | "/skins?set=index3.htm":"Block", 69 | "/skins?set=index4.htm":"Life" 70 | } 71 | }, 72 | { 73 | "type":"select", 74 | "state":"{{lang}}", 75 | "name":"languages", 76 | "action":"/lang?set=[[languages]]", 77 | "response":"/", 78 | "style":"width:70px", 79 | "class":"hidden-xs", 80 | "title":{"ru":"RU","en":"EN","lv":"LV","ua":"UA"} 81 | } 82 | ] 83 | } 84 | -------------------------------------------------------------------------------- /dev_data/index4.htm.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.setup.json", 4 | "/lang/lang.{{lang}}.json" 5 | ], 6 | "content":[], 7 | "top-content":[], 8 | "right-content":[ 9 | { 10 | "type":"h5", 11 | "title":"{{LangIssues}}", 12 | "style":"margin-top:0;float:left;margin-left:40px;" 13 | }, 14 | { 15 | "type":"issues", 16 | "state":"10", 17 | "class":"block" 18 | }, 19 | { 20 | "type":"h5", 21 | "title":"{{LangCommits}}", 22 | "style":"margin-top:-15px;float:left;margin-left:40px;" 23 | }, 24 | { 25 | "type":"commits", 26 | "state":"10", 27 | "class":"block" 28 | }, 29 | { 30 | "type":"link", 31 | "class":"btn btn-default top", 32 | "action":"#", 33 | "title":"TOP" 34 | } 35 | ], 36 | 37 | "header-left":[ 38 | { 39 | "type":"h1", 40 | "title":"{{space}}." 41 | }, 42 | { 43 | "type":"h3", 44 | "name":"update", 45 | "title":"{{SSDP}}", 46 | "style":"color:#999;margin-top:-10px" 47 | } 48 | ], 49 | "header-right":[ 50 | { 51 | "type":"link", 52 | "class":"btn btn-info dropdown-toggle", 53 | "action":"/page.htm?scenary", 54 | "title":" {{LangScenary}}" 55 | }, 56 | { 57 | "type":"link", 58 | "class":"btn btn-default dropdown-toggle", 59 | "action":"/page.htm?timer", 60 | "title":" {{LangTimer}}" 61 | }, 62 | { 63 | "type":"link", 64 | "class":"btn btn-default dropdown-toggle", 65 | "action":"https://github.com/tretyakovsa/Sonoff_WiFi_switch/issues\" target=\"_blank", 66 | "title":" {{LangHelp}}" 67 | }, 68 | { 69 | "type":"dropdown", 70 | "name":"design", 71 | "class":"btn btn-warning", 72 | "title":{ 73 | "#":"{{LangDesign}} ", 74 | "/skins?set=index.htm":"Default", 75 | "/skins?set=index2.htm":"Inline", 76 | "/skins?set=index3.htm":"Block", 77 | "/skins?set=index4.htm":"Life" 78 | } 79 | }, 80 | { 81 | "type":"select", 82 | "state":"{{lang}}", 83 | "name":"languages", 84 | "action":"/lang?set=[[languages]]", 85 | "response":"/", 86 | "style":"width:70px", 87 | "class":"hidden-xs", 88 | "title":{"ru":"RU","en":"EN","lv":"LV","ua":"UA"} 89 | } 90 | ] 91 | } 92 | -------------------------------------------------------------------------------- /dev_data/index5.htm.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.setup.json", 4 | "/lang/lang.{{lang}}.json" 5 | ], 6 | "content":[], 7 | "top-content":[], 8 | "header-left":[ 9 | { 10 | "type":"h1", 11 | "title":"{{space}}." 12 | }, 13 | { 14 | "type":"h3", 15 | "name":"update", 16 | "title":"{{SSDP}}", 17 | "style":"color:#999;margin-top:-10px" 18 | }, 19 | { 20 | "type":"link", 21 | "class":"btn btn-default top", 22 | "action":"#", 23 | "title":"TOP" 24 | } 25 | ], 26 | "header-right":[ 27 | { 28 | "type":"link", 29 | "class":"btn btn-default dropdown-toggle", 30 | "action":"/page.htm?scenary", 31 | "title":" {{LangScenary}}" 32 | }, 33 | { 34 | "type":"link", 35 | "class":"btn btn-default dropdown-toggle", 36 | "action":"/page.htm?timer", 37 | "title":"" 38 | }, 39 | { 40 | "type":"dropdown", 41 | "name":"design", 42 | "class":"btn btn-default", 43 | "title":{ 44 | "#":"{{LangDesign}} ", 45 | "/skins?set=index.htm":"Default", 46 | "/skins?set=index2.htm":"Inline", 47 | "/skins?set=index3.htm":"Block", 48 | "/skins?set=index4.htm":"Life" 49 | } 50 | } 51 | ], 52 | "content-right":[ 53 | { 54 | "type":"h3", 55 | "title":"{{LangIssues}}", 56 | "style":"margin-left:40px;color:#fff;" 57 | }, 58 | { 59 | "type":"issues", 60 | "state":"10", 61 | "style":"margin:20px;color:#fff;" 62 | }, 63 | { 64 | "type":"h3", 65 | "title":"{{LangCommits}}", 66 | "style":"margin-left:40px;color:#fff;" 67 | }, 68 | { 69 | "type":"commits", 70 | "state":"5", 71 | "style":"margin:20px;color:#fff;" 72 | }, 73 | { 74 | "type":"link", 75 | "class":"btn btn-default top", 76 | "action":"#", 77 | "title":"TOP" 78 | } 79 | ] 80 | } 81 | -------------------------------------------------------------------------------- /dev_data/index6.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 15 | 16 | 17 | 20 | 21 | 23 | 24 | 25 | 26 | 43 | 44 | 45 |
46 | 47 |
48 | 49 | 50 |
51 | 55 | 56 | 66 | 67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /dev_data/index6.htm.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-danger" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"hr" 27 | }, 28 | 29 | { 30 | "type":"macros" 31 | }, 32 | 33 | { 34 | "type":"link", 35 | "title":" {{LangSetting3}}", 36 | "action":"/page.htm?setup", 37 | "class":"btn btn-block btn-default" 38 | }, 39 | { 40 | "type":"link", 41 | "module":"admin", 42 | "title":"{{LangReset1}}", 43 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 44 | "class":"btn btn-block btn-warning" 45 | } 46 | 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /dev_data/jalousie.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-success" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"text", 27 | "module":"ddns", 28 | "name":"alert-ifttt", 29 | "title":"{{LangIfttt1}}", 30 | "class":"alert alert-info {{alert-ifttt}}" 31 | }, 32 | 33 | 34 | { 35 | "type":"button", 36 | "title":"('{{jalousie}}'==1?'{{LangClose}}':'{{LangOpen}}')", 37 | "name":"motor", 38 | "module":"jalousie", 39 | "response":"[[motor]]", 40 | "action":"jalousie not", 41 | "class":"'btn btn-block btn-lg btn-'+({{jalousie}}?'info':'primary')" 42 | }, 43 | 44 | 45 | { 46 | "type":"hr" 47 | }, 48 | 49 | { 50 | "type":"h2", 51 | "title":"{{LangTurn}}" 52 | }, 53 | { 54 | "type":"input", 55 | "title":"{{turn}}", 56 | "module":"jalousie", 57 | "name":"turn", 58 | "state":"{{turn}}", 59 | "pattern":"[0-9]{1,3}" 60 | }, 61 | { 62 | "type":"button", 63 | "module":"jalousie", 64 | "title":"{{LangSave}}", 65 | "class":"btn btn-block btn-success", 66 | "action":"jalousie turn [[turn]]" 67 | }, 68 | 69 | { 70 | "type":"macros" 71 | }, 72 | 73 | { 74 | "type":"hr", 75 | "module":"timers" 76 | }, 77 | 78 | 79 | { 80 | "type":"h2", 81 | "module":"timers", 82 | "title":"{{LangTimer}}" 83 | }, 84 | 85 | 86 | { 87 | "type":"table", 88 | "module":"timers", 89 | "state":"timer.save.json", 90 | "title":{ 91 | "day":" {{LangDay}} ", 92 | "time1":" {{LangTime4}} ", 93 | "com1":"" 94 | }, 95 | "class":"table alert alert-dismissible alert-warning", 96 | "style":"width:100%;" 97 | }, 98 | { 99 | "type":"link", 100 | "module":"timers", 101 | "title":"{{LangTimer}}", 102 | "action":"page.htm?timer", 103 | "class":"btn btn-block btn-default" 104 | }, 105 | 106 | 107 | { 108 | "type":"hr" 109 | }, 110 | 111 | 112 | { 113 | "type":"chart", 114 | "title":"{{LangA0}}", 115 | "state":"charts.json?data=A0&data1=highAlarmA0&data2=lowAlarmA0", 116 | "module":"A0", 117 | "action":"/page.htm?chart&A0&highAlarmA0&lowAlarmA0", 118 | "style":"height:200px;margin-left:-20px" 119 | }, 120 | 121 | { 122 | "type":"link", 123 | "title":" {{LangSetting3}}", 124 | "action":"/page.htm?setup", 125 | "class":"btn btn-block btn-default" 126 | }, 127 | { 128 | "type":"link", 129 | "module":"admin", 130 | "title":"{{LangReset1}}", 131 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 132 | "class":"btn btn-block btn-warning" 133 | } 134 | 135 | ] 136 | } 137 | -------------------------------------------------------------------------------- /dev_data/js/chart.js: -------------------------------------------------------------------------------- 1 | function loadChart(chartId,chartUrl,charOptions,charRefresh,charPoints,chartChartist){ 2 | var time_refresh_chart; 3 | function viewTime() { 4 | var now = new Date(); 5 | return now.getHours()+':'+now.getMinutes()+':'+now.getSeconds(); 6 | } 7 | 8 | //var ne = document.createElement('h2'); 9 | //ne.id = chartId+'-title'; 10 | //document.getElementById(chartId).parentNode.insertBefore(ne,document.getElementById(chartId)); 11 | 12 | function adddata() { 13 | var xmlHttp=createXmlHttpObject(); 14 | xmlHttp.open("GET", chartUrl, true); 15 | xmlHttp.send(null); 16 | xmlHttp.onload = function() { 17 | var module=JSON.parse(xmlHttp.responseText); 18 | if (module.title != null) { 19 | document.getElementById(chartId+'-title').innerHTML = module.title; 20 | } 21 | 22 | if (typeof module.data != null && typeof module.data1 != null && typeof module.data2 != null) { 23 | for (var i = 0; i < module.data.length; i++) { 24 | var points = (charPoints?charPoints:module.points); 25 | if (points != null && points <= LineChart.data.series[0].length) { 26 | LineChart.data.labels.shift(); 27 | LineChart.data.series[0].shift(); 28 | if (module.data1 != null) { 29 | LineChart.data.series[1].shift(); 30 | } 31 | if (module.data2 != null) { 32 | LineChart.data.series[2].shift(); 33 | } 34 | } 35 | 36 | LineChart.data.series[0].push(module.data[i]); 37 | 38 | var element = document.getElementById(chartId+'-data'); 39 | if (element){ 40 | element.innerHTML = ''; 41 | if (module.data != null) {element.innerHTML += module.data + ' ';} 42 | if (module.data1 != null) {element.innerHTML += module.data1 + ' ';} 43 | if (module.data2 != null) {element.innerHTML += module.data2;} 44 | } 45 | 46 | if (module.data1 != null) { 47 | LineChart.data.series[1].push(module.data1[i]); 48 | } 49 | if (module.data2 != null) { 50 | LineChart.data.series[2].push(module.data2[i]); 51 | } 52 | if (module.label != null) { 53 | LineChart.data.labels.push(module.label[i]); 54 | } else { 55 | LineChart.data.labels.push(viewTime()); 56 | } 57 | LineChart.update(); 58 | } 59 | } 60 | 61 | charOptions = (charOptions=!'{}'?charOptions:'{'+module.options+'}'); 62 | //LineChart.update(,,charOptions); 63 | 64 | //var strUser = module.refresh; 65 | var strUser = (charRefresh?charRefresh:module.refresh); 66 | if (typeof(strUser) == "undefined" || strUser == "undefined") { 67 | strUser = 100000000000; 68 | } 69 | clearInterval(time_refresh_chart); 70 | time_refresh_chart=setInterval(function(){adddata();}, strUser); 71 | } 72 | } 73 | 74 | if (typeof(chartChartist) == "undefined" || chartChartist == "undefined") {chartChartist = 'Line';} 75 | var LineChart = Chartist[''+chartChartist+'']("#"+chartId, { 76 | labels: [], 77 | series: [[],[],[]] 78 | //}, {fullWidth:true}); 79 | }, charOptions); 80 | adddata(); 81 | } 82 | -------------------------------------------------------------------------------- /dev_data/livolo.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-danger" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"text", 27 | "module":"ddns", 28 | "name":"alert-ifttt", 29 | "title":"{{LangIfttt1}}", 30 | "class":"alert alert-info {{alert-ifttt}}" 31 | }, 32 | 33 | { 34 | "type":"button", 35 | "title":"1", 36 | "module":"rfLivolo", 37 | "action":"lvsend 6400 0", 38 | "style":"width:33.33333%;display:inline", 39 | "class":"btn btn-lg btn-primary" 40 | }, 41 | { 42 | "type":"button", 43 | "title":"2", 44 | "module":"rfLivolo", 45 | "action":"lvsend 6400 96", 46 | "style":"width:33.33333%;display:inline", 47 | "class":"btn btn-lg btn-primary" 48 | }, 49 | { 50 | "type":"button", 51 | "title":"3", 52 | "module":"rfLivolo", 53 | "action":"lvsend 6400 120", 54 | "style":"width:33.33333%;display:inline", 55 | "class":"btn btn-lg btn-primary" 56 | }, 57 | { 58 | "type":"button", 59 | "title":"4", 60 | "module":"rfLivolo", 61 | "action":"lvsend 6400 24", 62 | "style":"width:33.33333%;display:inline", 63 | "class":"btn btn-lg btn-primary" 64 | }, 65 | { 66 | "type":"button", 67 | "title":"5", 68 | "module":"rfLivolo", 69 | "action":"lvsend 6400 80", 70 | "style":"width:33.33333%;display:inline", 71 | "class":"btn btn-lg btn-primary" 72 | }, 73 | { 74 | "type":"button", 75 | "title":"6", 76 | "module":"rfLivolo", 77 | "action":"lvsend 6400 48", 78 | "style":"width:33.33333%;display:inline", 79 | "class":"btn btn-lg btn-primary" 80 | }, 81 | { 82 | "type":"button", 83 | "title":"7", 84 | "module":"rfLivolo", 85 | "action":"lvsend 6400 108", 86 | "style":"width:33.33333%;display:inline", 87 | "class":"btn btn-lg btn-primary" 88 | }, 89 | { 90 | "type":"button", 91 | "title":"8", 92 | "module":"rfLivolo", 93 | "action":"lvsend 6400 12", 94 | "style":"width:33.33333%;display:inline", 95 | "class":"btn btn-lg btn-primary" 96 | }, 97 | { 98 | "type":"button", 99 | "title":"9", 100 | "module":"rfLivolo", 101 | "action":"lvsend 6400 72", 102 | "style":"width:33.33333%;display:inline", 103 | "class":"btn btn-lg btn-primary" 104 | }, 105 | { 106 | "type":"button", 107 | "title":"0", 108 | "module":"rfLivolo", 109 | "action":"lvsend 6400 40", 110 | "style":"margin-left:33.33333%;width:33.33333%;display:inline", 111 | "class":"btn btn-lg btn-primary" 112 | }, 113 | { 114 | "type":"button", 115 | "title":"All off", 116 | "module":"rfLivolo", 117 | "action":"lvsend 6400 106", 118 | "class":"btn btn-block btn-lg btn-warning" 119 | }, 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | { 133 | "type":"hr", 134 | "module":"timers" 135 | }, 136 | 137 | 138 | { 139 | "type":"h2", 140 | "module":"timers", 141 | "title":"{{LangTimer}}" 142 | }, 143 | 144 | 145 | { 146 | "type":"table", 147 | "module":"timers", 148 | "state":"timer.save.json", 149 | "title":{ 150 | "day":" {{LangDay}} ", 151 | "time1":" {{LangTime4}} ", 152 | "com1":"" 153 | }, 154 | "class":"table alert alert-dismissible alert-warning", 155 | "style":"width:100%;" 156 | }, 157 | 158 | { 159 | "type":"link", 160 | "module":"timers", 161 | "title":"{{LangTimer}}", 162 | "action":"page.htm?timer", 163 | "class":"btn btn-block btn-default" 164 | }, 165 | 166 | { 167 | "type":"hr" 168 | }, 169 | 170 | { 171 | "type":"macros" 172 | }, 173 | 174 | { 175 | "type":"chart", 176 | "title":"{{LangA0}}", 177 | "state":"charts.json?data=A0&data1=highAlarmA0&data2=lowAlarmA0", 178 | "module":"A0", 179 | "action":"/page.htm?chart&A0&highAlarmA0&lowAlarmA0", 180 | "style":"height:200px;margin-left:-20px" 181 | }, 182 | 183 | { 184 | "type":"link", 185 | "title":" {{LangSetting3}}", 186 | "action":"/page.htm?setup", 187 | "class":"btn btn-block btn-default" 188 | }, 189 | { 190 | "type":"link", 191 | "module":"admin", 192 | "title":"{{LangReset1}}", 193 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 194 | "class":"btn btn-block btn-warning" 195 | } 196 | 197 | ] 198 | } 199 | -------------------------------------------------------------------------------- /dev_data/relay.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-danger" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"text", 27 | "module":"ddns", 28 | "name":"alert-ifttt", 29 | "title":"{{LangIfttt1}}", 30 | "class":"alert alert-info {{alert-ifttt}}" 31 | }, 32 | 33 | { 34 | "type":"button", 35 | "title":"({{relay0}}?'{{LangOff}}':'{{LangOn}}')", 36 | "name":"relay0", 37 | "module":"relay0", 38 | "response":"[[relay0]]", 39 | "action":"relay not 0", 40 | "class":"'btn btn-block btn-lg btn-'+({{relay0}}?'info':'primary')" 41 | }, 42 | 43 | { 44 | "type":"button", 45 | "title":"({{relay1}}?'{{LangOff}}':'{{LangOn}}')", 46 | "name":"relay1", 47 | "module":"relay1", 48 | "response":"[[relay1]]", 49 | "action":"relay not 1", 50 | "class":"'btn btn-block btn-lg btn-'+({{relay1}}?'info':'primary')" 51 | }, 52 | 53 | { 54 | "type":"button", 55 | "title":"({{relay2}}?'{{LangOff}}':'{{LangOn}}')", 56 | "name":"relay2", 57 | "module":"relay2", 58 | "response":"[[relay2]]", 59 | "action":"relay not 2", 60 | "class":"'btn btn-block btn-lg btn-'+({{relay2}}?'info':'primary')" 61 | }, 62 | 63 | { 64 | "type":"button", 65 | "title":"({{relay3}}?'{{LangOff}}':'{{LangOn}}')", 66 | "name":"relay3", 67 | "module":"relay3", 68 | "response":"[[relay3]]", 69 | "action":"relay not 3", 70 | "class":"'btn btn-block btn-lg btn-'+({{relay3}}?'info':'primary')" 71 | }, 72 | 73 | { 74 | "type":"button", 75 | "title":"({{relay4}}?'{{LangOff}}':'{{LangOn}}')", 76 | "name":"relay4", 77 | "module":"relay4", 78 | "response":"[[relay4]]", 79 | "action":"relay not 4", 80 | "class":"'btn btn-block btn-lg btn-'+({{relay4}}?'info':'primary')" 81 | }, 82 | 83 | { 84 | "type":"button", 85 | "title":"({{relay5}}?'{{LangOff}}':'{{LangOn}}')", 86 | "name":"relay5", 87 | "module":"relay5", 88 | "response":"[[relay5]]", 89 | "action":"relay not 5", 90 | "class":"'btn btn-block btn-lg btn-'+({{relay5}}?'info':'primary')" 91 | }, 92 | 93 | 94 | { 95 | "type":"hr" 96 | }, 97 | 98 | { 99 | "type":"macros" 100 | }, 101 | 102 | { 103 | "type":"chart", 104 | "title":"{{LangA0}}", 105 | "state":"charts.json?data=A0&data1=highAlarmA0&data2=lowAlarmA0", 106 | "module":"A0", 107 | "action":"/page.htm?chart&A0&highAlarmA0&lowAlarmA0", 108 | "style":"height:200px;margin-left:-20px" 109 | }, 110 | 111 | { 112 | "type":"link", 113 | "title":" {{LangSetting3}}", 114 | "action":"/page.htm?setup", 115 | "class":"btn btn-block btn-default" 116 | }, 117 | { 118 | "type":"link", 119 | "module":"admin", 120 | "title":"{{LangReset1}}", 121 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 122 | "class":"btn btn-block btn-warning" 123 | } 124 | 125 | ] 126 | } 127 | -------------------------------------------------------------------------------- /dev_data/rgbs.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-info" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"text", 27 | "module":"ddns", 28 | "name":"alert-ifttt", 29 | "title":"{{LangIfttt1}}", 30 | "class":"alert alert-info {{alert-ifttt}}" 31 | }, 32 | 33 | { 34 | "type":"rgb", 35 | "title":"/img/swatches.png", 36 | "name":"color", 37 | "module":"rgbs", 38 | "state":"{{colorSRGB}}", 39 | "response":"[[rgb]]", 40 | "action":"rgbs set [[color]]", 41 | "style":"cursor:pointer;width:100%" 42 | }, 43 | 44 | { 45 | "type":"range", 46 | "title":"R", 47 | "name":"colorR", 48 | "module":"rgbs", 49 | "state":"parseInt(val('color').substr(0,2),12)", 50 | "response":"[[rgb]]", 51 | "action":"rgbs set '+rgbToHex(Number(val('colorR')),Number(val('colorG')),Number(val('colorB')))+'", 52 | "pattern":"min=0 max=255 step=1" 53 | }, 54 | { 55 | "type":"range", 56 | "title":"G", 57 | "name":"colorG", 58 | "module":"rgbs", 59 | "state":"parseInt(val('color').substr(2,2),12)", 60 | "response":"[[rgb]]", 61 | "action":"rgbs set '+rgbToHex(Number(val('colorR')),Number(val('colorG')),Number(val('colorB')))+'", 62 | "pattern":"min=0 max=255 step=1" 63 | }, 64 | { 65 | "type":"range", 66 | "title":"B", 67 | "name":"colorB", 68 | "module":"rgbs", 69 | "state":"parseInt(val('color').substr(4,2),12)", 70 | "response":"[[rgb]]", 71 | "action":"rgbs set '+rgbToHex(Number(val('colorR')),Number(val('colorG')),Number(val('colorB')))+'", 72 | "pattern":"min=0 max=255 step=1" 73 | }, 74 | { 75 | "type":"hr" 76 | }, 77 | 78 | 79 | { 80 | "type":"h4", 81 | "title":"{{LangTime8}}" 82 | }, 83 | { 84 | "type":"select", 85 | "state":"{{timeRGB}}", 86 | "name":"time", 87 | "module":"rgbs", 88 | "response":"[[rgb]]", 89 | "action":"pulse on rgbs [[time]]s", 90 | "title":{ 91 | "60":"1", 92 | "300":"5", 93 | "600":"10", 94 | "1500":"15", 95 | "1800":"30", 96 | "3600":"60", 97 | "5400":"1:30", 98 | "7200":"2:00", 99 | "10800":"3:00", 100 | "0":"∞" 101 | } 102 | }, 103 | 104 | { 105 | "type":"hr" 106 | }, 107 | 108 | { 109 | "type":"button", 110 | "title":"({{rgbs}}?'{{LangOff}}':'{{LangOn}}')", 111 | "name":"rgb", 112 | "module":"rgbs", 113 | "response":"[[rgb]]", 114 | "action":"rgbs not", 115 | "class":"'btn btn-block btn-lg btn-'+({{rgbs}}?'info':'primary')" 116 | }, 117 | 118 | 119 | { 120 | "type":"hr" 121 | }, 122 | 123 | { 124 | "type":"macros" 125 | }, 126 | 127 | { 128 | "type":"chart", 129 | "title":"{{LangA0}}", 130 | "state":"charts.json?data=A0&data1=highAlarmA0&data2=lowAlarmA0", 131 | "module":"A0", 132 | "action":"/page.htm?chart&A0&highAlarmA0&lowAlarmA0", 133 | "style":"height:200px;margin-left:-20px" 134 | }, 135 | 136 | { 137 | "type":"link", 138 | "title":" {{LangSetting3}}", 139 | "action":"/page.htm?setup", 140 | "class":"btn btn-block btn-default" 141 | }, 142 | { 143 | "type":"link", 144 | "module":"admin", 145 | "title":"{{LangReset1}}", 146 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 147 | "class":"btn btn-block btn-warning" 148 | } 149 | ] 150 | } 151 | -------------------------------------------------------------------------------- /dev_data/scenary.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.options.json", 4 | "/lang/lang.{{lang}}.json", 5 | "/modules.json" 6 | ], 7 | "title": [{ 8 | "type":"text", 9 | "title":"{{LangScenary}}" 10 | }], 11 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 12 | "content":[ 13 | { 14 | "type":"h5", 15 | "title":"{{SSDP}}", 16 | "class":"alert-danger" 17 | }, 18 | 19 | { 20 | "type":"loadJson", 21 | "state":"header.json" 22 | }, 23 | { 24 | "type":"link", 25 | "title":"{{LangAddScenery}}", 26 | "action":"#add-new-scenary", 27 | "class":"btn btn-block btn-default" 28 | }, 29 | { 30 | "type":"h2", 31 | "title":"{{LangScenary}}" 32 | }, 33 | 34 | 35 | { 36 | "type":"scenary-list", 37 | "style":"width:100%" 38 | }, 39 | 40 | 41 | { 42 | "type":"hr" 43 | }, 44 | 45 | { 46 | "type":"h2", 47 | "name":"add-new-scenary", 48 | "title":"{{LangAddScenery}}" 49 | }, 50 | { 51 | "type":"text", 52 | "name":"alert-scenary", 53 | "title":"{{LangScenery1}}", 54 | "class":"alert alert-info {{alert-scenary}}" 55 | }, 56 | 57 | { 58 | "type":"scenary-add" 59 | }, 60 | 61 | { 62 | "type":"hr" 63 | }, 64 | 65 | { 66 | "type":"link", 67 | "title":" {{LangSetting3}}", 68 | "action":"/page.htm?setup", 69 | "class":"btn btn-block btn-default" 70 | }, 71 | { 72 | "type":"link", 73 | "module":"admin", 74 | "title":"{{LangReset1}}", 75 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 76 | "class":"btn btn-block btn-warning" 77 | } 78 | 79 | ] 80 | } 81 | -------------------------------------------------------------------------------- /dev_data/shim.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangOptions1}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-info" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | 26 | { 27 | "type":"range", 28 | "title":"Shim0", 29 | "name":"shim0", 30 | "module":"shim0", 31 | "state":"{{shim0}}", 32 | "action":"shim [[shim0]] 0", 33 | "pattern":"min=0 max=1023 step=1" 34 | }, 35 | { 36 | "type":"range", 37 | "title":"Shim1", 38 | "name":"shim1", 39 | "module":"shim1", 40 | "state":"{{shim1}}", 41 | "action":"shim [[shim1]] 1", 42 | "pattern":"min=0 max=1023 step=1" 43 | }, 44 | { 45 | "type":"range", 46 | "title":"Shim2", 47 | "name":"shim2", 48 | "module":"shim2", 49 | "state":"{{shim2}}", 50 | "action":"shim [[shim0]] 2", 51 | "pattern":"min=0 max=1023 step=1" 52 | }, 53 | { 54 | "type":"range", 55 | "title":"Shim3", 56 | "name":"shim3", 57 | "module":"shim3", 58 | "state":"{{shim3}}", 59 | "action":"shim [[shim3]] 3", 60 | "pattern":"min=0 max=1023 step=1" 61 | }, 62 | { 63 | "type":"range", 64 | "title":"Shim4", 65 | "name":"shim4", 66 | "module":"shim4", 67 | "state":"{{shim4}}", 68 | "action":"shim [[shim4]] 4", 69 | "pattern":"min=0 max=1023 step=1" 70 | }, 71 | 72 | 73 | { 74 | "type":"hr" 75 | }, 76 | 77 | { 78 | "type":"macros" 79 | }, 80 | 81 | { 82 | "type":"chart", 83 | "title":"{{LangA0}}", 84 | "state":"charts.json?data=A0&data1=highAlarmA0&data2=lowAlarmA0", 85 | "module":"A0", 86 | "action":"/page.htm?chart&A0&highAlarmA0&lowAlarmA0", 87 | "style":"height:200px;margin-left:-20px" 88 | }, 89 | 90 | { 91 | "type":"link", 92 | "title":" {{LangSetting3}}", 93 | "action":"/page.htm?setup", 94 | "class":"btn btn-block btn-default" 95 | }, 96 | { 97 | "type":"link", 98 | "module":"admin", 99 | "title":"{{LangReset1}}", 100 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');toggle('restart-esp');timeout('toggle(\\'restart-esp\\')',20000);}", 101 | "class":"btn btn-block btn-warning" 102 | } 103 | ] 104 | } 105 | -------------------------------------------------------------------------------- /dev_data/starting.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs": [ 3 | "/config.options.json", 4 | "/config.setup.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"Starting Log" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content": [ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-default" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"h2", 27 | "title":"{{LangType}} {{configs}}" 28 | }, 29 | { 30 | "type":"text", 31 | "title":"Обратите внимание, время показывается в GMT 0.
Вся эта информация хранится на стороннем сервере. Если у устройсва нет выхода в Интернет, здесь будет пусто.", 32 | "class":"alert alert-info" 33 | }, 34 | 35 | 36 | { 37 | "type":"table", 38 | "state":"http://backup.privet.lv/visitors/{{mac}}.json", 39 | "title": { 40 | "starting":"Starting", 41 | "startingInfo":"Starting Info", 42 | "module":"Module" 43 | }, 44 | "class":"table table-striped table-hover", 45 | "style":"width:100%;" 46 | }, 47 | 48 | { 49 | "type":"hr" 50 | }, 51 | { 52 | "type":"link", 53 | "title":" {{LangSetting3}}", 54 | "action":"/page.htm?setup", 55 | "class":"btn btn-block btn-default" 56 | } 57 | 58 | ] 59 | } 60 | -------------------------------------------------------------------------------- /dev_data/timer.json: -------------------------------------------------------------------------------- 1 | { 2 | "configs":[ 3 | "/config.live.json", 4 | "/config.options.json", 5 | "/lang/lang.{{lang}}.json", 6 | "/modules.json" 7 | ], 8 | "title": [{ 9 | "type":"text", 10 | "title":"{{LangTimer}}" 11 | }], 12 | "class":"col-sm-offset-1 col-sm-10 col-md-offset-2 col-md-8 col-lg-offset-3 col-lg-6", 13 | "content":[ 14 | { 15 | "type":"h5", 16 | "title":"{{SSDP}}", 17 | "class":"alert-danger" 18 | }, 19 | 20 | { 21 | "type":"loadJson", 22 | "state":"header.json" 23 | }, 24 | 25 | { 26 | "type":"time", 27 | "title":"{{LangTime1}}", 28 | "state":"{{time}}" 29 | }, 30 | 31 | { 32 | "type":"hr" 33 | }, 34 | { 35 | "type":"h2", 36 | "title":"{{LangList}}" 37 | }, 38 | { 39 | "type":"time-list", 40 | "style":"width:100%" 41 | }, 42 | 43 | { 44 | "type":"hr" 45 | }, 46 | 47 | { 48 | "type":"h2", 49 | "title":"{{LangTime3}}" 50 | }, 51 | 52 | { 53 | "type":"time-add" 54 | }, 55 | 56 | 57 | { 58 | "type":"hr" 59 | }, 60 | 61 | { 62 | "type":"link", 63 | "title":" {{LangSetting3}}", 64 | "action":"/page.htm?setup", 65 | "class":"btn btn-block btn-default" 66 | }, 67 | { 68 | "type":"link", 69 | "module":"admin", 70 | "title":"{{LangReset1}}", 71 | "action":"javascript:if(confirm(renameBlock(jsonResponse,'{{LangReset3}}'))){send_request(this,'/restart?device=ok');}", 72 | "class":"btn btn-block btn-warning" 73 | } 74 | 75 | ] 76 | } 77 | -------------------------------------------------------------------------------- /hw_timer.c: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * Copyright 2013-2014 Espressif Systems (Wuxi) 3 | * 4 | * FileName: hw_timer.c 5 | * 6 | * Description: hw_timer driver 7 | * 8 | * Modification history: 9 | * 2014/5/1, v1.0 create this file. 10 | *******************************************************************************/ 11 | //#include "c-types.h" 12 | typedef __SIZE_TYPE__ size_t; 13 | #include "ets_sys.h" 14 | #include "os_type.h" 15 | #include "osapi.h" 16 | #include "hw_timer.h" 17 | 18 | 19 | /****************************************************************************** 20 | * FunctionName : hw_timer_arm 21 | * Description : set a trigger timer delay for this timer. 22 | * Parameters : uint32 val : 23 | in autoload mode 24 | 50 ~ 0x7fffff; for FRC1 source. 25 | 100 ~ 0x7fffff; for NMI source. 26 | in non autoload mode: 27 | 10 ~ 0x7fffff; 28 | * Returns : NONE 29 | *******************************************************************************/ 30 | void hw_timer_arm(u32 val) 31 | { 32 | RTC_REG_WRITE(FRC1_LOAD_ADDRESS, US_TO_RTC_TIMER_TICKS(val)); 33 | } 34 | 35 | static void (* user_hw_timer_cb)(void) = NULL; 36 | /****************************************************************************** 37 | * FunctionName : hw_timer_set_func 38 | * Description : set the func, when trigger timer is up. 39 | * Parameters : void (* user_hw_timer_cb_set)(void): 40 | timer callback function, 41 | * Returns : NONE 42 | *******************************************************************************/ 43 | void hw_timer_set_func(void (* user_hw_timer_cb_set)(void)) 44 | { 45 | user_hw_timer_cb = user_hw_timer_cb_set; 46 | } 47 | 48 | static void hw_timer_isr_cb(void) 49 | { 50 | if (user_hw_timer_cb != NULL) { 51 | (*(user_hw_timer_cb))(); 52 | } 53 | } 54 | 55 | /****************************************************************************** 56 | * FunctionName : hw_timer_init 57 | * Description : initilize the hardware isr timer 58 | * Parameters : 59 | FRC1_TIMER_SOURCE_TYPE source_type: 60 | FRC1_SOURCE, timer use frc1 isr as isr source. 61 | NMI_SOURCE, timer use nmi isr as isr source. 62 | u8 req: 63 | 0, not autoload, 64 | 1, autoload mode, 65 | * Returns : NONE 66 | *******************************************************************************/ 67 | void ICACHE_FLASH_ATTR hw_timer_init(FRC1_TIMER_SOURCE_TYPE source_type, u8 req) 68 | { 69 | if (req == 1) { 70 | RTC_REG_WRITE(FRC1_CTRL_ADDRESS, 71 | FRC1_AUTO_LOAD | DIVDED_BY_16 | FRC1_ENABLE_TIMER | TM_EDGE_INT); 72 | } else { 73 | RTC_REG_WRITE(FRC1_CTRL_ADDRESS, 74 | DIVDED_BY_16 | FRC1_ENABLE_TIMER | TM_EDGE_INT); 75 | } 76 | 77 | if (source_type == NMI_SOURCE) { 78 | ETS_FRC_TIMER1_NMI_INTR_ATTACH(hw_timer_isr_cb); 79 | } else { 80 | ETS_FRC_TIMER1_INTR_ATTACH(hw_timer_isr_cb, NULL); 81 | } 82 | 83 | TM1_EDGE_INT_ENABLE(); 84 | ETS_FRC1_INTR_ENABLE(); 85 | } 86 | 87 | //-------------------------------Test Code Below-------------------------------------- 88 | #if 0 89 | void hw_test_timer_cb(void) 90 | { 91 | static uint16 j = 0; 92 | j++; 93 | 94 | if ((WDEV_NOW() - tick_now2) >= 1000000) { 95 | static u32 idx = 1; 96 | tick_now2 = WDEV_NOW(); 97 | os_printf("b%u:%d\n", idx++, j); 98 | j = 0; 99 | } 100 | 101 | //hw_timer_arm(50); 102 | } 103 | 104 | void ICACHE_FLASH_ATTR user_init(void) 105 | { 106 | hw_timer_init(FRC1_SOURCE, 1); 107 | hw_timer_set_func(hw_test_timer_cb); 108 | hw_timer_arm(100); 109 | } 110 | #endif 111 | /* 112 | NOTE: 113 | 1 if use nmi source, for autoload timer , the timer setting val can't be less than 100. 114 | 2 if use nmi source, this timer has highest priority, can interrupt other isr. 115 | 3 if use frc1 source, this timer can't interrupt other isr. 116 | 117 | */ 118 | 119 | -------------------------------------------------------------------------------- /hw_timer.h: -------------------------------------------------------------------------------- 1 | #ifndef HW_TIMER_H 2 | #define HW_TIMER_H 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | #define US_TO_RTC_TIMER_TICKS(t) \ 9 | ((t) ? \ 10 | (((t) > 0x35A) ? \ 11 | (((t)>>2) * ((APB_CLK_FREQ>>4)/250000) + ((t)&0x3) * ((APB_CLK_FREQ>>4)/1000000)) : \ 12 | (((t) *(APB_CLK_FREQ>>4)) / 1000000)) : \ 13 | 0) 14 | 15 | #define FRC1_ENABLE_TIMER BIT7 16 | #define FRC1_AUTO_LOAD BIT6 17 | 18 | //TIMER PREDIVED MODE 19 | typedef enum { 20 | DIVDED_BY_1 = 0, //timer clock 21 | DIVDED_BY_16 = 4, //divided by 16 22 | DIVDED_BY_256 = 8, //divided by 256 23 | } TIMER_PREDIVED_MODE; 24 | 25 | typedef enum { //timer interrupt mode 26 | TM_LEVEL_INT = 1, // level interrupt 27 | TM_EDGE_INT = 0, //edge interrupt 28 | } TIMER_INT_MODE; 29 | 30 | typedef enum { 31 | FRC1_SOURCE = 0, 32 | NMI_SOURCE = 1, 33 | } FRC1_TIMER_SOURCE_TYPE; 34 | 35 | 36 | void hw_timer_arm(u32 val); 37 | void hw_timer_set_func(void (* user_hw_timer_cb_set)(void)); 38 | void hw_timer_init(FRC1_TIMER_SOURCE_TYPE source_type, u8 req); 39 | //void ICACHE_RAM_ATTR blink_gpio(void); 40 | //volatile bool state; 41 | 42 | 43 | 44 | #ifdef __cplusplus 45 | } 46 | #endif 47 | 48 | #endif /* HW_TIMER_H */ 49 | -------------------------------------------------------------------------------- /pre-commit.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | cat dev_data/css/chartist.min.css dev_data/css/bootstrap.min.css dev_data/css/style.css > dev_data/css/build.css 3 | cat dev_data/js/chartist.min.js dev_data/js/chart.js > dev_data/js/build.chart.js 4 | 5 | #find ./dev_data3 -type f -iname '*.html' -exec sed -i -e 's|\?v\([0-9]\+\).\([0-9]\+\).\([0-9]\+\)|?ver=05.10.2017|g' '{}' \; 6 | #find ./dev_data -iname "*.htm" -type f -exec sed -i 's/vvda$today/v07.06.2017/gi' {} \; 7 | 8 | gzip -vrkf dev_data/*.htm 9 | gzip -vrkf dev_data/css/*.css 10 | gzip -vrkf dev_data/js/*.js 11 | gzip -vrkf dev_data/*.json 12 | gzip -vrkf dev_data/lang/lang.*.json 13 | #gzip -vrkf dev_data/widgets/*.json 14 | 15 | mv dev_data/*.htm.gz data/ 16 | mv dev_data/js/*.js.gz data/js 17 | mv dev_data/css/*.css.gz data/css 18 | mv dev_data/lang/*.json.gz data/lang 19 | mv dev_data/*.json.gz data/ 20 | #mv dev_data/widgets/*.json data/widgets 21 | 22 | rm dev_data/css/build.css 23 | rm dev_data/js/build.chart.js 24 | 25 | rm data/css/chartist.min.css.gz 26 | rm data/css/bootstrap.min.css.gz 27 | rm data/css/style.css.gz 28 | rm data/js/chartist.min.js.gz 29 | rm data/js/chart.js.gz 30 | rm data/js/siema.min.js.gz 31 | 32 | #test -f *.generic.bin && cp *.generic.bin build/build.generic_flash_size_1Mb.254Kb_`date '+%G.%m.%d'`.bin 33 | 34 | 35 | #FILE_SUM=`md5sum Sonoff_WiFi_switch.ino.generic.bin` 36 | #COPY_SUM=`md5sum ./build/$(ls -lt ./build | head -n2 |tail -n1 | awk '{print $9}')` 37 | #if [ "$FILE_SUM" != "$COPY_SUM" ] 38 | #then 39 | #cp Sonoff_WiFi_switch.ino.generic.bin build/build.0x00000_flash_size_1Mb.256Kb_`date '+%G.%m.%d'`.bin 40 | #fi 41 | #cp /tmp/arduino_build_*/Sonoff_WiFi_switch.spiffs.bin ./build/spiffs.0xBB000_flash_size_1Mb.256Kb_`date '+%G.%m.%d'`.bin 42 | -------------------------------------------------------------------------------- /tutorial/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/download.png -------------------------------------------------------------------------------- /tutorial/esp8266_12_wiring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/esp8266_12_wiring.png -------------------------------------------------------------------------------- /tutorial/esp8266_esp01_horizontal-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/esp8266_esp01_horizontal-01.png -------------------------------------------------------------------------------- /tutorial/esp8266_esp12e_horizontal-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/esp8266_esp12e_horizontal-01.png -------------------------------------------------------------------------------- /tutorial/esp8266_wiring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/esp8266_wiring.png -------------------------------------------------------------------------------- /tutorial/id_block.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/id_block.png -------------------------------------------------------------------------------- /tutorial/jalousie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/jalousie.png -------------------------------------------------------------------------------- /tutorial/mqtt/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/1.png -------------------------------------------------------------------------------- /tutorial/mqtt/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/2.png -------------------------------------------------------------------------------- /tutorial/mqtt/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/3.png -------------------------------------------------------------------------------- /tutorial/mqtt/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/4.png -------------------------------------------------------------------------------- /tutorial/mqtt/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/5.png -------------------------------------------------------------------------------- /tutorial/mqtt/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/6.png -------------------------------------------------------------------------------- /tutorial/mqtt/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/mqtt/7.png -------------------------------------------------------------------------------- /tutorial/nodemcu-flasher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/nodemcu-flasher.png -------------------------------------------------------------------------------- /tutorial/pins-edit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/pins-edit.gif -------------------------------------------------------------------------------- /tutorial/pins-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/pins-edit.png -------------------------------------------------------------------------------- /tutorial/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/question.png -------------------------------------------------------------------------------- /tutorial/screen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/screen1.png -------------------------------------------------------------------------------- /tutorial/screen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/screen2.png -------------------------------------------------------------------------------- /tutorial/screen3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/screen3.png -------------------------------------------------------------------------------- /tutorial/screen4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/screen4.png -------------------------------------------------------------------------------- /tutorial/smart-home-icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/smart-home-icon.gif -------------------------------------------------------------------------------- /tutorial/sonoff.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tretyakovsa/Sonoff_WiFi_switch/1c03a9530325ef2ad7fea054f36f99d4e54ea77d/tutorial/sonoff.jpg --------------------------------------------------------------------------------