dresden-elektronik / deconz-rest-plugin

deCONZ REST-API plugin to control ZigBee devices
BSD 3-Clause "New" or "Revised" License
1.89k stars 496 forks source link

THS317-ET by OWON #5738

Closed Stim04 closed 2 years ago

Stim04 commented 2 years ago

Hello,

I am trying to make this detectable in Jeedom with the deconz plug in but the best I could do is see it in deCONZ GUI for windows. I've been told on the discord (thx MiMix) that it's not supported yet so here I am. This is the first time I do that sorry if I forget something.

I've seen this equipment from different manufacturer (CASA.ia) has been treated on GitHub and i was hoping it would be detectable but i guess not.

CASA.ia version https://zigbee.blakadder.com/CASA_IA_CTHS-317-ET.html https://github.com/dresden-elektronik/deconz-rest-plugin/pull/5259

OWON version https://zigbee.blakadder.com/OWON_THS317-ET.html

Device

Screenshots

node info basic cluster 1 basic cluster 2 power cluster 1 power cluster 2 identify cluster temperature cluster

Do not hesitate to tell me if I forgot something

Thank you in advance

Mimiix commented 2 years ago

@Smanar Would this be able with DDF?

Smanar commented 2 years ago

Sure, will be fast and easy. @Stim04 do you know what is DDF ? Here you have some information https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/DDF-cheat-sheet, and a video here https://www.youtube.com/watch?v=rgTQpOVg8w0

The procedure will depend of how is prefilled your DDF.

The name need to be "temperature X" instead of "0xXXXX".

The value will be updated when you will read them in deconz (Need probably to wake up the device), if the value is updated automaticaly you have finished. Else it will work only 1 time, mean you need to configure the bind and the report. https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/DDF-cheat-sheet#bindings-panel

This part is the more complicated, yu need first to drag & drop the cluster 0x0402 on the left panel, then the attribute 0x000 on the right one. with luck values will be filled with standard value.

Then make again "hot reload".

You will probably miss too the battery after that.

Stim04 commented 2 years ago

Hello I'm already on it before you asked Sir. Posted the DDF screens on discord but so far I can't make it read the node correctly. It remains unknown.. everything else read correctly (temperature, battery)

Stim04 commented 2 years ago

I leave you a copy of the DDF I made since I am clueless about how good I did ths317-et.zip (edited this post with the final WORKING version)

Also I noticed that if I reset the module then the DDF is still there but if I delete the node and pair it again then the DDF loads fine but one part of the Bindings (Reporting configuration) will be gone missing

Stim04 commented 2 years ago

Oh well.. puting Bronze to Gold just fixed it I think Fixed Now I'm going to try and pair it on the debian version of deconz after puting my conbee back on my jeedom.. i copied the json here, is that fine ? OWon deconz

Smanar commented 2 years ago

No, I don't think, it s more like a jeedom folder than a deconz one. Take a look if you don't have a folder "/usr/share/deCONZ/devices/" or better "/home/deconzuser/.local/share/dresden-elektronik/deCONZ/devices"

Nothing is missing ? the battery is good ?

Stim04 commented 2 years ago

Well voltage (31) and percentage (200) has always been reporting in the cluster. Gonna look for another path in jeedom. Its true that it does not show the battery icon on the GUI battery

Smanar commented 2 years ago

Well voltage (31) and percentage (200) has always been reporting in the cluster

You have set it yourself o was pre-filled ?

Its true that it does not show the battery icon on the GUI

Can take time to appear. You can check the device json in jeedom "information brute" (but can need time for somes values)

Here you have DDF included in deconz https://github.com/dresden-elektronik/deconz-rest-plugin/tree/master/devices Can search thoses files on your machine. But this folder is reserved to deconz, can use it for test, but next time you will update deconz this folder will be reset.

Stim04 commented 2 years ago

You have set it yourself o was pre-filled ?

