Closed drdownload closed 3 years ago
Could you paste the full content of your external converter file as it is now?
I want to add this excel screenshot. That I made while researching my quirck for zigpy
I tried these 2
The fingerprint side of the external converter looks correct to me.. Are you sure you have referenced the file correctly in Zigbee2MQTT?
data_path: /config/zigbee2mqtt
external_converters:
- TV01-ZG.js
devices: devices.yaml
I added it like this and if I have an error like not including tuya herdsman crashes.
You are missing a letter in your manufacturerName, it should be '_TZE200_e9ba97vf'
man, thats embarassing, how many times have I copy and pasted and looked and compared ;)
of course now it gets detected, now i need to look into how to control it ;)
I hope my sheet helps you a bit. I saw there isn't a Valve controler in this one
Maybe an easier way to share the excel: https://docs.google.com/spreadsheets/d/1X_Cve1MrWgeuhMAWxm60JRoAuN3MSv-g/edit?usp=sharing&ouid=107527359563098759211&rtpof=true&sd=true
e.g. how do i read this (after changing some temp on the tv): Debug Received Zigbee message from '0x84fd27fffe2dd98b', type 'commandGetData', cluster 'manuSpecificTuya', data '{"data":{"data":[0,0,0,180],"type":"Buffer"},"datatype":2,"dp":16,"fn":0,"status":0,"transid":106}' from endpoint 1 with groupID 0
If I look at the adding tuya devices guide
{name: 'status', type: DataType.uint8},
{name: 'transid', type: DataType.uint8},
{name: 'dp', type: DataType.uint8}, => 16
{name: 'datatype', type: DataType.uint8}, => 2
{name: 'fn', type: DataType.uint8}, => 0
{name: 'data', type: DataType.octetStr}, => 0,0,0,180
since i set temp to 18 deg it makes sense. also 16 is temp in your excel sheet :)
if I look into tuya.js https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/lib/tuya.js - dp 16 for heating would be a vendor specific dp: moesHeatingSetpoint: 16,
or this one, pressing the boost button, setting it to 300 seconds of boost: Debug Received Zigbee message from '0x84fd27fffe2dd98b', type 'commandGetData', cluster 'manuSpecificTuya', data '{"data":{"data":[0,0,1,43],"type":"Buffer"},"datatype":2,"dp":101,"fn":0,"status":0,"transid":23}' from endpoint 1 with groupID 0
that would be moesSchedule: 101.
in your data sheet rapid temperature rise.
Can I force the TV to send me all dp offered or do i need to try all of them on the TV?
Unfortunately no, you cannot force the device to give you all datepoints and info at once. I've gathered all info in the excel manually. The datepoints of Moes are a few digits different from this Zonnsmart device. You can use the template from moes to mirror yourself for this device, but ultimately the datapoints and endpoints will differ a bit.
For zigbee2mqtt you wont need the hex codes fortunatly
Debug Received Zigbee message from '0x84fd27fffe2dd98b', type 'commandGetData', cluster 'manuSpecificTuya', data '{"data":{"data":[3],"type":"Buffer"},"datatype":4,"dp":2,"fn":0,"status":0,"transid":68}' from endpoint 1 with groupID 0 = mode
Debug Received Zigbee message from '0x84fd27fffe2dd98b', type 'commandGetData', cluster 'manuSpecificTuya', data '{"data":{"data":[1],"type":"Buffer"},"datatype":1,"dp":40,"fn":0,"status":0,"transid":85}' from endpoint 1 with groupID 0 = childlock
Debug Received Zigbee message from '0x84fd27fffe2dd98b', type 'commandGetData', cluster 'manuSpecificTuya', data '{"data":{"data":[0,0,0,170],"type":"Buffer"},"datatype":2,"dp":105,"fn":0,"status":0,"transid":85}' from endpoint 1 with groupID 0
it seems that come are the some, some similar and some different and if i lock and unlock directly after each other or change the temp rapidly i get no message with the most recent state
Since I need (from what I see now) to extend ../fromZigbee.js for new/differently used DP, I need to create a PR after testing it locally.
however for testing I can create a local tozigbee.js and include it in my converter (at least i would try it ;) )
you will indeed need to extend those two files :-) Good Luck. If i missed in the datapoints somewhere, feel free to change it in the sheet and leave a comment or something!
Based on what device did you create the excel? Exactly the same?
Yes, exactly the same! My PR for Zigpy-ZHA: https://github.com/zigpy/zha-device-handlers/pull/983
Guys, This converter works for me :) At least all thermostats have been detected and joined. Of course, one typo has been corrected ;) Thanks, @danieledwardgeorgehitchcock for sharing it :) #
Not yet checked if this is a fully manageable and programmable solution.
lol your used converter won't work correctly as this device uses other endpoints to manage its data. Zigbee2mqtt will show you the functionalities but they won't work or behave differently than they should. If @drdownload is up for it, he can program the correct endpoints for all data.
I'm on it, @geoffreylagaisse : as you said, it's a total mixture of endpoints (moes, tuya default, saswell, new ones).
First version will one take care of stuff needed for "manual" mode, controlled by HA schedules.
Since it's my first commit/addition to zigbee2mqtt, it will take some time till I ironed out everything.
Unfortunately no, you cannot force the device to give you all datepoints and info at once. I've gathered all info in the excel manually. The datepoints of Moes are a few digits different from this Zonnsmart device. You can use the template from moes to mirror yourself for this device, but ultimately the datapoints and endpoints will differ a bit.
For zigbee2mqtt you wont need the hex codes fortunatly
whats up with the "mode" column in your excel? is it the same as "datatype" in my datagrams?
E.g. my captured "set mode"
'manuSpecificTuya', data '{"data":{"data":[1],"type":"Buffer"},"datatype":4,"dp":2,"fn":0,"status":0,"transid":86}'
however I dont see (yet) setting the datatype anywhere in the herdsman-converter
edit: found the datatype-mapping in tuya.js
check the top message of the issue 1803 , it can be useful. there is also a working converter
thx, I'll have a look, I am curious if it will work ;)
Hey @drdownload, How is the converter coming along?
I'm very curious how this will turn out. I would also be very interested in battery life. I recently started with ZigBee. I only have zzh, one Saswell SEA802 trv and one IKEA outlet as a router. It works, but I'd rather buy a trv with a weekly program. I want them to work independently of the hub. I just want to remotely switch to economy mode (let 's say 17 °C all day). I will be grateful for your advice.
Hi, will hopefully finish it on the weekend, I was away the last weeks.
Hi, have not invested a lot time to be honest, but slowly coming together, eg. current heating setpoint.
My goal would be: battery, mode, childlock, local temperature, current setpoint, set current setpoint
edit: getting and setting current heating setpoint works, no idea why it does not pick up the battery.
Fingers CROSSED, @drdownload! 🤞
Debugging even for a type or some missconception how things are really a painful af with the feedback from herdsman, educated guess, and looking in the stuff like /lib/ etc. helps, but its a more complicated then i hoped for, just sitting on the couch on a sunday ;)
eg: the mode of the thermostat: auto, manual and vacation, also I can set low and high in auto. I have no idea where to put it in for config in expose ;)
its not systemMode const allowed = ['off', 'heat', 'cool', 'auto', 'dry', 'fan_only', 'sleep']; its not an away mode
maybe its a preset? I just dont know ;) of course I can extend everything as custom value, but that wouldnt be clean code
heres a similar discussion: https://github.com/Koenkk/zigbee-herdsman-converters/issues/1973
(the euronics spirit drove me crazy, there was a faulty batch, always draining the battery, becoming unresponsive, and I used them in my holiday home, and if the batteries were empty with the last power it opened the valve to 100 %.
My converter would cover the basic functions to control from home assistant. only thing I dont get why I'm not getting any battery or local temperature dp (and have no idea to force them ;) )
Edit: I get the local_temperature and battery when pulling out the batteries, however I dont know if I will ever get an update ;)
Don't be put off by this minor dp disability, @drdownload . We're proud of you anyway. 👍 You're doing a great job! :)
I've seen the same behaviour when I programmed the quirck for ZHA. The temp update triggers when the valve opens or closes. The device then sends an update to the controller. Nice job @drdownload !
yes, thanks for the confirmation, I just read somewhere, that battery is by default often only sent 1x per day. I also just received an temperature update, so it seems to work ;)
has anyone a hint how to set up the temperature calibration?
this is +0.5
cluster 'manuSpecificTuya', data '{"data":{"data":[0,0,0,5],"type":"Buffer"},"datatype":2,"dp":27,"fn":0,"status":0,"transid":33}'
this is -0.5
cluster 'manuSpecificTuya', data '{"data":{"data":[255,255,255,250],"type":"Buffer"},"datatype":2,"dp":27,"fn":0,"status":0,"transid":16}
Edit: got it. Cheers to the converter of @serrj-sv, really, really great help and learning basis
Here you go with the first version as external converter: https://gist.github.com/drdownload/b720bd1b179db04aea9cacb7d7360b46
What works: https://github.com/Koenkk/zigbee2mqtt/issues/8522#issuecomment-922465252
I orderd myself an Tuya Zigbee hub, maybe I can complete from the original implementation/package capture.
fun thing while I looked for a gateway, I stumpled upon this identical looking TRV (with the mention of "2MQTT setup available"
Since HA uses the operations/system mode for the lovelace card, and presets are hidden away:
Would it be good practice to do the following: if system mode is set to heat => manual preset with comfort temp if system mode is set to off => manual preset with eco temp if system mode is set to auto => schedule preset
I've seen the same behaviour when I programmed the quirck for ZHA. The temp update triggers when the valve opens or closes. The device then sends an update to the controller. Nice job @drdownload !
@geoffreylagaisse : have you ever tried to start a boost period or send to freeze protection from zigbee2mqtt?
Hi there :)
Again, thank you guys for your great job! I've just installed this external converter, trying to do some exercises on one of my TV-01 thermostats.
I can read/display each entity's value:
Unfortunately, I'm not able to change any values here. Not possible to control/change the settings of the device. Also, frost detection, heating stop, and window detection remain unchangeable. When trying to toggle them, they change for a second or two, and then they come back to the initial position. Seems the fromZigbee communication works ok, while toZigbee does not. This is my understanding, but I'm not an expert, just a stupid user ;)
I've also noticed, that the comfort temperature should be rather numerical value instead of boolean. Please see the above screen.
Am I doing anything wrong?
Try to repair the device. also see the linked post what works and what doesnt. I have not yet figured out why I can only read eg. window detection but read and set the child lock. maybe the converter? I dont know.
regarding bedroom comfort temp, its not bool just not set therefore evaluating to false in HA. Have a look into the zigbee2mqtt webif
edit: just checked, never put in a converter for window_detection_set. edit2: I updated the gist with a working converter ro set window_detection
I cleaned up the converter in the gist. Now only setable stuff is exposed.
Edit: My EcoTemp, ComfortTemp etc. are not ajustable in HA but in Z2M => no idea.
As I said, I'm not an expert, but it might be a bug in toZigbee code. Or there is a 'hidden' bug somewhere in the converter itself. I don't see any other options. Do you?
If so, then some investigation would be needed, but it will be difficult without Tuya hub. I believe , thanks @drdownload we're so close to the fully working solution...
nope, the toZigbee code has nothing to do with home assistant.
Also I use it with home assistant with the version in the gist, controlling it in manual mode.
Hi Tried to use your converter in HA Z2M addon, and got next repeatable error:
> > zigbee2mqtt@1.21.1 start
> > node index.js
> (node:834) UnhandledPromiseRejectionWarning: SyntaxError: Unexpected identifier
> (Use `node --trace-warnings ...` to show where the warning was created)
> (node:834) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
> (node:834) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
Zigbee2mqtt Current version: 1.21.1-1
Can you please check?
Hi, I copied the content of my working local container to the gist and updated, you can check again.
Now it works, thank you very much
Information about the device + link
Bought from this Link: https://de.aliexpress.com/item/1005002377522262.html?spm=a2g0s.9042311.0.0.4d6f4c4dEXD4cF
Found this Listing with reverse image search: https://expo.tuya.com/product/600974
data/database.db entry of the device
{"id":27,"type":"EndDevice","ieeeAddr":"0x84fd27fffe2dd98b","nwkAddr":18218,"manufId":4098,"manufName":"_TZE200_e9ba97vf","powerSource":"Battery","modelId":"TS0601","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[0,4,5,61184],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"modelId":"TS0601","manufacturerName":"_TZE200_e9ba97vf","powerSource":3,"zclVersion":3,"appVersion":69,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":69,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1629911314030}
Things I tried
I tried to add an external converter following the tuya specific guide.
first I tried with the default code from: https://www.zigbee2mqtt.io/how_tos/how_to_support_new_tuya_devices.html
then I copied the converter from the herdsman code that handles radiator thermostats and added the fingerprint.
however it always stays unsupported. I used this fingerprints: default config: fingerprint: [ { // The model ID from: Device with modelID 'TS0601' is not supported // You may need to add \u0000 at the end of the name in some cases modelID: 'TS0601', // The manufacturer name from: Device with modelID 'TS0601' is not supported. manufacturerName: '_TZE200_e9ba97v' }, ], model: 'TV01-ZG', vendor: 'ZONNSMART',
and herdsman converters code; zigbeeModel: ['TS601'], fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_e9ba97v'}], model: 'TS0601_thermostat', vendor: 'TuYa',