doudz / homeassistant-zigate

zigate component for Home Assistant
MIT License
48 stars 13 forks source link

eCozy smart radiator valve support #23

Closed nerdosity closed 4 years ago

nerdosity commented 5 years ago

image

http://ecozy.de/en/support/thermostat

Hi, I still haven't tried to join it to my ZigBee network. I started working again with Zigate since latest firmware release. How can we add this device?

https://github.com/Koenkk/zigbee-shepherd-converters/pull/132

nerdosity commented 5 years ago

https://pastebin.com/QTwHuJPE From zigate.json:

    {
        "addr": "0813",
        "discovery": "",
        "endpoints": [
            {
                "clusters": [
                    {
                        "attributes": [
                            {
                                "attribute": 5,
                                "data": "Thermostat",
                                "name": "type",
                                "type": "str",
                                "value": "Thermostat"
                            }
                        ],
                        "cluster": 0
                    }
                ],
                "device": 769,
                "endpoint": 3,
                "in_clusters": [
                    0,
                    1,
                    3,
                    10,
                    32,
                    513,
                    516
                ],
                "out_clusters": [
                    1026
                ],
                "profile": 260
            }
        ],
        "generictype": "",
        "info": {
            "addr": "0813",
            "ieee": "70b3d5de00001205",
            "last_seen": "2019-01-09 21:09:39",
            "mac_capability": "10000000",
            "rssi": 12
        }
    },
doudz commented 5 years ago

Thanks for sharing, I'll see how to support it. What are the capabilities of the device ?

nerdosity commented 5 years ago

How can I discover the capabilities? I would gladly help. I think that it just have a setpoint, which you can set via zigbee. It will manage to start and stop the valve when the setpoint is reached. Just this, on/off status and temperature reporting I think.

You can have a look at the zigbee shepard device.js here:

https://github.com/Koenkk/zigbee-shepherd-converters/blob/master/devices.js

look for eCozy

doudz commented 5 years ago

I have added some basic support in dev branch https://github.com/doudz/zigate/tree/dev

nerdosity commented 5 years ago

https://pastebin.com/RhgCaALd

This is after trying to repair a previously paired valve head. The previously paired valve stay "dead":

image

I don't see any new device after using this cluster.py

Maybe this can help:

https://github.com/ckpt-martin/Hubitat/blob/master/eCozy/eCozy-ZigBee-Thermostat-Driver.groovy

doudz commented 5 years ago

Ok, I have added automatic reporting, but I'm not sure about the data type used

nerdosity commented 5 years ago

How can I help with testing / which data can I provide to help?

doudz commented 5 years ago

Have tried with the last release ? if you could, please provide debug log to see what happens at pairing

nerdosity commented 5 years ago

Hi,

I went back to home and now I have access to eCozy smart thermostat. image

image

We now have 3 sensors, but no input for changing the wanted temperature.

image

image

image

nerdosity commented 5 years ago

@doudz can you let me know how can I proceed? I will deploy the valves on next days, they seems syncing but I don't understand how to push the new temperature on the device. I think that it should create a separate thermostat for each valve

doudz commented 5 years ago

yes you're right, it should create a thermostat. I've no time this days to work on ZiGate, but that's the way

nerdosity commented 5 years ago

If you can point me where to do this kind of mod I can fork your project and try to do the modifications myself. I am not very practical with python projects but I can read that.

doudz commented 5 years ago

We have to create a new "climate" entity for zigate But I have a question, the value "receiver on when idle" is false so it suppose you can't change the configuration when you want, you have to wake up the device when you need to change the temperature for example

nerdosity commented 5 years ago

I don't have the original gateway, I just bought 4 of these valves knowing that the zigbee2mqtt project supports them. Now I would like to use just one gateway since Zigate is behaving really good after the latest firmware upgrades. https://youtu.be/Lpe4KTNFoi0?t=85

From this video, it seems that the temperature can be changed on the fly.

doudz commented 5 years ago

I have added a basic climate entity, could you try it ?

nerdosity commented 5 years ago

Sorry didn't saw your comment, I have updated your plugin yesterday but I didn't saw any new climate item on HA.

Edit: As far as I remember, latest code modified was the battery part. I think that I updated your plugin not yesterday but some days ago.

doudz commented 5 years ago

Is there anything in log ?

