Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade/upstream cranky #1

Open
wants to merge 223 commits into
base: master
Choose a base branch
from
Open

Conversation

arihantdaga
Copy link
Member

No description provided.

crankyoldgit and others added 30 commits November 13, 2020 19:06
…ankyoldgit#1327)

* Update supported Model info.
* Add support for the following settings:
  - Turbo Toggle
  - Light/LED Toggle
  - On & Off Timers
  - Sensor Temp / Follow Me mode.
  - Swing/Vane Step for Kaysun A/Cs

For crankyoldgit#1318
_v2.7.12 (20201113)_

**[Bug Fixes]**
- `defaultBits()` returned incorrect result for `PANASONIC_AC` (crankyoldgit#1307 crankyoldgit#1314)
- Fix `LG2` timings and refactor `decodeLG()` (crankyoldgit#1298 crankyoldgit#1304)

**[Features]**
- Midea: Add support for "Follow Me"/Sensor, Turbo, Light, & Timers (crankyoldgit#1318 crankyoldgit#1327)
- SharpAc: Add model support for A705 (crankyoldgit#1309 crankyoldgit#1313)
- Add basic support for Panasonic A/C 32bit/16bit protocol. (crankyoldgit#1307 crankyoldgit#1316)
- Add support for Elite Screens protocol. (crankyoldgit#1306 crankyoldgit#1310)
- IRrecvDumpV2+: Add tolerance setting. (crankyoldgit#1292)
- Add basic support for the Mirage Protocol. (crankyoldgit#1289 crankyoldgit#1291)
- Internationalisation Support
  - `pt-BR`: Add Portuguese/Brazilian support. (crankyoldgit#1303)
  - `de-DE`: Backfill missing strings (crankyoldgit#1294)
  - `de-DE`: update for recent addition of 'tolerance' (crankyoldgit#1293)
  - `de-DE`: Translate root README.md into German (crankyoldgit#1297)

**[Misc]**
- refactor ir_LG (crankyoldgit#1325)
- refactor ir_Kelvinator (crankyoldgit#1317)
- refactor ir_Hitachi (crankyoldgit#1308)
- refactor ir_Goodweather (crankyoldgit#1295)
- refactor ir_Electra (crankyoldgit#1290)
- refactor ir_Daikin (crankyoldgit#1288)
- Update Kaysun supported models. (crankyoldgit#1322)
- fix typos/spelling mistakes (crankyoldgit#1301)
- Add some missing Doxygen class/data-type descriptions. (crankyoldgit#1287)
* refactor ir_Mitsubishi

* follow the suggestion
swing was setting mode interested of swing for some cases
…oldgit#1340)

* Increase sensor temp range.
* using `setSensorTemp()` now correctly sets up ZoneFollow mode.
* ZoneFollow mode detection.
* Misc code cleanup.
* Refactor code to use bit fields.
* Additional & updated Unit tests.
* Add support for fan vane step commands.

Fixes crankyoldgit#1318

* Confirmed working by user in crankyoldgit#1318 (comment)
…UNG_AC & NULL (crankyoldgit#1341)

* Ensure protocols that use the`prev` pointer's power state are okay when it's NULL.

Fixes crankyoldgit#1339
## _v2.7.13 (20201125)_

**[Bug Fixes]**
- Fix crash when `IRac::sendAc(state_t, *state_t)` called with `SAMSUNG_AC` & `NULL` (crankyoldgit#1341 crankyoldgit#1339)
- Mitsubishi112 & 136: `setSwingV()` incorrectly sets mode. (crankyoldgit#1337)
- Typo preventing RC6 from compiling when other protocols disabled. (crankyoldgit#1332 crankyoldgit#1331)

**[Features]**
- Coolix: Improve Sensor(ZoneFollow) and add Vane Step support. (crankyoldgit#1340 crankyoldgit#1318)

**[Misc]**
- refactor ir_Coolix (crankyoldgit#1340)
- refactor ir_Mitsubishi (crankyoldgit#1336)
- refactor ir_MitsubishiHeavy (crankyoldgit#1333)
crankyoldgit#1344)

* Update supported devices based on user report.
* Add note about some Pioneer A/Cs requiring a special bit to be set.
* Add unit test case to construct these special Pioneer A/C messages.

Fixes crankyoldgit#1342
…yoldgit#1351)

* Manipulate the ESP32 hw timers directly rather than through the library interface.
  - Fixes a crash (only) on the ESP32 platform.
  - Required because the following lib calls are not in IRAM by default.
    * `timerWrite();`
    * `timerAlarmEnable()`
  - This a horrible kludge/hack/mess!

* Tested on a ESP8266 NodeMCU & a ESP32dev board. Working as expected.

Fixes crankyoldgit#1350
- Avoids variable naming conflicts.
- Shorten global variable names now they are protected in a namespace.

For crankyoldgit#1350 (comment)
…kyoldgit#1354)

* Moved `htmlOptionItem` before `htmlSelectAcStateProtocol`
* Add a `htmlOptionItem` proto to `IRMQTTServer.h`

Co-authored-by: David Conran <[email protected]>

Fixes crankyoldgit#1353
* Port over the old Issue Template to the standard way of doing Issue templates.
  - Some minor formatting and wording changes along the way.
* Add a note that Tasmota output is not acceptable.
This appears to be redundant now.
* refactor ir_Neoclima

* fix bug in setMode()
Increase the tolerance/excess value used in matching based on user feedback.

For crankyoldgit#1360
* refactor ir_Sanyo

* Fix Sensor Location error

* Fix Sensor error in IRac_test
* Add set/get support for:
  - Power Toggle
  - Mode
  - Temp
  - Fan Speed
  - Swing V & Swing H
* Add `IRac` class support.
* Unit test coverage for the above.
* Fix `#if` clause in `IRPanasonicAc` class
* General code cleanup.
* Extend irutils::addFanToString() to have an option for max.
* Minor code cleanup

Fixed crankyoldgit#1364
* Note support for Lumene Screen's Embassy models.
* List known commands.

Ref: crankyoldgit#1373 (comment)
## _v2.7.14 (20210103)_

**[Bug Fixes]**
- SanyoAc: Fix Sensor Location error (crankyoldgit#1359)
- IRMQTTServer: Compiler error under PlatformIO on Windows. (crankyoldgit#1353 crankyoldgit#1354)
- Workaround for ESP32 hw timer library calls not in IRAM. (crankyoldgit#1350 crankyoldgit#1351)

**[Features]**
- PANASONIC_AC32: Add limited detailed support. (crankyoldgit#1364 crankyoldgit#1366)
- Move global vars in IRrecv into a namespace. (crankyoldgit#1350 crankyoldgit#1352)
- Fujitsu: Handle toggles of Econo & Turbo when `IRac` interface is used. (crankyoldgit#1334 crankyoldgit#1345)

**[Misc]**
- Elitescreens: Update supported brands/models (crankyoldgit#1375)
- refactor ir_Sharp (crankyoldgit#1374)
- refactor ir_Sanyo (crankyoldgit#1359)
- Gree: List Amana as supported. (crankyoldgit#1361 crankyoldgit#1363)
- Lasertag: Increase matching tolerance. (crankyoldgit#1360 crankyoldgit#1362)
- refactor ir_Samsung (crankyoldgit#1358)
- refactor ir_Neoclima (crankyoldgit#1349)
- Update issue templates (crankyoldgit#1348 crankyoldgit#1355)
- Midea: Update supported devices & add notes for an odd Pioneer System. (crankyoldgit#1342 crankyoldgit#1344)
- Kelvinator: Update supported models. (crankyoldgit#1335 crankyoldgit#1346)
sbprojects.com -> sbprojects.net
Comments/documentation only. No code changes.

Fixes crankyoldgit#1381
I've implemented MilesTag2 Lasertag protocol described here:
http://hosting.cmalton.me.uk/chrism/lasertag/MT2Proto.pdf

decoding  actually meaning of bit's in protocol is on users side, they could just macro it  for example:
```cpp
#define MT_SHOT(player, team, damage) (unsigned long)(((player & 127) << 6) | ((team   & 3  ) << 4) | (damage & 15 ))
#define MT_PLAYER_VALUE(shot_data) (unsigned int)((shot_data >> 6) & 127)
#define MT_TEAM_VALUE(shot_data)   (unsigned short)((shot_data >> 4) & 3)
#define MT_DAMAGE_VALUE(shot_data) (unsigned short)(shot_data & 15)
```

Tested it on ESP8266 and ESP32 and it works fine for me. But I don't have actual commercial Lasertag taggers and receivers with MilesTag2, to test against real world conditions. But I think this should be a good start.

* Extend `matchData()`, `matchBytes()`, & `matchGeneric()` to handle no trailing space.
* Add basic unit tests
* Unit tests
  - Housekeeping
  - Sending Shot & Msg sizes.
  - Self-decoding
  - Failure when packets are not formatted correctly.

Note: No real-world test data as yet.

Co-authored-by: crankyoldgit <[email protected]>


X-Ref crankyoldgit#1360
crankyoldgit and others added 30 commits January 6, 2022 04:03
* Fix library version string calculation.
* Add unit tests to ensure calculation isn't broken in future.

Fixes crankyoldgit#1725
Add comments to help direct Teknopoint users to the `IRTcl112Ac` class.

Ref: crankyoldgit#1728
* Add send (`sendHitachiAc264()`) & decode support.
* Add unit tests coverage including real world data.
* Fix up some typos.
* Minor refactor of some code.

For crankyoldgit#1729
…yoldgit#1734)

* 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 crankyoldgit#1733
…ldgit#1736)

* Ensure all `state_t` structs are initialised.
* Remove (now) redundant code.
* Add unit tests to confirm operation.

Ref crankyoldgit#1699
Don't override previous settings if the current message being processed is a Light Toggle message.

Confirmed working.

Fixes crankyoldgit#1737
* Supports Power, Temp, Mode, & Fan speed. That's it.
  - Effectively a parent class of `IRHitachiAc424`.
* Add `IRac` integration.
* Update & add unit tests.

Fixes crankyoldgit#1729
- 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 crankyoldgit#1729
Fixes crankyoldgit#1739
* 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 crankyoldgit#1744
* Improve older unit tests by confirming capture code is correct.

Ref crankyoldgit#1744
…#1750)

* 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 crankyoldgit#1748
…rankyoldgit#1756)

This should not break the compatibility since the SwingV option is getting expanded and the bit indicating auto is still set correctly.
* Update supported devices
* Decrease gap between repeat messages by 1.6ms to improve capture of messages.
* Add/update unit tests accordingly.

Fixes crankyoldgit#1759
Add notes about how to use it if the Address is `0`.

Fixes crankyoldgit#1749
…nkyoldgit#1747)

* Add `sendKelon168()` & `decodeKelon168()`
* Add & extend unit test coverage.
* Code style cleanup.

For crankyoldgit#1745
Ref crankyoldgit#1744
…kyoldgit#1769)

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 <[email protected]>
Co-authored-by: David Conran <[email protected]>
…kyoldgit#1768)

- 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 crankyoldgit#1751
…1771)

* 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 crankyoldgit#1770
Add a bunch of supported Lennox (MIDEA) A/Cs per PR crankyoldgit#1773

For crankyoldgit#1716
Add support for Hitachi RAS-70YHA3 (remote RAR-3U3). Fixes crankyoldgit#1757

This PR provides some initial support for the RAR-3U3 remote. It works of initial research [found here](https://perhof.wordpress.com/2015/03/29/reverse-engineering-hitachi-air-conditioner-infrared-remote-commands/).
* 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: crankyoldgit#1758
Fixes crankyoldgit#1757
##_v2.8.2 (20220314)_

**[Bug Fixes]**
- ESP32-C3: Fix reboot/crashes on ESP32-C3s when receiving. (crankyoldgit#1768 crankyoldgit#1751)

**[Features]**
- HITACHI_AC296: Add `IRac` class support & tests. (crankyoldgit#1776 crankyoldgit#1758 crankyoldgit#1757)
- Support for Hitachi RAS-70YHA3 (remote RAR-3U3) (crankyoldgit#1758 crankyoldgit#1757)
- LG: Add Swing Toggle support for Model `LG6711A20083V` (crankyoldgit#1771 crankyoldgit#1770)
- IRMQTTServer: add `MQTT_SERVER_AUTODETECT_ENABLE` via mqtt mDNS (crankyoldgit#1769)
- Experimental basic support for Kelon 168 bit / 21 byte protocol. (crankyoldgit#1747 crankyoldgit#1745 crankyoldgit#1744)
- MitsubishiAC: Tweak repeat gap timing. (crankyoldgit#1760 crankyoldgit#1759)
- Gree YAP0F8 (Detected as Kelvinator) vertical position set support (crankyoldgit#1756)
- Make KELON (48 bit) protocol decoding stricter. (crankyoldgit#1746 crankyoldgit#1744)
- IRMQTTServer V1.6.1 (crankyoldgit#1740 crankyoldgit#1739 crankyoldgit#1729)
- HITACHI_AC264: Add minimal detailed support. (crankyoldgit#1735 crankyoldgit#1729)
- LG2: Improve Light toggle msg handling. (crankyoldgit#1738 crankyoldgit#1737)
- MIDEA: Add support for Quiet, Clean & Freeze Protect controls. (crankyoldgit#1734 crankyoldgit#1733)
- Add basic support for HITACHI_AC264 264bit protocol. (crankyoldgit#1730 crankyoldgit#1729)
- ESP32-C3: Work around for some C3 specific compiler issues again. (crankyoldgit#1732 crankyoldgit#1695)

**[Misc]**
- MIDEA: Update supported devices (crankyoldgit#1774 crankyoldgit#1773 crankyoldgit#1716)
- Update devices supported by ELECTRA_AC (crankyoldgit#1766 crankyoldgit#1765)
- Improve documentation for `encodePioneer()` (crankyoldgit#1761 crankyoldgit#1749)
- Update (un)supported DAIKIN128 devices. (crankyoldgit#1752)
- Refactor `decodeCOOLIX()` code & add another test case. (crankyoldgit#1750 crankyoldgit#1748)
- Simplify code based on state_t being initialised by default. (crankyoldgit#1736 crankyoldgit#1699)
- Add comments to help Teknopoint users. (crankyoldgit#1731 crankyoldgit#1728)
- Fix library version string calculation. (crankyoldgit#1727 crankyoldgit#1725)
- Confirm we can reproduce `TurnOnFujitsuAC.ino` via IRac/IRMQTTServer. (crankyoldgit#1726 crankyoldgit#1701)
Add passing the previous state for `DAIKIN128` & `KELON` when decoding to a state.

Found during code audit.
…dgit#1784)

* 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 crankyoldgit#1780
Add A/C unit & remote model info to known supported devices.

Replaces crankyoldgit#1790
- commented it, with this state, xmp1 will not work. but it's fine.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.