Merge branch 'development' into mpu6050_full_output
|
@ -6,6 +6,6 @@
|
|||
- [ ] The pull request is done against the latest dev branch
|
||||
- [ ] Only relevant files were touched
|
||||
- [ ] Only one feature/fix was added per PR.
|
||||
- [ ] The code change is tested and works on core 2.6
|
||||
- [ ] The code change is tested and works on core 2.6.1
|
||||
- [ ] The code change pass travis tests. **Your PR cannot be merged unless tests pass**
|
||||
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
|
||||
|
|
|
@ -12,6 +12,8 @@ tasmota/user_config_override.h
|
|||
build
|
||||
firmware.map
|
||||
firmware.asm
|
||||
tasmota*.bin
|
||||
tasmota*.map
|
||||
|
||||
## Visual Studio Code specific ######
|
||||
.vscode
|
||||
|
|
2
API.md
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Basic API information
|
||||
|
||||
Tasmota can easily be extended by developers using provided function pointers as callback Ids. This document lists the available callback function Ids. See the wiki (https://github.com/arendst/Tasmota/wiki/Sensor-API) for more information.
|
||||
Tasmota can easily be extended by developers using provided function pointers as callback Ids. This document lists the available callback function Ids. Read [Sensor API](https://tasmota.github.io/docs/#/Sensor-API) for more information.
|
||||
|
||||
Callback availability can be checked by searching for either XdrvCall, XsnsCall, XdspCall, XnrgCall and XlgtCall.
|
||||
|
||||
|
|
|
@ -0,0 +1,147 @@
|
|||
## Available Features and Sensors
|
||||
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
|-----------------------|---------|-------|--------|-----|---------|----|---------|--------
|
||||
| MY_LANGUAGE en-GB | x | x | x | x | x | x | x |
|
||||
| USE_ARDUINO_OTA | - | - | - | - | - | - | - |
|
||||
| USE_DOMOTICZ | - | - | x | x | x | x | - |
|
||||
| USE_HOME_ASSISTANT | - | - | x | x | x | x | - |
|
||||
| USE_MQTT_TLS | - | - | - | - | - | - | - |
|
||||
| USE_MQTT_TLS_CA_CERT | - | - | - | - | - | - | - |
|
||||
| USE_MQTT_AWS_IOT | - | - | - | - | - | - | - |
|
||||
| USE_4K_RSA | - | - | - | - | - | - | - |
|
||||
| USE_KNX | - | - | - | x | - | - | - |
|
||||
| USE_WEBSERVER | x | x | x | x | x | x | x |
|
||||
| USE_JAVASCRIPT_ES6 | - | - | - | - | - | - | - |
|
||||
| USE_WEBSEND_RESPONSE | - | - | - | - | - | - | - |
|
||||
| USE_EMULATION_HUE | - | x | x | - | x | - | - |
|
||||
| USE_EMULATION_WEMO | - | x | x | - | x | - | - |
|
||||
| USE_DISCOVERY | - | - | x | x | - | - | x |
|
||||
| WEBSERVER_ADVERTISE | - | - | x | x | - | - | x |
|
||||
| MQTT_HOST_DISCOVERY | - | - | x | x | - | - | x |
|
||||
| USE_TIMERS | - | x | x | x | x | x | x |
|
||||
| USE_TIMERS_WEB | - | x | x | x | x | x | x |
|
||||
| USE_SUNRISE | - | x | x | x | x | x | x |
|
||||
| USE_RULES | - | x | x | x | x | x | x |
|
||||
| USE_SCRIPT | - | - | - | - | - | - | - |
|
||||
| USE_EXPRESSION | - | - | - | - | - | - | - |
|
||||
| SUPPORT_IF_STATEMENT | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| ROTARY_V1 | - | - | - | - | - | - | - |
|
||||
| USE_SONOFF_RF | - | - | x | x | x | - | - |
|
||||
| USE_RF_FLASH | - | - | x | x | x | - | - |
|
||||
| USE_SONOFF_SC | - | - | x | - | x | - | - |
|
||||
| USE_TUYA_MCU | - | x | x | x | x | - | x |
|
||||
| USE_ARMTRONIX_DIMMERS | - | - | x | x | - | - | - |
|
||||
| USE_PS_16_DZ | - | - | x | x | x | - | - |
|
||||
| USE_SONOFF_IFAN | - | - | x | x | x | - | - |
|
||||
| USE_BUZZER | - | - | x | x | x | - | - |
|
||||
| USE_ARILUX_RF | - | - | x | x | x | - | - |
|
||||
| USE_SHUTTER | - | - | - | - | - | - | - |
|
||||
| USE_DEEPSLEEP | - | - | x | - | x | - | - |
|
||||
| USE_EXS_DIMMER | - | - | x | x | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_LIGHT | - | x | x | x | x | x | x |
|
||||
| USE_WS2812 | - | - | x | x | x | - | x |
|
||||
| USE_WS2812_DMA | - | - | - | - | - | - | - |
|
||||
| USE_MY92X1 | - | - | x | x | x | - | x |
|
||||
| USE_SM16716 | - | - | x | x | x | - | x |
|
||||
| USE_SM2135 | - | - | x | x | x | - | x |
|
||||
| USE_SONOFF_L1 | - | - | x | x | x | - | x |
|
||||
| | | | | | | | |
|
||||
| USE_ENERGY_SENSOR | - | x | x | x | x | - | - |
|
||||
| USE_PZEM004T | - | - | x | x | x | - | - |
|
||||
| USE_PZEM_AC | - | - | x | x | x | - | - |
|
||||
| USE_PZEM_DC | - | - | x | x | x | - | - |
|
||||
| USE_MCP39F501 | - | x | x | x | x | - | - |
|
||||
| USE_SDM120 | - | - | - | - | x | - | - |
|
||||
| USE_SDM630 | - | - | - | - | x | - | - |
|
||||
| USE_DDS2382 | - | - | - | - | x | - | - |
|
||||
| USE_DDSU666 | - | - | - | - | x | - | - |
|
||||
| USE_SOLAX_X1 | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| USE_ADC_VCC | x | x | - | - | - | - | - |
|
||||
| USE_COUNTER | - | - | x | x | x | x | x |
|
||||
| USE_DS18x20 | - | - | x | x | x | - | x |
|
||||
| USE_DHT | - | - | x | x | x | x | x |
|
||||
| USE_MAX31855 | - | - | - | - | x | - | - |
|
||||
| USE_MAX31865 | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_I2C | - | - | x | x | x | - | x |
|
||||
| USE_SHT | - | - | x | x | x | - | x |
|
||||
| USE_HTU | - | - | x | x | x | - | x |
|
||||
| USE_BMP | - | - | x | x | x | - | x |
|
||||
| USE_BME680 | - | - | - | - | x | - | - |
|
||||
| USE_BH1750 | - | - | x | x | x | - | x |
|
||||
| USE_VEML6070 | - | - | - | - | x | - | - |
|
||||
| USE_ADS1115 | - | - | - | - | x | - | - |
|
||||
| USE_ADS1115_I2CDEV | - | - | - | - | - | - | - |
|
||||
| USE_INA219 | - | - | - | - | x | - | - |
|
||||
| USE_INA226 | - | - | - | - | - | - | - |
|
||||
| USE_SHT3X | - | - | x | x | x | - | x |
|
||||
| USE_TSL2561 | - | - | - | - | x | - | - |
|
||||
| USE_TSL2591 | - | - | - | - | - | - | - |
|
||||
| USE_MGS | - | - | - | - | x | - | - |
|
||||
| USE_SGP30 | - | - | x | x | x | - | x |
|
||||
| USE_SI1145 | - | - | - | - | - | - | - |
|
||||
| USE_LM75AD | - | - | x | x | x | - | x |
|
||||
| USE_APDS9960 | - | - | - | - | - | - | - |
|
||||
| USE_MCP230xx | - | - | - | - | - | - | - |
|
||||
| USE_PCA9685 | - | - | - | - | - | - | - |
|
||||
| USE_MPR121 | - | - | - | - | - | - | - |
|
||||
| USE_CCS811 | - | - | - | - | - | - | - |
|
||||
| USE_MPU6050 | - | - | - | - | - | - | - |
|
||||
| USE_DS3231 | - | - | - | - | - | - | - |
|
||||
| USE_MGC3130 | - | - | - | - | - | - | - |
|
||||
| USE_MAX44009 | - | - | - | - | - | - | - |
|
||||
| USE_SCD30 | - | - | - | - | x | - | - |
|
||||
| USE_SPS30 | - | - | - | - | - | - | - |
|
||||
| USE_ADE7953 | - | - | x | x | x | - | x |
|
||||
| USE_VL53L0X | - | - | - | - | - | - | - |
|
||||
| USE_MLX90614 | - | - | - | - | - | - | - |
|
||||
| USE_CHIRP | - | - | - | - | - | - | - |
|
||||
| USE_PAJ7620 | - | - | - | - | - | - | - |
|
||||
| USE_PCF8574 | - | - | - | - | - | - | - |
|
||||
| USE_HIH6 | - | - | - | - | x | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_SPI | - | - | - | - | - | - | x |
|
||||
| USE_MHZ19 | - | - | x | x | x | - | x |
|
||||
| USE_SENSEAIR | - | - | x | x | x | - | x |
|
||||
| USE_PMS5003 | - | - | x | x | x | - | x |
|
||||
| USE_NOVA_SDS | - | - | x | x | x | - | x |
|
||||
| USE_HPMA | - | - | - | - | x | - | - |
|
||||
| USE_SERIAL_BRIDGE | - | - | x | x | x | - | x |
|
||||
| USE_MP3_PLAYER | - | - | - | - | x | - | - |
|
||||
| USE_AZ7798 | - | - | - | - | - | - | - |
|
||||
| USE_PN532_HSU | - | - | - | - | x | - | - |
|
||||
| USE_ZIGBEE | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| USE_IR_REMOTE | - | - | x | x | x | x | x |
|
||||
| USE_IR_RECEIVE | - | - | x | x | x | x | x |
|
||||
| | | | | | | | |
|
||||
| USE_SR04 | - | - | x | x | x | - | x |
|
||||
| USE_TM1638 | - | - | - | - | x | - | - |
|
||||
| USE_HX711 | - | - | x | x | x | - | x |
|
||||
| USE_TX20_WIND_SENSOR | - | - | - | - | x | - | - |
|
||||
| USE_RC_SWITCH | - | - | - | - | x | - | - |
|
||||
| USE_RF_SENSOR | - | - | - | - | x | - | - | AlectoV2 only
|
||||
| USE_HRE | - | - | - | - | x | - | - |
|
||||
| USE_A4988_STEPPER | - | - | - | - | - | - | - |
|
||||
| USE_TASMOTA_SLAVE | - | - | - | - | - | - | - | Experimental
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_DISPLAY | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_LCD | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_SSD1306 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_MATRIX | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_SH1106 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_ILI9341 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_29 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_42 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_ILI9488 | - | - | - | - | - | - | - |
|
||||
| USE_DISPLAY_SSD1351 | - | - | - | - | - | - | - |
|
||||
| USE_DISPLAY_RA8876 | - | - | - | - | - | - | - |
|
|
@ -8,7 +8,7 @@ Everybody is welcome and invited to contribute to Tasmota Project by:
|
|||
|
||||
* Testing newly released features and reporting issues.
|
||||
* Providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
|
||||
* Contributing missing documentation for features and devices on our [Wiki](https://github.com/arendst/Tasmota/wiki/Contributing)
|
||||
* Contributing missing documentation for features and devices in our [documentation](https://tasmota.github.io/docs/#/Contributing)
|
||||
|
||||
This document describes rules that are in effect for this repository, meant for handling issues by contributors in the issue tracker and PRs.
|
||||
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
<img src="/tools/logo/TASMOTA_FullLogo_Vector.svg" alt="Logo" align="right" height="76"/>
|
||||
|
||||
# Tasmota I2C devices
|
||||
# I2C devices
|
||||
|
||||
Tasmota supports several I2C devices but to use them they mostly need to be enabled at compile time to solve possible address conflicts.
|
||||
|
||||
|
|
60
README.md
|
@ -24,7 +24,7 @@ In addition to the [release webpage](https://github.com/arendst/Tasmota/releases
|
|||
[![Download Dev](https://img.shields.io/badge/download-development-yellow.svg)](http://thehackbox.org/tasmota/)
|
||||
[![Build Status](https://img.shields.io/travis/arendst/Tasmota.svg)](https://travis-ci.org/arendst/Tasmota)
|
||||
|
||||
See [tasmota/_changelog.ino](tasmota/_changelog.ino) for detailed change information.
|
||||
See [tasmota/CHANGELOG.md](tasmota/CHANGELOG.md) for detailed change information.
|
||||
|
||||
Unless your Tasmota powered device exhibits a problem or you need to make use of a feature that is not available in the Tasmota version currently installed on your device, leave your device alone - it works so don't make unnecessary changes! If the release version (i.e., the master branch) exhibits unexpected behaviour for your device and configuration, you should upgrade to the latest development version instead to see if your problem is resolved as some bugs in previous releases or development builds may already have been resolved.
|
||||
|
||||
|
@ -42,10 +42,10 @@ We don't take any responsibility nor liability for using this software nor for t
|
|||
|
||||
## Note
|
||||
|
||||
Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://github.com/arendst/Tasmota/wiki/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates) create your own [Template](https://github.com/arendst/Tasmota/wiki/Templates#creating-your-template-).
|
||||
Please do not ask to add new devices unless it requires additional code for new features. If the device is not listed as a module, try using [Templates](https://tasmota.github.io/docs/#/Templates) first. If it is not listed in the [Tasmota Device Templates Repository](http://blakadder.github.io/templates) create your own [Template](https://tasmota.github.io/docs/#/Templates?id=creating-your-template).
|
||||
|
||||
## Quick Install
|
||||
Download one of the released binaries from https://github.com/arendst/Tasmota/releases and flash it to your hardware as [documented in the wiki](https://github.com/arendst/Tasmota/wiki/Flashing).
|
||||
Download one of the released binaries from https://github.com/arendst/Tasmota/releases and flash it to your hardware [using our installation guide](https://tasmota.github.io/docs/#/installation/).
|
||||
|
||||
## Important User Compilation Information
|
||||
If you want to compile Tasmota yourself keep in mind the following:
|
||||
|
@ -56,11 +56,11 @@ If you want to compile Tasmota yourself keep in mind the following:
|
|||
|
||||
## Configuration Information
|
||||
|
||||
Please refer to the installation and configuration articles in the [wiki](https://github.com/arendst/Tasmota/wiki).
|
||||
Please refer to the installation and configuration articles in our [documentation](https://tasmota.github.io/docs).
|
||||
|
||||
## Migration Information
|
||||
|
||||
See [wiki migration path](https://github.com/arendst/Tasmota/wiki/Upgrading#migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
|
||||
See [wiki migration path](https://tasmota.github.io/docs/#/Upgrading?id=migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
|
||||
|
||||
1. Migrate to **Sonoff-Tasmota 3.9.x**
|
||||
2. Migrate to **Sonoff-Tasmota 4.x**
|
||||
|
@ -74,8 +74,8 @@ See [wiki migration path](https://github.com/arendst/Tasmota/wiki/Upgrading#migr
|
|||
|
||||
For a database of supported devices see [Tasmota Device Templates Repository](https://blakadder.github.io/templates)
|
||||
|
||||
See [Wiki](https://github.com/arendst/Tasmota/wiki) for use instructions and how-to's.<br />
|
||||
See [Community](https://groups.google.com/d/forum/sonoffusers) for forum.<br />
|
||||
See [Wiki](https://tasmota.github.io/docs) for use instructions and how-to's.
|
||||
See [Community](https://groups.google.com/d/forum/sonoffusers) for forum.
|
||||
Visit [Discord Chat](https://discord.gg/Ks2Kzd4) for discussions and troubleshooting.
|
||||
|
||||
## Contribute
|
||||
|
@ -84,55 +84,12 @@ You can contribute to Tasmota by
|
|||
- providing Pull Requests (Features, Proof of Concepts, Language files or Fixes)
|
||||
- testing new released features and report issues
|
||||
- donating to acquire hardware for testing and implementing or out of gratitude
|
||||
- contributing missing documentation for features and devices on our [Wiki](https://github.com/arendst/Tasmota/wiki)
|
||||
- contributing missing [documentation](https://tasmota.github.io/docs) for features and devices
|
||||
|
||||
[![donate](https://img.shields.io/badge/donate-PayPal-blue.svg)](https://paypal.me/tasmota)
|
||||
|
||||
## Credits
|
||||
|
||||
### Libraries Used
|
||||
|
||||
Libraries used with Tasmota are:
|
||||
- [ESP8266 core for Arduino](https://github.com/esp8266/Arduino)
|
||||
- [Adafruit CCS811](https://github.com/adafruit/Adafruit_CCS811)
|
||||
- [Adafruit ILI9341](https://github.com/adafruit/Adafruit_ILI9341)
|
||||
- [Adafruit LED Backpack](https://github.com/adafruit/Adafruit-LED-Backpack-Library)
|
||||
- [Adafruit MAX31865](https://github.com/adafruit/Adafruit_MAX31865)
|
||||
- [Adafruit SGP30](https://github.com/adafruit/Adafruit_SGP30)
|
||||
- Adafruit based SH1106
|
||||
- [Adafruit SSD1306](https://github.com/adafruit/Adafruit_SSD1306)
|
||||
- [Adafruit TSL2591](https://github.com/adafruit/Adafruit_TSL2591_Library)
|
||||
- Adafruit based SSD1351
|
||||
- [Adafruit GFX](https://github.com/adafruit/Adafruit-GFX-Library)
|
||||
- [ArduinoJson](https://arduinojson.org/)
|
||||
- AT24C256 I2C eeprom
|
||||
- [Base64](https://github.com/Densaugeo/base64_arduino)
|
||||
- [Bear SSL](https://github.com/earlephilhower/bearssl-esp8266.git)
|
||||
- [Bosch BME680](https://github.com/BoschSensortec/BME680_driver)
|
||||
- [C2 Programmer](http://app.cear.ufpb.br/~lucas.hartmann/tag/efm8bb1/)
|
||||
- [esp-epaper-29-ws-20171230-gemu](https://github.com/gemu2015/Sonoff-Tasmota/tree/displays/lib)
|
||||
- [esp-knx-ip](https://github.com/envy/esp-knx-ip)
|
||||
- FrogmoreScd30
|
||||
- FT6236
|
||||
- [I2Cdevlib](https://github.com/jrowberg/i2cdevlib)
|
||||
- [IRremoteEsp8266](https://github.com/markszabo/IRremoteESP8266)
|
||||
- [JaretBurkett ILI9488](https://github.com/jaretburkett/ILI9488)
|
||||
- [JobaTsl2561](https://github.com/joba-1/Joba_Tsl2561)
|
||||
- [LinkedList](https://github.com/ivanseidel/LinkedList)
|
||||
- [Liquid Cristal](https://github.com/marcoschwartz/LiquidCrystal_I2C)
|
||||
- [MultiChannelGasSensor](http://wiki.seeedstudio.com/Grove-Multichannel_Gas_Sensor/)
|
||||
- [NeoPixelBus](https://github.com/Makuna/NeoPixelBus)
|
||||
- [NewPing](https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home)
|
||||
- [OneWire](https://github.com/PaulStoffregen/OneWire)
|
||||
- [PubSubClient](https://github.com/knolleary/pubsubclient)
|
||||
- [rc-switch](https://github.com/sui77/rc-switch)
|
||||
- TasmotaModbus
|
||||
- TasmotaSerial
|
||||
- [Vl53l0x](https://github.com/pololu/vl53l0x-arduino)
|
||||
- Xlatb Ra8876
|
||||
|
||||
### People inspiring me
|
||||
|
||||
People helping to keep the show on the road:
|
||||
- David Lang providing initial issue resolution and code optimizations
|
||||
- Heiko Krupp for his IRSend, HTU21, SI70xx and Wemo/Hue emulation drivers
|
||||
|
@ -161,6 +118,7 @@ People helping to keep the show on the road:
|
|||
- Stephan Hadinger for refactoring light driver, enhancing HueEmulation and Zigbee support
|
||||
- tmo for designing the official Tasmota logo
|
||||
- Stefan Bode for his Shutter and Deep sleep drivers
|
||||
- Jacek Ziółkowski for his [TDM](https://github.com/jziolkowski/tdm) management tool
|
||||
- Many more providing Tips, Wips, Pocs, PRs and Donations
|
||||
|
||||
## License
|
||||
|
|
159
RELEASENOTES.md
|
@ -6,7 +6,7 @@
|
|||
|
||||
## Migration Information
|
||||
|
||||
See [wiki migration path](https://github.com/arendst/Tasmota/wiki/Upgrading#migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
|
||||
See [migration path](https://tasmota.github.io/docs/#/Upgrading?id=migration-path) for instructions how to migrate to a major version. Pay attention to the following version breaks due to dynamic settings updates:
|
||||
|
||||
1. Migrate to **Sonoff-Tasmota 3.9.x**
|
||||
2. Migrate to **Sonoff-Tasmota 4.x**
|
||||
|
@ -22,7 +22,7 @@ Although it might still compile on previous Core versions all support will be re
|
|||
|
||||
## Support of TLS
|
||||
|
||||
To save resources when TLS is enabled mDNS needs to be disabled. In addition to TLS using fingerprints now also user supplied CA certs and AWS IoT is supported. See full documentation on https://github.com/arendst/Tasmota/wiki/AWS-IoT
|
||||
To save resources when TLS is enabled mDNS needs to be disabled. In addition to TLS using fingerprints now also user supplied CA certs and AWS IoT is supported. Read [full documentation](https://tasmota.github.io/docs/#/integrations/AWS-IoT)
|
||||
|
||||
## Initial configuration tools
|
||||
|
||||
|
@ -122,153 +122,7 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
|
|||
- **tasmota-display.bin** = The Display version without Energy Monitoring but adds display support.
|
||||
- **tasmota-minimal.bin** = The Minimal version allows intermediate OTA uploads to support larger versions and does NOT change any persistent parameter. This version **should NOT be used for initial installation**.
|
||||
|
||||
## Available Features and Sensors
|
||||
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
|-----------------------|---------|-------|--------|-----|---------|----|---------|--------
|
||||
| MY_LANGUAGE en-GB | x | x | x | x | x | x | x |
|
||||
| USE_ARDUINO_OTA | - | - | - | - | - | - | - |
|
||||
| USE_DOMOTICZ | - | - | x | x | x | x | - |
|
||||
| USE_HOME_ASSISTANT | - | - | x | x | x | x | - |
|
||||
| USE_MQTT_TLS | - | - | - | - | - | - | - |
|
||||
| USE_MQTT_TLS_CA_CERT | - | - | - | - | - | - | - |
|
||||
| USE_MQTT_AWS_IOT | - | - | - | - | - | - | - |
|
||||
| USE_4K_RSA | - | - | - | - | - | - | - |
|
||||
| USE_KNX | - | - | - | x | - | - | - |
|
||||
| USE_WEBSERVER | x | x | x | x | x | x | x |
|
||||
| USE_JAVASCRIPT_ES6 | - | - | - | - | - | - | - |
|
||||
| USE_WEBSEND_RESPONSE | - | - | - | - | - | - | - |
|
||||
| USE_EMULATION_HUE | - | x | x | - | x | - | - |
|
||||
| USE_EMULATION_WEMO | - | x | x | - | x | - | - |
|
||||
| USE_DISCOVERY | - | - | x | x | - | - | x |
|
||||
| WEBSERVER_ADVERTISE | - | - | x | x | - | - | x |
|
||||
| MQTT_HOST_DISCOVERY | - | - | x | x | - | - | x |
|
||||
| USE_TIMERS | - | x | x | x | x | x | x |
|
||||
| USE_TIMERS_WEB | - | x | x | x | x | x | x |
|
||||
| USE_SUNRISE | - | x | x | x | x | x | x |
|
||||
| USE_RULES | - | x | x | x | x | x | x |
|
||||
| USE_SCRIPT | - | - | - | - | - | - | - |
|
||||
| USE_EXPRESSION | - | - | - | - | - | - | - |
|
||||
| SUPPORT_IF_STATEMENT | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| ROTARY_V1 | - | - | - | - | - | - | - |
|
||||
| USE_SONOFF_RF | - | - | x | x | x | - | - |
|
||||
| USE_RF_FLASH | - | - | x | x | x | - | - |
|
||||
| USE_SONOFF_SC | - | - | x | - | x | - | - |
|
||||
| USE_TUYA_MCU | - | x | x | x | x | - | x |
|
||||
| USE_ARMTRONIX_DIMMERS | - | - | x | x | - | - | - |
|
||||
| USE_PS_16_DZ | - | - | x | x | x | - | - |
|
||||
| USE_SONOFF_IFAN | - | - | x | x | x | - | - |
|
||||
| USE_BUZZER | - | - | x | x | x | - | - |
|
||||
| USE_ARILUX_RF | - | - | x | x | x | - | - |
|
||||
| USE_SHUTTER | - | - | - | - | - | - | - |
|
||||
| USE_DEEPSLEEP | - | - | - | - | - | - | - |
|
||||
| USE_EXS_DIMMER | - | - | x | x | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_LIGHT | - | x | x | x | x | x | x |
|
||||
| USE_WS2812 | - | - | x | x | x | - | x |
|
||||
| USE_WS2812_DMA | - | - | - | - | - | - | - |
|
||||
| USE_MY92X1 | - | - | x | x | x | - | x |
|
||||
| USE_SM16716 | - | - | x | x | x | - | x |
|
||||
| USE_SM2135 | - | - | x | x | x | - | x |
|
||||
| USE_SONOFF_L1 | - | - | x | x | x | - | x |
|
||||
| | | | | | | | |
|
||||
| USE_ENERGY_SENSOR | - | x | x | x | x | - | - |
|
||||
| USE_PZEM004T | - | - | x | x | x | - | - |
|
||||
| USE_PZEM_AC | - | - | x | x | x | - | - |
|
||||
| USE_PZEM_DC | - | - | x | x | x | - | - |
|
||||
| USE_MCP39F501 | - | x | x | x | x | - | - |
|
||||
| USE_SDM120 | - | - | - | - | x | - | - |
|
||||
| USE_SDM630 | - | - | - | - | x | - | - |
|
||||
| USE_DDS2382 | - | - | - | - | x | - | - |
|
||||
| USE_DDSU666 | - | - | - | - | x | - | - |
|
||||
| USE_SOLAX_X1 | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| USE_ADC_VCC | x | x | - | - | - | - | - |
|
||||
| USE_COUNTER | - | - | x | x | x | x | x |
|
||||
| USE_DS18x20 | - | - | x | x | x | - | x |
|
||||
| USE_DHT | - | - | x | x | x | x | x |
|
||||
| USE_MAX31855 | - | - | - | - | x | - | - |
|
||||
| USE_MAX31865 | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_I2C | - | - | x | x | x | - | x |
|
||||
| USE_SHT | - | - | x | x | x | - | x |
|
||||
| USE_HTU | - | - | x | x | x | - | x |
|
||||
| USE_BMP | - | - | x | x | x | - | x |
|
||||
| USE_BME680 | - | - | - | - | x | - | - |
|
||||
| USE_BH1750 | - | - | x | x | x | - | x |
|
||||
| USE_VEML6070 | - | - | - | - | x | - | - |
|
||||
| USE_ADS1115 | - | - | - | - | x | - | - |
|
||||
| USE_ADS1115_I2CDEV | - | - | - | - | - | - | - |
|
||||
| USE_INA219 | - | - | - | - | x | - | - |
|
||||
| USE_INA226 | - | - | - | - | - | - | - |
|
||||
| USE_SHT3X | - | - | x | x | x | - | x |
|
||||
| USE_TSL2561 | - | - | - | - | x | - | - |
|
||||
| USE_TSL2591 | - | - | - | - | - | - | - |
|
||||
| USE_MGS | - | - | - | - | x | - | - |
|
||||
| USE_SGP30 | - | - | x | x | x | - | x |
|
||||
| USE_SI1145 | - | - | - | - | - | - | - |
|
||||
| USE_LM75AD | - | - | x | x | x | - | x |
|
||||
| USE_APDS9960 | - | - | - | - | - | - | - |
|
||||
| USE_MCP230xx | - | - | - | - | - | - | - |
|
||||
| USE_PCA9685 | - | - | - | - | - | - | - |
|
||||
| USE_MPR121 | - | - | - | - | - | - | - |
|
||||
| USE_CCS811 | - | - | - | - | - | - | - |
|
||||
| USE_MPU6050 | - | - | - | - | - | - | - |
|
||||
| USE_DS3231 | - | - | - | - | - | - | - |
|
||||
| USE_MGC3130 | - | - | - | - | - | - | - |
|
||||
| USE_MAX44009 | - | - | - | - | - | - | - |
|
||||
| USE_SCD30 | - | - | - | - | x | - | - |
|
||||
| USE_SPS30 | - | - | - | - | - | - | - |
|
||||
| USE_ADE7953 | - | - | x | x | x | - | x |
|
||||
| USE_VL53L0X | - | - | - | - | - | - | - |
|
||||
| USE_MLX90614 | - | - | - | - | - | - | - |
|
||||
| USE_CHIRP | - | - | - | - | - | - | - |
|
||||
| USE_PAJ7620 | - | - | - | - | - | - | - |
|
||||
| USE_PCF8574 | - | - | - | - | - | - | - |
|
||||
| USE_HIH6 | - | - | - | - | x | - | - |
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_SPI | - | - | - | - | - | - | x |
|
||||
| USE_MHZ19 | - | - | x | x | x | - | x |
|
||||
| USE_SENSEAIR | - | - | x | x | x | - | x |
|
||||
| USE_PMS5003 | - | - | x | x | x | - | x |
|
||||
| USE_NOVA_SDS | - | - | x | x | x | - | x |
|
||||
| USE_HPMA | - | - | - | - | x | - | - |
|
||||
| USE_SERIAL_BRIDGE | - | - | x | x | x | - | x |
|
||||
| USE_MP3_PLAYER | - | - | - | - | x | - | - |
|
||||
| USE_AZ7798 | - | - | - | - | - | - | - |
|
||||
| USE_PN532_HSU | - | - | - | - | x | - | - |
|
||||
| USE_ZIGBEE | - | - | - | - | - | - | - |
|
||||
| | | | | | | | |
|
||||
| USE_IR_REMOTE | - | - | x | x | x | x | x |
|
||||
| USE_IR_RECEIVE | - | - | x | x | x | x | x |
|
||||
| | | | | | | | |
|
||||
| USE_SR04 | - | - | x | x | x | - | x |
|
||||
| USE_TM1638 | - | - | - | - | x | - | - |
|
||||
| USE_HX711 | - | - | x | x | x | - | x |
|
||||
| USE_TX20_WIND_SENSOR | - | - | - | - | x | - | - |
|
||||
| USE_RC_SWITCH | - | - | - | - | x | - | - |
|
||||
| USE_RF_SENSOR | - | - | - | - | x | - | - | AlectoV2 only
|
||||
| USE_HRE | - | - | - | - | x | - | - |
|
||||
| USE_A4988_STEPPER | - | - | - | - | - | - | - |
|
||||
| USE_TASMOTA_SLAVE | - | - | - | - | - | - | - | Experimental
|
||||
| | | | | | | | |
|
||||
| Feature or Sensor | minimal | basic | tasmota | knx | sensors | ir | display | Remarks
|
||||
| USE_DISPLAY | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_LCD | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_SSD1306 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_MATRIX | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_SH1106 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_ILI9341 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_29 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_EPAPER_42 | - | - | - | - | - | - | x |
|
||||
| USE_DISPLAY_ILI9488 | - | - | - | - | - | - | - |
|
||||
| USE_DISPLAY_SSD1351 | - | - | - | - | - | - | - |
|
||||
| USE_DISPLAY_RA8876 | - | - | - | - | - | - | - |
|
||||
[Complete list](BUILDS.md) of available feature and sensors.
|
||||
|
||||
## Changelog
|
||||
|
||||
|
@ -276,28 +130,31 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
|
|||
|
||||
- Remove update support for versions before 6.0
|
||||
- Remove driver xsns_12_ads1115_i2cdev replaced by xsns_12_ads1115
|
||||
- Remove most IR protocols from non dedicated IR firmware except NEC, RC5 and RC6
|
||||
- Change repository name from Sonoff-Tasmota to Tasmota and all code references from Sonoff to Tasmota
|
||||
- Change default GUI to dark theme
|
||||
- Change ArduinoSlave to TasmotaSlave
|
||||
- Change IRremoteESP8266 library to v2.7.0
|
||||
- Change supported IR protocols in non dedicated IR firmware to NEC, RC5 and RC6 only
|
||||
- Change supported PCF8574 I2C address range to 0x20 - 0x26 allowing other I2C devices with address 0x27 to be used at the same time
|
||||
- Change supported PCF8574A I2C address range to 0x39 - 0x3F allowing other I2C devices with address 0x38 to be used at the same time
|
||||
- Change supported MCP230xx I2C address range to 0x20 - 0x26 allowing other I2C devices with address 0x27 to be used at the same time
|
||||
- Change Reset erase end address from as seen by SDK (getFlashChipSize) to full flash size (getFlashChipRealSize)
|
||||
- Fix better control of RGB/White when ``SetOption37`` >128, added ``Dimmer1`` and ``Dimmer2`` commands (#6714)
|
||||
- Fix random crash caused by UPNP flood
|
||||
- Fix Wifi instability when light is on, due to sleep=0 (#6961, #6608)
|
||||
- Add support for Tuya battery powered devices (#6735)
|
||||
- Add support for Honeywell I2C HIH series Humidity and Temperetaure sensor (#6808)
|
||||
- Add support for Honeywell HPMA115S0 particle concentration sensor by David Hunt (#6843)
|
||||
- Add support for I2C sensor TLS2591 Light Intensity sensor (#6873)
|
||||
- Add command ``WebColor19`` to control color of Module and Name (#6811)
|
||||
- Add command ``SetOption73 0/1`` to re-enable HTTP Cross-Origin Resource Sharing (CORS) now default disabled (#6767)
|
||||
- Add command ``SetOption74 0/1`` to enable DS18x20 internal pull-up and remove define DS18B20_INTERNAL_PULLUP (#6795)
|
||||
- Add command ``SetOption75 0/1`` to switch between grouptopic (0) using fulltopic replacing %topic% or (1) is cmnd/\<grouptopic\> (#6779)
|
||||
- Add command ``SetOption76 0/1`` to enable incrementing bootcount when deepsleep is enabled (#6930)
|
||||
- Add command ``I2cDriver`` for I2C driver runtime control using document I2CDEVICES.md
|
||||
- Add command ``TempOffset -12.6 .. 12.6`` to set global temperature sensor offset (#6958)
|
||||
- Add command ``WebColor19`` to control color of Module and Name (#6811)
|
||||
- Add command ``WifiPower 0 .. 20.5`` to set Wifi Output Power which will be default set to 17dBm
|
||||
- Add frequency to ADE7953 energy monitor as used in Shelly 2.5 by ljakob (#6778)
|
||||
- Add hide Alexa objects with friendlyname starting with '$' (#6722, #6762)
|
||||
- Add Zigbee command support, considered as v1.0 for full Zigbee support
|
||||
- Add colorpicker to WebUI by Christian Staars (#6984)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<img src="/tools/logo/TASMOTA_FullLogo_Vector.svg" alt="Logo" align="right" height="76"/>
|
||||
<img src="/tools/logo/TASMOTA_FullLogo_Vector.svg" style="margin:5px;float:right;width:50"></img>
|
||||
|
||||
# Support
|
||||
|
||||
|
@ -6,10 +6,9 @@ If you're looking for support on **Tasmota** there are some options available:
|
|||
|
||||
## Documentation:
|
||||
|
||||
* [Wiki Pages](https://github.com/arendst/Tasmota/wiki): For information on how to Flash Tasmota, configure and use it.
|
||||
* [FAQ](https://github.com/arendst/Tasmota/wiki/FAQ): For information on common problems and solutions.
|
||||
* [Troubleshooting Information](https://github.com/arendst/Tasmota/wiki/Troubleshooting): For ways to debug and troubleshoot.
|
||||
* [Commands Information](https://github.com/arendst/Tasmota/wiki/Commands): For information on all the commands supported by Tasmota.
|
||||
* [Documentation Site](https://tasmota.github.io/docs): For information on how to flash Tasmota, configure, use and expand it
|
||||
* [FAQ and Troubleshooting](https://tasmota.github.io/docs/#/help/): For information on common problems and solutions.
|
||||
* [Commands Information](https://tasmota.github.io/docs/#/Commands): For information on all the commands supported by Tasmota.
|
||||
|
||||
## Support's Community:
|
||||
|
||||
|
|
|
@ -1,162 +0,0 @@
|
|||
# ESP8266 platform
|
||||
# ------------------------------
|
||||
|
||||
# For more info:
|
||||
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
|
||||
|
||||
name=ESP8266 Boards (2.6.0)
|
||||
version=2.6.0
|
||||
|
||||
# These will be removed by the packager script when doing a JSON release
|
||||
|
||||
|
||||
|
||||
|
||||
runtime.tools.signing={runtime.platform.path}/tools/signing.py
|
||||
runtime.tools.elf2bin={runtime.platform.path}/tools/elf2bin.py
|
||||
runtime.tools.sizes={runtime.platform.path}/tools/sizes.py
|
||||
runtime.tools.makecorever={runtime.platform.path}/tools/makecorever.py
|
||||
runtime.tools.eboot={runtime.platform.path}/bootloaders/eboot/eboot.elf
|
||||
|
||||
compiler.warning_flags=-w
|
||||
compiler.warning_flags.none=-w
|
||||
compiler.warning_flags.default=
|
||||
compiler.warning_flags.more=-Wall
|
||||
compiler.warning_flags.all=-Wall -Wextra
|
||||
|
||||
build.lwip_lib=-llwip_gcc
|
||||
build.lwip_include=lwip/include
|
||||
build.lwip_flags=-DLWIP_OPEN_SRC
|
||||
|
||||
build.vtable_flags=-DVTABLES_IN_FLASH
|
||||
|
||||
build.sslflags=
|
||||
|
||||
build.exception_flags=-fno-exceptions
|
||||
build.stdcpp_lib=-lstdc++
|
||||
build.stdcpp_level=-std=gnu++11
|
||||
|
||||
# build.float=-u _printf_float -u _scanf_float
|
||||
build.float=
|
||||
build.led=
|
||||
|
||||
# default SDK for all boards
|
||||
# (generic board overrides this variable)
|
||||
#build.sdk=NONOSDK22x_190703
|
||||
build.sdk=NONOSDK22x_191024
|
||||
#build.sdk=NONOSDK22x_191105
|
||||
|
||||
compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/
|
||||
compiler.sdk.path={runtime.platform.path}/tools/sdk
|
||||
|
||||
compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf
|
||||
compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/{build.lwip_include}" "-I{compiler.libc.path}/include" "-I{build.path}/core"
|
||||
|
||||
compiler.c.cmd=xtensa-lx106-elf-gcc
|
||||
compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags}
|
||||
|
||||
compiler.S.cmd=xtensa-lx106-elf-gcc
|
||||
compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls
|
||||
|
||||
compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u app_entry {build.float} -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/lib/{build.sdk}" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read
|
||||
|
||||
compiler.c.elf.cmd=xtensa-lx106-elf-gcc
|
||||
compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -lbearssl -laxtls -lespnow -lsmartconfig -lairkiss -lwpa2 {build.stdcpp_lib} -lm -lc -lgcc
|
||||
|
||||
compiler.cpp.cmd=xtensa-lx106-elf-g++
|
||||
compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 {build.stdcpp_level} -MMD -ffunction-sections -fdata-sections {build.exception_flags} {build.sslflags}
|
||||
|
||||
compiler.as.cmd=xtensa-lx106-elf-as
|
||||
|
||||
compiler.ar.cmd=xtensa-lx106-elf-ar
|
||||
compiler.ar.flags=cru
|
||||
|
||||
compiler.elf2hex.cmd=esptool
|
||||
compiler.elf2hex.flags=
|
||||
|
||||
compiler.size.cmd=xtensa-lx106-elf-size
|
||||
|
||||
# This can be overriden in boards.txt
|
||||
build.extra_flags=-DESP8266
|
||||
|
||||
# These can be overridden in platform.local.txt
|
||||
compiler.c.extra_flags=
|
||||
compiler.c.elf.extra_flags=
|
||||
compiler.S.extra_flags=
|
||||
compiler.cpp.extra_flags=
|
||||
compiler.ar.extra_flags=
|
||||
compiler.objcopy.eep.extra_flags=
|
||||
compiler.elf2hex.extra_flags=
|
||||
|
||||
## generate file with git version number
|
||||
## needs git
|
||||
recipe.hooks.sketch.prebuild.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.signing}" --mode header --publickey "{build.source.path}/public.key" --out "{build.path}/core/Updater_Signing.h"
|
||||
# This is quite a working hack. This form of prebuild hook, while intuitive, is not explicitly documented.
|
||||
recipe.hooks.prebuild.10.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.makecorever}" --build_path "{build.path}" --platform_path "{runtime.platform.path}" --version "unix-{version}"
|
||||
|
||||
## Build the app.ld linker file
|
||||
recipe.hooks.linking.prelink.1.pattern="{compiler.path}{compiler.c.cmd}" -CC -E -P {build.vtable_flags} "{runtime.platform.path}/tools/sdk/ld/eagle.app.v6.common.ld.h" -o "{build.path}/local.eagle.app.v6.common.ld"
|
||||
|
||||
## Compile c files
|
||||
recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -D{build.sdk}=1 -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {build.flash_flags} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
|
||||
|
||||
## Compile c++ files
|
||||
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -D{build.sdk}=1 -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {build.flash_flags} {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
|
||||
|
||||
## Compile S files
|
||||
recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -D{build.sdk}=1 -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {build.led} {build.flash_flags} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
|
||||
|
||||
## Create archives
|
||||
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"
|
||||
|
||||
## Combine gc-sections, archives, and objects
|
||||
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {build.exception_flags} -Wl,-Map "-Wl,{build.path}/{build.project_name}.map" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" -Wl,--start-group {object_files} "{archive_file_path}" {compiler.c.elf.libs} -Wl,--end-group "-L{build.path}"
|
||||
|
||||
## Create eeprom
|
||||
recipe.objcopy.eep.pattern=
|
||||
|
||||
## Create hex
|
||||
recipe.objcopy.hex.1.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.elf2bin}" --eboot "{runtime.tools.eboot}" --app "{build.path}/{build.project_name}.elf" --flash_mode {build.flash_mode} --flash_freq {build.flash_freq} --flash_size {build.flash_size} --path "{runtime.tools.xtensa-lx106-elf-gcc.path}/bin" --out "{build.path}/{build.project_name}.bin"
|
||||
recipe.objcopy.hex.2.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.signing}" --mode sign --privatekey "{build.source.path}/private.key" --bin "{build.path}/{build.project_name}.bin" --out "{build.path}/{build.project_name}.bin.signed" --legacy "{build.path}/{build.project_name}.bin.legacy_sig"
|
||||
recipe.objcopy.hex.3.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.sizes}" --elf "{build.path}/{build.project_name}.elf" --path "{runtime.tools.xtensa-lx106-elf-gcc.path}/bin"
|
||||
|
||||
## Save hex
|
||||
recipe.output.tmp_file={build.project_name}.bin
|
||||
recipe.output.save_file={build.project_name}.{build.variant}.bin
|
||||
|
||||
## Compute size
|
||||
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf"
|
||||
recipe.size.regex=^(?:\.irom0\.text|\.text|\.text1|\.data|\.rodata|)\s+([0-9]+).*
|
||||
recipe.size.regex.data=^(?:\.data|\.rodata|\.bss)\s+([0-9]+).*
|
||||
#recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).*
|
||||
|
||||
# ------------------------------
|
||||
|
||||
tools.esptool.path=
|
||||
# Because the variable expansion doesn't allow one tool to find another, the following lines
|
||||
# will point to "{runtime.platform.path}/tools/python3/python3" in GIT and
|
||||
# "{runtime.tools.python3.path}/python3" for JSON board manager releases.
|
||||
tools.esptool.cmd={runtime.tools.python3.path}/python3
|
||||
tools.esptool.network_cmd={runtime.tools.python3.path}/python3
|
||||
|
||||
|
||||
|
||||
tools.esptool.upload.protocol=esp
|
||||
# esptool.py --trace option is a debug option, not a verbose option
|
||||
tools.esptool.upload.params.verbose=
|
||||
tools.esptool.upload.params.quiet=
|
||||
|
||||
# First, potentially perform an erase or nothing
|
||||
# Next, do the binary upload
|
||||
# Combined in one rule because Arduino doesn't suport upload.1.pattern/upload.3.pattern
|
||||
tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" {upload.resetmethod} "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end
|
||||
|
||||
tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
|
||||
|
||||
tools.mkspiffs.cmd=mkspiffs
|
||||
tools.mkspiffs.cmd.windows=mkspiffs.exe
|
||||
tools.mkspiffs.path={runtime.tools.mkspiffs.path}
|
||||
|
||||
tools.mklittlefs.cmd=mklittlefs
|
||||
tools.mklittlefs.cmd.windows=mklittlefs.exe
|
||||
tools.mklittlefs.path={runtime.platform.path}/tools/mklittlefs
|
|
@ -5,8 +5,8 @@
|
|||
# For more info:
|
||||
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5-3rd-party-Hardware-specification
|
||||
|
||||
name=ESP8266 Boards (2.5.2-196-g45d71ae4)
|
||||
version=2.5.2-196-g45d71ae4
|
||||
name=ESP8266 Boards (2.6.1)
|
||||
version=2.6.1
|
||||
|
||||
# These will be removed by the packager script when doing a JSON release
|
||||
|
||||
|
@ -37,10 +37,15 @@ build.exception_flags=-fno-exceptions
|
|||
build.stdcpp_lib=-lstdc++
|
||||
build.stdcpp_level=-std=gnu++11
|
||||
|
||||
# build.float=-u _printf_float -u _scanf_float
|
||||
#build.float=-u _printf_float -u _scanf_float
|
||||
build.float=
|
||||
build.led=
|
||||
build.sdk=NONOSDK22y
|
||||
|
||||
# default SDK for all boards
|
||||
# (generic board overrides this variable)
|
||||
build.sdk=NONOSDK22x_190703
|
||||
#build.sdk=NONOSDK22x_191024
|
||||
#build.sdk=NONOSDK22x_191105
|
||||
|
||||
compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/
|
||||
compiler.sdk.path={runtime.platform.path}/tools/sdk
|
||||
|
@ -88,7 +93,7 @@ compiler.elf2hex.extra_flags=
|
|||
## needs git
|
||||
recipe.hooks.sketch.prebuild.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.signing}" --mode header --publickey "{build.source.path}/public.key" --out "{build.path}/core/Updater_Signing.h"
|
||||
# This is quite a working hack. This form of prebuild hook, while intuitive, is not explicitly documented.
|
||||
recipe.hooks.prebuild.10.pattern="{runtime.tools.python3.path}/python3" "{runtime.tools.makecorever}" --build_path "{build.path}" --platform_path "{runtime.platform.path}" --version "unix-{version}"
|
||||
|
||||
|
||||
## Build the app.ld linker file
|
||||
recipe.hooks.linking.prelink.1.pattern="{compiler.path}{compiler.c.cmd}" -CC -E -P {build.vtable_flags} "{runtime.platform.path}/tools/sdk/ld/eagle.app.v6.common.ld.h" -o "{build.path}/local.eagle.app.v6.common.ld"
|
||||
|
@ -145,7 +150,7 @@ tools.esptool.upload.params.quiet=
|
|||
# First, potentially perform an erase or nothing
|
||||
# Next, do the binary upload
|
||||
# Combined in one rule because Arduino doesn't suport upload.1.pattern/upload.3.pattern
|
||||
tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} --end --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" write_flash 0x0 "{build.path}/{build.project_name}.bin" --end
|
||||
tools.esptool.upload.pattern="{cmd}" "{runtime.platform.path}/tools/upload.py" --chip esp8266 --port "{serial.port}" --baud "{upload.speed}" "{upload.verbose}" {upload.erase_cmd} {upload.resetmethod} "{build.path}/{build.project_name}.bin"
|
||||
|
||||
tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin"
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
// Copyright 2019 - David Conran (@crankyoldgit)
|
||||
|
||||
#ifndef UNIT_TEST
|
||||
#include <Arduino.h>
|
||||
#endif // UNIT_TEST
|
||||
#include "IRremoteESP8266.h"
|
||||
#include "i18n.h"
|
||||
|
||||
// Common
|
||||
|
||||
#ifdef USE_IR_REMOTE_FULL // full IR protocols
|
||||
|
||||
String kUnknownStr = D_STR_UNKNOWN;
|
||||
String kProtocolStr = D_STR_PROTOCOL;
|
||||
String kPowerStr = D_STR_POWER;
|
||||
String kOnStr = D_STR_ON;
|
||||
String kOffStr = D_STR_OFF;
|
||||
String kModeStr = D_STR_MODE;
|
||||
String kToggleStr = D_STR_TOGGLE;
|
||||
String kTurboStr = D_STR_TURBO;
|
||||
String kSuperStr = D_STR_SUPER;
|
||||
String kSleepStr = D_STR_SLEEP;
|
||||
String kLightStr = D_STR_LIGHT;
|
||||
String kPowerfulStr = D_STR_POWERFUL;
|
||||
String kQuietStr = D_STR_QUIET;
|
||||
String kEconoStr = D_STR_ECONO;
|
||||
String kSwingStr = D_STR_SWING;
|
||||
String kSwingHStr = D_STR_SWINGH;
|
||||
String kSwingVStr = D_STR_SWINGV;
|
||||
String kBeepStr = D_STR_BEEP;
|
||||
String kZoneFollowStr = D_STR_ZONEFOLLOW;
|
||||
String kFixedStr = D_STR_FIXED;
|
||||
String kMouldStr = D_STR_MOULD;
|
||||
String kCleanStr = D_STR_CLEAN;
|
||||
String kPurifyStr = D_STR_PURIFY;
|
||||
String kTimerStr = D_STR_TIMER;
|
||||
String kOnTimerStr = D_STR_ONTIMER;
|
||||
String kOffTimerStr = D_STR_OFFTIMER;
|
||||
String kClockStr = D_STR_CLOCK;
|
||||
String kCommandStr = D_STR_COMMAND;
|
||||
String kXFanStr = D_STR_XFAN;
|
||||
String kHealthStr = D_STR_HEALTH;
|
||||
String kModelStr = D_STR_MODEL;
|
||||
String kTempStr = D_STR_TEMP;
|
||||
String kIFeelStr = D_STR_IFEEL;
|
||||
String kHumidStr = D_STR_HUMID;
|
||||
String kSaveStr = D_STR_SAVE;
|
||||
String kEyeStr = D_STR_EYE;
|
||||
String kFollowStr = D_STR_FOLLOW;
|
||||
String kIonStr = D_STR_ION;
|
||||
String kFreshStr = D_STR_FRESH;
|
||||
String kHoldStr = D_STR_HOLD;
|
||||
String kButtonStr = D_STR_BUTTON;
|
||||
String k8CHeatStr = D_STR_8C_HEAT;
|
||||
String kNightStr = D_STR_NIGHT;
|
||||
String kSilentStr = D_STR_SILENT;
|
||||
String kFilterStr = D_STR_FILTER;
|
||||
String k3DStr = D_STR_3D;
|
||||
String kCelsiusStr = D_STR_CELSIUS;
|
||||
String kTempUpStr = D_STR_TEMPUP;
|
||||
String kTempDownStr = D_STR_TEMPDOWN;
|
||||
String kStartStr = D_STR_START;
|
||||
String kStopStr = D_STR_STOP;
|
||||
String kMoveStr = D_STR_MOVE;
|
||||
String kSetStr = D_STR_SET;
|
||||
String kCancelStr = D_STR_CANCEL;
|
||||
String kUpStr = D_STR_UP;
|
||||
String kDownStr = D_STR_DOWN;
|
||||
String kChangeStr = D_STR_CHANGE;
|
||||
String kComfortStr = D_STR_COMFORT;
|
||||
String kSensorStr = D_STR_SENSOR;
|
||||
String kWeeklyTimerStr = D_STR_WEEKLYTIMER;
|
||||
String kWifiStr = D_STR_WIFI;
|
||||
String kLastStr = D_STR_LAST;
|
||||
String kFastStr = D_STR_FAST;
|
||||
String kSlowStr = D_STR_SLOW;
|
||||
String kAirFlowStr = D_STR_AIRFLOW;
|
||||
String kStepStr = D_STR_STEP;
|
||||
String kNAStr = D_STR_NA;
|
||||
String kOutsideStr = D_STR_OUTSIDE;
|
||||
String kLoudStr = D_STR_LOUD;
|
||||
String kLowerStr = D_STR_LOWER;
|
||||
String kUpperStr = D_STR_UPPER;
|
||||
String kBreezeStr = D_STR_BREEZE;
|
||||
String kCirculateStr = D_STR_CIRCULATE;
|
||||
String kCeilingStr = D_STR_CEILING;
|
||||
String kWallStr = D_STR_WALL;
|
||||
String kRoomStr = D_STR_ROOM;
|
||||
String k6thSenseStr = D_STR_6THSENSE;
|
||||
|
||||
String kAutoStr = D_STR_AUTO;
|
||||
String kAutomaticStr = D_STR_AUTOMATIC;
|
||||
String kManualStr = D_STR_MANUAL;
|
||||
String kCoolStr = D_STR_COOL;
|
||||
String kHeatStr = D_STR_HEAT;
|
||||
String kFanStr = D_STR_FAN;
|
||||
String kDryStr = D_STR_DRY;
|
||||
String kFanOnlyStr = D_STR_FANONLY;
|
||||
|
||||
String kMaxStr = D_STR_MAX;
|
||||
String kMaximumStr = D_STR_MAXIMUM;
|
||||
String kMinStr = D_STR_MIN;
|
||||
String kMinimumStr = D_STR_MINIMUM;
|
||||
String kMedStr = D_STR_MED;
|
||||
String kMediumStr = D_STR_MEDIUM;
|
||||
|
||||
String kHighestStr = D_STR_HIGHEST;
|
||||
String kHighStr = D_STR_HIGH;
|
||||
String kHiStr = D_STR_HI;
|
||||
String kMidStr = D_STR_MID;
|
||||
String kMiddleStr = D_STR_MIDDLE;
|
||||
String kLowStr = D_STR_LOW;
|
||||
String kLoStr = D_STR_LO;
|
||||
String kLowestStr = D_STR_LOWEST;
|
||||
String kMaxRightStr = D_STR_MAXRIGHT;
|
||||
String kRightMaxStr = D_STR_RIGHTMAX_NOSPACE;
|
||||
String kRightStr = D_STR_RIGHT;
|
||||
String kLeftStr = D_STR_LEFT;
|
||||
String kMaxLeftStr = D_STR_MAXLEFT;
|
||||
String kLeftMaxStr = D_STR_LEFTMAX_NOSPACE;
|
||||
String kWideStr = D_STR_WIDE;
|
||||
String kCentreStr = D_STR_CENTRE;
|
||||
String kTopStr = D_STR_TOP;
|
||||
String kBottomStr = D_STR_BOTTOM;
|
||||
|
||||
String kSpaceLBraceStr = D_STR_SPACELBRACE;
|
||||
String kCommaSpaceStr = D_STR_COMMASPACE;
|
||||
String kColonSpaceStr = D_STR_COLONSPACE;
|
||||
|
||||
// IRutils
|
||||
// - Time
|
||||
char kTimeSep = D_CHR_TIME_SEP;
|
||||
String kDayStr = D_STR_DAY;
|
||||
String kDaysStr = D_STR_DAYS;
|
||||
String kHourStr = D_STR_HOUR;
|
||||
String kHoursStr = D_STR_HOURS;
|
||||
String kMinuteStr = D_STR_MINUTE;
|
||||
String kMinutesStr = D_STR_MINUTES;
|
||||
String kSecondStr = D_STR_SECOND;
|
||||
String kSecondsStr = D_STR_SECONDS;
|
||||
String kNowStr = D_STR_NOW;
|
||||
String kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS;
|
||||
|
||||
String kYesStr = D_STR_YES;
|
||||
String kNoStr = D_STR_NO;
|
||||
String kTrueStr = D_STR_TRUE;
|
||||
String kFalseStr = D_STR_FALSE;
|
||||
|
||||
String kRepeatStr = D_STR_REPEAT;
|
||||
String kCodeStr = D_STR_CODE;
|
||||
String kBitsStr = D_STR_BITS;
|
||||
|
||||
#endif // USE_IR_REMOTE_FULL // full IR protocols
|
|
@ -1,146 +0,0 @@
|
|||
// Copyright 2019 - David Conran (@crankyoldgit)
|
||||
// This header file is to be included in files **other than** 'IRtext.cpp'.
|
||||
//
|
||||
// WARNING: Do not edit this file! This file is automatically generated by
|
||||
// 'tools/generate_irtext_h.sh'.
|
||||
|
||||
#ifndef IRTEXT_H_
|
||||
#define IRTEXT_H_
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
// Constant text to be shared across all object files.
|
||||
// This means there is only one copy of the character/string/text etc.
|
||||
|
||||
extern const char kTimeSep;
|
||||
extern const String k3DStr;
|
||||
extern const String k6thSenseStr;
|
||||
extern const String k8CHeatStr;
|
||||
extern const String kAirFlowStr;
|
||||
extern const String kAutomaticStr;
|
||||
extern const String kAutoStr;
|
||||
extern const String kBeepStr;
|
||||
extern const String kBitsStr;
|
||||
extern const String kBottomStr;
|
||||
extern const String kBreezeStr;
|
||||
extern const String kButtonStr;
|
||||
extern const String kCancelStr;
|
||||
extern const String kCeilingStr;
|
||||
extern const String kCelsiusStr;
|
||||
extern const String kCentreStr;
|
||||
extern const String kChangeStr;
|
||||
extern const String kCirculateStr;
|
||||
extern const String kCleanStr;
|
||||
extern const String kClockStr;
|
||||
extern const String kCodeStr;
|
||||
extern const String kColonSpaceStr;
|
||||
extern const String kComfortStr;
|
||||
extern const String kCommandStr;
|
||||
extern const String kCommaSpaceStr;
|
||||
extern const String kCoolStr;
|
||||
extern const String kDaysStr;
|
||||
extern const String kDayStr;
|
||||
extern const String kDownStr;
|
||||
extern const String kDryStr;
|
||||
extern const String kEconoStr;
|
||||
extern const String kEyeStr;
|
||||
extern const String kFalseStr;
|
||||
extern const String kFanOnlyStr;
|
||||
extern const String kFanStr;
|
||||
extern const String kFastStr;
|
||||
extern const String kFilterStr;
|
||||
extern const String kFixedStr;
|
||||
extern const String kFollowStr;
|
||||
extern const String kFreshStr;
|
||||
extern const String kHealthStr;
|
||||
extern const String kHeatStr;
|
||||
extern const String kHighestStr;
|
||||
extern const String kHighStr;
|
||||
extern const String kHiStr;
|
||||
extern const String kHoldStr;
|
||||
extern const String kHoursStr;
|
||||
extern const String kHourStr;
|
||||
extern const String kHumidStr;
|
||||
extern const String kIFeelStr;
|
||||
extern const String kIonStr;
|
||||
extern const String kLastStr;
|
||||
extern const String kLeftMaxStr;
|
||||
extern const String kLeftStr;
|
||||
extern const String kLightStr;
|
||||
extern const String kLoStr;
|
||||
extern const String kLoudStr;
|
||||
extern const String kLowerStr;
|
||||
extern const String kLowestStr;
|
||||
extern const String kLowStr;
|
||||
extern const String kManualStr;
|
||||
extern const String kMaximumStr;
|
||||
extern const String kMaxLeftStr;
|
||||
extern const String kMaxRightStr;
|
||||
extern const String kMaxStr;
|
||||
extern const String kMediumStr;
|
||||
extern const String kMedStr;
|
||||
extern const String kMiddleStr;
|
||||
extern const String kMidStr;
|
||||
extern const String kMinimumStr;
|
||||
extern const String kMinStr;
|
||||
extern const String kMinutesStr;
|
||||
extern const String kMinuteStr;
|
||||
extern const String kModelStr;
|
||||
extern const String kModeStr;
|
||||
extern const String kMouldStr;
|
||||
extern const String kMoveStr;
|
||||
extern const String kNAStr;
|
||||
extern const String kNightStr;
|
||||
extern const String kNoStr;
|
||||
extern const String kNowStr;
|
||||
extern const String kOffStr;
|
||||
extern const String kOffTimerStr;
|
||||
extern const String kOnStr;
|
||||
extern const String kOnTimerStr;
|
||||
extern const String kOutsideStr;
|
||||
extern const String kPowerfulStr;
|
||||
extern const String kPowerStr;
|
||||
extern const String kProtocolStr;
|
||||
extern const String kPurifyStr;
|
||||
extern const String kQuietStr;
|
||||
extern const String kRepeatStr;
|
||||
extern const String kRightMaxStr;
|
||||
extern const String kRightStr;
|
||||
extern const String kRoomStr;
|
||||
extern const String kSaveStr;
|
||||
extern const String kSecondsStr;
|
||||
extern const String kSecondStr;
|
||||
extern const String kSensorStr;
|
||||
extern const String kSetStr;
|
||||
extern const String kSilentStr;
|
||||
extern const String kSleepStr;
|
||||
extern const String kSlowStr;
|
||||
extern const String kSpaceLBraceStr;
|
||||
extern const String kStartStr;
|
||||
extern const String kStepStr;
|
||||
extern const String kStopStr;
|
||||
extern const String kSuperStr;
|
||||
extern const String kSwingHStr;
|
||||
extern const String kSwingStr;
|
||||
extern const String kSwingVStr;
|
||||
extern const String kTempDownStr;
|
||||
extern const String kTempStr;
|
||||
extern const String kTempUpStr;
|
||||
extern const String kThreeLetterDayOfWeekStr;
|
||||
extern const String kTimerStr;
|
||||
extern const String kToggleStr;
|
||||
extern const String kTopStr;
|
||||
extern const String kTrueStr;
|
||||
extern const String kTurboStr;
|
||||
extern const String kUnknownStr;
|
||||
extern const String kUpperStr;
|
||||
extern const String kUpStr;
|
||||
extern const String kWallStr;
|
||||
extern const String kWeeklyTimerStr;
|
||||
extern const String kWideStr;
|
||||
extern const String kWifiStr;
|
||||
extern const String kXFanStr;
|
||||
extern const String kYesStr;
|
||||
extern const String kZoneFollowStr;
|
||||
|
||||
#endif // IRTEXT_H_
|
|
@ -9,8 +9,8 @@
|
|||
This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an
|
||||
[ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc.
|
||||
|
||||
## v2.7.0 Now Available
|
||||
Version 2.7.0 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
|
||||
## v2.7.1 Now Available
|
||||
Version 2.7.1 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes.
|
||||
|
||||
#### Upgrading from pre-v2.0
|
||||
Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
|
|
@ -9,8 +9,8 @@
|
|||
Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole
|
||||
[ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc.
|
||||
|
||||
## v2.7.0 disponible
|
||||
Version 2.7.0 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
|
||||
## v2.7.1 disponible
|
||||
Version 2.7.1 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants.
|
||||
|
||||
#### mise à jour depuis pre-v2.0
|
||||
L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page.
|
|
@ -1,5 +1,20 @@
|
|||
# Release Notes
|
||||
|
||||
## _v2.7.1 (20191125)_
|
||||
|
||||
**[Bug Fixes]**
|
||||
- Hitachi424Ac: Fix Incorrect Power Byte Values (#987)
|
||||
- Coolix: Fix setPower(false) issue. (#990)
|
||||
|
||||
**[Features]**
|
||||
- Use `char*` instead of `String` for common text. Saves ~1-3k. (#992, #989)
|
||||
- Hitachi424Ac: Add Vertical Swing ability (#986)
|
||||
|
||||
**[Misc]**
|
||||
- IRMQTTServer: Update HA example/discovery message. (#995)
|
||||
- Move newly added common text to a better location. (#993)
|
||||
|
||||
|
||||
## _v2.7.0 (20191030)_
|
||||
|
||||
**[Bug Fixes]**
|
|
@ -1,6 +1,6 @@
|
|||
<!--- WARNING: Do NOT edit this file directly.
|
||||
It is generated by './tools/scrape_supported_devices.py'.
|
||||
Last generated: Wed Oct 30 13:41:10 2019 --->
|
||||
Last generated: Mon Nov 25 11:12:06 2019 --->
|
||||
# IR Protocols supported by this library
|
||||
|
||||
| Protocol | Brand | Model | A/C Model | Detailed A/C Support |
|
|
@ -11,6 +11,7 @@
|
|||
#include <IRremoteESP8266.h>
|
||||
#include <IRrecv.h>
|
||||
#include <IRsend.h>
|
||||
#include <IRtext.h>
|
||||
#include <IRtimer.h>
|
||||
#include <IRutils.h>
|
||||
#include <IRac.h>
|
||||
|
@ -237,7 +238,7 @@ const uint16_t kJsonAcStateMaxSize = 1024; // Bytes
|
|||
// ----------------- End of User Configuration Section -------------------------
|
||||
|
||||
// Constants
|
||||
#define _MY_VERSION_ "v1.4.4"
|
||||
#define _MY_VERSION_ "v1.4.5"
|
||||
|
||||
const uint8_t kRebootTime = 15; // Seconds
|
||||
const uint8_t kQuickDisplayTime = 2; // Seconds
|
|
@ -12,7 +12,7 @@
|
|||
* A compatible IR RX modules SHOULD be connected to ESP
|
||||
* if you want to capture & decode IR nessages. e.g. GPIO14 (D5)
|
||||
* See 'IR_RX' in IRMQTTServer.h.
|
||||
* GPIOs are configurable from the http://<your_esp8266's_ip_address>/gpio
|
||||
* GPIOs are configurable from the http://<your_esp's_ip_address>/gpio
|
||||
* page.
|
||||
*
|
||||
* WARN: This is *very* advanced & complicated example code. Not for beginners.
|
||||
|
@ -56,25 +56,25 @@
|
|||
* https://github.com/tzapu/WiFiManager#how-it-works
|
||||
*
|
||||
* If you need to reset the WiFi and saved settings to go back to "First Boot",
|
||||
* visit: http://<your_esp8266's_ip_address>/reset
|
||||
* visit: http://<your_esp's_ip_address>/reset
|
||||
*
|
||||
* ## Normal Use (After initial setup)
|
||||
* Enter 'http://<your_esp8266's_ip_address/' in your browser & follow the
|
||||
* Enter 'http://<your_esp's_ip_address/' in your browser & follow the
|
||||
* instructions there to send IR codes via HTTP/HTML.
|
||||
* Visit the http://<your_esp8266's_ip_address>/gpio page to configure the GPIOs
|
||||
* Visit the http://<your_esp's_ip_address>/gpio page to configure the GPIOs
|
||||
* for the IR LED(s) and/or IR RX demodulator.
|
||||
*
|
||||
* You can send URLs like the following, with similar data type limitations as
|
||||
* the MQTT formating in the next section. e.g:
|
||||
* http://<your_esp8266's_ip_address>/ir?type=7&code=E0E09966
|
||||
* http://<your_esp8266's_ip_address>/ir?type=4&code=0xf50&bits=12
|
||||
* http://<your_esp8266's_ip_address>/ir?code=C1A2E21D&repeats=8&type=19
|
||||
* http://<your_esp8266's_ip_address>/ir?type=31&code=40000,1,1,96,24,24,24,48,24,24,24,24,24,48,24,24,24,24,24,48,24,24,24,24,24,24,24,24,1058
|
||||
* http://<your_esp8266's_ip_address>/ir?type=18&code=190B8050000000E0190B8070000010f0
|
||||
* http://<your_esp8266's_ip_address>/ir?repeats=1&type=25&code=0000,006E,0022,0002,0155,00AA,0015,0040,0015,0040,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0040,0015,0040,0015,0015,0015,0040,0015,0015,0015,0015,0015,0015,0015,0040,0015,0015,0015,0015,0015,0040,0015,0040,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0040,0015,0015,0015,0015,0015,0040,0015,0040,0015,0040,0015,0040,0015,0040,0015,0640,0155,0055,0015,0E40
|
||||
* http://<your_esp's_ip_address>/ir?type=7&code=E0E09966
|
||||
* http://<your_esp's_ip_address>/ir?type=4&code=0xf50&bits=12
|
||||
* http://<your_esp's_ip_address>/ir?code=C1A2E21D&repeats=8&type=19
|
||||
* http://<your_esp's_ip_address>/ir?type=31&code=40000,1,1,96,24,24,24,48,24,24,24,24,24,48,24,24,24,24,24,48,24,24,24,24,24,24,24,24,1058
|
||||
* http://<your_esp's_ip_address>/ir?type=18&code=190B8050000000E0190B8070000010f0
|
||||
* http://<your_esp's_ip_address>/ir?repeats=1&type=25&code=0000,006E,0022,0002,0155,00AA,0015,0040,0015,0040,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0040,0015,0040,0015,0015,0015,0040,0015,0015,0015,0015,0015,0015,0015,0040,0015,0015,0015,0015,0015,0040,0015,0040,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0015,0040,0015,0015,0015,0015,0015,0040,0015,0040,0015,0040,0015,0040,0015,0040,0015,0640,0155,0055,0015,0E40
|
||||
* If you have enabled more than 1 TX GPIO, you can use the "channel" argument:
|
||||
* http://<your_esp8266's_ip_address>/ir?channel=0&type=7&code=E0E09966
|
||||
* http://<your_esp8266's_ip_address>/ir?channel=1&type=7&code=E0E09966
|
||||
* http://<your_esp's_ip_address>/ir?channel=0&type=7&code=E0E09966
|
||||
* http://<your_esp's_ip_address>/ir?channel=1&type=7&code=E0E09966
|
||||
*
|
||||
* or
|
||||
*
|
||||
|
@ -241,20 +241,20 @@
|
|||
* - "dry"
|
||||
* - "fan_only"
|
||||
* fan_modes:
|
||||
* - "auto"
|
||||
* - "min"
|
||||
* - "low"
|
||||
* - "medium"
|
||||
* - "high"
|
||||
* - "max"
|
||||
* - "Auto"
|
||||
* - "Min"
|
||||
* - "Low"
|
||||
* - "Medium"
|
||||
* - "High"
|
||||
* - "Max"
|
||||
* swing_modes:
|
||||
* - "off"
|
||||
* - "auto"
|
||||
* - "highest"
|
||||
* - "high"
|
||||
* - "middle"
|
||||
* - "low"
|
||||
* - "lowest"
|
||||
* - "Off"
|
||||
* - "Auto"
|
||||
* - "Highest"
|
||||
* - "High"
|
||||
* - "Middle"
|
||||
* - "Low"
|
||||
* - "Lowest"
|
||||
* power_command_topic: "ir_server/ac/cmnd/power"
|
||||
* mode_command_topic: "ir_server/ac/cmnd/mode"
|
||||
* mode_state_topic: "ir_server/ac/stat/mode"
|
||||
|
@ -284,13 +284,13 @@
|
|||
* first TX GPIO climate. You will need to manually configure the others.
|
||||
*
|
||||
* ### via HTTP:
|
||||
* Use the "http://<your_esp8266's_ip_address>/aircon/set" URL and pass on
|
||||
* Use the "http://<your_esp's_ip_address>/aircon/set" URL and pass on
|
||||
* the arguments as needed to control your device. See the `KEY_*` #defines
|
||||
* in the code for all the parameters.
|
||||
* i.e. protocol, model, power, mode, temp, fanspeed, swingv, swingh, quiet,
|
||||
* turbo, light, beep, econo, sleep, filter, clean, use_celsius, channel
|
||||
* Example:
|
||||
* http://<your_esp8266's_ip_address>/aircon/set?channel=0&protocol=PANASONIC_AC&model=LKE&power=on&mode=auto&fanspeed=min&temp=23
|
||||
* http://<your_esp's_ip_address>/aircon/set?channel=0&protocol=PANASONIC_AC&model=LKE&power=on&mode=auto&fanspeed=min&temp=23
|
||||
*
|
||||
* NOTE: If you don't set the channel, the first GPIO (Channel 0) is used.
|
||||
*
|
||||
|
@ -353,6 +353,7 @@
|
|||
#include <IRremoteESP8266.h>
|
||||
#include <IRrecv.h>
|
||||
#include <IRsend.h>
|
||||
#include <IRtext.h>
|
||||
#include <IRtimer.h>
|
||||
#include <IRutils.h>
|
||||
#include <IRac.h>
|
||||
|
@ -1181,7 +1182,7 @@ void handleAdmin(void) {
|
|||
#endif // MQTT_ENABLE
|
||||
html += htmlButton(
|
||||
kUrlReboot, F("Reboot"),
|
||||
F("A simple reboot of the ESP8266. <small>ie. No changes</small><br>"
|
||||
F("A simple reboot of the ESP. <small>ie. No changes</small><br>"
|
||||
"<br>"));
|
||||
html += htmlButton(
|
||||
kUrlWipe, F("Wipe Settings"),
|
||||
|
@ -2514,6 +2515,8 @@ void sendMQTTDiscovery(const char *topic) {
|
|||
"\"pow_cmd_t\":\"~/" MQTT_CLIMATE_CMND "/" KEY_POWER "\","
|
||||
"\"mode_cmd_t\":\"~/" MQTT_CLIMATE_CMND "/" KEY_MODE "\","
|
||||
"\"mode_stat_t\":\"~/" MQTT_CLIMATE_STAT "/" KEY_MODE "\","
|
||||
// I don't know why, but the modes need to be lower case to work with
|
||||
// Home Assistant & Google Home.
|
||||
"\"modes\":[\"off\",\"auto\",\"cool\",\"heat\",\"dry\",\"fan_only\"],"
|
||||
"\"temp_cmd_t\":\"~/" MQTT_CLIMATE_CMND "/" KEY_TEMP "\","
|
||||
"\"temp_stat_t\":\"~/" MQTT_CLIMATE_STAT "/" KEY_TEMP "\","
|
||||
|
@ -2522,11 +2525,13 @@ void sendMQTTDiscovery(const char *topic) {
|
|||
"\"temp_step\":\"1\","
|
||||
"\"fan_mode_cmd_t\":\"~/" MQTT_CLIMATE_CMND "/" KEY_FANSPEED "\","
|
||||
"\"fan_mode_stat_t\":\"~/" MQTT_CLIMATE_STAT "/" KEY_FANSPEED "\","
|
||||
"\"fan_modes\":[\"auto\",\"min\",\"low\",\"medium\",\"high\",\"max\"],"
|
||||
"\"fan_modes\":[\"" D_STR_AUTO "\",\"" D_STR_MIN "\",\"" D_STR_LOW "\",\""
|
||||
D_STR_MEDIUM "\",\"" D_STR_HIGH "\",\"" D_STR_MAX "\"],"
|
||||
"\"swing_mode_cmd_t\":\"~/" MQTT_CLIMATE_CMND "/" KEY_SWINGV "\","
|
||||
"\"swing_mode_stat_t\":\"~/" MQTT_CLIMATE_STAT "/" KEY_SWINGV "\","
|
||||
"\"swing_modes\":["
|
||||
"\"off\",\"auto\",\"highest\",\"high\",\"middle\",\"low\",\"lowest\"]"
|
||||
"\"swing_modes\":[\"" D_STR_OFF "\",\"" D_STR_AUTO "\",\"" D_STR_HIGHEST
|
||||
"\",\"" D_STR_HIGH "\",\"" D_STR_MIDDLE "\",\""
|
||||
D_STR_LOW "\",\"" D_STR_LOWEST "\"]"
|
||||
"}").c_str(), true)) {
|
||||
mqttLog("MQTT climate discovery successful sent.");
|
||||
hasDiscoveryBeenSent = true;
|
||||
|
@ -2961,16 +2966,15 @@ bool sendClimate(const String topic_prefix, const bool retain,
|
|||
diff = true;
|
||||
success &= sendInt(topic_prefix + KEY_MODEL, next.model, retain);
|
||||
}
|
||||
String mode_str = IRac::opmodeToString(next.mode);
|
||||
// I don't know why, but the modes need to be lower case to work with
|
||||
// Home Assistant & Google Home.
|
||||
mode_str.toLowerCase();
|
||||
#if MQTT_CLIMATE_HA_MODE
|
||||
// Home Assistant want's these two bound together.
|
||||
if (prev.power != next.power || prev.mode != next.mode || forceMQTT) {
|
||||
diff = true;
|
||||
success &= sendBool(topic_prefix + KEY_POWER, next.power, retain);
|
||||
success &= sendString(topic_prefix + KEY_MODE,
|
||||
(next.power ? IRac::opmodeToString(next.mode)
|
||||
: F("off")),
|
||||
retain);
|
||||
}
|
||||
if (!next.power) mode_str = F("off");
|
||||
#else // MQTT_CLIMATE_HA_MODE
|
||||
// In non-Home Assistant mode, power and mode are not bound together.
|
||||
if (prev.power != next.power || forceMQTT) {
|
||||
|
@ -2978,11 +2982,10 @@ bool sendClimate(const String topic_prefix, const bool retain,
|
|||
success &= sendBool(topic_prefix + KEY_POWER, next.power, retain);
|
||||
}
|
||||
if (prev.mode != next.mode || forceMQTT) {
|
||||
diff = true;
|
||||
success &= sendString(topic_prefix + KEY_MODE,
|
||||
IRac::opmodeToString(next.mode), retain);
|
||||
}
|
||||
#endif // MQTT_CLIMATE_HA_MODE
|
||||
success &= sendString(topic_prefix + KEY_MODE, mode_str, retain);
|
||||
diff = true;
|
||||
}
|
||||
if (prev.degrees != next.degrees || forceMQTT) {
|
||||
diff = true;
|
||||
success &= sendFloat(topic_prefix + KEY_TEMP, next.degrees, retain);
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -920,6 +920,7 @@ PANASONIC LITERAL1
|
|||
PANASONIC_AC LITERAL1
|
||||
PANASONIC_BITS LITERAL1
|
||||
PIONEER LITERAL1
|
||||
PROGMEM LITERAL1
|
||||
PRONTO LITERAL1
|
||||
RAW LITERAL1
|
||||
RAWTICK LITERAL1
|
||||
|
@ -1052,6 +1053,10 @@ WHYNTER LITERAL1
|
|||
WHYNTER_BITS LITERAL1
|
||||
YAW1F LITERAL1
|
||||
YBOFB LITERAL1
|
||||
k3DStr LITERAL1
|
||||
k6thSenseStr LITERAL1
|
||||
k8CHeatStr LITERAL1
|
||||
kAirFlowStr LITERAL1
|
||||
kAiwaRcT501Bits LITERAL1
|
||||
kAiwaRcT501MinRepeats LITERAL1
|
||||
kAiwaRcT501PostBits LITERAL1
|
||||
|
@ -1152,6 +1157,14 @@ kArgoTempLowOffset LITERAL1
|
|||
kArgoTempLowSize LITERAL1
|
||||
kArgoZeroSpace LITERAL1
|
||||
kAuto LITERAL1
|
||||
kAutoStr LITERAL1
|
||||
kAutomaticStr LITERAL1
|
||||
kBeepStr LITERAL1
|
||||
kBitsStr LITERAL1
|
||||
kBottomStr LITERAL1
|
||||
kBreezeStr LITERAL1
|
||||
kButtonStr LITERAL1
|
||||
kCancelStr LITERAL1
|
||||
kCarrierAcBitMark LITERAL1
|
||||
kCarrierAcBits LITERAL1
|
||||
kCarrierAcGap LITERAL1
|
||||
|
@ -1160,7 +1173,20 @@ kCarrierAcHdrSpace LITERAL1
|
|||
kCarrierAcMinRepeat LITERAL1
|
||||
kCarrierAcOneSpace LITERAL1
|
||||
kCarrierAcZeroSpace LITERAL1
|
||||
kCeilingStr LITERAL1
|
||||
kCelsiusStr LITERAL1
|
||||
kCentreStr LITERAL1
|
||||
kChangeStr LITERAL1
|
||||
kCirculateStr LITERAL1
|
||||
kCleanStr LITERAL1
|
||||
kClockStr LITERAL1
|
||||
kCodeStr LITERAL1
|
||||
kColonSpaceStr LITERAL1
|
||||
kComfortStr LITERAL1
|
||||
kCommaSpaceStr LITERAL1
|
||||
kCommandStr LITERAL1
|
||||
kCool LITERAL1
|
||||
kCoolStr LITERAL1
|
||||
kCoolixAuto LITERAL1
|
||||
kCoolixBitMark LITERAL1
|
||||
kCoolixBitMarkTicks LITERAL1
|
||||
|
@ -1537,6 +1563,8 @@ kDaikinTempSize LITERAL1
|
|||
kDaikinTolerance LITERAL1
|
||||
kDaikinUnusedTime LITERAL1
|
||||
kDaikinZeroSpace LITERAL1
|
||||
kDayStr LITERAL1
|
||||
kDaysStr LITERAL1
|
||||
kDefaultESP32Timer LITERAL1
|
||||
kDefaultMessageGap LITERAL1
|
||||
kDenon48Bits LITERAL1
|
||||
|
@ -1572,9 +1600,12 @@ kDishRptSpaceTicks LITERAL1
|
|||
kDishTick LITERAL1
|
||||
kDishZeroSpace LITERAL1
|
||||
kDishZeroSpaceTicks LITERAL1
|
||||
kDownStr LITERAL1
|
||||
kDry LITERAL1
|
||||
kDryStr LITERAL1
|
||||
kDutyDefault LITERAL1
|
||||
kDutyMax LITERAL1
|
||||
kEconoStr LITERAL1
|
||||
kElectraAcAuto LITERAL1
|
||||
kElectraAcBitMark LITERAL1
|
||||
kElectraAcBits LITERAL1
|
||||
|
@ -1607,10 +1638,20 @@ kElectraAcTempDelta LITERAL1
|
|||
kElectraAcTempOffset LITERAL1
|
||||
kElectraAcTempSize LITERAL1
|
||||
kElectraAcZeroSpace LITERAL1
|
||||
kEyeAutoStr LITERAL1
|
||||
kEyeStr LITERAL1
|
||||
kFalseStr LITERAL1
|
||||
kFan LITERAL1
|
||||
kFanOnlyStr LITERAL1
|
||||
kFanStr LITERAL1
|
||||
kFastStr LITERAL1
|
||||
kFilterStr LITERAL1
|
||||
kFixedStr LITERAL1
|
||||
kFnvBasis32 LITERAL1
|
||||
kFnvPrime32 LITERAL1
|
||||
kFollowStr LITERAL1
|
||||
kFooter LITERAL1
|
||||
kFreshStr LITERAL1
|
||||
kFujitsuAcBitMark LITERAL1
|
||||
kFujitsuAcBits LITERAL1
|
||||
kFujitsuAcCleanOffset LITERAL1
|
||||
|
@ -1863,10 +1904,15 @@ kHaierAcYrw02TurboOffset LITERAL1
|
|||
kHaierAcYrw02TurboSize LITERAL1
|
||||
kHaierAcZeroSpace LITERAL1
|
||||
kHeader LITERAL1
|
||||
kHealthStr LITERAL1
|
||||
kHeat LITERAL1
|
||||
kHeatStr LITERAL1
|
||||
kHiStr LITERAL1
|
||||
kHigh LITERAL1
|
||||
kHighNibble LITERAL1
|
||||
kHighStr LITERAL1
|
||||
kHighest LITERAL1
|
||||
kHighestStr LITERAL1
|
||||
kHitachiAc1Bits LITERAL1
|
||||
kHitachiAc1HdrMark LITERAL1
|
||||
kHitachiAc1HdrSpace LITERAL1
|
||||
|
@ -1875,6 +1921,12 @@ kHitachiAc2Bits LITERAL1
|
|||
kHitachiAc2StateLength LITERAL1
|
||||
kHitachiAc424BitMark LITERAL1
|
||||
kHitachiAc424Bits LITERAL1
|
||||
kHitachiAc424ButtonByte LITERAL1
|
||||
kHitachiAc424ButtonFan LITERAL1
|
||||
kHitachiAc424ButtonPowerMode LITERAL1
|
||||
kHitachiAc424ButtonSwingV LITERAL1
|
||||
kHitachiAc424ButtonTempDown LITERAL1
|
||||
kHitachiAc424ButtonTempUp LITERAL1
|
||||
kHitachiAc424Cool LITERAL1
|
||||
kHitachiAc424Dry LITERAL1
|
||||
kHitachiAc424Fan LITERAL1
|
||||
|
@ -1897,7 +1949,8 @@ kHitachiAc424MinTemp LITERAL1
|
|||
kHitachiAc424ModeByte LITERAL1
|
||||
kHitachiAc424OneSpace LITERAL1
|
||||
kHitachiAc424PowerByte LITERAL1
|
||||
kHitachiAc424PowerOffset LITERAL1
|
||||
kHitachiAc424PowerOff LITERAL1
|
||||
kHitachiAc424PowerOn LITERAL1
|
||||
kHitachiAc424StateLength LITERAL1
|
||||
kHitachiAc424TempByte LITERAL1
|
||||
kHitachiAc424TempOffset LITERAL1
|
||||
|
@ -1927,6 +1980,11 @@ kHitachiAcPowerOffset LITERAL1
|
|||
kHitachiAcStateLength LITERAL1
|
||||
kHitachiAcSwingOffset LITERAL1
|
||||
kHitachiAcZeroSpace LITERAL1
|
||||
kHoldStr LITERAL1
|
||||
kHourStr LITERAL1
|
||||
kHoursStr LITERAL1
|
||||
kHumidStr LITERAL1
|
||||
kIFeelStr LITERAL1
|
||||
kIdleState LITERAL1
|
||||
kInaxBitMark LITERAL1
|
||||
kInaxBits LITERAL1
|
||||
|
@ -1937,6 +1995,7 @@ kInaxMinRepeat LITERAL1
|
|||
kInaxOneSpace LITERAL1
|
||||
kInaxTick LITERAL1
|
||||
kInaxZeroSpace LITERAL1
|
||||
kIonStr LITERAL1
|
||||
kJvcBitMark LITERAL1
|
||||
kJvcBitMarkTicks LITERAL1
|
||||
kJvcBits LITERAL1
|
||||
|
@ -2008,10 +2067,13 @@ kLasertagTolerance LITERAL1
|
|||
kLastDecodeType LITERAL1
|
||||
kLastFanspeedEnum LITERAL1
|
||||
kLastOpmodeEnum LITERAL1
|
||||
kLastStr LITERAL1
|
||||
kLastSwinghEnum LITERAL1
|
||||
kLastSwingvEnum LITERAL1
|
||||
kLeft LITERAL1
|
||||
kLeftMax LITERAL1
|
||||
kLeftMaxStr LITERAL1
|
||||
kLeftStr LITERAL1
|
||||
kLegoPfBitMark LITERAL1
|
||||
kLegoPfBits LITERAL1
|
||||
kLegoPfHdrSpace LITERAL1
|
||||
|
@ -2050,9 +2112,16 @@ kLgRptSpaceTicks LITERAL1
|
|||
kLgTick LITERAL1
|
||||
kLgZeroSpace LITERAL1
|
||||
kLgZeroSpaceTicks LITERAL1
|
||||
kLightStr LITERAL1
|
||||
kLightToggleStr LITERAL1
|
||||
kLoStr LITERAL1
|
||||
kLoudStr LITERAL1
|
||||
kLow LITERAL1
|
||||
kLowNibble LITERAL1
|
||||
kLowStr LITERAL1
|
||||
kLowerStr LITERAL1
|
||||
kLowest LITERAL1
|
||||
kLowestStr LITERAL1
|
||||
kLutronBits LITERAL1
|
||||
kLutronDelta LITERAL1
|
||||
kLutronGap LITERAL1
|
||||
|
@ -2073,14 +2142,23 @@ kMagiQuestSpaceZero LITERAL1
|
|||
kMagiQuestTotalUsec LITERAL1
|
||||
kMagiQuestZeroRatio LITERAL1
|
||||
kMagiquestBits LITERAL1
|
||||
kManualStr LITERAL1
|
||||
kMark LITERAL1
|
||||
kMarkExcess LITERAL1
|
||||
kMarkState LITERAL1
|
||||
kMax LITERAL1
|
||||
kMaxAccurateUsecDelay LITERAL1
|
||||
kMaxLeftStr LITERAL1
|
||||
kMaxRightStr LITERAL1
|
||||
kMaxStr LITERAL1
|
||||
kMaxTimeoutMs LITERAL1
|
||||
kMaximumStr LITERAL1
|
||||
kMedStr LITERAL1
|
||||
kMedium LITERAL1
|
||||
kMediumStr LITERAL1
|
||||
kMidStr LITERAL1
|
||||
kMiddle LITERAL1
|
||||
kMiddleStr LITERAL1
|
||||
kMideaACAuto LITERAL1
|
||||
kMideaACCelsiusOffset LITERAL1
|
||||
kMideaACCool LITERAL1
|
||||
|
@ -2120,6 +2198,10 @@ kMideaTolerance LITERAL1
|
|||
kMideaZeroSpace LITERAL1
|
||||
kMideaZeroSpaceTicks LITERAL1
|
||||
kMin LITERAL1
|
||||
kMinStr LITERAL1
|
||||
kMinimumStr LITERAL1
|
||||
kMinuteStr LITERAL1
|
||||
kMinutesStr LITERAL1
|
||||
kMitsubishi112Auto LITERAL1
|
||||
kMitsubishi112BitMark LITERAL1
|
||||
kMitsubishi112Bits LITERAL1
|
||||
|
@ -2350,6 +2432,11 @@ kMitsubishiTick LITERAL1
|
|||
kMitsubishiZeroSpace LITERAL1
|
||||
kMitsubishiZeroSpaceTicks LITERAL1
|
||||
kModeBitsSize LITERAL1
|
||||
kModeStr LITERAL1
|
||||
kModelStr LITERAL1
|
||||
kMouldStr LITERAL1
|
||||
kMoveStr LITERAL1
|
||||
kNAStr LITERAL1
|
||||
kNECBits LITERAL1
|
||||
kNecBitMark LITERAL1
|
||||
kNecBitMarkTicks LITERAL1
|
||||
|
@ -2428,6 +2515,7 @@ kNeoclimaTempSize LITERAL1
|
|||
kNeoclimaTurboOffset LITERAL1
|
||||
kNeoclimaZeroSpace LITERAL1
|
||||
kNibbleSize LITERAL1
|
||||
kNightStr LITERAL1
|
||||
kNikaiBitMark LITERAL1
|
||||
kNikaiBitMarkTicks LITERAL1
|
||||
kNikaiBits LITERAL1
|
||||
|
@ -2443,7 +2531,15 @@ kNikaiTick LITERAL1
|
|||
kNikaiZeroSpace LITERAL1
|
||||
kNikaiZeroSpaceTicks LITERAL1
|
||||
kNoRepeat LITERAL1
|
||||
kNoStr LITERAL1
|
||||
kNowStr LITERAL1
|
||||
kOff LITERAL1
|
||||
kOffStr LITERAL1
|
||||
kOffTimerStr LITERAL1
|
||||
kOnStr LITERAL1
|
||||
kOnTimerStr LITERAL1
|
||||
kOutsideQuietStr LITERAL1
|
||||
kOutsideStr LITERAL1
|
||||
kPanasonicAcAuto LITERAL1
|
||||
kPanasonicAcBits LITERAL1
|
||||
kPanasonicAcChecksumInit LITERAL1
|
||||
|
@ -2537,6 +2633,9 @@ kPioneerOneSpaceTicks LITERAL1
|
|||
kPioneerTick LITERAL1
|
||||
kPioneerZeroSpace LITERAL1
|
||||
kPioneerZeroSpaceTicks LITERAL1
|
||||
kPowerStr LITERAL1
|
||||
kPowerToggleStr LITERAL1
|
||||
kPowerfulStr LITERAL1
|
||||
kProntoDataOffset LITERAL1
|
||||
kProntoFreqFactor LITERAL1
|
||||
kProntoFreqOffset LITERAL1
|
||||
|
@ -2544,6 +2643,9 @@ kProntoMinLength LITERAL1
|
|||
kProntoSeq1LenOffset LITERAL1
|
||||
kProntoSeq2LenOffset LITERAL1
|
||||
kProntoTypeOffset LITERAL1
|
||||
kProtocolStr LITERAL1
|
||||
kPurifyStr LITERAL1
|
||||
kQuietStr LITERAL1
|
||||
kRC5Bits LITERAL1
|
||||
kRC5RawBits LITERAL1
|
||||
kRC5XBits LITERAL1
|
||||
|
@ -2588,8 +2690,12 @@ kRcmmRptLengthTicks LITERAL1
|
|||
kRcmmTick LITERAL1
|
||||
kRcmmTolerance LITERAL1
|
||||
kRepeat LITERAL1
|
||||
kRepeatStr LITERAL1
|
||||
kRight LITERAL1
|
||||
kRightMax LITERAL1
|
||||
kRightMaxStr LITERAL1
|
||||
kRightStr LITERAL1
|
||||
kRoomStr LITERAL1
|
||||
kSamsung36Bits LITERAL1
|
||||
kSamsungACSectionLength LITERAL1
|
||||
kSamsungAcAuto LITERAL1
|
||||
|
@ -2676,6 +2782,12 @@ kSanyoSa8650bHdrSpace LITERAL1
|
|||
kSanyoSa8650bOneMark LITERAL1
|
||||
kSanyoSa8650bRptLength LITERAL1
|
||||
kSanyoSa8650bZeroMark LITERAL1
|
||||
kSaveStr LITERAL1
|
||||
kSecondStr LITERAL1
|
||||
kSecondsStr LITERAL1
|
||||
kSensorStr LITERAL1
|
||||
kSensorTempStr LITERAL1
|
||||
kSetStr LITERAL1
|
||||
kSharpAcAuto LITERAL1
|
||||
kSharpAcBitFanManualOffset LITERAL1
|
||||
kSharpAcBitMark LITERAL1
|
||||
|
@ -2725,7 +2837,11 @@ kSharpZeroSpace LITERAL1
|
|||
kSharpZeroSpaceTicks LITERAL1
|
||||
kSherwoodBits LITERAL1
|
||||
kSherwoodMinRepeat LITERAL1
|
||||
kSilentStr LITERAL1
|
||||
kSingleRepeat LITERAL1
|
||||
kSleepStr LITERAL1
|
||||
kSleepTimerStr LITERAL1
|
||||
kSlowStr LITERAL1
|
||||
kSony12Bits LITERAL1
|
||||
kSony15Bits LITERAL1
|
||||
kSony20Bits LITERAL1
|
||||
|
@ -2745,10 +2861,20 @@ kSonyTick LITERAL1
|
|||
kSonyZeroMark LITERAL1
|
||||
kSonyZeroMarkTicks LITERAL1
|
||||
kSpace LITERAL1
|
||||
kSpaceLBraceStr LITERAL1
|
||||
kSpaceState LITERAL1
|
||||
kStartOffset LITERAL1
|
||||
kStartStr LITERAL1
|
||||
kStateSizeMax LITERAL1
|
||||
kStepStr LITERAL1
|
||||
kStopState LITERAL1
|
||||
kStopStr LITERAL1
|
||||
kSuperStr LITERAL1
|
||||
kSwingHStr LITERAL1
|
||||
kSwingStr LITERAL1
|
||||
kSwingVModeStr LITERAL1
|
||||
kSwingVStr LITERAL1
|
||||
kSwingVToggleStr LITERAL1
|
||||
kTcl112AcAuto LITERAL1
|
||||
kTcl112AcBitEconoOffset LITERAL1
|
||||
kTcl112AcBitHealthOffset LITERAL1
|
||||
|
@ -2821,8 +2947,15 @@ kTecoTimerTensHoursSize LITERAL1
|
|||
kTecoTimerUnitHoursOffset LITERAL1
|
||||
kTecoTimerUnitHoursSize LITERAL1
|
||||
kTecoZeroSpace LITERAL1
|
||||
kTempDownStr LITERAL1
|
||||
kTempStr LITERAL1
|
||||
kTempUpStr LITERAL1
|
||||
kThreeLetterDayOfWeekStr LITERAL1
|
||||
kTimeoutMs LITERAL1
|
||||
kTimerStr LITERAL1
|
||||
kToggleStr LITERAL1
|
||||
kTolerance LITERAL1
|
||||
kTopStr LITERAL1
|
||||
kToshibaACBits LITERAL1
|
||||
kToshibaACMinRepeat LITERAL1
|
||||
kToshibaACStateLength LITERAL1
|
||||
|
@ -2881,7 +3014,12 @@ kTrotecTempOffset LITERAL1
|
|||
kTrotecTempSize LITERAL1
|
||||
kTrotecTimerBitOffset LITERAL1
|
||||
kTrotecZeroSpace LITERAL1
|
||||
kTrueStr LITERAL1
|
||||
kTurboStr LITERAL1
|
||||
kUnknownStr LITERAL1
|
||||
kUnknownThreshold LITERAL1
|
||||
kUpStr LITERAL1
|
||||
kUpperStr LITERAL1
|
||||
kUseDefTol LITERAL1
|
||||
kVestelAcAuto LITERAL1
|
||||
kVestelAcBitMark LITERAL1
|
||||
|
@ -2934,6 +3072,8 @@ kVestelAcTolerance LITERAL1
|
|||
kVestelAcTurbo LITERAL1
|
||||
kVestelAcTurboSleepOffset LITERAL1
|
||||
kVestelAcZeroSpace LITERAL1
|
||||
kWallStr LITERAL1
|
||||
kWeeklyTimerStr LITERAL1
|
||||
kWhirlpoolAcAltTempOffset LITERAL1
|
||||
kWhirlpoolAcAltTempPos LITERAL1
|
||||
kWhirlpoolAcAuto LITERAL1
|
||||
|
@ -3014,3 +3154,8 @@ kWhynterTick LITERAL1
|
|||
kWhynterZeroSpace LITERAL1
|
||||
kWhynterZeroSpaceTicks LITERAL1
|
||||
kWide LITERAL1
|
||||
kWideStr LITERAL1
|
||||
kWifiStr LITERAL1
|
||||
kXFanStr LITERAL1
|
||||
kYesStr LITERAL1
|
||||
kZoneFollowStr LITERAL1
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "IRremoteESP8266",
|
||||
"version": "2.7.0",
|
||||
"version": "2.7.1",
|
||||
"keywords": "infrared, ir, remote, esp8266, esp32",
|
||||
"description": "Send and receive infrared signals with multiple protocols (ESP8266/ESP32)",
|
||||
"repository":
|
|
@ -1,5 +1,5 @@
|
|||
name=IRremoteESP8266
|
||||
version=2.7.0
|
||||
version=2.7.1
|
||||
author=David Conran, Sebastien Warin, Mark Szabo, Ken Shirriff
|
||||
maintainer=Mark Szabo, David Conran, Sebastien Warin, Roi Dayan, Massimiliano Pinto
|
||||
sentence=Send and receive infrared signals with multiple protocols (ESP8266/ESP32)
|
|
@ -670,13 +670,15 @@ void IRac::hitachi(IRHitachiAc *ac,
|
|||
#if SEND_HITACHI_AC424
|
||||
void IRac::hitachi424(IRHitachiAc424 *ac,
|
||||
const bool on, const stdAc::opmode_t mode,
|
||||
const float degrees, const stdAc::fanspeed_t fan) {
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const stdAc::swingv_t swingv) {
|
||||
ac->begin();
|
||||
ac->setPower(on);
|
||||
ac->setMode(ac->convertMode(mode));
|
||||
ac->setTemp(degrees);
|
||||
ac->setFan(ac->convertFan(fan));
|
||||
// TODO(jamsinclair): Add Swing(V) support.
|
||||
ac->setPower(on);
|
||||
// SwingVToggle is special. Needs to be last method called.
|
||||
ac->setSwingVToggle(swingv != stdAc::swingv_t::kOff);
|
||||
// No Swing(H) setting available.
|
||||
// No Quiet setting available.
|
||||
// No Turbo setting available.
|
||||
|
@ -1174,6 +1176,7 @@ stdAc::state_t IRac::handleToggles(const stdAc::state_t desired,
|
|||
result.light = desired.light ^ prev->light;
|
||||
break;
|
||||
case decode_type_t::MIDEA:
|
||||
case decode_type_t::HITACHI_AC424:
|
||||
if ((desired.swingv == stdAc::swingv_t::kOff) ^
|
||||
(prev->swingv == stdAc::swingv_t::kOff)) // It changed, so toggle.
|
||||
result.swingv = stdAc::swingv_t::kAuto;
|
||||
|
@ -1413,7 +1416,7 @@ bool IRac::sendAc(const stdAc::state_t desired, const stdAc::state_t *prev) {
|
|||
case HITACHI_AC424:
|
||||
{
|
||||
IRHitachiAc424 ac(_pin, _inverted, _modulation);
|
||||
hitachi424(&ac, on, send.mode, degC, send.fanspeed);
|
||||
hitachi424(&ac, on, send.mode, degC, send.fanspeed, send.swingv);
|
||||
break;
|
||||
}
|
||||
#endif // SEND_HITACHI_AC424
|
||||
|
@ -1601,25 +1604,25 @@ bool IRac::hasStateChanged(void) { return cmpStates(next, _prev); }
|
|||
|
||||
stdAc::opmode_t IRac::strToOpmode(const char *str,
|
||||
const stdAc::opmode_t def) {
|
||||
if (!strcasecmp(str, kAutoStr.c_str()) ||
|
||||
!strcasecmp(str, kAutomaticStr.c_str()))
|
||||
if (!strcasecmp(str, kAutoStr) ||
|
||||
!strcasecmp(str, kAutomaticStr))
|
||||
return stdAc::opmode_t::kAuto;
|
||||
else if (!strcasecmp(str, kOffStr.c_str()) ||
|
||||
!strcasecmp(str, kStopStr.c_str()))
|
||||
else if (!strcasecmp(str, kOffStr) ||
|
||||
!strcasecmp(str, kStopStr))
|
||||
return stdAc::opmode_t::kOff;
|
||||
else if (!strcasecmp(str, kCoolStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kCoolStr) ||
|
||||
!strcasecmp(str, "COOLING"))
|
||||
return stdAc::opmode_t::kCool;
|
||||
else if (!strcasecmp(str, kHeatStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kHeatStr) ||
|
||||
!strcasecmp(str, "HEATING"))
|
||||
return stdAc::opmode_t::kHeat;
|
||||
else if (!strcasecmp(str, kDryStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kDryStr) ||
|
||||
!strcasecmp(str, "DRYING") ||
|
||||
!strcasecmp(str, "DEHUMIDIFY"))
|
||||
return stdAc::opmode_t::kDry;
|
||||
else if (!strcasecmp(str, kFanStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kFanStr) ||
|
||||
!strcasecmp(str, "FANONLY") ||
|
||||
!strcasecmp(str, kFanOnlyStr.c_str()))
|
||||
!strcasecmp(str, kFanOnlyStr))
|
||||
return stdAc::opmode_t::kFan;
|
||||
else
|
||||
return def;
|
||||
|
@ -1627,26 +1630,26 @@ stdAc::opmode_t IRac::strToOpmode(const char *str,
|
|||
|
||||
stdAc::fanspeed_t IRac::strToFanspeed(const char *str,
|
||||
const stdAc::fanspeed_t def) {
|
||||
if (!strcasecmp(str, kAutoStr.c_str()) ||
|
||||
!strcasecmp(str, kAutomaticStr.c_str()))
|
||||
if (!strcasecmp(str, kAutoStr) ||
|
||||
!strcasecmp(str, kAutomaticStr))
|
||||
return stdAc::fanspeed_t::kAuto;
|
||||
else if (!strcasecmp(str, kMinStr.c_str()) ||
|
||||
!strcasecmp(str, kMinimumStr.c_str()) ||
|
||||
!strcasecmp(str, kLowestStr.c_str()))
|
||||
else if (!strcasecmp(str, kMinStr) ||
|
||||
!strcasecmp(str, kMinimumStr) ||
|
||||
!strcasecmp(str, kLowestStr))
|
||||
return stdAc::fanspeed_t::kMin;
|
||||
else if (!strcasecmp(str, kLowStr.c_str()) ||
|
||||
!strcasecmp(str, kLoStr.c_str()))
|
||||
else if (!strcasecmp(str, kLowStr) ||
|
||||
!strcasecmp(str, kLoStr))
|
||||
return stdAc::fanspeed_t::kLow;
|
||||
else if (!strcasecmp(str, kMedStr.c_str()) ||
|
||||
!strcasecmp(str, kMediumStr.c_str()) ||
|
||||
!strcasecmp(str, kMidStr.c_str()))
|
||||
else if (!strcasecmp(str, kMedStr) ||
|
||||
!strcasecmp(str, kMediumStr) ||
|
||||
!strcasecmp(str, kMidStr))
|
||||
return stdAc::fanspeed_t::kMedium;
|
||||
else if (!strcasecmp(str, kHighStr.c_str()) ||
|
||||
!strcasecmp(str, kHiStr.c_str()))
|
||||
else if (!strcasecmp(str, kHighStr) ||
|
||||
!strcasecmp(str, kHiStr))
|
||||
return stdAc::fanspeed_t::kHigh;
|
||||
else if (!strcasecmp(str, kMaxStr.c_str()) ||
|
||||
!strcasecmp(str, kMaximumStr.c_str()) ||
|
||||
!strcasecmp(str, kHighestStr.c_str()))
|
||||
else if (!strcasecmp(str, kMaxStr) ||
|
||||
!strcasecmp(str, kMaximumStr) ||
|
||||
!strcasecmp(str, kHighestStr))
|
||||
return stdAc::fanspeed_t::kMax;
|
||||
else
|
||||
return def;
|
||||
|
@ -1654,36 +1657,36 @@ stdAc::fanspeed_t IRac::strToFanspeed(const char *str,
|
|||
|
||||
stdAc::swingv_t IRac::strToSwingV(const char *str,
|
||||
const stdAc::swingv_t def) {
|
||||
if (!strcasecmp(str, kAutoStr.c_str()) ||
|
||||
!strcasecmp(str, kAutomaticStr.c_str()) ||
|
||||
!strcasecmp(str, kOnStr.c_str()) ||
|
||||
!strcasecmp(str, kSwingStr.c_str()))
|
||||
if (!strcasecmp(str, kAutoStr) ||
|
||||
!strcasecmp(str, kAutomaticStr) ||
|
||||
!strcasecmp(str, kOnStr) ||
|
||||
!strcasecmp(str, kSwingStr))
|
||||
return stdAc::swingv_t::kAuto;
|
||||
else if (!strcasecmp(str, kOffStr.c_str()) ||
|
||||
!strcasecmp(str, kStopStr.c_str()))
|
||||
else if (!strcasecmp(str, kOffStr) ||
|
||||
!strcasecmp(str, kStopStr))
|
||||
return stdAc::swingv_t::kOff;
|
||||
else if (!strcasecmp(str, kMinStr.c_str()) ||
|
||||
!strcasecmp(str, kMinimumStr.c_str()) ||
|
||||
!strcasecmp(str, kLowestStr.c_str()) ||
|
||||
!strcasecmp(str, kBottomStr.c_str()) ||
|
||||
!strcasecmp(str, kDownStr.c_str()))
|
||||
else if (!strcasecmp(str, kMinStr) ||
|
||||
!strcasecmp(str, kMinimumStr) ||
|
||||
!strcasecmp(str, kLowestStr) ||
|
||||
!strcasecmp(str, kBottomStr) ||
|
||||
!strcasecmp(str, kDownStr))
|
||||
return stdAc::swingv_t::kLowest;
|
||||
else if (!strcasecmp(str, kLowStr.c_str()))
|
||||
else if (!strcasecmp(str, kLowStr))
|
||||
return stdAc::swingv_t::kLow;
|
||||
else if (!strcasecmp(str, kMidStr.c_str()) ||
|
||||
!strcasecmp(str, kMiddleStr.c_str()) ||
|
||||
!strcasecmp(str, kMedStr.c_str()) ||
|
||||
!strcasecmp(str, kMediumStr.c_str()) ||
|
||||
!strcasecmp(str, kCentreStr.c_str()))
|
||||
else if (!strcasecmp(str, kMidStr) ||
|
||||
!strcasecmp(str, kMiddleStr) ||
|
||||
!strcasecmp(str, kMedStr) ||
|
||||
!strcasecmp(str, kMediumStr) ||
|
||||
!strcasecmp(str, kCentreStr))
|
||||
return stdAc::swingv_t::kMiddle;
|
||||
else if (!strcasecmp(str, kHighStr.c_str()) ||
|
||||
!strcasecmp(str, kHiStr.c_str()))
|
||||
else if (!strcasecmp(str, kHighStr) ||
|
||||
!strcasecmp(str, kHiStr))
|
||||
return stdAc::swingv_t::kHigh;
|
||||
else if (!strcasecmp(str, kHighestStr.c_str()) ||
|
||||
!strcasecmp(str, kMaxStr.c_str()) ||
|
||||
!strcasecmp(str, kMaximumStr.c_str()) ||
|
||||
!strcasecmp(str, kTopStr.c_str()) ||
|
||||
!strcasecmp(str, kUpStr.c_str()))
|
||||
else if (!strcasecmp(str, kHighestStr) ||
|
||||
!strcasecmp(str, kMaxStr) ||
|
||||
!strcasecmp(str, kMaximumStr) ||
|
||||
!strcasecmp(str, kTopStr) ||
|
||||
!strcasecmp(str, kUpStr))
|
||||
return stdAc::swingv_t::kHighest;
|
||||
else
|
||||
return def;
|
||||
|
@ -1691,34 +1694,34 @@ stdAc::swingv_t IRac::strToSwingV(const char *str,
|
|||
|
||||
stdAc::swingh_t IRac::strToSwingH(const char *str,
|
||||
const stdAc::swingh_t def) {
|
||||
if (!strcasecmp(str, kAutoStr.c_str()) ||
|
||||
!strcasecmp(str, kAutomaticStr.c_str()) ||
|
||||
!strcasecmp(str, kOnStr.c_str()) || !strcasecmp(str, kSwingStr.c_str()))
|
||||
if (!strcasecmp(str, kAutoStr) ||
|
||||
!strcasecmp(str, kAutomaticStr) ||
|
||||
!strcasecmp(str, kOnStr) || !strcasecmp(str, kSwingStr))
|
||||
return stdAc::swingh_t::kAuto;
|
||||
else if (!strcasecmp(str, kOffStr.c_str()) ||
|
||||
!strcasecmp(str, kStopStr.c_str()))
|
||||
else if (!strcasecmp(str, kOffStr) ||
|
||||
!strcasecmp(str, kStopStr))
|
||||
return stdAc::swingh_t::kOff;
|
||||
else if (!strcasecmp(str, kLeftMaxStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kLeftMaxStr) ||
|
||||
!strcasecmp(str, D_STR_LEFT " " D_STR_MAX) ||
|
||||
!strcasecmp(str, D_STR_MAX D_STR_LEFT) ||
|
||||
!strcasecmp(str, kMaxLeftStr.c_str()))
|
||||
!strcasecmp(str, kMaxLeftStr))
|
||||
return stdAc::swingh_t::kLeftMax;
|
||||
else if (!strcasecmp(str, kLeftStr.c_str()))
|
||||
else if (!strcasecmp(str, kLeftStr))
|
||||
return stdAc::swingh_t::kLeft;
|
||||
else if (!strcasecmp(str, kMidStr.c_str()) ||
|
||||
!strcasecmp(str, kMiddleStr.c_str()) ||
|
||||
!strcasecmp(str, kMedStr.c_str()) ||
|
||||
!strcasecmp(str, kMediumStr.c_str()) ||
|
||||
!strcasecmp(str, kCentreStr.c_str()))
|
||||
else if (!strcasecmp(str, kMidStr) ||
|
||||
!strcasecmp(str, kMiddleStr) ||
|
||||
!strcasecmp(str, kMedStr) ||
|
||||
!strcasecmp(str, kMediumStr) ||
|
||||
!strcasecmp(str, kCentreStr))
|
||||
return stdAc::swingh_t::kMiddle;
|
||||
else if (!strcasecmp(str, kRightStr.c_str()))
|
||||
else if (!strcasecmp(str, kRightStr))
|
||||
return stdAc::swingh_t::kRight;
|
||||
else if (!strcasecmp(str, kRightMaxStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kRightMaxStr) ||
|
||||
!strcasecmp(str, D_STR_MAX " " D_STR_RIGHT) ||
|
||||
!strcasecmp(str, D_STR_MAX D_STR_RIGHT) ||
|
||||
!strcasecmp(str, kMaxRightStr.c_str()))
|
||||
!strcasecmp(str, kMaxRightStr))
|
||||
return stdAc::swingh_t::kRightMax;
|
||||
else if (!strcasecmp(str, kWideStr.c_str()))
|
||||
else if (!strcasecmp(str, kWideStr))
|
||||
return stdAc::swingh_t::kWide;
|
||||
else
|
||||
return def;
|
||||
|
@ -1771,15 +1774,15 @@ int16_t IRac::strToModel(const char *str, const int16_t def) {
|
|||
}
|
||||
|
||||
bool IRac::strToBool(const char *str, const bool def) {
|
||||
if (!strcasecmp(str, kOnStr.c_str()) ||
|
||||
if (!strcasecmp(str, kOnStr) ||
|
||||
!strcasecmp(str, "1") ||
|
||||
!strcasecmp(str, kYesStr.c_str()) ||
|
||||
!strcasecmp(str, kTrueStr.c_str()))
|
||||
!strcasecmp(str, kYesStr) ||
|
||||
!strcasecmp(str, kTrueStr))
|
||||
return true;
|
||||
else if (!strcasecmp(str, kOffStr.c_str()) ||
|
||||
else if (!strcasecmp(str, kOffStr) ||
|
||||
!strcasecmp(str, "0") ||
|
||||
!strcasecmp(str, kNoStr.c_str()) ||
|
||||
!strcasecmp(str, kFalseStr.c_str()))
|
||||
!strcasecmp(str, kNoStr) ||
|
||||
!strcasecmp(str, kFalseStr))
|
||||
return false;
|
||||
else
|
||||
return def;
|
|
@ -219,7 +219,8 @@ void electra(IRElectraAc *ac,
|
|||
#if SEND_HITACHI_AC424
|
||||
void hitachi424(IRHitachiAc424 *ac,
|
||||
const bool on, const stdAc::opmode_t mode,
|
||||
const float degrees, const stdAc::fanspeed_t fan);
|
||||
const float degrees, const stdAc::fanspeed_t fan,
|
||||
const stdAc::swingv_t swingv);
|
||||
#endif // SEND_HITACHI_AC424
|
||||
#if SEND_KELVINATOR
|
||||
void kelvinator(IRKelvinatorAC *ac,
|
|
@ -1,4 +1,4 @@
|
|||
/***************************************************
|
||||
/***************************************************
|
||||
* IRremote for ESP8266
|
||||
*
|
||||
* Based on the IRremote library for Arduino by Ken Shirriff
|
||||
|
@ -52,7 +52,7 @@
|
|||
#endif // UNIT_TEST
|
||||
|
||||
// Library Version
|
||||
#define _IRREMOTEESP8266_VERSION_ "2.7.0"
|
||||
#define _IRREMOTEESP8266_VERSION_ "2.7.1"
|
||||
|
||||
// Set the language & locale for the library. See the `locale` dir for options.
|
||||
#ifndef _IR_LOCALE_
|
|
@ -0,0 +1,164 @@
|
|||
// Copyright 2019 - David Conran (@crankyoldgit)
|
||||
|
||||
#ifndef UNIT_TEST
|
||||
#include <Arduino.h>
|
||||
#endif // UNIT_TEST
|
||||
#include "IRremoteESP8266.h"
|
||||
#include "i18n.h"
|
||||
|
||||
#ifndef PROGMEM
|
||||
#define PROGMEM // Pretend we have the PROGMEM macro even if we really don't.
|
||||
#endif
|
||||
|
||||
// Common
|
||||
|
||||
const PROGMEM char* kUnknownStr = D_STR_UNKNOWN;
|
||||
const PROGMEM char* kProtocolStr = D_STR_PROTOCOL;
|
||||
const PROGMEM char* kPowerStr = D_STR_POWER;
|
||||
const PROGMEM char* kOnStr = D_STR_ON;
|
||||
const PROGMEM char* kOffStr = D_STR_OFF;
|
||||
const PROGMEM char* kModeStr = D_STR_MODE;
|
||||
const PROGMEM char* kToggleStr = D_STR_TOGGLE;
|
||||
const PROGMEM char* kTurboStr = D_STR_TURBO;
|
||||
const PROGMEM char* kSuperStr = D_STR_SUPER;
|
||||
const PROGMEM char* kSleepStr = D_STR_SLEEP;
|
||||
const PROGMEM char* kLightStr = D_STR_LIGHT;
|
||||
const PROGMEM char* kPowerfulStr = D_STR_POWERFUL;
|
||||
const PROGMEM char* kQuietStr = D_STR_QUIET;
|
||||
const PROGMEM char* kEconoStr = D_STR_ECONO;
|
||||
const PROGMEM char* kSwingStr = D_STR_SWING;
|
||||
const PROGMEM char* kSwingHStr = D_STR_SWINGH;
|
||||
const PROGMEM char* kSwingVStr = D_STR_SWINGV;
|
||||
const PROGMEM char* kBeepStr = D_STR_BEEP;
|
||||
const PROGMEM char* kZoneFollowStr = D_STR_ZONEFOLLOW;
|
||||
const PROGMEM char* kFixedStr = D_STR_FIXED;
|
||||
const PROGMEM char* kMouldStr = D_STR_MOULD;
|
||||
const PROGMEM char* kCleanStr = D_STR_CLEAN;
|
||||
const PROGMEM char* kPurifyStr = D_STR_PURIFY;
|
||||
const PROGMEM char* kTimerStr = D_STR_TIMER;
|
||||
const PROGMEM char* kOnTimerStr = D_STR_ONTIMER;
|
||||
const PROGMEM char* kOffTimerStr = D_STR_OFFTIMER;
|
||||
const PROGMEM char* kClockStr = D_STR_CLOCK;
|
||||
const PROGMEM char* kCommandStr = D_STR_COMMAND;
|
||||
const PROGMEM char* kXFanStr = D_STR_XFAN;
|
||||
const PROGMEM char* kHealthStr = D_STR_HEALTH;
|
||||
const PROGMEM char* kModelStr = D_STR_MODEL;
|
||||
const PROGMEM char* kTempStr = D_STR_TEMP;
|
||||
const PROGMEM char* kIFeelStr = D_STR_IFEEL;
|
||||
const PROGMEM char* kHumidStr = D_STR_HUMID;
|
||||
const PROGMEM char* kSaveStr = D_STR_SAVE;
|
||||
const PROGMEM char* kEyeStr = D_STR_EYE;
|
||||
const PROGMEM char* kFollowStr = D_STR_FOLLOW;
|
||||
const PROGMEM char* kIonStr = D_STR_ION;
|
||||
const PROGMEM char* kFreshStr = D_STR_FRESH;
|
||||
const PROGMEM char* kHoldStr = D_STR_HOLD;
|
||||
const PROGMEM char* kButtonStr = D_STR_BUTTON;
|
||||
const PROGMEM char* k8CHeatStr = D_STR_8C_HEAT;
|
||||
const PROGMEM char* kNightStr = D_STR_NIGHT;
|
||||
const PROGMEM char* kSilentStr = D_STR_SILENT;
|
||||
const PROGMEM char* kFilterStr = D_STR_FILTER;
|
||||
const PROGMEM char* k3DStr = D_STR_3D;
|
||||
const PROGMEM char* kCelsiusStr = D_STR_CELSIUS;
|
||||
const PROGMEM char* kTempUpStr = D_STR_TEMPUP;
|
||||
const PROGMEM char* kTempDownStr = D_STR_TEMPDOWN;
|
||||
const PROGMEM char* kStartStr = D_STR_START;
|
||||
const PROGMEM char* kStopStr = D_STR_STOP;
|
||||
const PROGMEM char* kMoveStr = D_STR_MOVE;
|
||||
const PROGMEM char* kSetStr = D_STR_SET;
|
||||
const PROGMEM char* kCancelStr = D_STR_CANCEL;
|
||||
const PROGMEM char* kUpStr = D_STR_UP;
|
||||
const PROGMEM char* kDownStr = D_STR_DOWN;
|
||||
const PROGMEM char* kChangeStr = D_STR_CHANGE;
|
||||
const PROGMEM char* kComfortStr = D_STR_COMFORT;
|
||||
const PROGMEM char* kSensorStr = D_STR_SENSOR;
|
||||
const PROGMEM char* kWeeklyTimerStr = D_STR_WEEKLYTIMER;
|
||||
const PROGMEM char* kWifiStr = D_STR_WIFI;
|
||||
const PROGMEM char* kLastStr = D_STR_LAST;
|
||||
const PROGMEM char* kFastStr = D_STR_FAST;
|
||||
const PROGMEM char* kSlowStr = D_STR_SLOW;
|
||||
const PROGMEM char* kAirFlowStr = D_STR_AIRFLOW;
|
||||
const PROGMEM char* kStepStr = D_STR_STEP;
|
||||
const PROGMEM char* kNAStr = D_STR_NA;
|
||||
const PROGMEM char* kOutsideStr = D_STR_OUTSIDE;
|
||||
const PROGMEM char* kLoudStr = D_STR_LOUD;
|
||||
const PROGMEM char* kLowerStr = D_STR_LOWER;
|
||||
const PROGMEM char* kUpperStr = D_STR_UPPER;
|
||||
const PROGMEM char* kBreezeStr = D_STR_BREEZE;
|
||||
const PROGMEM char* kCirculateStr = D_STR_CIRCULATE;
|
||||
const PROGMEM char* kCeilingStr = D_STR_CEILING;
|
||||
const PROGMEM char* kWallStr = D_STR_WALL;
|
||||
const PROGMEM char* kRoomStr = D_STR_ROOM;
|
||||
const PROGMEM char* k6thSenseStr = D_STR_6THSENSE;
|
||||
|
||||
const PROGMEM char* kAutoStr = D_STR_AUTO;
|
||||
const PROGMEM char* kAutomaticStr = D_STR_AUTOMATIC;
|
||||
const PROGMEM char* kManualStr = D_STR_MANUAL;
|
||||
const PROGMEM char* kCoolStr = D_STR_COOL;
|
||||
const PROGMEM char* kHeatStr = D_STR_HEAT;
|
||||
const PROGMEM char* kFanStr = D_STR_FAN;
|
||||
const PROGMEM char* kDryStr = D_STR_DRY;
|
||||
const PROGMEM char* kFanOnlyStr = D_STR_FANONLY;
|
||||
|
||||
const PROGMEM char* kMaxStr = D_STR_MAX;
|
||||
const PROGMEM char* kMaximumStr = D_STR_MAXIMUM;
|
||||
const PROGMEM char* kMinStr = D_STR_MIN;
|
||||
const PROGMEM char* kMinimumStr = D_STR_MINIMUM;
|
||||
const PROGMEM char* kMedStr = D_STR_MED;
|
||||
const PROGMEM char* kMediumStr = D_STR_MEDIUM;
|
||||
|
||||
const PROGMEM char* kHighestStr = D_STR_HIGHEST;
|
||||
const PROGMEM char* kHighStr = D_STR_HIGH;
|
||||
const PROGMEM char* kHiStr = D_STR_HI;
|
||||
const PROGMEM char* kMidStr = D_STR_MID;
|
||||
const PROGMEM char* kMiddleStr = D_STR_MIDDLE;
|
||||
const PROGMEM char* kLowStr = D_STR_LOW;
|
||||
const PROGMEM char* kLoStr = D_STR_LO;
|
||||
const PROGMEM char* kLowestStr = D_STR_LOWEST;
|
||||
const PROGMEM char* kMaxRightStr = D_STR_MAXRIGHT;
|
||||
const PROGMEM char* kRightMaxStr = D_STR_RIGHTMAX_NOSPACE;
|
||||
const PROGMEM char* kRightStr = D_STR_RIGHT;
|
||||
const PROGMEM char* kLeftStr = D_STR_LEFT;
|
||||
const PROGMEM char* kMaxLeftStr = D_STR_MAXLEFT;
|
||||
const PROGMEM char* kLeftMaxStr = D_STR_LEFTMAX_NOSPACE;
|
||||
const PROGMEM char* kWideStr = D_STR_WIDE;
|
||||
const PROGMEM char* kCentreStr = D_STR_CENTRE;
|
||||
const PROGMEM char* kTopStr = D_STR_TOP;
|
||||
const PROGMEM char* kBottomStr = D_STR_BOTTOM;
|
||||
|
||||
// Compound words/phrases/descriptions from pre-defined words.
|
||||
const PROGMEM char* kEyeAutoStr = D_STR_EYEAUTO;
|
||||
const PROGMEM char* kLightToggleStr = D_STR_LIGHTTOGGLE;
|
||||
const PROGMEM char* kOutsideQuietStr = D_STR_OUTSIDEQUIET;
|
||||
const PROGMEM char* kPowerToggleStr = D_STR_POWERTOGGLE;
|
||||
const PROGMEM char* kSensorTempStr = D_STR_SENSORTEMP;
|
||||
const PROGMEM char* kSleepTimerStr = D_STR_SLEEP_TIMER;
|
||||
const PROGMEM char* kSwingVModeStr = D_STR_SWINGVMODE;
|
||||
const PROGMEM char* kSwingVToggleStr = D_STR_SWINGVTOGGLE;
|
||||
|
||||
// Separators
|
||||
char kTimeSep = D_CHR_TIME_SEP;
|
||||
const PROGMEM char* kSpaceLBraceStr = D_STR_SPACELBRACE;
|
||||
const PROGMEM char* kCommaSpaceStr = D_STR_COMMASPACE;
|
||||
const PROGMEM char* kColonSpaceStr = D_STR_COLONSPACE;
|
||||
|
||||
// IRutils
|
||||
// - Time
|
||||
const PROGMEM char* kDayStr = D_STR_DAY;
|
||||
const PROGMEM char* kDaysStr = D_STR_DAYS;
|
||||
const PROGMEM char* kHourStr = D_STR_HOUR;
|
||||
const PROGMEM char* kHoursStr = D_STR_HOURS;
|
||||
const PROGMEM char* kMinuteStr = D_STR_MINUTE;
|
||||
const PROGMEM char* kMinutesStr = D_STR_MINUTES;
|
||||
const PROGMEM char* kSecondStr = D_STR_SECOND;
|
||||
const PROGMEM char* kSecondsStr = D_STR_SECONDS;
|
||||
const PROGMEM char* kNowStr = D_STR_NOW;
|
||||
const PROGMEM char* kThreeLetterDayOfWeekStr = D_STR_THREELETTERDAYS;
|
||||
|
||||
const PROGMEM char* kYesStr = D_STR_YES;
|
||||
const PROGMEM char* kNoStr = D_STR_NO;
|
||||
const PROGMEM char* kTrueStr = D_STR_TRUE;
|
||||
const PROGMEM char* kFalseStr = D_STR_FALSE;
|
||||
|
||||
const PROGMEM char* kRepeatStr = D_STR_REPEAT;
|
||||
const PROGMEM char* kCodeStr = D_STR_CODE;
|
||||
const PROGMEM char* kBitsStr = D_STR_BITS;
|
|
@ -0,0 +1,154 @@
|
|||
// Copyright 2019 - David Conran (@crankyoldgit)
|
||||
// This header file is to be included in files **other than** 'IRtext.cpp'.
|
||||
//
|
||||
// WARNING: Do not edit this file! This file is automatically generated by
|
||||
// 'tools/generate_irtext_h.sh'.
|
||||
|
||||
#ifndef IRTEXT_H_
|
||||
#define IRTEXT_H_
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
// Constant text to be shared across all object files.
|
||||
// This means there is only one copy of the character/string/text etc.
|
||||
|
||||
extern char kTimeSep;
|
||||
extern const char* k3DStr;
|
||||
extern const char* k6thSenseStr;
|
||||
extern const char* k8CHeatStr;
|
||||
extern const char* kAirFlowStr;
|
||||
extern const char* kAutomaticStr;
|
||||
extern const char* kAutoStr;
|
||||
extern const char* kBeepStr;
|
||||
extern const char* kBitsStr;
|
||||
extern const char* kBottomStr;
|
||||
extern const char* kBreezeStr;
|
||||
extern const char* kButtonStr;
|
||||
extern const char* kCancelStr;
|
||||
extern const char* kCeilingStr;
|
||||
extern const char* kCelsiusStr;
|
||||
extern const char* kCentreStr;
|
||||
extern const char* kChangeStr;
|
||||
extern const char* kCirculateStr;
|
||||
extern const char* kCleanStr;
|
||||
extern const char* kClockStr;
|
||||
extern const char* kCodeStr;
|
||||
extern const char* kColonSpaceStr;
|
||||
extern const char* kComfortStr;
|
||||
extern const char* kCommandStr;
|
||||
extern const char* kCommaSpaceStr;
|
||||
extern const char* kCoolStr;
|
||||
extern const char* kDaysStr;
|
||||
extern const char* kDayStr;
|
||||
extern const char* kDownStr;
|
||||
extern const char* kDryStr;
|
||||
extern const char* kEconoStr;
|
||||
extern const char* kEyeAutoStr;
|
||||
extern const char* kEyeStr;
|
||||
extern const char* kFalseStr;
|
||||
extern const char* kFanOnlyStr;
|
||||
extern const char* kFanStr;
|
||||
extern const char* kFastStr;
|
||||
extern const char* kFilterStr;
|
||||
extern const char* kFixedStr;
|
||||
extern const char* kFollowStr;
|
||||
extern const char* kFreshStr;
|
||||
extern const char* kHealthStr;
|
||||
extern const char* kHeatStr;
|
||||
extern const char* kHighestStr;
|
||||
extern const char* kHighStr;
|
||||
extern const char* kHiStr;
|
||||
extern const char* kHoldStr;
|
||||
extern const char* kHoursStr;
|
||||
extern const char* kHourStr;
|
||||
extern const char* kHumidStr;
|
||||
extern const char* kIFeelStr;
|
||||
extern const char* kIonStr;
|
||||
extern const char* kLastStr;
|
||||
extern const char* kLeftMaxStr;
|
||||
extern const char* kLeftStr;
|
||||
extern const char* kLightStr;
|
||||
extern const char* kLightToggleStr;
|
||||
extern const char* kLoStr;
|
||||
extern const char* kLoudStr;
|
||||
extern const char* kLowerStr;
|
||||
extern const char* kLowestStr;
|
||||
extern const char* kLowStr;
|
||||
extern const char* kManualStr;
|
||||
extern const char* kMaximumStr;
|
||||
extern const char* kMaxLeftStr;
|
||||
extern const char* kMaxRightStr;
|
||||
extern const char* kMaxStr;
|
||||
extern const char* kMediumStr;
|
||||
extern const char* kMedStr;
|
||||
extern const char* kMiddleStr;
|
||||
extern const char* kMidStr;
|
||||
extern const char* kMinimumStr;
|
||||
extern const char* kMinStr;
|
||||
extern const char* kMinutesStr;
|
||||
extern const char* kMinuteStr;
|
||||
extern const char* kModelStr;
|
||||
extern const char* kModeStr;
|
||||
extern const char* kMouldStr;
|
||||
extern const char* kMoveStr;
|
||||
extern const char* kNAStr;
|
||||
extern const char* kNightStr;
|
||||
extern const char* kNoStr;
|
||||
extern const char* kNowStr;
|
||||
extern const char* kOffStr;
|
||||
extern const char* kOffTimerStr;
|
||||
extern const char* kOnStr;
|
||||
extern const char* kOnTimerStr;
|
||||
extern const char* kOutsideQuietStr;
|
||||
extern const char* kOutsideStr;
|
||||
extern const char* kPowerfulStr;
|
||||
extern const char* kPowerStr;
|
||||
extern const char* kPowerToggleStr;
|
||||
extern const char* kProtocolStr;
|
||||
extern const char* kPurifyStr;
|
||||
extern const char* kQuietStr;
|
||||
extern const char* kRepeatStr;
|
||||
extern const char* kRightMaxStr;
|
||||
extern const char* kRightStr;
|
||||
extern const char* kRoomStr;
|
||||
extern const char* kSaveStr;
|
||||
extern const char* kSecondsStr;
|
||||
extern const char* kSecondStr;
|
||||
extern const char* kSensorStr;
|
||||
extern const char* kSensorTempStr;
|
||||
extern const char* kSetStr;
|
||||
extern const char* kSilentStr;
|
||||
extern const char* kSleepStr;
|
||||
extern const char* kSleepTimerStr;
|
||||
extern const char* kSlowStr;
|
||||
extern const char* kSpaceLBraceStr;
|
||||
extern const char* kStartStr;
|
||||
extern const char* kStepStr;
|
||||
extern const char* kStopStr;
|
||||
extern const char* kSuperStr;
|
||||
extern const char* kSwingHStr;
|
||||
extern const char* kSwingStr;
|
||||
extern const char* kSwingVModeStr;
|
||||
extern const char* kSwingVStr;
|
||||
extern const char* kSwingVToggleStr;
|
||||
extern const char* kTempDownStr;
|
||||
extern const char* kTempStr;
|
||||
extern const char* kTempUpStr;
|
||||
extern const char* kThreeLetterDayOfWeekStr;
|
||||
extern const char* kTimerStr;
|
||||
extern const char* kToggleStr;
|
||||
extern const char* kTopStr;
|
||||
extern const char* kTrueStr;
|
||||
extern const char* kTurboStr;
|
||||
extern const char* kUnknownStr;
|
||||
extern const char* kUpperStr;
|
||||
extern const char* kUpStr;
|
||||
extern const char* kWallStr;
|
||||
extern const char* kWeeklyTimerStr;
|
||||
extern const char* kWideStr;
|
||||
extern const char* kWifiStr;
|
||||
extern const char* kXFanStr;
|
||||
extern const char* kYesStr;
|
||||
extern const char* kZoneFollowStr;
|
||||
|
||||
#endif // IRTEXT_H_
|