-
Notifications
You must be signed in to change notification settings - Fork 927
Universal quirk for frient SMSZB-120, HESZB-120, FLSZB-110 #4460
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
base: dev
Are you sure you want to change the base?
Universal quirk for frient SMSZB-120, HESZB-120, FLSZB-110 #4460
Conversation
1. Hidden binary input entity. 2. Hidden unsupported siren configuration. 3. Added Max Duration attribute support. 4. Added IAS test support bit.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #4460 +/- ##
=======================================
Coverage 92.24% 92.24%
=======================================
Files 369 367 -2
Lines 12088 12091 +3
=======================================
+ Hits 11150 11153 +3
Misses 938 938 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This explains a bunch of stuff. How long do you think it might take to be merged? Side comment: The "Works with Home Assistant" badge and statements by manufacturer should really not be used when it really is not set up to work in any way. That just discredits the whole enterprise.. |
OK I installed the quirk and can confirm that it works but with some issues. I tested the IAS test (a critical thing that was previously missing) and that works. The incorrect entities are removed. The max_duration does not have any default value (not sure if that is expected) - if I switched the alarm on without changing anything the alarm stops after about 8 seconds. If I change the default nul value to 3 seconds then it alarms for 3 seconds. However if I change the duration to 40 seconds and trigger the siren then it stops after about 8 seconds so something is clearly not right there. In fact nothing seems to increase it beyond the 8 second apparent default but in can be decreased. The temperature seems to be reporting correctly. It is not clear what happens in an actual fire -- presumably both alarm switch will go on, and smoke will show as on -- but will the alarm go off after 8 seconds?? |
Thanks for taking your time to try it out. About your points:
In case of actual fire, it's IAS Zone that handles it and it is always in priority for the device, meaning, you cannot control it anyhow remotely. When smoke/fire/water is detected, device starts the siren and will continue to unless you physically interact with the device. Actual dangerous event has nothing to do with siren entity you can see. |
|
Thanks for that @PrintingRat and thanks for writing the Quirk. As I said the duration entity seems to be doing nothing at all beyond about 5 seconds (I mentioned 8 before but that was incorrect. However, I noticed I noticed there was an option in the gui to add a script to the Siren, the options are Warn or Sqawk where the only difference seems to be the length of the alarm. Squawk lasts 2 seconds, and Warn last 5 seconds (these are inbuilt settings and namings for the IAS (Intruder Alarm System) Warning Device cluster in Zigbee, not the standard siren implementation. I cannot find any way to trigger the siren to go for any longer duration than the Sqawk. Is it perhaps the case that the Quirk is exposing the Frient alarm is likely being exposed through the IAS WD (Warning Device) cluster (0x0502) rather than as a proper siren entity. These are hardcoded in the Zigbee specification itself - they're not configurable durations. Prior to this Quirk it did go for a long duration before switching off. |
|
Ahh - I just realised if I run this with any duration, it actually does run the siren for the duration specified in the duration entity (ie not the 50 seconds as in the below). This is highly confusing to me anyway. Just turning on the siren via the switch that shows up on the dashboard does it for the Squawk duration (5 seconds) So experiment 1: This gives the Squawk duration (5 seconds) not the duration set in the duration entity experiment 2: This gives the duration set in the entity exposed by the Quirk (not 50 seconds) in my case 23 seconds. So the setting of 50 actually does nothing apart from allowing the duration entity to work experiment 3: Just flipping the switch on the Quirk dashboard |
|
"Just turning on the siren via the switch that shows up on the dashboard does it for the Squawk duration (5 seconds)" Yes, correct, this also got me very confused :D To overcome strange behavior I even made a version where I create my own "custom siren entity", but it's not really recognized as siren entity elsewhere, so I decided to go with the default ZHA one hoping it will get adjusted for this kind of devices soon. |
|
So what someone needs to do to get a siren which goes for 20 seconds is something like this where the duration entity is set first to 20, and the number 50 at the bottom is totally irrelevant in terms of its value but I guess needs to be longer than the first number and at least some value needs to be present. This seems to me to be a bug in Home Assistant, but anyway there is a working mechanism |

Hidden binary input entity.
Hidden unsupported siren configuration.
Added Max Duration attribute support.
Added IAS test support bit.
Proposed change
Combined quirk for all three devices - SMSZB-120, HESZB-120, FLSZB-110.
SMSZB-120:

HESZB-120:

FLSZB-110:

Additional information
Device diagnostics
zha-01K85V12X81M1HFSH4S6W7FT2D-frient A_S HESZB-120-03a0a77e7c1f77d316cd541a30d9e11b.json
zha-01K85V12X81M1HFSH4S6W7FT2D-frient A_S SMSZB-120-c7d68ee08423575724965700cfe639e7.json
zha-01K85V12X81M1HFSH4S6W7FT2D-frient A_S FLSZB-110-3cbb7bb473dc8c7c151d1329514fc75e.json
Checklist
pre-commitchecks pass / the code has been formatted using Black