It was zero before I read it, i did not fill anything. Do i need to change anything for the Max interval in the DDF? it's actually 0

Here you have DDF included in deconz https://github.com/dresden-elektronik/deconz-rest-plugin/tree/master/devices. Can search thoses files on your machine. But this folder is reserved to deconz, can use it for test, but next time you will update deconz this folder will be reset.

Thanks I'm on it to try and find the right device folder with all that json stuff with the SSH console

Stim04 commented 2 years ago

Think I found it. All thanks to you and your list of devices danfoss devices

I managed to copy it at the right place I think. Now crossing fingers that Jeedom will detect it when I try to pair it.

json copy jeedom

Smanar commented 2 years ago

It was zero before I read it, i did not fill anything. Do i need to change anything for the Max interval in the DDF? it's actually 0

Ha yes right, haven't see the value was 0 Defaut values for 0x0020 and 0x0021

            rq.minInterval = 300;
            rq.maxInterval = 3000;
            rq.reportableChange8bit = 1;

You can edit the json file too.

Stim04 commented 2 years ago

Thanks I edited the DDF accordingly and copied the new json to jeedom also. I think I'm going for a first Jeedom integration try battery ss

Smanar commented 2 years ago

Lol, if it work i will keep the link to be used as tuto ^^

Stim04 commented 2 years ago

In one word : OMFGTY (with god being you in this case) OMFG

Here is the DDF that I used ths317-et.zip

Edit

Well temperature stay at zero but there might but a minor tweak to do on the DDF in the bindings with min and max interval like on power

jeedom temp

Smanar commented 2 years ago

Well temperature stay at zero but there might but a minor tweak to do on the DDF in the bindings with min and max interval like on power

Ha yes, on your DDF

      "bind": "unicast",
      "src.ep": 3,
      "cl": "0x0402",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x29",
          "min": 0,
          "max": 0
        }
      ]

Ok so value to use on the binded cluster 0x0402 with attribute 0x0000

            rq.minInterval = 10;           // value used by Hue bridge
            rq.maxInterval = 300;          // value used by Hue bridge
            rq.reportableChange16bit = 20; // value used by Hue bridge

For me they are too less, you will have too much report On my side I will try with

            rq.minInterval = 60; 
            rq.maxInterval = 600; 
            rq.reportableChange16bit = 20;
Stim04 commented 2 years ago

So far in my tests it stays at 0. But I know we're close to make this work as deCONZ GUI show the cluster reporting very well when I read it.

One thing is abnormal too. The device doesn't have a last seen date nor a battery %. It's like if the device was not communicating at all after being paired. jeedom deconz

another issue could be the config/offset settings in the DDF or the state/temperature config offset

state temp

Smanar commented 2 years ago

For the lastseen ca be this issue https://github.com/dresden-elektronik/deconz-rest-plugin/pull/5675

Perhaps it have DC ? you can try to re-include it if you still have no lastchange or lastseen after 1 hour.

Can you show the last DDF ?

Edit: "sleeper": true,

You have tried with this field as false ?

      "uuid": [
        "$address.ext",
        "0x01",
        "0x0402"
      ],

Better to use 0x03 instead of 0x01, this value is the endpoint, the value on right top on the node.

BTW, we forget the battery on the DDF, missing config/battery

Something like

                {
                    "name": "config/battery",
                    "parse": {"cl": "0x0001", "at": "0x0021", "eval": "Item.val = Attr.val"},
                    "awake": true
                },

All the rest seem perfect for me. If we use "cl": "0x0001", "at": "0x0021" can remove the bind/report for "cl": "0x0001", "at": "0x0020",

Stim04 commented 2 years ago

Here is last version i'm using. ths317-et.zip

Going to try with sleeper false. I already did alot of reset and re-pair with different values for the temp cluster max min interval.

Each time i'm rebooting Jeedom and deleting node and equipment when i change the json in the deconz/device folder

