kiwi-cam / homebridge-broadlink-rm

[This fork supports TV accessories] Broadlink RM Mini and Pro plugin for homebridge: https://github.com/nfarina/homebridge
Apache License 2.0
304 stars 96 forks source link

Scene Triggered Fan Settings #732

Open JasonGoldenDDT opened 1 month ago

JasonGoldenDDT commented 1 month ago

Describe the bug I have multiple RM Mini 3's strapped to Dyson AM09 fans. These fans are added to Scenes that turn them on and adjust their speed.

I am finding that scenes fail to adjust speed, or enable features like oscillation.

For example. I have a scene that should turn on a Dyson fan, increase its speed to 100%. When a second scene is triggered to adjust that speed to 40% nothing happens.

Another example is with setting a generic tower fan's speed and oscillation state, because the oscillation state does not have a default option in the config, it remains on after the fan powers off. This means it can't been enabled by a scene as the command doesn't get sent.

If multiple fans are controlled in one scene, like a Dyson, and another brand only one is activated as expected. I suspect this is because the is not a delay between IR commands between different devices. The Dyson ignores IR signals for a period of time when it detects IR for a non-dyson brand being sent.

This has been a long standing challenge with this plug-in. Generally direct control from the Home App works as expected.

To Reproduce Create a Dyson Fan Accessory and A non-Dyson Fan Accessory Add fans to scenes that define their speed and oscillation Trigger Scenes and notice fan's do not react to changes in speed as defined by the scene.

Expected behavior Fan should adjust to the speed defined in the scene. Features like oscillation should turn on or off based on scene. Fans / Devices of different brands should respond when controlled by the same scene.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Smartphone (please complete the following information):

Additional context Challenge with fan controls has been around for multiple versions of plugin and environment OS. Devices respond as expected when directly controlled.

Oscillation behavior can't be deflated to off when fan turns off. It remains on. Fan Speed behavior is difficult to adjust because the plugin won't send commands if the speed requested is close to the current speed. You have to dial the speed to near Zero then backup to the desired speed to get the desired change. Moving from 100 to 70 fails

JasonGoldenDDT commented 1 month ago

Is there away to ensure this plug in always adjust the speed? Or do I need to change my fan's configuration? The speeds are so few and close together, this limitation ends up keeping the device from changing to the desired setting.

Screenshot 2024-09-27 at 8 06 20 AM

Sample of fan config:

