Koenkk / zigbee2mqtt

Zigbee 🐝 to MQTT bridge 🌉, get rid of your proprietary Zigbee bridges 🔨
https://www.zigbee2mqtt.io
GNU General Public License v3.0
12.14k stars 1.68k forks source link

[Feature request]: Force device to use different config #18939

Closed Ltek closed 1 year ago

Ltek commented 1 year ago

Is your feature request related to a problem? Please describe

I'm not sure if there is a detection problem but my ask will solve the problem.

Real life example (happening to me now) of the problem... I bought 6 Zemismart ZM25EL... they are identical and same model #s. But one detected as TS0601_cover_3 (https://www.zigbee2mqtt.io/devices/TS0601_cover_3.html#tuya-ts0601_cover_3 ... manufacture _TZE200_68nvbio9) and the others as TS0601_cover_1 (https://www.zigbee2mqtt.io/devices/TS0601_cover_1.html ... manufacture _TZE200_pw7mji0l)

TS0601_cover_3 has features not exposed (like battery level) that are needed. The seller, largest on Amazon, says they verified with tech support are the same motor.

Describe the solution you'd like

Have a simple way (like in the UI) to tell Z2M to use the config from a different known device. In this case... simply tell Z2M "use config for TS0601_cover_3"

Describe alternatives you've considered

I looked at the documentation for creating a converter... its confusing, and not user friendly. I don't want to "create" a device, just leverage an existing one.

Additional context

With as many devices that are simply relabeled / white-labeled, I'd think this would solve a lot of issues and reduce dev time for merging in new code for just simply adding a new manufacturer number?

Deconz has a similar method using "DDF" files... which are simply text config files for each model. Copy existing DDF, edit to change model/manufacture = done.

Koenkk commented 1 year ago

@jracoma asking because you added the TS0601_cover_3, does this device support battery?

jracoma commented 1 year ago

@jracoma asking because you added the TS0601_cover_3, does this device support battery?

I have ZM16EL and it supports battery.

Ltek commented 1 year ago

@jracoma asking because you added the TS0601_cover_3, does this device support battery?

yes... which is why I'm asking for this feature. And seems like it this feature would (possibly greatly) reduce the need to add custom code for every new device as long as there is a compatible version already defined in code.

I have 7 Zemismart model ZM25EL, oddly one of them detected as TS0601_cover_3, the rest as TS0601_cover_1 so I want to force Z2M to "see" the other 6 motors as TS0601_cover_3 (not TS0601_cover_1).

I'd hope this would not be difficult to implement in Z2M's UI as I'd think it is just changing the pointer in the database for the paired devices -- and maybe storing those current values? (I'm new to Z2M so don't know the format its in, where it is, etc). I have not coded for 25 yrs, you dont want me trying to code it ;-)

Koenkk commented 1 year ago

Could you check if the issue is fixed with the following external converter: https://gist.github.com/Koenkk/26eb1f0bfaae51a8f5ab231b95e635d3

Ltek commented 1 year ago

Z2M will not start if that is in the .yaml file (tried adding to top or bottom)... soon as I remove it, Z2M starts just fine.

Koenkk commented 1 year ago

can you provide the log with the error?

Ltek commented 1 year ago

Where? The log folder has a folder with the date but no file. I tried multiple times

On Mon, Sep 18, 2023, 10:52 AM Koen Kanters @.***> wrote:

can you provide the log with the error?

— Reply to this email directly, view it on GitHub https://github.com/Koenkk/zigbee2mqtt/issues/18939#issuecomment-1723954311, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAMNFMWVLZVRUNGJYLERU7TX3B33JANCNFSM6AAAAAA4SVTLM4 . You are receiving this because you authored the thread.Message ID: @.***>

Ltek commented 1 year ago

error msg... "ERROR : POST to page returned data but errored unexpectedly while processing it. : Unexpected token 'E', "Error proc"... is not valid JSON"

I had to turn on Trace to get this error window to show. I still dont get an actual TXT log file in here... \ZigbeePlus\zigbee2mqtt\data\log\2023-09-18.14-37-41

if I remove that line, and Z2M starts then I get log files as expected and the 1st line is always... "info 2023-09-18 14:06:26: Zigbee2MQTT started!"

Looks like Z2M does not Trace log its 'boot' sequence? And maybe doesn't do YAML error trapping? YAMLlint.com shows the YAML as valid.

I should mention I'm running Z2M using the Homeseer plugin.

francisp2 commented 1 year ago

Check if the external convertor actually contains json, downloading from github can be tricky.

Ltek commented 1 year ago

I created the JS file with the code provided. Several times.

This problem is making my point that if we had a redirect (treat X like it is Y) I'd have been done in 10 seconds wothout bithing anyone...so far I'm 2 hrs in and still not able to test the converter.

On Mon, Sep 18, 2023, 11:24 PM francisp2 @.***> wrote:

Check if the external convertor actually contains json, downloading from github can be tricky.

— Reply to this email directly, view it on GitHub https://github.com/Koenkk/zigbee2mqtt/issues/18939#issuecomment-1724849488, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAMNFMUVJIPG552B65VKWRDX3EUCNANCNFSM6AAAAAA4SVTLM4 . You are receiving this because you authored the thread.Message ID: @.***>

Koenkk commented 1 year ago

I'd have been done in 10 seconds wothout bithing anyone...so far I'm 2 hrs in and still not able to test the converter.

My opinion: While it may have solved the issue in your case, it won't solve the issue for another user. I rather prefer 1 person having to spend some times on this and fix it for good, then all users having to spent a little time on it to figure out how to get it working.

Ltek commented 1 year ago

Is there a feature for it to auto-update?

on the About page...

Zigbee2MQTT version [1.31.2] commit: [unknown] Coordinator type EZSP v8 Coordinator revision 6.10.3.0 build 297 Coordinator IEEE Address 0xe0798dfffef42cde Frontend version 0.6.129

Ltek commented 1 year ago

I just updated to 1.33.0 (really need an auto update feature) and that does not fix the problem

Ltek commented 1 year ago

Update... 1.33.0 does work and now loads the YAML with the converter included.

Is there a way to 'force' a rescan/reinspection of the device to see if the device exposes the same parameters?

When I went to control the shade motors it did immediately update the battery level (yes!)... which was the main thing. So this shows that either Z2M is incorrectly identifying more than half of the ZM235EL-08/25 motors or the motor firmware is not properly responding.

Either Way... this shows clearly it would help greatly (and make things 100% fool proof) if Z2M has a simple UI option make Z2M "Use definition from Device Y for Device X"

Koenkk commented 1 year ago

@Ltek does it work correctly now? If yes, then I will integrate the changes.

Ltek commented 1 year ago

Yes, so far... I have not tested all the functions yet but all the features are now showing, including battery and reporting battery level.

Koenkk commented 1 year ago

Great, integrated the fix!

Changes will be available in the dev branch in a few hours from now. (https://www.zigbee2mqtt.io/advanced/more/switch-to-dev-branch.html)

github-actions[bot] commented 1 year ago

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days