Smanar commented 2 years ago

Can you try with this one https://pastebin.com/UBkbsPhy

Stim04 commented 2 years ago

Can you try with this one https://pastebin.com/UBkbsPhy

Let me make a coffee and a prayer before I do. The first in case the second fails

Smanar commented 2 years ago

I m making comparaison with a working DDf https://github.com/dresden-elektronik/deconz-rest-plugin/issues/5483#issuecomment-986296532

So you was right for "sleeper": true,

and they have "forced" more thing than you for temperature part.

        {
          "name": "state/temperature",
          "awake": true,
          "refresh.interval": 120,
          "read": {
            "at": "0x0000",
            "cl": "0x0402",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0000",
            "cl": "0x0402",
            "ep": 1,
            "eval": "Item.val = Attr.val",
            "fn": "zcl"
          }
        }

If you use the editor, you will have thoses item when selecting state/temperature, else can just edit the DDF

Each time i'm rebooting Jeedom and deleting node and equipment when i change the json in the deconz/device folder

On jeedom if you restart the "daemon" it restart deconz nope ?

Stim04 commented 2 years ago

Editing DDF, yea that Casa sensor is just about the same.

On jeedom if you restart the "daemon" it restart deconz nope ?

Probably, gonna have to try if it really reload the whole jsons

Stim04 commented 2 years ago

getting closer but still reportinng 0 for temperature with your last additions ths317-et.zip node jeedom jeedom temp2

Now I can see the SW version

Hmm tried to inspire me from the post you mentionned, where someone said it was reading 0 degres till the battery was read corretly but now all i did was to make SW version unavailable again. Think I'm bringing back the conbee here on windows to start the ddf from scrath (or almost). I've seen also on this post that I should check "Awake on receive" box

Smanar commented 2 years ago

Arf sorry my bad

          "read": {
            "at": "0x0000",
            "cl": "0x0402",
            "ep": 1,
            "fn": "zcl"
          },
          "parse": {
            "at": "0x0000",
            "cl": "0x0402",
            "ep": 1,
            "eval": "Item.val = Attr.val",
            "fn": "zcl"
          }

You have ep = 1, this device use 3 as endpoint.

When you read the attribute 0x0000 in the cluster 0x0402 you will read the actual temperature AND it update the value in the json in same time, else there is a problem before.

for battery "parse": {"cl": "0x0001", "at": "0x0021", "eval": "Item.val = Attr.val"}, Try adding the ep too "parse": {"cl": "0x0001", "at": "0x0021", "ep": 3, "eval": "Item.val = Attr.val"},

Stim04 commented 2 years ago

Damn, getting little confused here as i started from scratch. Gonna try to figure that out.

Hmm I still can't make it report temperature it's frustrating everytime I plug it back on windows I can see that temp cluster reading like a charm in the cluster info panel

Here is last Json I tried, with no luck and not even SW version visible https://pastebin.com/YKBdZVfr

Just thinking, could it be that I need to modify the path in the Json accordingly to Jeedom location ? In the json it is "/devices/ths317-et.json" but it might work differently in jeedom as the path differs from windows

For some reason this one is giving me SW version while most others don't :
https://pastebin.com/EQF35gLk

Stim04 commented 2 years ago

Omg that last Json worked ! SW version is read right away but it takes a few minutes for the rest to come up. @Smanar Thanks for your patience and help 🥇 jeedom working Temp Piscine

Here is the Json that saved my day 👍 ths317-et.zip

Mimiix commented 2 years ago

@Stim04 can you please:

Stim04 commented 2 years ago

@Mimiix Sure. I will tell you how it goes after a few days. Not sure what is a PR and how do I do that. For now it is working pretty well. It did not fail during the night.

Edit :