Dyson AM09 Fan. I have 3 of these fans, two of which have RM Mini 3 transmitters directly attached to the front of them. They don't adjust as expected to scene calls. One fan shares an RM mini 3 with a different brand fan, if both fans are turned on in the same scene only one responds. I've mentioned this in other threads, suggesting a delay between different device IR signals. { "name": "Desk Fan", "type": "fan", "host": "MAC", "logLevel": "warning", "alwaysResetToDefaults": false, "defaultNowTemperature": 20, "persistState": true, "resendHexAfterReload": false, "hideRotationDirection": false, "stepCycle": true, "allowResend": false, "data": { "on": "26004800421919181719172f192d191717191719171a19181818191818181817192d192c19000caf46171a171918192d172e181819171917191819181917191818181917182d182d18000d050000000000000000000000000000", "off": "26004800441818191818182e182e1818181818181819181918181818181918181718181818000cd8481918181819182e182e1818181718181819181918191818181818181818181718000d050000000000000000000000000000", "swingToggle": "26004800421918191719182e162f181818181817181a1719182e182e18181818182d182d18000d03471917191818182e172f17191817181818191819172e182e17191818182d172f17000d050000000000000000000000000000", "clockwise": "26004800411a171a1719172f172e1719171917181730171a1630162f1719172f172e172e17000cda481817191917192d192d181816191917182f1818192d192d1917192c192d182d19000d050000000000000000000000000000", "counterClockwise": "26002400441719181917192d192c1917191719161919192d19171917192d19161917192c19000d050000", "fanSpeed10": [ { "data": "26004800441819171918192c192d191719161917192e192d192d192d192d192c192c192d19000ca8461719171a17192c1a2c191719161a16192e192d192d192d192c1a2c192c192c1a000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3 } ], "fanSpeed20": [ { "data": "26004800431819171918192c1a2c191719161a16192e192d192d192d192c1a2c1917191619000cd2481719171a17192c1a2c191719161a16192e192d192d192d192d192c1917191619000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800421918191818182e182e181817181818171a182e1818182e1818182e172e182d18000cea49171a171917192d192d19161a1619171918192d19171a2c1917192d192c192c19000d050000000000000000000000000000" } ], "fanSpeed30": [ { "data": "26004800431819171918192c1a2c191719161a16192e192d192d192d192c1a2c1917191619000cd2481719171a17192c1a2c191719161a16192e192d192d192d192d192c1917191619000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800441719171a17192c1a2c191719161a1619181a2c1a17192c1a161a2c192c192c1a000cec4518191719171a2c192d1917191619171918192d1917192d1917192d192c192c19000d050000000000000000000000000000", "sendCount": 3, "interval": 0.3 } ], "fanSpeed40": [ { "data": "26004800441819171917192d192d19161a1619161a2e192d192d192d192c192d192c19161a000cbc471819171918192c1a2c191719161917192e192d192d192d192d192c192c191719000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800421918181818182e182e181818171818182f172f182e182e182e172e1818181718000cd3471918181818182e182e171918171818182f182e182e182e182d182e1818171818000d050000000000000000000000000000", "sendCount": 4, "interval": 0.3 } ], "fanSpeed50": [ { "data": "26004800441819171918192c192d191719161917192e192d192d192d192d192c192c192d19000ca8461719171a17192c1a2c191719161a16192e192d192d192d192c1a2c192c192c1a000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800421918191818182e182e181817181818171a182e1818182e1818182e172e182d18000cea49171a171917192d192d19161a1619171918192d19171a2c1917192d192c192c19000d050000000000000000000000000000", "sendCount": 5, "interval": 0.3 } ], "fanSpeed60": [ { "data": "26004800431819171918192c1a2c191719161a16192e192d192d192d192c1a2c1917191619000cd2481719171a17192c1a2c191719161a16192e192d192d192d192d192c1917191619000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800421918191818182e182e181817181818171a182e1818182e1818182e172e182d18000cea49171a171917192d192d19161a1619171918192d19171a2c1917192d192c192c19000d050000000000000000000000000000", "sendCount": 7, "interval": 0.3 } ], "fanSpeed70": [ { "data": "26004800441819171917192d192d19161a1619161a2e192d192d192d192c192d192c19161a000cbc471819171918192c1a2c191719161917192e192d192d192d192d192c192c191719000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800441719171a17192d192c19171917191619181a2c1a17192d19161a2c1917192c19000cfe481819171c14192d192d19161a1619161a18192d1917192d1917192c1a16192c19000d050000000000000000000000000000", "sendCount": 8, "interval": 0.3 } ], "fanSpeed80": [ { "data": "26004800441719171a17192d192c19171917191619181a2c1a17192d19161a2c1917192c19000cfe481819171c14192d192d19161a1619161a18192d1917192d1917192c1a16192c19000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800441819171918192c192d191719161917192e192d192d192d192d192c192c192d19000ca8461719171a17192c1a2c191719161a16192e192d192d192d192c1a2c192c192c1a000d050000000000000000000000000000", "sendCount": 3, "interval": 0.3 } ], "fanSpeed90": [ { "data": "26004800421918191818182e182e181817181818171a182e1818182e1818182e172e182d18000cea49171a171917192d192d19161a1619171918192d19171a2c1917192d192c192c19000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3, "pause": 0.2 }, { "data": "26004800431819171918192c1a2c191719161a16192e192d192d192d192c1a2c1917191619000cd2481719171a17192c1a2c191719161a16192e192d192d192d192d192c1917191619000d050000000000000000000000000000" } ], "fanSpeed100": [ { "data": "26004800441719171a17192c1a2c191719161a1619181a2c1a17192c1a161a2c192c192c1a000cec4518191719171a2c192d1917191619171918192d1917192d1917192d192c192c19000d050000000000000000000000000000", "sendCount": 10, "interval": 0.3 } ] } }, Generic Tower Fan - Has 3 speeds and an oscillator.
This fan doesn't adjust to expected speeds when scenes are fired, and the oscillator remains on in the home app after powered off. How ever on device it defaults to off when the fan is turned off, and the fan resumes at speed level 1. { "name": "Tower Fan", "type": "fan", "host": "e8:16:56:70:4c:46", "logLevel": "warning", "alwaysResetToDefaults": true, "defaultNowTemperature": 20, "defaultSpeedStep": 1, "hideRotationDirection": true, "speedCycle": true, "speedSteps": 3, "allowResend": false, "data": { "on": [ { "data": "2600500000012f97131311141213121312381138121312141138123712381138111412131237123712131214123712371213121312141138123712371213121312381237123712131200051400012a4a12000d05000000000000", "pause": 0.5 } ], "off": [ { "data": "260050000001259413121213121411141237123712131214113812371237123712141114123712371213121411381237121312131214123712371237121411141138123712371213120005160001284a12000d05000000000000", "pause": 0.5 } ], "swingToggle": [ { "data": "2600500000012594121312141213121312371238121313121238113812371336121412131237123811141213123712381237121312141138133612371313111412131238113812131300051400012a4a13000d05000000000000", "interval": 0.3 } ], "fanSpeed": "260058000001249413121213121312141138123712131213123712371237123712131214113811381213121312131237121411141213123712381237123712141138123712371213120005140001294a12000c3f0001294a12000d050000000000000000000000000000" } },

I have routines that are fired by Shortcut triggers and home triggers. They often fail to adjust the speeds of fans, or turn on or off the occupation function of the fan.