Add basic support for clima-butler RCS-SD43UWI
* Add `sendClimaButler()` & `decodeClimaButler()` for basic protocol support.
* Bit order has been confirmed via temperature analysis.
* Add unit tests to cover the new code.
For #1812
Co-authored-by: beko <benjy3gg@gmail.com>
Co-authored-by: crankyoldgit <david@xyzzy.com.au>
* Add `sendToto()` and `decodeToto()` routines.
- Supports two (2) bit sizes, 24 (short) & 48 (long) bit codes.
- Includes/assumes a standard bit prefix to ensure it fits into a `uint64_t`.
- `Xor` integrity check.
- LSBF order based on user analysis.
* Update supported devices.
* Add unit tests to cover new changes.
_Legs crossed_, this should do it for the _Number Two_ toilet protocol supported by this library.
_Roll_ on the next one.
Fixes#1806
* Better detect 10C heat mode.
* Report the temp as 10C when we detect it.
* Allow 10C heat mode to be activated via `IRac` interface.
- Requires the following settings to activtate:
- Suitable model (e.g. ARRAH2E or ARREW4E)
- Mode: Fan
- Fan Speed: Auto
- Clean: True
- SwingV: Off
- SwingH: Off
* Update supported fujitsu models.
* Unit tests adjusted and added.
For #1780
* add previous state support to `toCommon()`
Try to better keep the settings if we can when using the `IRac` class interface, if supplied a previous state. This better handles the short commands that don't have most of the settings in them.
Add unit tests to ensure it works as expected.
* Change `toString()` behaviour.
If we only have info from a _real_ short (command only) message, don't report other settings.
This makes text for single messages more accurate.
If the Class's state has been modified synthetically, report all the settings.
For #1780
##_v2.8.2 (20220314)_
**[Bug Fixes]**
- ESP32-C3: Fix reboot/crashes on ESP32-C3s when receiving. (#1768#1751)
**[Features]**
- HITACHI_AC296: Add `IRac` class support & tests. (#1776#1758#1757)
- Support for Hitachi RAS-70YHA3 (remote RAR-3U3) (#1758#1757)
- LG: Add Swing Toggle support for Model `LG6711A20083V` (#1771#1770)
- IRMQTTServer: add `MQTT_SERVER_AUTODETECT_ENABLE` via mqtt mDNS (#1769)
- Experimental basic support for Kelon 168 bit / 21 byte protocol. (#1747#1745#1744)
- MitsubishiAC: Tweak repeat gap timing. (#1760#1759)
- Gree YAP0F8 (Detected as Kelvinator) vertical position set support (#1756)
- Make KELON (48 bit) protocol decoding stricter. (#1746#1744)
- IRMQTTServer V1.6.1 (#1740#1739#1729)
- HITACHI_AC264: Add minimal detailed support. (#1735#1729)
- LG2: Improve Light toggle msg handling. (#1738#1737)
- MIDEA: Add support for Quiet, Clean & Freeze Protect controls. (#1734#1733)
- Add basic support for HITACHI_AC264 264bit protocol. (#1730#1729)
- ESP32-C3: Work around for some C3 specific compiler issues again. (#1732#1695)
**[Misc]**
- MIDEA: Update supported devices (#1774#1773#1716)
- Update devices supported by ELECTRA_AC (#1766#1765)
- Improve documentation for `encodePioneer()` (#1761#1749)
- Update (un)supported DAIKIN128 devices. (#1752)
- Refactor `decodeCOOLIX()` code & add another test case. (#1750#1748)
- Simplify code based on state_t being initialised by default. (#1736#1699)
- Add comments to help Teknopoint users. (#1731#1728)
- Fix library version string calculation. (#1727#1725)
- Confirm we can reproduce `TurnOnFujitsuAC.ino` via IRac/IRMQTTServer. (#1726#1701)
* Fix max temp issue.
* Set special temp for auto operation mode.
* Merge into the `IRac` class so it is supported fully.
* Add `.toString()` output.
* Add real & synthetic decoding examples.
* General code style cleanup(s).
* Add supporting Unit Tests.
Ref: #1758Fixes#1757
* Detect swingv toggle messages and set appropriate model.
* Allow sending of swingv toggle messages.
* Update supported models info
* Various collateral updates.
* Minor code cleanup.
* Supporting unit tests.
* Confirmed working on real device by requester.
Fixes#1770
- Seems an irrecv gpio of `14` was a poor default for the ESP-C3. Using it causes a reboot.
- Using `10` for the input GPIO avoids the reboot.
- Ensure when we allocate/use a system timer, that it actually succeeds.
- ESP32-C3 only has two system timers (0 & 1). Try to automatically cater for that scenario.
- Add extra debug messages
- Add a run-time assert to check it succeeded.
Fixes#1751
The MQTT broker can change address if its IP is not static.
Add MQTT_SERVER_AUTODETECT_ENABLE option which detects the broker that
advertises the service _mqtt._tcp
If the broker changes address it won't be a problem. If the broker
doesn't advertise the service, then use the pre-configured IP as before.
Example testing on Debian:
```bash
$ apt install mosquitto avahi-daemon
$ cat <<EOT >> /etc/mosquitto/conf.d/my_broker.conf
listener 1883 0.0.0.0
allow_anonymous true
EOT
$ cat <<EOT >> /etc/avahi/services/mqtt.service
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service protocol="ipv4">
<type>_mqtt._tcp</type>
<port>1883</port>
</service>
</service-group>
EOT
$ systemctl start mosquitto
$ systemctl start avahi-daemon
```
Co-authored-by: Helen Koike <helen@koikeco.de>
Co-authored-by: David Conran <crankyoldgit@users.noreply.github.com>
* Update supported devices
* Decrease gap between repeat messages by 1.6ms to improve capture of messages.
* Add/update unit tests accordingly.
Fixes#1759
* Remove the old auto scaling version of the code. It made it harder to diagnose problems.
* Use `decodeGeneric()` as much as we can, and decode in whole 8-bit chuncks at a time.
* Try to make the code more understandable and smaller.
* Standardise on the same extra tolerance for Coolix protocols.
* Add a unit test to confirm the library now matches the provided example that was previously slight out of tolerance.
Fixes#1748
* Ensure checking of inter-message gap is being done.
- Fixes a false positive detection.
* Code style cleanup.
* Ensure result address & commands are cleared.
* Add unit tests based on Discussion #1744
* Improve older unit tests by confirming capture code is correct.
Ref #1744
- Fix the case when `MQTT_CLIMATE_HA_MODE` is enabled & Home Assistant is NOT being used, and `power` is turned off via the http interface, that it also sets the `mode` to Off, and viceversa. Mode "Off" also sets Power "Off".
- Move some literal strings to constants for consistency.
- Helps with potential internationalisation.
- Bump version patch number.
Ref #1729Fixes#1739
* Supports Power, Temp, Mode, & Fan speed. That's it.
- Effectively a parent class of `IRHitachiAc424`.
* Add `IRac` integration.
* Update & add unit tests.
Fixes#1729
* Add support for Quiet setting controls.
* Add support for Clean and Freeze Protect toggle controls/settings/logic.
* Add & update unit test coverage.
* Minor code and output cleanup.
* Update supported model info.
Fixes#1733
* Add send (`sendHitachiAc264()`) & decode support.
* Add unit tests coverage including real world data.
* Fix up some typos.
* Minor refactor of some code.
For #1729
* arduinoespressif32 Version 2+ no longer needs the horrible timer hack.
Later versions of the arduino esp32 framework change how hardware timers work, so our hack breaks spectularly.
Check for when we are using V2.0.0+ and use the normal commands to do the hardware timers, otherwise, for older versions, keep the hack.
* Avoid using EDGE trigger on timer Interrupt as it is not supported apparently.
Fixes#1713
Allow a structured integer library version numbering system so that programs can make pre-compiler descissions if needed.
Reconstruct library version numbering consistency checks to use new scheme.
Make sure there is only one canonical location for the version number in C++ land. i.e. _IRREMOTEESP8266_VERSION_ & _IRREMOTEESP8266_VERSION_STR are synthetically constructed from MAJOR, MINOR, & PATCH numbers.
Use `_IRREMOTEESP8266_VERSION_STR` instead of `_IRREMOTEESP8266_VERSION_` in our examples.
Uses 12 bits, 12*2 + 1 - 1 + 1 = 26, so the first length check fails (returns false with exactly 26)
This PR changes this test from <=26 to < 26, and the Remote starts working.
* Add tool to convert protocol & code to raw timing info.
Usage: tools/code_to_raw --protocol PROTOCOL_NAME --code <hexidecimal> [--bits 1-424] [--timinginfo]
e.g.
```
# Convert an A/C code to rawData[] & Timinginfo
tool/code_to_raw --protocol KELVINATOR --code 0x190B8050000000E0190B8070000010F0 --timinginfo
# Convert a Samsung TV code to rawData[].
tools/code_to_raw --protocol SAMSUNG --code 0xE0E09966
# Convert a Sony 12 bit message to rawData[].
tools/code_to_raw --protocol Sony --code 0xf50 --bits 12
```
* Add some tests for `code_to_raw`.
* Update tools Makefile to be more dynamic
For #1707
For #1703
Co-authored-by: Christian Nilsson <nikize@gmail.com>
* Revert PR #1700 as intialisation/zero is better with `{}`.
* Address compiler warning via removing `typedef`
* Adjust indention to fix linter issues.
For #1699
Co-authored-by: David Conran <crankyoldgit@users.noreply.github.com>