Oh a Pull Request... sure i can try to do that if the sensor keeps working for a few days. We might have to put higher values for temperature request intervals as @Smanar suggested as it would extend battery life. Although i'm amazed about how well Phillips Hue Sensor do with same batteries and same request intervals. It might be the same for this one. Zigbee is pretty good for power consumption and 2 x AAA batteries last very long normally, having better Amperage that the smaller CR2XXX button batteries.

Smanar commented 2 years ago

Ha finallly ^^, was harder than I thought

We might have to put higher values for temperature request intervals as @Smanar suggested as it would extend battery life

Exactly, it's a personal choicel, but I prefer a long life battery than a report every minuts for a temperature.

Stim04 commented 2 years ago

was harder than I thought

I probably messed up by not waiting long enough when i first used the json that detected SW version, or it was after we messed up the temperature state ep, can't remember for sure.

Exactly, it's a personal choice, but I prefer a long life battery than a report every minute for a temperature

Probably a wiser choice for everyone including the planet.

EDIT

Jeedom pushed a new version (which I assume is stable one) of deconz plugin. I tried to update it (mine was lastest 2.14.00 beta manually installed with SSH) Well the sensor did not like it. I had to reroll back because a new "invisible command" appeared on the equipment... and not sure if the temp value would still be working.

Well at first I thought it was back to normal because temperature still reports fine, but that "invisible" command came back and even if I delete it, it seems to be coming back after some time (i guess next time sensor report)

It's not a big deal as I can make the command invisible on the dashboard by unchecking the box on the command line, but I think it was worth mentionning

Invisible command

Correct me if I'm wrong but DDF implementation is not yet on stable which is what messed it up

Well i managed to fix that "ghost command" by including the device again after deleting node and reseting the module. I figured how to include the module if it doesn't want to show the temperature after been paired. Just reset the module without deleting the node and pair it again. Worked like a charm for me. Everything was instantly showing up.

There is a big mess with the last version on deconz Jeedom just pushed according to posts on the forum so I'm staying away from it for the moment. That "ghost command" has nothing to do with the DDF created in this topic or deconz, this was entirely a Jeedom generated issue.

Smanar commented 2 years ago

this was entirely a Jeedom generated issue.

I think more on deconz side ^^ It's a know issue, ATM as workarounf can use the good endpoint insteaod of "auto", and use "gold" status, and you are using all of them. There is a new stable since yesterday, the v2.14.1 And this one include https://github.com/dresden-elektronik/deconz-rest-plugin/pull/5757

Stim04 commented 2 years ago

Thanks for the info. You're probably right but it started messing up right when I downgraded deconz to an anterior version on jeedom. I since found out how to fix everything and my Jeedom and deconz is now up to date. I will try to pass from 14.00 to 14.1 but for now everything with that OWON sensor is working as expected. FF cluster could also be humidity sensor or PIR which is supposed to be available with this multi sensor (honestly I don't give a s*it as I bought it because it has an external temp prob I can put in the swimming pool but could be useful to sniff other commands if someone got a sniffer)

Edit :

