From 58ec01d6439dd3b42d7866ecbcf70e61738e4ab2 Mon Sep 17 00:00:00 2001
From: Theo Arends <11044339+arendst@users.noreply.github.com>
Date: Wed, 13 Nov 2019 11:46:56 +0100
Subject: [PATCH] Release 7.1
---
.github/ISSUE_TEMPLATE/Bug_report.md | 36 +-
.github/ISSUE_TEMPLATE/Custom.md | 34 +-
.github/PULL_REQUEST_TEMPLATE.md | 6 +-
.gitignore | 2 +-
.gitpod.yml | 2 +-
.travis.yml | 56 +-
API.md | 192 +-
CONTRIBUTING.md | 8 +-
Doxyfile | 2489 +++++++
I2CDEVICES.md | 66 +
README.md | 72 +-
REFERENCE.md | 20 -
RELEASENOTES.md | 199 +-
SUPPORT.md | 20 +-
arduino/version 2.5.2/boards.txt | 6252 -----------------
.../platform.txt | 55 +-
build-container/README.md | 20 +-
build-container/entrypoint.sh | 2 +-
.../Adafruit_SSD1306.cpp | 7 +
.../Adafruit_TSL2591.cpp | 464 ++
.../Adafruit_TSL2591.h | 86 +
lib/ArduinoHexParse/README.md | 3 -
lib/ArduinoHexParse/keywords.txt | 25 -
lib/ArduinoHexParse/library.json | 12 -
lib/ArduinoHexParse/library.properties | 9 -
lib/ArduinoHexParse/src/ArduinoHexParse.cpp | 134 -
lib/ArduinoHexParse/src/ArduinoHexParse.h | 47 -
lib/ArduinoJson-5.13.4/library.properties | 2 +-
lib/HPMA115S0/LICENSE.md | 7 +
lib/HPMA115S0/README.md | 2 +
lib/HPMA115S0/example/example.ino | 34 +
lib/HPMA115S0/library.properties | 9 +
lib/HPMA115S0/src/hpma115S0.cpp | 190 +
lib/HPMA115S0/src/hpma115S0.h | 123 +
lib/I2Cdevlib-ADS1115/.library.json | 40 -
lib/I2Cdevlib-ADS1115/ADS1115.cpp | 649 --
lib/I2Cdevlib-ADS1115/ADS1115.h | 200 -
.../ADS1115_differential.ino | 91 -
.../ADS1115_single/ADS1115_single.ino | 110 -
lib/I2Cdevlib-ADS1115/library.json | 18 -
lib/I2Cdevlib-MPU6050/MPU6050.cpp | 12 +-
lib/I2Cdevlib-MPU6050/MPU6050.h | 32 +-
.../MPU6050_6Axis_MotionApps20.h | 10 +-
.../MPU6050_9Axis_MotionApps41.h | 26 +-
lib/I2Cdevlib-MPU6050/helper_3dmath.h | 26 +-
.../.github/CONTRIBUTING.md | 82 -
.../.github/Contributors.md | 20 -
.../.github/issue_template.md | 42 -
lib/IRremoteESP8266-2.6.5/.gitignore | 53 -
lib/IRremoteESP8266-2.6.5/.gitmodules | 4 -
lib/IRremoteESP8266-2.6.5/.style.yapf | 3 -
lib/IRremoteESP8266-2.6.5/.travis.yml | 74 -
.../CommonAcControl/CommonAcControl.ino | 81 -
.../examples/IRGCTCPServer/platformio.ini | 18 -
.../examples/IRServer/platformio.ini | 18 -
.../examples/IRrecvDemo/platformio.ini | 18 -
.../examples/IRrecvDump/platformio.ini | 18 -
.../examples/IRrecvDumpV2/platformio.ini | 18 -
.../examples/IRsendDemo/platformio.ini | 18 -
.../examples/IRsendProntoDemo/platformio.ini | 18 -
.../JVCPanasonicSendDemo/platformio.ini | 18 -
.../examples/LGACSend/platformio.ini | 18 -
.../examples/SmartIRRepeater/platformio.ini | 18 -
.../examples/TurnOnArgoAC/platformio.ini | 18 -
.../examples/TurnOnDaikinAC/platformio.ini | 18 -
.../examples/TurnOnFujitsuAC/platformio.ini | 18 -
.../TurnOnKelvinatorAC/platformio.ini | 18 -
.../TurnOnMitsubishiAC/platformio.ini | 18 -
.../TurnOnMitsubishiHeavyAc/platformio.ini | 18 -
.../examples/TurnOnPanasonicAC/platformio.ini | 18 -
.../examples/TurnOnToshibaAC/platformio.ini | 18 -
.../examples/TurnOnTrotecAC/platformio.ini | 18 -
lib/IRremoteESP8266-2.6.5/src/ir_Hitachi.cpp | 442 --
.../src/ir_Mitsubishi.cpp | 811 ---
lib/IRremoteESP8266-2.6.5/src/ir_Mitsubishi.h | 121 -
.../tools/auto_analyse_raw_data.py | 432 --
.../tools/auto_analyse_raw_data_test.py | 492 --
.../CPPLINT.cfg | 0
.../LICENSE.txt | 0
.../README.md | 16 +-
lib/IRremoteESP8266-2.7.0/README_fr.md | 83 +
.../ReleaseNotes.md | 71 +
.../SupportedProtocols.md | 30 +-
.../CommonAcControl/CommonAcControl.ino | 72 +
.../examples/CommonAcControl/platformio.ini | 5 +-
.../ControlSamsungAC/ControlSamsungAC.ino | 0
.../examples/ControlSamsungAC/platformio.ini | 5 +-
.../DumbIRRepeater/DumbIRRepeater.ino | 0
.../examples/DumbIRRepeater/platformio.ini | 5 +-
.../examples/IRGCSendDemo/IRGCSendDemo.ino | 0
.../examples/IRGCSendDemo/platformio.ini | 5 +-
.../examples/IRGCTCPServer/IRGCTCPServer.ino | 0
.../examples/IRGCTCPServer/platformio.ini | 17 +
.../examples/IRMQTTServer/IRMQTTServer.h | 51 +-
.../examples/IRMQTTServer/IRMQTTServer.ino | 662 +-
.../examples/IRMQTTServer/platformio.ini | 15 +-
.../examples/IRServer/IRServer.ino | 0
.../examples/IRServer/platformio.ini | 17 +
.../examples/IRrecvDemo/IRrecvDemo.ino | 0
.../examples/IRrecvDemo/platformio.ini | 17 +
.../examples/IRrecvDump/IRrecvDump.ino | 0
.../examples/IRrecvDump/platformio.ini | 17 +
.../examples/IRrecvDumpV2/IRrecvDumpV2.ino | 32 +-
.../examples/IRrecvDumpV2/platformio.ini | 46 +
.../examples/IRsendDemo/IRsendDemo.ino | 0
.../examples/IRsendDemo/platformio.ini | 17 +
.../IRsendProntoDemo/IRsendProntoDemo.ino | 6 +-
.../examples/IRsendProntoDemo/platformio.ini | 17 +
.../JVCPanasonicSendDemo.ino | 0
.../JVCPanasonicSendDemo/platformio.ini | 17 +
.../examples/LGACSend/LGACSend.ino | 0
.../examples/LGACSend/platformio.ini | 17 +
.../SmartIRRepeater/SmartIRRepeater.ino | 0
.../examples/SmartIRRepeater/platformio.ini | 17 +
.../examples/TurnOnArgoAC/TurnOnArgoAC.ino | 0
.../examples/TurnOnArgoAC/platformio.ini | 17 +
.../TurnOnDaikinAC/TurnOnDaikinAC.ino | 0
.../examples/TurnOnDaikinAC/platformio.ini | 17 +
.../TurnOnFujitsuAC/TurnOnFujitsuAC.ino | 0
.../examples/TurnOnFujitsuAC/platformio.ini | 17 +
.../TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino | 0
.../TurnOnKelvinatorAC/platformio.ini | 17 +
.../TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino | 0
.../TurnOnMitsubishiAC/platformio.ini | 17 +
.../TurnOnMitsubishiHeavyAc.ino | 0
.../TurnOnMitsubishiHeavyAc/platformio.ini | 17 +
.../TurnOnPanasonicAC/TurnOnPanasonicAC.ino | 0
.../examples/TurnOnPanasonicAC/platformio.ini | 17 +
.../TurnOnToshibaAC/TurnOnToshibaAC.ino | 0
.../examples/TurnOnToshibaAC/platformio.ini | 17 +
.../TurnOnTrotecAC/TurnOnTrotecAC.ino | 0
.../examples/TurnOnTrotecAC/platformio.ini | 17 +
.../examples/Web-AC-control/README.md | 43 +
.../Web-AC-control/Web-AC-control.ino | 300 +
.../examples/Web-AC-control/platformio.ini | 36 +
.../examples/Web-AC-control/printscreen.png | Bin 0 -> 25768 bytes
.../Web-AC-control/upload/favicon.ico | Bin 0 -> 16446 bytes
.../Web-AC-control/upload/level_1_off.svg | 49 +
.../Web-AC-control/upload/level_1_on.svg | 49 +
.../Web-AC-control/upload/level_2_off.svg | 49 +
.../Web-AC-control/upload/level_2_on.svg | 49 +
.../Web-AC-control/upload/level_3_off.svg | 49 +
.../Web-AC-control/upload/level_3_on.svg | 49 +
.../Web-AC-control/upload/level_4_off.svg | 49 +
.../Web-AC-control/upload/level_4_on.svg | 49 +
.../examples/Web-AC-control/upload/ui.html | 109 +
.../examples/Web-AC-control/upload/ui.js | 132 +
.../keywords.txt | 705 +-
.../library.json | 2 +-
.../library.properties | 2 +-
.../pylintrc | 0
.../src/CPPLINT.cfg | 0
.../src/IRac.cpp | 1140 +--
.../src/IRac.h | 52 +-
.../src/IRrecv.cpp | 21 +-
.../src/IRrecv.h | 20 +-
.../src/IRremoteESP8266.h | 173 +-
.../src/IRsend.cpp | 21 +
.../src/IRsend.h | 49 +-
lib/IRremoteESP8266-2.7.0/src/IRtext.cpp | 153 +
lib/IRremoteESP8266-2.7.0/src/IRtext.h | 146 +
.../src/IRtimer.cpp | 0
.../src/IRtimer.h | 0
.../src/IRutils.cpp | 320 +-
.../src/IRutils.h | 43 +
lib/IRremoteESP8266-2.7.0/src/i18n.h | 25 +
.../src/ir_Aiwa.cpp | 0
.../src/ir_Amcor.cpp | 71 +-
.../src/ir_Amcor.h | 26 +-
.../src/ir_Argo.cpp | 151 +-
.../src/ir_Argo.h | 80 +-
.../src/ir_Carrier.cpp | 0
.../src/ir_Coolix.cpp | 266 +-
.../src/ir_Coolix.h | 51 +-
.../src/ir_Daikin.cpp | 1572 +++--
.../src/ir_Daikin.h | 213 +-
.../src/ir_Denon.cpp | 0
.../src/ir_Dish.cpp | 0
.../src/ir_Electra.cpp | 92 +-
.../src/ir_Electra.h | 25 +-
.../src/ir_Fujitsu.cpp | 242 +-
.../src/ir_Fujitsu.h | 24 +-
.../src/ir_GICable.cpp | 0
.../src/ir_GlobalCache.cpp | 0
.../src/ir_Goodweather.cpp | 183 +-
.../src/ir_Goodweather.h | 30 +-
.../src/ir_Gree.cpp | 264 +-
.../src/ir_Gree.h | 62 +-
.../src/ir_Haier.cpp | 464 +-
.../src/ir_Haier.h | 89 +-
lib/IRremoteESP8266-2.7.0/src/ir_Hitachi.cpp | 753 ++
.../src/ir_Hitachi.h | 77 +-
.../src/ir_Inax.cpp | 0
.../src/ir_JVC.cpp | 0
.../src/ir_Kelvinator.cpp | 163 +-
.../src/ir_Kelvinator.h | 0
.../src/ir_LG.cpp | 0
.../src/ir_LG.h | 0
.../src/ir_Lasertag.cpp | 0
.../src/ir_Lego.cpp | 0
.../src/ir_Lutron.cpp | 0
.../src/ir_MWM.cpp | 0
.../src/ir_Magiquest.cpp | 0
.../src/ir_Magiquest.h | 0
.../src/ir_Midea.cpp | 133 +-
.../src/ir_Midea.h | 32 +-
.../src/ir_Mitsubishi.cpp | 1594 +++++
lib/IRremoteESP8266-2.7.0/src/ir_Mitsubishi.h | 312 +
.../src/ir_MitsubishiHeavy.cpp | 561 +-
.../src/ir_MitsubishiHeavy.h | 74 +-
.../src/ir_NEC.cpp | 0
.../src/ir_NEC.h | 0
.../src/ir_Neoclima.cpp | 221 +-
.../src/ir_Neoclima.h | 38 +-
.../src/ir_Nikai.cpp | 0
.../src/ir_Panasonic.cpp | 410 +-
.../src/ir_Panasonic.h | 72 +-
.../src/ir_Pioneer.cpp | 0
.../src/ir_Pronto.cpp | 0
.../src/ir_RC5_RC6.cpp | 0
.../src/ir_RCMM.cpp | 0
.../src/ir_Samsung.cpp | 231 +-
.../src/ir_Samsung.h | 34 +-
.../src/ir_Sanyo.cpp | 0
.../src/ir_Sharp.cpp | 118 +-
.../src/ir_Sharp.h | 13 +-
.../src/ir_Sherwood.cpp | 0
.../src/ir_Sony.cpp | 0
.../src/ir_Tcl.cpp | 197 +-
.../src/ir_Tcl.h | 35 +-
.../src/ir_Teco.cpp | 185 +-
.../src/ir_Teco.h | 51 +-
.../src/ir_Toshiba.cpp | 112 +-
.../src/ir_Toshiba.h | 16 +-
.../src/ir_Trotec.cpp | 97 +-
.../src/ir_Trotec.h | 13 +-
.../src/ir_Vestel.cpp | 255 +-
.../src/ir_Vestel.h | 15 +-
.../src/ir_Whirlpool.cpp | 210 +-
.../src/ir_Whirlpool.h | 31 +-
.../src/ir_Whynter.cpp | 0
.../src/locale/README.md | 97 +
lib/IRremoteESP8266-2.7.0/src/locale/de-CH.h | 158 +
lib/IRremoteESP8266-2.7.0/src/locale/de-DE.h | 126 +
.../src/locale/defaults.h | 440 ++
lib/IRremoteESP8266-2.7.0/src/locale/en-AU.h | 8 +
lib/IRremoteESP8266-2.7.0/src/locale/en-IE.h | 8 +
lib/IRremoteESP8266-2.7.0/src/locale/en-UK.h | 8 +
lib/IRremoteESP8266-2.7.0/src/locale/en-US.h | 13 +
lib/IRremoteESP8266-2.7.0/src/locale/es-ES.h | 134 +
lib/IRremoteESP8266-2.7.0/src/locale/fr-FR.h | 115 +
.../test/IRac_test.cpp | 281 +-
.../test/IRrecv_test.cpp | 0
.../test/IRrecv_test.h | 0
.../test/IRsend_test.cpp | 0
.../test/IRsend_test.h | 0
.../test/IRutils_test.cpp | 187 +-
.../test/Makefile | 21 +-
.../test/ir_Aiwa_test.cpp | 0
.../test/ir_Amcor_test.cpp | 6 +-
.../test/ir_Argo_test.cpp | 12 +-
.../test/ir_Carrier_test.cpp | 0
.../test/ir_Coolix_test.cpp | 57 +-
.../test/ir_Daikin_test.cpp | 574 +-
.../test/ir_Denon_test.cpp | 0
.../test/ir_Dish_test.cpp | 0
.../test/ir_Electra_test.cpp | 8 +-
.../test/ir_Fujitsu_test.cpp | 198 +-
.../test/ir_GICable_test.cpp | 0
.../test/ir_GlobalCache_test.cpp | 0
.../test/ir_Goodweather_test.cpp | 40 +-
.../test/ir_Gree_test.cpp | 16 +-
.../test/ir_Haier_test.cpp | 98 +-
.../test/ir_Hitachi_test.cpp | 314 +-
.../test/ir_Inax_test.cpp | 0
.../test/ir_JVC_test.cpp | 0
.../test/ir_Kelvinator_test.cpp | 12 +-
.../test/ir_LG_test.cpp | 0
.../test/ir_Lasertag_test.cpp | 0
.../test/ir_Lego_test.cpp | 0
.../test/ir_Lutron_test.cpp | 0
.../test/ir_MWM_test.cpp | 0
.../test/ir_Magiquest_test.cpp | 0
.../test/ir_Midea_test.cpp | 49 +-
.../test/ir_MitsubishiHeavy_test.cpp | 74 +-
.../test/ir_Mitsubishi_test.cpp | 565 +-
.../test/ir_NEC_test.cpp | 0
.../test/ir_Neoclima_test.cpp | 2 +-
.../test/ir_Nikai_test.cpp | 0
.../test/ir_Panasonic_test.cpp | 81 +-
.../test/ir_Pioneer_test.cpp | 0
.../test/ir_Pronto_test.cpp | 0
.../test/ir_RC5_RC6_test.cpp | 0
.../test/ir_RCMM_test.cpp | 0
.../test/ir_Samsung_test.cpp | 70 +-
.../test/ir_Sanyo_test.cpp | 0
.../test/ir_Sharp_test.cpp | 26 +-
.../test/ir_Sherwood_test.cpp | 0
.../test/ir_Sony_test.cpp | 0
.../test/ir_Tcl_test.cpp | 44 +-
.../test/ir_Teco_test.cpp | 74 +-
.../test/ir_Toshiba_test.cpp | 6 +-
.../test/ir_Trotec_test.cpp | 4 +-
.../test/ir_Vestel_test.cpp | 30 +-
.../test/ir_Whirlpool_test.cpp | 20 +-
.../test/ir_Whynter_test.cpp | 0
.../tools/Makefile | 12 +-
.../tools/RawToGlobalCache.sh | 0
.../tools/auto_analyse_raw_data.py | 729 ++
.../tools/auto_analyse_raw_data_test.py | 1170 +++
.../tools/gc_decode.cpp | 50 +-
.../tools/generate_irtext_h.sh | 36 +
.../tools/mkkeywords | 0
.../tools/mode2_decode.cpp | 0
.../tools/scrape_supported_devices.py | 0
.../.github/ISSUE_TEMPLATE/bug_report.md | 34 +
.../.github/ISSUE_TEMPLATE/feature_request.md | 20 +
lib/TasmotaModbus-1.2.0/library.json | 2 +-
lib/TasmotaSerial-2.4.1/library.json | 2 +-
.../src/t_bearssl_tasmota_config.h | 4 +
pio/rename-firmware.py | 12 +
platformio.ini | 331 +-
sonoff/xdrv_05_irremote.ino | 1070 ---
sonoff/xdrv_29_deepsleep.ino | 158 -
sonoff/xdrv_31_arduino_slave.ino | 291 -
sonoff/xsns_12_ads1115_i2cdev.ino | 154 -
sonoff/xsns_50_paj7620.ino | 570 --
{sonoff => tasmota}/Parsing.cpp | 0
{sonoff => tasmota}/StackThunk_light.cpp | 0
{sonoff => tasmota}/StackThunk_light.h | 0
.../WiFiClientSecureLightBearSSL.cpp | 0
.../WiFiClientSecureLightBearSSL.h | 0
{sonoff => tasmota}/_changelog.ino | 46 +-
{sonoff => tasmota}/core_esp8266_timer.c | 0
.../core_esp8266_wiring_digital.c | 0
{sonoff => tasmota}/core_esp8266_wiring_pwm.c | 0
{sonoff => tasmota}/i18n.h | 16 +-
{sonoff => tasmota}/language/bg-BG.h | 14 +-
{sonoff => tasmota}/language/cs-CZ.h | 14 +-
{sonoff => tasmota}/language/de-DE.h | 14 +-
{sonoff => tasmota}/language/el-GR.h | 14 +-
{sonoff => tasmota}/language/en-GB.h | 14 +-
{sonoff => tasmota}/language/es-ES.h | 16 +-
{sonoff => tasmota}/language/fr-FR.h | 14 +-
{sonoff => tasmota}/language/he-HE.h | 14 +-
{sonoff => tasmota}/language/hu-HU.h | 14 +-
{sonoff => tasmota}/language/it-IT.h | 14 +-
{sonoff => tasmota}/language/ko-KO.h | 112 +-
{sonoff => tasmota}/language/nl-NL.h | 14 +-
{sonoff => tasmota}/language/pl-PL.h | 14 +-
{sonoff => tasmota}/language/pt-BR.h | 18 +-
{sonoff => tasmota}/language/pt-PT.h | 20 +-
{sonoff => tasmota}/language/ru-RU.h | 14 +-
{sonoff => tasmota}/language/sk-SK.h | 14 +-
{sonoff => tasmota}/language/sv-SE.h | 14 +-
{sonoff => tasmota}/language/tr-TR.h | 14 +-
{sonoff => tasmota}/language/uk-UK.h | 14 +-
{sonoff => tasmota}/language/zh-CN.h | 14 +-
{sonoff => tasmota}/language/zh-TW.h | 14 +-
{sonoff => tasmota}/my_user_config.h | 202 +-
{sonoff => tasmota}/sendemail.h | 0
{sonoff => tasmota}/sendemail.ino | 0
{sonoff => tasmota}/settings.h | 79 +-
{sonoff => tasmota}/settings.ino | 249 +-
{sonoff => tasmota}/support.ino | 86 +-
{sonoff => tasmota}/support_button.ino | 8 +-
{sonoff => tasmota}/support_command.ino | 222 +-
{sonoff => tasmota}/support_features.ino | 25 +-
{sonoff => tasmota}/support_float.ino | 5 +-
{sonoff => tasmota}/support_rotary.ino | 2 +-
{sonoff => tasmota}/support_rtc.ino | 7 +-
{sonoff => tasmota}/support_static_buffer.ino | 2 +-
{sonoff => tasmota}/support_switch.ino | 8 +-
{sonoff => tasmota}/support_udp.ino | 6 +-
{sonoff => tasmota}/support_wifi.ino | 68 +-
sonoff/sonoff.h => tasmota/tasmota.h | 18 +-
sonoff/sonoff.ino => tasmota/tasmota.ino | 186 +-
.../sonoff_ca.ino => tasmota/tasmota_ca.ino | 2 +-
.../sonoff_post.h => tasmota/tasmota_post.h | 45 +-
.../tasmota_template.h | 35 +-
.../tasmota_version.h | 10 +-
.../user_config_override_sample.h | 3 +-
{sonoff => tasmota}/xdrv_01_webserver.ino | 112 +-
{sonoff => tasmota}/xdrv_02_mqtt.ino | 81 +-
{sonoff => tasmota}/xdrv_03_energy.ino | 30 +-
{sonoff => tasmota}/xdrv_04_light.ino | 228 +-
tasmota/xdrv_05_irremote.ino | 311 +
{sonoff => tasmota}/xdrv_05_irremote_full.ino | 6 +-
{sonoff => tasmota}/xdrv_06_snfbridge.ino | 10 +-
{sonoff => tasmota}/xdrv_07_domoticz.ino | 8 +-
{sonoff => tasmota}/xdrv_08_serial_bridge.ino | 4 +-
{sonoff => tasmota}/xdrv_09_timers.ino | 17 +-
{sonoff => tasmota}/xdrv_10_rules.ino | 54 +-
{sonoff => tasmota}/xdrv_10_scripter.ino | 13 +-
{sonoff => tasmota}/xdrv_11_knx.ino | 4 +-
.../xdrv_12_home_assistant.ino | 53 +-
{sonoff => tasmota}/xdrv_13_display.ino | 8 +-
{sonoff => tasmota}/xdrv_14_mp3.ino | 4 +-
{sonoff => tasmota}/xdrv_15_pca9685.ino | 38 +-
{sonoff => tasmota}/xdrv_16_tuyamcu.ino | 337 +-
{sonoff => tasmota}/xdrv_17_rcswitch.ino | 4 +-
.../xdrv_18_armtronix_dimmers.ino | 2 +-
{sonoff => tasmota}/xdrv_19_ps16dz_dimmer.ino | 4 +-
{sonoff => tasmota}/xdrv_20_hue.ino | 60 +-
{sonoff => tasmota}/xdrv_21_wemo.ino | 2 +-
{sonoff => tasmota}/xdrv_22_sonoff_ifan.ino | 6 +-
.../xdrv_23_zigbee_0_constants.ino | 2 +-
.../xdrv_23_zigbee_3_devices.ino | 22 +-
.../xdrv_23_zigbee_5_converters.ino | 250 +-
.../xdrv_23_zigbee_6_commands.ino | 43 +-
.../xdrv_23_zigbee_7_statemachine.ino | 30 +-
.../xdrv_23_zigbee_8_parsers.ino | 33 +-
{sonoff => tasmota}/xdrv_23_zigbee_9_impl.ino | 223 +-
{sonoff => tasmota}/xdrv_24_buzzer.ino | 4 +-
{sonoff => tasmota}/xdrv_25_A4988_Stepper.ino | 2 +-
{sonoff => tasmota}/xdrv_26_ariluxrf.ino | 2 +-
{sonoff => tasmota}/xdrv_27_shutter.ino | 59 +-
{sonoff => tasmota}/xdrv_28_pcf8574.ino | 41 +-
tasmota/xdrv_29_deepsleep.ino | 208 +
{sonoff => tasmota}/xdrv_30_exs_dimmer.ino | 6 +-
tasmota/xdrv_31_tasmota_slave.ino | 598 ++
{sonoff => tasmota}/xdrv_99_debug.ino | 4 +-
{sonoff => tasmota}/xdrv_interface.ino | 4 +-
{sonoff => tasmota}/xdsp_01_lcd.ino | 65 +-
{sonoff => tasmota}/xdsp_02_ssd1306.ino | 38 +-
{sonoff => tasmota}/xdsp_03_matrix.ino | 50 +-
{sonoff => tasmota}/xdsp_04_ili9341.ino | 2 +-
{sonoff => tasmota}/xdsp_05_epaper_29.ino | 2 +-
{sonoff => tasmota}/xdsp_06_epaper_42.ino | 2 +-
{sonoff => tasmota}/xdsp_07_sh1106.ino | 34 +-
{sonoff => tasmota}/xdsp_08_ILI9488.ino | 7 +-
{sonoff => tasmota}/xdsp_09_SSD1351.ino | 2 +-
{sonoff => tasmota}/xdsp_10_RA8876.ino | 7 +-
{sonoff => tasmota}/xdsp_interface.ino | 4 +-
{sonoff => tasmota}/xlgt_01_ws2812.ino | 8 +-
{sonoff => tasmota}/xlgt_02_my92x1.ino | 2 +-
{sonoff => tasmota}/xlgt_03_sm16716.ino | 2 +-
{sonoff => tasmota}/xlgt_04_sm2135.ino | 4 +-
{sonoff => tasmota}/xlgt_05_sonoff_l1.ino | 4 +-
{sonoff => tasmota}/xlgt_interface.ino | 4 +-
{sonoff => tasmota}/xnrg_01_hlw8012.ino | 2 +-
{sonoff => tasmota}/xnrg_02_cse7766.ino | 2 +-
{sonoff => tasmota}/xnrg_03_pzem004t.ino | 2 +-
{sonoff => tasmota}/xnrg_04_mcp39f501.ino | 2 +-
{sonoff => tasmota}/xnrg_05_pzem_ac.ino | 2 +-
{sonoff => tasmota}/xnrg_06_pzem_dc.ino | 2 +-
{sonoff => tasmota}/xnrg_07_ade7953.ino | 57 +-
{sonoff => tasmota}/xnrg_08_sdm120.ino | 2 +-
{sonoff => tasmota}/xnrg_09_dds2382.ino | 4 +-
{sonoff => tasmota}/xnrg_10_sdm630.ino | 2 +-
{sonoff => tasmota}/xnrg_11_ddsu666.ino | 4 +-
{sonoff => tasmota}/xnrg_12_solaxX1.ino | 2 +-
{sonoff => tasmota}/xnrg_interface.ino | 4 +-
{sonoff => tasmota}/xsns_01_counter.ino | 2 +-
{sonoff => tasmota}/xsns_02_analog.ino | 2 +-
{sonoff => tasmota}/xsns_04_snfsc.ino | 2 +-
{sonoff => tasmota}/xsns_05_ds18x20.ino | 32 +-
{sonoff => tasmota}/xsns_06_dht.ino | 2 +-
{sonoff => tasmota}/xsns_07_sht1x.ino | 25 +-
{sonoff => tasmota}/xsns_08_htu21.ino | 32 +-
{sonoff => tasmota}/xsns_09_bmp.ino | 36 +-
{sonoff => tasmota}/xsns_10_bh1750.ino | 35 +-
{sonoff => tasmota}/xsns_11_veml6070.ino | 81 +-
{sonoff => tasmota}/xsns_12_ads1115.ino | 123 +-
{sonoff => tasmota}/xsns_13_ina219.ino | 53 +-
{sonoff => tasmota}/xsns_14_sht3x.ino | 68 +-
{sonoff => tasmota}/xsns_15_mhz19.ino | 2 +-
{sonoff => tasmota}/xsns_16_tsl2561.ino | 34 +-
{sonoff => tasmota}/xsns_17_senseair.ino | 2 +-
{sonoff => tasmota}/xsns_18_pms5003.ino | 4 +-
{sonoff => tasmota}/xsns_19_mgs.ino | 39 +-
{sonoff => tasmota}/xsns_20_novasds.ino | 4 +-
{sonoff => tasmota}/xsns_21_sgp30.ino | 60 +-
{sonoff => tasmota}/xsns_22_sr04.ino | 2 +-
{sonoff => tasmota}/xsns_24_si1145.ino | 64 +-
{sonoff => tasmota}/xsns_26_lm75ad.ino | 47 +-
{sonoff => tasmota}/xsns_27_apds9960.ino | 87 +-
{sonoff => tasmota}/xsns_28_tm1638.ino | 2 +-
{sonoff => tasmota}/xsns_29_mcp230xx.ino | 94 +-
{sonoff => tasmota}/xsns_30_mpr121.ino | 37 +-
{sonoff => tasmota}/xsns_31_ccs811.ino | 61 +-
{sonoff => tasmota}/xsns_32_mpu6050.ino | 101 +-
{sonoff => tasmota}/xsns_33_ds3231.ino | 81 +-
{sonoff => tasmota}/xsns_34_hx711.ino | 4 +-
{sonoff => tasmota}/xsns_35_tx20.ino | 2 +-
{sonoff => tasmota}/xsns_36_mgc3130.ino | 84 +-
{sonoff => tasmota}/xsns_37_rfsensor.ino | 2 +-
{sonoff => tasmota}/xsns_38_az7798.ino | 4 +-
{sonoff => tasmota}/xsns_39_max31855.ino | 6 +-
{sonoff => tasmota}/xsns_40_pn532.ino | 4 +-
{sonoff => tasmota}/xsns_41_max44009.ino | 31 +-
{sonoff => tasmota}/xsns_42_scd30.ino | 353 +-
{sonoff => tasmota}/xsns_43_hre.ino | 0
{sonoff => tasmota}/xsns_44_sps30.ino | 57 +-
{sonoff => tasmota}/xsns_45_vl53l0x.ino | 50 +-
{sonoff => tasmota}/xsns_46_MLX90614.ino | 103 +-
{sonoff => tasmota}/xsns_47_max31865.ino | 2 +-
{sonoff => tasmota}/xsns_48_chirp.ino | 159 +-
tasmota/xsns_50_paj7620.ino | 453 ++
{sonoff => tasmota}/xsns_51_rdm6300.ino | 4 +-
{sonoff => tasmota}/xsns_52_ibeacon.ino | 4 +-
{sonoff => tasmota}/xsns_53_sml.ino | 4 +-
{sonoff => tasmota}/xsns_54_ina226.ino | 94 +-
tasmota/xsns_55_hih_series.ino | 159 +
tasmota/xsns_56_hpma.ino | 147 +
tasmota/xsns_57_tsl2591.ino | 125 +
{sonoff => tasmota}/xsns_interface.ino | 4 +-
tasmota/xx2c_interface.ino | 438 ++
tools/Esptool/EraseFlash.bat | 1 +
tools/Esptool/ReadFlash.bat | 1 +
tools/Esptool/VerifyFlash.bat | 1 +
tools/Esptool/WriteFlash.bat | 1 +
tools/decode-config.html | 56 +-
tools/decode-config.md | 147 +-
tools/decode-config.py | 92 +-
tools/decode-status.py | 28 +-
tools/fw_server/fw-server.py | 10 +-
tools/fw_server/fw/README | 6 +-
518 files changed, 26153 insertions(+), 21467 deletions(-)
create mode 100644 Doxyfile
create mode 100644 I2CDEVICES.md
delete mode 100644 REFERENCE.md
delete mode 100644 arduino/version 2.5.2/boards.txt
rename arduino/{version 2.5.2 => version 2.6.0}/platform.txt (71%)
create mode 100644 lib/Adafruit_TSL2591_Library/Adafruit_TSL2591.cpp
create mode 100644 lib/Adafruit_TSL2591_Library/Adafruit_TSL2591.h
delete mode 100644 lib/ArduinoHexParse/README.md
delete mode 100644 lib/ArduinoHexParse/keywords.txt
delete mode 100644 lib/ArduinoHexParse/library.json
delete mode 100644 lib/ArduinoHexParse/library.properties
delete mode 100644 lib/ArduinoHexParse/src/ArduinoHexParse.cpp
delete mode 100644 lib/ArduinoHexParse/src/ArduinoHexParse.h
create mode 100644 lib/HPMA115S0/LICENSE.md
create mode 100644 lib/HPMA115S0/README.md
create mode 100644 lib/HPMA115S0/example/example.ino
create mode 100644 lib/HPMA115S0/library.properties
create mode 100644 lib/HPMA115S0/src/hpma115S0.cpp
create mode 100644 lib/HPMA115S0/src/hpma115S0.h
delete mode 100644 lib/I2Cdevlib-ADS1115/.library.json
delete mode 100644 lib/I2Cdevlib-ADS1115/ADS1115.cpp
delete mode 100644 lib/I2Cdevlib-ADS1115/ADS1115.h
delete mode 100644 lib/I2Cdevlib-ADS1115/examples/ADS1115_differential/ADS1115_differential.ino
delete mode 100644 lib/I2Cdevlib-ADS1115/examples/ADS1115_single/ADS1115_single.ino
delete mode 100644 lib/I2Cdevlib-ADS1115/library.json
delete mode 100755 lib/IRremoteESP8266-2.6.5/.github/CONTRIBUTING.md
delete mode 100755 lib/IRremoteESP8266-2.6.5/.github/Contributors.md
delete mode 100755 lib/IRremoteESP8266-2.6.5/.github/issue_template.md
delete mode 100755 lib/IRremoteESP8266-2.6.5/.gitignore
delete mode 100755 lib/IRremoteESP8266-2.6.5/.gitmodules
delete mode 100755 lib/IRremoteESP8266-2.6.5/.style.yapf
delete mode 100644 lib/IRremoteESP8266-2.6.5/.travis.yml
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/CommonAcControl/CommonAcControl.ino
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRGCTCPServer/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRServer/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRrecvDemo/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRrecvDump/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRrecvDumpV2/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRsendDemo/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/IRsendProntoDemo/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/JVCPanasonicSendDemo/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/LGACSend/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/SmartIRRepeater/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnArgoAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnDaikinAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnFujitsuAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnKelvinatorAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnMitsubishiAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnMitsubishiHeavyAc/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnPanasonicAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnToshibaAC/platformio.ini
delete mode 100644 lib/IRremoteESP8266-2.6.5/examples/TurnOnTrotecAC/platformio.ini
delete mode 100755 lib/IRremoteESP8266-2.6.5/src/ir_Hitachi.cpp
delete mode 100755 lib/IRremoteESP8266-2.6.5/src/ir_Mitsubishi.cpp
delete mode 100755 lib/IRremoteESP8266-2.6.5/src/ir_Mitsubishi.h
delete mode 100755 lib/IRremoteESP8266-2.6.5/tools/auto_analyse_raw_data.py
delete mode 100755 lib/IRremoteESP8266-2.6.5/tools/auto_analyse_raw_data_test.py
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/CPPLINT.cfg (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/LICENSE.txt (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/README.md (90%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/README_fr.md
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/ReleaseNotes.md (86%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/SupportedProtocols.md (89%)
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/CommonAcControl/CommonAcControl.ino
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/CommonAcControl/platformio.ini (86%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/ControlSamsungAC/ControlSamsungAC.ino (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/ControlSamsungAC/platformio.ini (86%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/DumbIRRepeater/DumbIRRepeater.ino (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/DumbIRRepeater/platformio.ini (86%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRGCSendDemo/IRGCSendDemo.ino (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRGCSendDemo/platformio.ini (86%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRGCTCPServer/IRGCTCPServer.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRGCTCPServer/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRMQTTServer/IRMQTTServer.h (88%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRMQTTServer/IRMQTTServer.ino (84%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRMQTTServer/platformio.ini (82%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRServer/IRServer.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRServer/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRrecvDemo/IRrecvDemo.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRrecvDemo/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRrecvDump/IRrecvDump.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRrecvDump/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRrecvDumpV2/IRrecvDumpV2.ino (87%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRrecvDumpV2/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRsendDemo/IRsendDemo.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRsendDemo/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/IRsendProntoDemo/IRsendProntoDemo.ino (96%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/IRsendProntoDemo/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/JVCPanasonicSendDemo/JVCPanasonicSendDemo.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/JVCPanasonicSendDemo/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/LGACSend/LGACSend.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/LGACSend/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/SmartIRRepeater/SmartIRRepeater.ino (100%)
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/SmartIRRepeater/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnArgoAC/TurnOnArgoAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnArgoAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnDaikinAC/TurnOnDaikinAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnDaikinAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnFujitsuAC/TurnOnFujitsuAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnFujitsuAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnKelvinatorAC/TurnOnKelvinatorAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnKelvinatorAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnMitsubishiAC/TurnOnMitsubishiAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnMitsubishiAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnMitsubishiHeavyAc/TurnOnMitsubishiHeavyAc.ino (100%)
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnMitsubishiHeavyAc/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnPanasonicAC/TurnOnPanasonicAC.ino (100%)
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnPanasonicAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnToshibaAC/TurnOnToshibaAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnToshibaAC/platformio.ini
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/examples/TurnOnTrotecAC/TurnOnTrotecAC.ino (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/TurnOnTrotecAC/platformio.ini
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/README.md
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/Web-AC-control.ino
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/platformio.ini
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/printscreen.png
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/favicon.ico
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_1_off.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_1_on.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_2_off.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_2_on.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_3_off.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_3_on.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_4_off.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/level_4_on.svg
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/ui.html
create mode 100644 lib/IRremoteESP8266-2.7.0/examples/Web-AC-control/upload/ui.js
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/keywords.txt (80%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/library.json (97%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/library.properties (97%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/pylintrc (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/CPPLINT.cfg (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRac.cpp (75%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRac.h (84%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRrecv.cpp (98%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRrecv.h (96%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRremoteESP8266.h (86%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRsend.cpp (98%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRsend.h (92%)
create mode 100644 lib/IRremoteESP8266-2.7.0/src/IRtext.cpp
create mode 100644 lib/IRremoteESP8266-2.7.0/src/IRtext.h
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRtimer.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRtimer.h (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRutils.cpp (70%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/IRutils.h (57%)
create mode 100644 lib/IRremoteESP8266-2.7.0/src/i18n.h
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Aiwa.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Amcor.cpp (82%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Amcor.h (83%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Argo.cpp (76%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Argo.h (70%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Carrier.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Coolix.cpp (73%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Coolix.h (68%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Daikin.cpp (70%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Daikin.h (76%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Denon.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Dish.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Electra.cpp (79%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Electra.h (78%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Fujitsu.cpp (76%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Fujitsu.h (88%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_GICable.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_GlobalCache.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Goodweather.cpp (72%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Goodweather.h (81%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Gree.cpp (71%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Gree.h (72%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Haier.cpp (67%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Haier.h (80%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/src/ir_Hitachi.cpp
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Hitachi.h (51%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Inax.cpp (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_JVC.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Kelvinator.cpp (77%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Kelvinator.h (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_LG.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_LG.h (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Lasertag.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Lego.cpp (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Lutron.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_MWM.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Magiquest.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Magiquest.h (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Midea.cpp (82%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Midea.h (84%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/src/ir_Mitsubishi.cpp
create mode 100644 lib/IRremoteESP8266-2.7.0/src/ir_Mitsubishi.h
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_MitsubishiHeavy.cpp (63%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_MitsubishiHeavy.h (77%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_NEC.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_NEC.h (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Neoclima.cpp (69%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Neoclima.h (83%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Nikai.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Panasonic.cpp (72%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Panasonic.h (70%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Pioneer.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Pronto.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_RC5_RC6.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_RCMM.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Samsung.cpp (80%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Samsung.h (77%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Sanyo.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Sharp.cpp (85%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Sharp.h (87%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Sherwood.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Sony.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Tcl.cpp (59%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Tcl.h (73%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Teco.cpp (60%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Teco.h (70%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Toshiba.cpp (80%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Toshiba.h (84%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Trotec.cpp (78%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Trotec.h (87%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Vestel.cpp (64%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Vestel.h (89%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Whirlpool.cpp (76%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Whirlpool.h (87%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/src/ir_Whynter.cpp (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/README.md
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/de-CH.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/de-DE.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/defaults.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/en-AU.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/en-IE.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/en-UK.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/en-US.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/es-ES.h
create mode 100644 lib/IRremoteESP8266-2.7.0/src/locale/fr-FR.h
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/IRac_test.cpp (83%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/IRrecv_test.cpp (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/IRrecv_test.h (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/IRsend_test.cpp (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/IRsend_test.h (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/IRutils_test.cpp (77%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/Makefile (96%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Aiwa_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Amcor_test.cpp (98%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Argo_test.cpp (95%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Carrier_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Coolix_test.cpp (96%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Daikin_test.cpp (85%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Denon_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Dish_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Electra_test.cpp (97%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Fujitsu_test.cpp (81%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_GICable_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_GlobalCache_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Goodweather_test.cpp (93%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Gree_test.cpp (97%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Haier_test.cpp (92%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Hitachi_test.cpp (74%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Inax_test.cpp (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_JVC_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Kelvinator_test.cpp (98%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_LG_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Lasertag_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Lego_test.cpp (100%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Lutron_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_MWM_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Magiquest_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Midea_test.cpp (94%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_MitsubishiHeavy_test.cpp (91%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Mitsubishi_test.cpp (72%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_NEC_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Neoclima_test.cpp (99%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Nikai_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Panasonic_test.cpp (94%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Pioneer_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Pronto_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_RC5_RC6_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_RCMM_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Samsung_test.cpp (96%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Sanyo_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Sharp_test.cpp (96%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Sherwood_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Sony_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Tcl_test.cpp (89%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Teco_test.cpp (82%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Toshiba_test.cpp (99%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Trotec_test.cpp (97%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Vestel_test.cpp (93%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Whirlpool_test.cpp (97%)
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/test/ir_Whynter_test.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/tools/Makefile (94%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/tools/RawToGlobalCache.sh (100%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/tools/auto_analyse_raw_data.py
create mode 100644 lib/IRremoteESP8266-2.7.0/tools/auto_analyse_raw_data_test.py
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/tools/gc_decode.cpp (65%)
mode change 100755 => 100644
create mode 100644 lib/IRremoteESP8266-2.7.0/tools/generate_irtext_h.sh
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/tools/mkkeywords (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/tools/mode2_decode.cpp (100%)
mode change 100755 => 100644
rename lib/{IRremoteESP8266-2.6.5 => IRremoteESP8266-2.7.0}/tools/scrape_supported_devices.py (100%)
create mode 100644 lib/NeoPixelBus-2.5.0.09/.github/ISSUE_TEMPLATE/bug_report.md
create mode 100644 lib/NeoPixelBus-2.5.0.09/.github/ISSUE_TEMPLATE/feature_request.md
create mode 100644 pio/rename-firmware.py
delete mode 100644 sonoff/xdrv_05_irremote.ino
delete mode 100644 sonoff/xdrv_29_deepsleep.ino
delete mode 100644 sonoff/xdrv_31_arduino_slave.ino
delete mode 100644 sonoff/xsns_12_ads1115_i2cdev.ino
delete mode 100644 sonoff/xsns_50_paj7620.ino
rename {sonoff => tasmota}/Parsing.cpp (100%)
rename {sonoff => tasmota}/StackThunk_light.cpp (100%)
rename {sonoff => tasmota}/StackThunk_light.h (100%)
rename {sonoff => tasmota}/WiFiClientSecureLightBearSSL.cpp (100%)
rename {sonoff => tasmota}/WiFiClientSecureLightBearSSL.h (100%)
rename {sonoff => tasmota}/_changelog.ino (97%)
rename {sonoff => tasmota}/core_esp8266_timer.c (100%)
rename {sonoff => tasmota}/core_esp8266_wiring_digital.c (100%)
rename {sonoff => tasmota}/core_esp8266_wiring_pwm.c (100%)
rename {sonoff => tasmota}/i18n.h (98%)
rename {sonoff => tasmota}/language/bg-BG.h (98%)
rename {sonoff => tasmota}/language/cs-CZ.h (98%)
rename {sonoff => tasmota}/language/de-DE.h (98%)
rename {sonoff => tasmota}/language/el-GR.h (98%)
rename {sonoff => tasmota}/language/en-GB.h (98%)
rename {sonoff => tasmota}/language/es-ES.h (98%)
rename {sonoff => tasmota}/language/fr-FR.h (98%)
rename {sonoff => tasmota}/language/he-HE.h (98%)
rename {sonoff => tasmota}/language/hu-HU.h (98%)
rename {sonoff => tasmota}/language/it-IT.h (98%)
rename {sonoff => tasmota}/language/ko-KO.h (91%)
rename {sonoff => tasmota}/language/nl-NL.h (98%)
rename {sonoff => tasmota}/language/pl-PL.h (98%)
rename {sonoff => tasmota}/language/pt-BR.h (98%)
rename {sonoff => tasmota}/language/pt-PT.h (97%)
rename {sonoff => tasmota}/language/ru-RU.h (98%)
rename {sonoff => tasmota}/language/sk-SK.h (98%)
rename {sonoff => tasmota}/language/sv-SE.h (98%)
rename {sonoff => tasmota}/language/tr-TR.h (98%)
mode change 100755 => 100644
rename {sonoff => tasmota}/language/uk-UK.h (98%)
rename {sonoff => tasmota}/language/zh-CN.h (98%)
rename {sonoff => tasmota}/language/zh-TW.h (98%)
rename {sonoff => tasmota}/my_user_config.h (77%)
rename {sonoff => tasmota}/sendemail.h (100%)
rename {sonoff => tasmota}/sendemail.ino (100%)
rename {sonoff => tasmota}/settings.h (90%)
rename {sonoff => tasmota}/settings.ino (88%)
rename {sonoff => tasmota}/support.ino (93%)
rename {sonoff => tasmota}/support_button.ino (98%)
rename {sonoff => tasmota}/support_command.ino (89%)
rename {sonoff => tasmota}/support_features.ino (96%)
rename {sonoff => tasmota}/support_float.ino (99%)
rename {sonoff => tasmota}/support_rotary.ino (98%)
rename {sonoff => tasmota}/support_rtc.ino (99%)
rename {sonoff => tasmota}/support_static_buffer.ino (98%)
rename {sonoff => tasmota}/support_switch.ino (97%)
rename {sonoff => tasmota}/support_udp.ino (97%)
rename {sonoff => tasmota}/support_wifi.ino (91%)
rename sonoff/sonoff.h => tasmota/tasmota.h (96%)
rename sonoff/sonoff.ino => tasmota/tasmota.ino (90%)
mode change 100755 => 100644
rename sonoff/sonoff_ca.ino => tasmota/tasmota_ca.ino (98%)
rename sonoff/sonoff_post.h => tasmota/tasmota_post.h (96%)
rename sonoff/sonoff_template.h => tasmota/tasmota_template.h (98%)
rename sonoff/sonoff_version.h => tasmota/tasmota_version.h (78%)
rename {sonoff => tasmota}/user_config_override_sample.h (96%)
rename {sonoff => tasmota}/xdrv_01_webserver.ino (95%)
rename {sonoff => tasmota}/xdrv_02_mqtt.ino (93%)
rename {sonoff => tasmota}/xdrv_03_energy.ino (98%)
rename {sonoff => tasmota}/xdrv_04_light.ino (91%)
create mode 100644 tasmota/xdrv_05_irremote.ino
rename {sonoff => tasmota}/xdrv_05_irremote_full.ino (99%)
rename {sonoff => tasmota}/xdrv_06_snfbridge.ino (98%)
rename {sonoff => tasmota}/xdrv_07_domoticz.ino (98%)
rename {sonoff => tasmota}/xdrv_08_serial_bridge.ino (98%)
rename {sonoff => tasmota}/xdrv_09_timers.ino (97%)
rename {sonoff => tasmota}/xdrv_10_rules.ino (97%)
rename {sonoff => tasmota}/xdrv_10_scripter.ino (99%)
rename {sonoff => tasmota}/xdrv_11_knx.ino (99%)
rename {sonoff => tasmota}/xdrv_12_home_assistant.ino (91%)
rename {sonoff => tasmota}/xdrv_13_display.ino (99%)
mode change 100755 => 100644
rename {sonoff => tasmota}/xdrv_14_mp3.ino (99%)
rename {sonoff => tasmota}/xdrv_15_pca9685.ino (88%)
rename {sonoff => tasmota}/xdrv_16_tuyamcu.ino (64%)
rename {sonoff => tasmota}/xdrv_17_rcswitch.ino (98%)
rename {sonoff => tasmota}/xdrv_18_armtronix_dimmers.ino (99%)
rename {sonoff => tasmota}/xdrv_19_ps16dz_dimmer.ino (97%)
rename {sonoff => tasmota}/xdrv_20_hue.ino (93%)
rename {sonoff => tasmota}/xdrv_21_wemo.ino (99%)
rename {sonoff => tasmota}/xdrv_22_sonoff_ifan.ino (98%)
rename {sonoff => tasmota}/xdrv_23_zigbee_0_constants.ino (99%)
rename {sonoff => tasmota}/xdrv_23_zigbee_3_devices.ino (96%)
rename {sonoff => tasmota}/xdrv_23_zigbee_5_converters.ino (88%)
rename {sonoff => tasmota}/xdrv_23_zigbee_6_commands.ino (63%)
rename {sonoff => tasmota}/xdrv_23_zigbee_7_statemachine.ino (96%)
rename {sonoff => tasmota}/xdrv_23_zigbee_8_parsers.ino (96%)
rename {sonoff => tasmota}/xdrv_23_zigbee_9_impl.ino (69%)
rename {sonoff => tasmota}/xdrv_24_buzzer.ino (97%)
rename {sonoff => tasmota}/xdrv_25_A4988_Stepper.ino (99%)
rename {sonoff => tasmota}/xdrv_26_ariluxrf.ino (99%)
rename {sonoff => tasmota}/xdrv_27_shutter.ino (92%)
rename {sonoff => tasmota}/xdrv_28_pcf8574.ino (89%)
create mode 100644 tasmota/xdrv_29_deepsleep.ino
rename {sonoff => tasmota}/xdrv_30_exs_dimmer.ino (98%)
create mode 100644 tasmota/xdrv_31_tasmota_slave.ino
rename {sonoff => tasmota}/xdrv_99_debug.ino (99%)
rename {sonoff => tasmota}/xdrv_interface.ino (98%)
rename {sonoff => tasmota}/xdsp_01_lcd.ino (85%)
rename {sonoff => tasmota}/xdsp_02_ssd1306.ino (87%)
mode change 100755 => 100644
rename {sonoff => tasmota}/xdsp_03_matrix.ino (91%)
rename {sonoff => tasmota}/xdsp_04_ili9341.ino (99%)
rename {sonoff => tasmota}/xdsp_05_epaper_29.ino (98%)
rename {sonoff => tasmota}/xdsp_06_epaper_42.ino (98%)
rename {sonoff => tasmota}/xdsp_07_sh1106.ino (89%)
rename {sonoff => tasmota}/xdsp_08_ILI9488.ino (97%)
rename {sonoff => tasmota}/xdsp_09_SSD1351.ino (98%)
rename {sonoff => tasmota}/xdsp_10_RA8876.ino (98%)
rename {sonoff => tasmota}/xdsp_interface.ino (95%)
rename {sonoff => tasmota}/xlgt_01_ws2812.ino (98%)
rename {sonoff => tasmota}/xlgt_02_my92x1.ino (99%)
rename {sonoff => tasmota}/xlgt_03_sm16716.ino (98%)
rename {sonoff => tasmota}/xlgt_04_sm2135.ino (95%)
rename {sonoff => tasmota}/xlgt_05_sonoff_l1.ino (98%)
rename {sonoff => tasmota}/xlgt_interface.ino (94%)
rename {sonoff => tasmota}/xnrg_01_hlw8012.ino (99%)
rename {sonoff => tasmota}/xnrg_02_cse7766.ino (99%)
rename {sonoff => tasmota}/xnrg_03_pzem004t.ino (99%)
rename {sonoff => tasmota}/xnrg_04_mcp39f501.ino (99%)
rename {sonoff => tasmota}/xnrg_05_pzem_ac.ino (99%)
rename {sonoff => tasmota}/xnrg_06_pzem_dc.ino (99%)
rename {sonoff => tasmota}/xnrg_07_ade7953.ino (83%)
rename {sonoff => tasmota}/xnrg_08_sdm120.ino (99%)
rename {sonoff => tasmota}/xnrg_09_dds2382.ino (97%)
rename {sonoff => tasmota}/xnrg_10_sdm630.ino (99%)
rename {sonoff => tasmota}/xnrg_11_ddsu666.ino (99%)
rename {sonoff => tasmota}/xnrg_12_solaxX1.ino (99%)
rename {sonoff => tasmota}/xnrg_interface.ino (94%)
rename {sonoff => tasmota}/xsns_01_counter.ino (99%)
rename {sonoff => tasmota}/xsns_02_analog.ino (99%)
rename {sonoff => tasmota}/xsns_04_snfsc.ino (98%)
rename {sonoff => tasmota}/xsns_05_ds18x20.ino (94%)
rename {sonoff => tasmota}/xsns_06_dht.ino (99%)
rename {sonoff => tasmota}/xsns_07_sht1x.ino (92%)
rename {sonoff => tasmota}/xsns_08_htu21.ino (95%)
rename {sonoff => tasmota}/xsns_09_bmp.ino (98%)
mode change 100755 => 100644
rename {sonoff => tasmota}/xsns_10_bh1750.ino (86%)
rename {sonoff => tasmota}/xsns_11_veml6070.ino (85%)
rename {sonoff => tasmota}/xsns_12_ads1115.ino (78%)
rename {sonoff => tasmota}/xsns_13_ina219.ino (94%)
rename {sonoff => tasmota}/xsns_14_sht3x.ino (74%)
mode change 100755 => 100644
rename {sonoff => tasmota}/xsns_15_mhz19.ino (99%)
rename {sonoff => tasmota}/xsns_16_tsl2561.ino (84%)
rename {sonoff => tasmota}/xsns_17_senseair.ino (98%)
rename {sonoff => tasmota}/xsns_18_pms5003.ino (99%)
rename {sonoff => tasmota}/xsns_19_mgs.ino (87%)
rename {sonoff => tasmota}/xsns_20_novasds.ino (99%)
rename {sonoff => tasmota}/xsns_21_sgp30.ino (80%)
rename {sonoff => tasmota}/xsns_22_sr04.ino (97%)
rename {sonoff => tasmota}/xsns_24_si1145.ino (90%)
rename {sonoff => tasmota}/xsns_26_lm75ad.ino (78%)
rename {sonoff => tasmota}/xsns_27_apds9960.ino (97%)
rename {sonoff => tasmota}/xsns_28_tm1638.ino (99%)
rename {sonoff => tasmota}/xsns_29_mcp230xx.ino (93%)
rename {sonoff => tasmota}/xsns_30_mpr121.ino (94%)
rename {sonoff => tasmota}/xsns_31_ccs811.ino (76%)
rename {sonoff => tasmota}/xsns_32_mpu6050.ino (75%)
rename {sonoff => tasmota}/xsns_33_ds3231.ino (70%)
rename {sonoff => tasmota}/xsns_34_hx711.ino (99%)
rename {sonoff => tasmota}/xsns_35_tx20.ino (99%)
rename {sonoff => tasmota}/xsns_36_mgc3130.ino (92%)
rename {sonoff => tasmota}/xsns_37_rfsensor.ino (99%)
rename {sonoff => tasmota}/xsns_38_az7798.ino (99%)
rename {sonoff => tasmota}/xsns_39_max31855.ino (95%)
rename {sonoff => tasmota}/xsns_40_pn532.ino (99%)
rename {sonoff => tasmota}/xsns_41_max44009.ino (92%)
rename {sonoff => tasmota}/xsns_42_scd30.ino (52%)
rename {sonoff => tasmota}/xsns_43_hre.ino (100%)
rename {sonoff => tasmota}/xsns_44_sps30.ino (93%)
rename {sonoff => tasmota}/xsns_45_vl53l0x.ino (84%)
rename {sonoff => tasmota}/xsns_46_MLX90614.ino (64%)
rename {sonoff => tasmota}/xsns_47_max31865.ino (99%)
rename {sonoff => tasmota}/xsns_48_chirp.ino (87%)
create mode 100644 tasmota/xsns_50_paj7620.ino
rename {sonoff => tasmota}/xsns_51_rdm6300.ino (96%)
rename {sonoff => tasmota}/xsns_52_ibeacon.ino (99%)
rename {sonoff => tasmota}/xsns_53_sml.ino (99%)
rename {sonoff => tasmota}/xsns_54_ina226.ino (91%)
create mode 100644 tasmota/xsns_55_hih_series.ino
create mode 100644 tasmota/xsns_56_hpma.ino
create mode 100644 tasmota/xsns_57_tsl2591.ino
rename {sonoff => tasmota}/xsns_interface.ino (99%)
create mode 100644 tasmota/xx2c_interface.ino
create mode 100644 tools/Esptool/EraseFlash.bat
create mode 100644 tools/Esptool/ReadFlash.bat
create mode 100644 tools/Esptool/VerifyFlash.bat
create mode 100644 tools/Esptool/WriteFlash.bat
diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
index 0d3d5f7f5..373d518cb 100644
--- a/.github/ISSUE_TEMPLATE/Bug_report.md
+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
@@ -6,14 +6,14 @@ about: Create a report to help us improve
> **GUIDE**
>
> This BUG issue template is meant to REPORT Tasmota software BUGS ONLY>
->
+>
> Please DO NOT OPEN AN ISSUE:
-> - If your Tasmota version is not the latest from the development branch, please update your device before submitting your issue. Your problem might already be solved. The latest precompiled binaries of Tasmota can be downloaded from http://thehackbox.org/tasmota/
-> - If you have a issue when flashing was done via Tuya Convert
-> - If your issue is a flashing issue, please address it to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
-> - If your issue is compilation problem, please address it to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
-> - If your issue has been addressed before (i.e., duplicated issue), please ask in the original issue
-> - If your issue is a Wi-Fi problem or MQTT problem, please try the steps provided in the [FAQ](https://github.com/arendst/Sonoff-Tasmota/wiki/FAQ) and troubleshooting wiki articles
+> - If your Tasmota version is not the latest from the development branch, please update your device before submitting your issue. Your problem might already be solved. The latest precompiled binaries of Tasmota can be downloaded from http://thehackbox.org/tasmota/
+> - If you have a issue when flashing was done via Tuya Convert
+> - If your issue is a flashing issue, please address it to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
+> - If your issue is compilation problem, please address it to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
+> - If your issue has been addressed before (i.e., duplicated issue), please ask in the original issue
+> - If your issue is a Wi-Fi problem or MQTT problem, please try the steps provided in the [FAQ](https://github.com/arendst/Tasmota/wiki/FAQ) and troubleshooting wiki articles
>
> Please take a few minutes to complete the requested information below. Our ability to provide assistance is greatly hampered without it. The details requested potentially affect which options to pursue. The small amount of time you spend completing the template will also help the volunteers providing the assistance to you to reduce the time required to help you.
@@ -26,9 +26,9 @@ _Make sure your have performed every step and checked the applicable boxes befor
**FAILURE TO COMPLETE THE REQUESTED INFORMATION WILL RESULT IN YOUR ISSUE BEING CLOSED**
-- [ ] Read the [Contributing Guide and Policy](https://github.com/arendst/Sonoff-Tasmota/blob/development/CONTRIBUTING.md) and [the Code of Conduct](https://github.com/arendst/Sonoff-Tasmota/blob/development/CODE_OF_CONDUCT.md)
-- [ ] Searched the problem in [issues](https://github.com/arendst/Sonoff-Tasmota/issues)
-- [ ] Searched the problem in the [wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting)
+- [ ] Read the [Contributing Guide and Policy](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md) and [the Code of Conduct](https://github.com/arendst/Tasmota/blob/development/CODE_OF_CONDUCT.md)
+- [ ] Searched the problem in [issues](https://github.com/arendst/Tasmota/issues)
+- [ ] Searched the problem in the [wiki](https://github.com/arendst/Tasmota/wiki/Troubleshooting)
- [ ] Searched the problem in the [forum](https://groups.google.com/d/forum/sonoffusers)
- [ ] Searched the problem in the [chat](https://discord.gg/Ks2Kzd4)
- [ ] Device used (e.g., Sonoff Basic): _____
@@ -40,27 +40,27 @@ _Make sure your have performed every step and checked the applicable boxes befor
- [ ] Provide the output of command: ``Backlog Template; Module; GPIO``:
```
Configuration output here:
-
-
+
+
```
- [ ] If using rules, provide the output of this command: ``Backlog Rule1; Rule2; Rule3``:
```
Rules output here:
-
-
+
+
```
- [ ] Provide the output of this command: ``Status 0``:
```
STATUS 0 output here:
-
-
+
+
```
- [ ] Provide the output of the Console log output when you experience your issue; if applicable:
_(Please use_ ``weblog 4`` _for more debug information)_
```
Console output here:
-
-
+
+
```
### TO REPRODUCE
diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md
index f0d6fafe0..3b30c5f18 100644
--- a/.github/ISSUE_TEMPLATE/Custom.md
+++ b/.github/ISSUE_TEMPLATE/Custom.md
@@ -3,33 +3,33 @@ name: Troubleshooting
about: Users Troubleshooting Help
---
-> **GUIDE**
+> **GUIDE**
>
> This troubleshooting issue template is meant to help Tasmota users with difficult problems. It is aimed to be opened if using the wiki and the support chat could not solve the issue. The Github Issue tracker is NOT a general discussion forum!
->
-> Please DO NOT OPEN AN ISSUE:
+>
+> Please DO NOT OPEN AN ISSUE:
> - If you have general questions or you need help on Tasmota usage, go to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
-> - If your Tasmota version is not the latest from the development branch, please update your device before submitting your issue. Your problem might already be solved. The latest precompiled binaries of Tasmota can be downloaded from http://thehackbox.org/tasmota/
+> - If your Tasmota version is not the latest from the development branch, please update your device before submitting your issue. Your problem might already be solved. The latest precompiled binaries of Tasmota can be downloaded from http://thehackbox.org/tasmota/
> - If your issue is about a new device, please use the Tasmota [Template](../wiki/Templates) feature.
> - If your issue is a flashing issue, please address it to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
> - If your issue is compilation problem, please address it to the [Tasmota Support Chat](https://discord.gg/Ks2Kzd4)
> - If your issue has been addressed before (i.e., duplicated issue), please ask in the original issue
-> - If your issue is a Wi-Fi problem or MQTT problem, please try the steps provided in the [FAQ](https://github.com/arendst/Sonoff-Tasmota/wiki/FAQ) and troubleshooting wiki articles
+> - If your issue is a Wi-Fi problem or MQTT problem, please try the steps provided in the [FAQ](https://github.com/arendst/Tasmota/wiki/FAQ) and troubleshooting wiki articles
>
> Please take a few minutes to complete the requested information below. Our ability to provide assistance is greatly hampered without it. The details requested potentially affect which options to pursue. The small amount of time you spend completing the template will also help the volunteers providing the assistance to you to reduce the time required to help you.
### ISSUE DESCRIPTION - TROUBLESHOOTING
_A clear description of what the issue is and be as extensive as possible_
-
+
### REQUESTED INFORMATION
_Make sure these boxes are checked before submitting your issue. Thank you_
**FAILURE TO COMPLETE THE REQUESTED INFORMATION WILL RESULT IN YOUR ISSUE BEING CLOSED**
-- [ ] Read the [Contributing Guide and Policy](https://github.com/arendst/Sonoff-Tasmota/blob/development/CONTRIBUTING.md) and [the Code of Conduct](https://github.com/arendst/Sonoff-Tasmota/blob/development/CODE_OF_CONDUCT.md)
-- [ ] Searched the problem in issues (https://github.com/arendst/Sonoff-Tasmota/issues)
-- [ ] Searched the problem in the wiki (https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting)
+- [ ] Read the [Contributing Guide and Policy](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md) and [the Code of Conduct](https://github.com/arendst/Tasmota/blob/development/CODE_OF_CONDUCT.md)
+- [ ] Searched the problem in issues (https://github.com/arendst/Tasmota/issues)
+- [ ] Searched the problem in the wiki (https://github.com/arendst/Tasmota/wiki/Troubleshooting)
- [ ] Searched the problem in the forum (https://groups.google.com/d/forum/sonoffusers)
- [ ] Searched the problem in the chat (https://discord.gg/Ks2Kzd4)
- [ ] Device used (e.g., Sonoff Basic): _____
@@ -41,27 +41,27 @@ _Make sure these boxes are checked before submitting your issue. Thank you_
- [ ] Provide the output of this command: ``Backlog Template; Module; GPIO``:
```
Configuration output here:
-
-
+
+
```
- [ ] If using rules, provide the output of this command: ``Backlog Rule1; Rule2; Rule3``:
```
Rules output here:
-
-
+
+
```
- [ ] Provide the output of this command: ``Status 0``:
```
STATUS 0 output here:
-
-
+
+
```
- [ ] Provide the output of the Console log output when you experience your issue; if applicable:
_(Please use_ ``weblog 4`` _for more debug information)_
```
Console output here:
-
-
+
+
```
**(Please, remember to close the issue when the problem has been addressed)**
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 53b64f906..3b6f2d086 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,11 +1,11 @@
## Description:
-**Related issue (if applicable):** fixes #
Device restarting. Try connecting in a few seconds.
" + + addJsReloadUrl(kUrlRoot, 10, true) + + htmlEnd()); + // Do the clearing. + mqttLog("Clearing all saved settings from MQTT."); + clearMqttSavedStates(MqttClimate); + doRestart("Rebooting..."); +} +#endif // MQTT_ENABLE && MQTT_CLEAR_ENABLE + // Reset web page void handleReset(void) { #if HTML_PASSWORD_ENABLE @@ -1278,6 +1425,10 @@ void handleReset(void) { htmlEnd()); // Do the reset. #if MQTT_ENABLE +#if MQTT_CLEAR_ENABLE + mqttLog("Clearing all saved climate settings from MQTT."); + clearMqttSavedStates(MqttClimate); +#endif // MQTT_CLEAR_ENABLE mqttLog("Wiping all saved config settings."); #endif // MQTT_ENABLE if (mountSpiffs()) { @@ -1648,6 +1799,7 @@ void handleIr(void) { decode_type_t ir_type = decode_type_t::NEC; // Default to NEC codes. uint16_t nbits = 0; uint16_t repeat = 0; + int16_t channel = -1; for (uint16_t i = 0; i < server.args(); i++) { if (server.argName(i).equals(KEY_TYPE) || @@ -1660,11 +1812,16 @@ void handleIr(void) { nbits = server.arg(i).toInt(); } else if (server.argName(i).equals(KEY_REPEAT)) { repeat = server.arg(i).toInt(); + } else if (server.argName(i).equals(KEY_CHANNEL)) { + channel = server.arg(i).toInt(); } } debug("New code received via HTTP"); - lastSendSucceeded = sendIRCode(getDefaultIrSendPtr(), ir_type, data, - data_str.c_str(), nbits, repeat); + IRsend *tx_ptr = getDefaultIrSendPtr(); + if (channel >= 0 && channel < kNrOfIrTxGpios && IrSendTable[channel] != NULL) + tx_ptr = IrSendTable[channel]; + lastSendSucceeded = sendIRCode(tx_ptr, ir_type, data, data_str.c_str(), nbits, + repeat); String html = htmlHeader(F("IR command sent!")); html += addJsReloadUrl(kUrlRoot, kQuickDisplayTime, true); html += htmlEnd(); @@ -1831,7 +1988,7 @@ void setup_wifi(void) { #if MIN_SIGNAL_STRENGTH wifiManager.setMinimumSignalQuality(MIN_SIGNAL_STRENGTH); #endif // MIN_SIGNAL_STRENGTH - wifiManager.setRemoveDuplicateAPs(HIDE_DUPLIATE_NETWORKS); + wifiManager.setRemoveDuplicateAPs(HIDE_DUPLICATE_NETWORKS); if (!wifiManager.autoConnect()) // Reboot. A.k.a. "Have you tried turning it Off and On again?" @@ -1873,7 +2030,6 @@ void init_vars(void) { // Sub-topic for the climate command topics. MqttClimateCmnd = MqttClimate + '/' + MQTT_CLIMATE_CMND + '/'; // Sub-topic for the climate stat topics. - MqttClimateStat = MqttClimate + '/' + MQTT_CLIMATE_STAT + '/'; #if MQTT_DISCOVERY_ENABLE MqttDiscovery = "homeassistant/climate/" + String(Hostname) + "/config"; #endif // MQTT_DISCOVERY_ENABLE @@ -1884,28 +2040,6 @@ void init_vars(void) { } void setup(void) { - // Set the default climate settings. - climate.protocol = decode_type_t::UNKNOWN; - climate.model = -1; // Unknown. - climate.power = false; - climate.mode = stdAc::opmode_t::kAuto; - climate.celsius = true; - climate.degrees = 25; // 25C - climate.fanspeed = stdAc::fanspeed_t::kAuto; - climate.swingv = stdAc::swingv_t::kAuto; - climate.swingh = stdAc::swingh_t::kAuto; - climate.quiet = false; - climate.turbo = false; - climate.econo = false; - climate.light = false; - climate.filter = false; - climate.clean = false; - climate.beep = false; - climate.sleep = -1; // Off - climate.clock = -1; // Don't set. - climate_prev = climate; - lastClimateSource = F("None"); - #if DEBUG if (!isSerialGpioUsedByIr()) { #if defined(ESP8266) @@ -1928,17 +2062,29 @@ void setup(void) { if (isSerialGpioUsedByIr()) Serial.end(); #endif // DEBUG + channel_re.reserve(kNrOfIrTxGpios * 3); // Initialise all the IR transmitters. for (uint8_t i = 0; i < kNrOfIrTxGpios; i++) { if (txGpioTable[i] == kGpioUnused) { IrSendTable[i] = NULL; + climate[i] = NULL; } else { IrSendTable[i] = new IRsend(txGpioTable[i], kInvertTxOutput); - if (IrSendTable[i] == NULL) break; - IrSendTable[i]->begin(); - offset = IrSendTable[i]->calibrate(); + if (IrSendTable[i] != NULL) { + IrSendTable[i]->begin(); + offset = IrSendTable[i]->calibrate(); + } + climate[i] = new IRac(txGpioTable[i], kInvertTxOutput); + if (climate[i] != NULL && i > 0) channel_re += '_' + String(i) + '|'; } } + lastClimateSource = F("None"); + if (channel_re.length() == 1) { + channel_re = ""; + } else { + channel_re.remove(channel_re.length() - 1, 1); // Remove the last char. + channel_re += F(")?"); + } #if IR_RX if (rx_gpio != kGpioUnused) irrecv = new IRrecv(rx_gpio, kCaptureBufferSize, kCaptureTimeout, true); @@ -1950,8 +2096,6 @@ void setup(void) { irrecv->enableIRIn(IR_RX_PULLUP); // Start the receiver } #endif // IR_RX - commonAc = new IRac(txGpioTable[0], kInvertTxOutput); - // Wait a bit for things to settle. delay(500); @@ -1992,6 +2136,10 @@ void setup(void) { // Parse and update the new gpios. server.on(kUrlGpioSet, handleGpioSetting); #if MQTT_ENABLE +#if MQTT_CLEAR_ENABLE + // Clear settings saved to MQTT as retained messages. + server.on(kUrlClearMqtt, handleClearMqtt); +#endif // MQTT_CLEAR_ENABLE #if MQTT_DISCOVERY_ENABLE // MQTT Discovery url server.on(kUrlSendDiscovery, handleSendMqttDiscovery); @@ -2070,6 +2218,13 @@ void setup(void) { } #if MQTT_ENABLE +String genStatTopic(const uint16_t channel) { + if (channel) // Never use the '*_0' state channel. + return MqttClimate + "_" + String(channel) + '/' + MQTT_CLIMATE_STAT + '/'; + else + return MqttClimate + '/' + MQTT_CLIMATE_STAT + '/'; +} + // MQTT subscribing to topic void subscribing(const String topic_name) { // subscription to topic for receiving data with QoS. @@ -2125,12 +2280,18 @@ bool reconnect(void) { mqttSentCounter++; // Subscribing to topic(s) - subscribing(MqttSend); - for (uint8_t i = 0; i < kNrOfIrTxGpios; i++) { - subscribing(MqttSend + '_' + String(static_cast