nerdosity commented 5 years ago

Hi,

Just updated your package to latest version. Some version ago the thermostat was responding, i.e. I changed manually the temperature and almost immediately it was changing the temperature sensor in Home Assistant. Now it's not talking anymore with the smart valve, on the smart valve sometimes the wifi signal get green and sometimes red. I am now removing the device and repairing, I will update my comment later.

Now I just see:

Command 0x0092 failed Failed (ZigBee event codes) 21 : b'' 10:26 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (ERROR) Command 0x0140 failed Failed (ZigBee event codes) 21 : b'' 10:26 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (ERROR) - message first occured at 10:25 and shows up 6 times No template found for Thermostat 10:26 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING) - message first occured at 10:25 and shows up 2 times Device already exists with another addr 1394, rename it. 10:26 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING) No response waiting command 0x8120 10:25 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING) Device already exists with another addr ce4f, rename it. 10:25 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING) The device 5b12 is missing 10:22 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING) No template found for lumi.sensor_switch 10:22 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING) The device 8fd9 is missing 10:22 /root/homeassistant/lib/python3.5/site-packages/zigate/core.py (WARNING)

nerdosity commented 5 years ago

After removing, rebooting and re-pairing the device:

https://pastebin.com/ry4PkyV2

Sensors are created and they get the temperature update almost immediately (I think that the temperature value set on the physical valve get pushed as soon as the screen turn off), but I can't see any climate entity in HA apart from my espeasy climate.

image

doudz commented 5 years ago

Should be fixed now

nerdosity commented 5 years ago

image We are almost there. It looks like the device just wants integer values, I have to say that using the actual touch screen you CAN'T set half degrees, just integer values.

doudz commented 5 years ago

It should be OK now

About the precision, it supposed to follow your hass configuration. if you are using metric (degrees) then precision is 0.1 if you are using Imperial (FAHRENHEIT), precision is 1

I could force precision to be 0.1 if needed

nerdosity commented 5 years ago

I think that we can add it to supported devices ;) Initial support is done, it should support temperature, occupancy, un-/occupied heating, schedule but temperature is enough to integrate it in HA. BTW, if I set 20.5 it will set 21 to the eCozy smart valve. The value get pushed to the devices almost immediately. Don't you think that the device should be created automagically to:

min: 8° max: 30° precision: 1° ? The actual device is limited to these values.

doudz commented 5 years ago

Current HA limits are 7° and 35° so almost the same.

How "occupancy" works ? is it just a boolean value that we can turn on or off to choose between unoccupied or occupied heating ?

doudz commented 5 years ago

I have improved a little by using un/occupied values and occupancy as away mode

nerdosity commented 5 years ago

Looks good, I had the chance to update everything. I think that the entire week programming can be sent and retrieved via zigbee, do you want the full thermostat implementation specs?

doudz commented 5 years ago

I don't know how I could handle a week program with a HA climate. I think you have to use the zigate.write_attribute service to do it.

If the current support is working, I won't improve it more for now

nerdosity commented 5 years ago

IDK if it's something related to your plugin or other parts of home assistant, but these climates don't get pushed to Google Home. I can find my manual climate there, but not the Zigate ones

nerdosity commented 5 years ago

Maybe it's because it doesn't even have the status ON/OFF?

doudz commented 5 years ago

Maybe, I don't know, we have to explore the google assistant component to understand

nerdosity commented 5 years ago

https://github.com/home-assistant/home-assistant/pull/19242 maybe there is something like this issue?

doudz commented 5 years ago

I think the problem is we don't have "is_on" information or "current_operation"

doudz commented 5 years ago

we could try to set is_on True and see

     @property
     def is_on(self):
         """Return true if the device is on."""
         return True
nerdosity commented 5 years ago

I will have access to smart valves in a month. There will be a lot of time until November to test the code properly 😆

doudz commented 5 years ago

climate change a lot with HA 0.95 and later, maybe it works now

nerdosity commented 5 years ago

I, I just came back. I updated HA and your library. Now I can't see anymore the climate device (but I can see properly the ecozy device).

image image

(Unrelated to ecozy, but some other device disappeared too (like both zone status sensor linked to a couple of smoke sensors, both sensors are visibile but zone sensor are not here anymore)). What do you suggest?

doudz commented 4 years ago

should be fixed now