Shall I try to open a PR with this DDF? Shall I modify the Gold status to Bronze ? Min and max interval 60 and 600 instead of this as you suggested?

    {
      "bind": "unicast",
      "src.ep": 3,
      "cl": "0x0402",
      "report": [
        {
          "at": "0x0000",
          "dt": "0x29",
          "min": 10, <--- (60 here ?)
          "max": 300, <--- (600 here?)
          "change": "0x00000014"
        }

What about refresh interval which is actually 120 ?

Smanar commented 2 years ago

Shall I try to open a PR with this DDF? Shall I modify the Gold status to Bronze ?

Sure, will be usefull for other

Min and max interval 60 and 600 instead of this as you suggested?

You have made more test than me ^^, use the value you prefer

What about refresh interval which is actually 120 ?

Ha yes, good catch, you can completely remove it. This value is used for exemple for modele version, asked 1 time every 24h. Totaly useless (and bad for battery) for temperature, because the device use reporting, if you use 120 here, it mean deconz will try to read the temperature itself every 120s.

Stim04 commented 2 years ago

So Bronze it is? Modifying DDF and loading it on my deconz. Will make a PR for this if it works. On windows GUI i could check boxes to make Bronze loadable. I'm more sceptical about how the debian version will do on Jeedom

Smanar commented 2 years ago

Right @Mimiix if you can confirm ^^ ?

From my memory, all submitted DDF need to be bronze, but user that not use GUI will be not able to enable them ?

Mimiix commented 2 years ago

@Smanar yes indeed. Only if devs approve them as silver or higher we do so. Any user that we don't have as dev has to submit as bronze.

Smanar commented 2 years ago

So the PR will be validated with status "bronze", and a dev need to switch it to "silver" later ? But when ?

Mimiix commented 2 years ago

We haven't figured that out yet 😅

Smanar commented 2 years ago

Ok lol, so can be done using a text editor for the moment. Jeedom is not using docker by defaut (not yet, they planned to that too :( ), so it s easier.

Stim04 commented 2 years ago

So i keep it gold on my Jeedom in the deconz/device folder for now if I understand correctly. So far sensor is working without refresh interval code line and higher intervals for temp cluster

Smanar commented 2 years ago

So far sensor is working without refresh interval code line and higher intervals for temp cluster

Yes, it's better for me. If an user want closer report for regulation, it just a text file to edit. Better to keep a generic method for other.

So i keep it gold on my Jeedom in the deconz/device folder

There is 2 folders used by deconz, 1 reserved to deconz, in this one files will be modified at every deconz update, you PR will be in this one, for you and all others users. The second one never change, and will be prioritary on the first one, so can put your personnal DDF in this one.

All DDF coming with deCONZ typically reside in /usr/share/deCONZ/devices/generic/ on a Linux system and are loaded first. However, files residing in the home directory of the user running deCONZ (e.g. /home/deconzuser/.local/share/dresden-elektronik/deCONZ/devices) will override the pre-packaged files to allow users to amend and keep their own files if desired.

Stim04 commented 2 years ago

Ok i think i understand it now. It was not easy to see the /.local folder on WinSCP but in SSH with putty i could find it. I moved the json accordinly to your last post, leaving it in gold for now. owon1

owon2

Stim04 commented 2 years ago

As it keeps reporting even hours after a Jeedom reboot, I assume that I indeed placed the json at the right place and that I can now open the PR with that version of the DDF which I put in Bronze status as requested.

https://pastebin.com/YwiyAe76

First time I do a PR so forgive me in advance if I mess up on something. I did read the help section on github about the Pull Requests and will try to do like others do.

Thanks for all the help and knowledge shared ^^

github-actions[bot] commented 2 years ago

As there has not been any response in 21 days, this issue has been automatically marked as stale. At OP: Please either close this issue or keep it active It will be closed in 7 days if no further activity occurs.

github-actions[bot] commented 2 years ago

As there has not been any response in 28 days, this issue will be closed. @ OP: If this issue is solved post what fixed it for you. If it is not solved, request to get this opened again.

flopp999 commented 2 years ago

Hi, is this sensor compatible with ConBee II? I have tried to add it in Phoscon but I do not see any new devices. The sensor is flashing green(connected).

flopp999 commented 2 years ago

I am using Phoscon 2.17.1 Latest firmware on ConBee II. If found the json-file image

Smanar commented 2 years ago

Hello, You probably need to edit the json, to enable the DDF

"status": "Bronze",

Set the status to "Gold". This device is still on test.

flopp999 commented 2 years ago

Hello, You probably need to edit the json, to enable the DDF

"status": "Bronze",

Set the status to "Gold". This device is still on test.

With Gold it worked fine. Thank you

Smanar commented 2 years ago

Tell us if you have issue, the one to check are :

some information here https://github.com/dresden-elektronik/deconz-rest-plugin/pull/5777