WarmMe Intergration (Tuya?)

I wouldn’t say that via tuya cloud isn’t a hassle either.
First, deconfigure your wifi’s 5GHz support.
deconfigure thermostat from warmme app if it’s in there.
create tuya app account
go through the hoops to link an unconfigured thermostat to the tuya app (has anyone worked out this pairing and get it to register locally in the first place rather than the tuya, or warmme apps?).
create tuya iot cloud account
link tuya iot cloud accounts to tuya app account
remember to choose the ‘correct’ data centre that manages your tuya app account, the mapping to country isn’t at all obvious.
get the authorization key, access ID and access secret

Well yes, but the local stuff needs (needed?) dp setup.

As a newbee in HA I tried to also integrate Tuya devices, such as Warmme thermostat.

I just successfully integrated warmme thermostat through tuya integration in HA after creating project in Tuya IOT etc. I can adjust temperature in HA and it synchronises with the Yuya app viseversa.

Only thing is that the ‘mode’ does not respond when the heating is on/off and shows ‘uit’.

Do you experience the same? Any idea how to solve this?

As Mode i see Heat and Cool. Of which Cool doesnt make sense for my thermostat.

I do not use the modes

Ah, ok I understand. I agree that the info is in fact irrelevant. I will connect a power socket to get energy data, this is easier and accurate. And room temperature is available through other device.

1 Like

replaced my with zigbee thermostat. Just sharing the link for my fellow dutchies

1 Like

How are you getting the local_key for a warmme thermostat?

How did you get the local_key for the warmme thermostat?

Tuya is now integrated with Home Assistant core. Did anyone use this method successfully?

For me, the temperature shows up correctly and can be altered, but you cannot change mode or turn the thermostat on and off.


.

I’ve created an issue here: Tuya C16 Wi-Fi Thermostat control partially not working · Issue #132196 · home-assistant/core · GitHub

1 Like

How easy was it to replace it? Is it doable for somebody with 0 handyman skills? :grinning:

I was wondering if someone here succesfully used a blueprint like advanced-heating-control to change or alter the behavior of your heating system according to a schedule, outside temperature and/or presence if someone is at home?

Just as in the thread I use the integration Tuya local. But for example when I try to change the heating mode I receive an:

Failed to perform the action climate/set_hvac_mode. hvac_mode is read only

Might be similar to the behavior of @Humvee ?

Anyways, anyone here willing to share their automation of when to turn on and off their heating system?

I ended up with a very simple automation based on that blueprint which works really well. Just create a scheduler that you can attach to the automation when you want to have the comfort temperature.

- id: '<id>'
  alias: Badkamer vloerverwarming
  description: ''
  use_blueprint:
    path: panhans/advanced_heating_control.yaml
    input:
      input_trvs:
      - climate.badkamer_vloerverwarming
      input_temperature_comfort_static: 20
      input_temperature_eco_static: 15
      input_schedulers:
      - schedule.badkamer_vloerverwarming_schedule
      input_mode_outside_temperature_threshold: 12
      input_away_scheduler_mode: false
      input_away_presence_mode: false
      input_persons:
      - person.<person_a>
      - person.<person_b>
      input_people_entering_home_duration:
        hours: 0
        minutes: 0
        seconds: 10
      input_people_leaving_home_duration:
        hours: 0
        minutes: 0
        seconds: 10
      input_mode_outside_temperature: weather.buienradar

When away or outside temperature is above a certain threshold the climate system is not triggered, which is exactly what I wanted to achieve.

Side note: make sure to select the room temperature instead of the floor temperature :wink:

1 Like

I used protocol 3.3 to get it working, and after that

Target temp ID2
Current temp ID5
Temp step 0.5
Precision 0.1 (other values gave weird measurements)
HVAC mode 3 (value Smart)
HVAC mode set Manual/Auto
HVAC Current action set Heating/Warming
Temp on Celcius
Target precision on 0.1 again

This works for me at the moment. It was indeed some trial and error, but okay.

1 Like

If anyone is still interested, I just configured the tuyalocal integration for my E-Heat C16 Wifi Thermostat.

Modifications to tuya local
I had to change some mapping values for the datapoints for the HVACMode and HVACAction, in climate.py

HVAC Mode:

HVAC_MODE_SETS = {
  ...,
  "Anti_frozen/Manual/Smart": {
        HVACMode.HEAT: "Manual",
        HVACMode.AUTO: "Smart",
        HVACMode.OFF: "Anti_frozen"
    }
}

HVACAction:

HVAC_ACTION_SETS = {
...,
  "Heating/Standby": {
        HVACAction.HEATING: "Heating",
        HVACAction.IDLE: "Standby",
    }
}

Also I remove adding the OFF property to the property for HVAC mode, since I mapped OFF already in my set to Anti-frozen:

    @property
    def hvac_modes(self):
        """Return the list of available operation modes."""
        if not self.has_config(CONF_HVAC_MODE_DP):
            return None
        return list(self._conf_hvac_mode_set) # + [HVACMode.OFF]

Finally I made sure that Anti_frozen gets sent on toggling to off, where normally it would not sent the mode for off setting:

async def async_set_hvac_mode(self, hvac_mode):
        """Set new target operation mode."""
        #if hvac_mode == HVACMode.OFF:
        #    await self._device.set_dp(False, self._dp_id)
        #    return
        if not self._state and self._conf_hvac_mode_dp != self._dp_id:
            await self._device.set_dp(True, self._dp_id)
            # Some thermostats need a small wait before sending another update
            await asyncio.sleep(MODE_WAIT)
        await self._device.set_dp(
            self._conf_hvac_mode_set[hvac_mode], self._conf_hvac_mode_dp
        )

Now it works seamless.

Data Points Configuration
For the actual data points and they possible values you can get the properties from the Tuya Developer platform, where you had to retrieve the API key for tuya local. So you should already have an account there.

Go to Tuya Smart Developer Center and enter your device id and submit the request. It will return the properties with the attributeId and the name and range.

Result for E-Heat C16

 {\"abilityId\":1,\"accessMode\":\"rw\",\"code\":\"Power\",\"description\":\"保留此DP点,不做此UI\",\"name\":\"开关\",\"typeSpec\":{\"type\":\"bool\"}},
    {\"abilityId\":2,\"accessMode\":\"rw\",\"code\":\"SetTemperC\",\"description\":\"温度==数值/10\",\"name\":\"设置温度\",\"typeSpec\":{\"type\":\"value\",\"max\":400,\"min\":50,\"scale\":0,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":3,\"accessMode\":\"rw\",\"code\":\"Mode\",\"description\":\"0-防冻模式\\n1-智能模式\\n2-手动模式\",\"name\":\"控制模式\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"Anti_frozen\",\"Smart\",\"Manual\"]}}
    ,{\"abilityId\":4,\"accessMode\":\"ro\",\"code\":\"Fault\",\"description\":\"0-内置房间传感器故障\\n1-地板传感器故障\\n2-外置房间传感器故障\",\"extensions\":{\"scope\":\"fault\"},\"name\":\"传感器故障\",\"typeSpec\":{\"type\":\"bitmap\",\"label\":[\"Room_in\",\"Floor\",\"Room_out\"],\"maxlen\":3}}
    ,{\"abilityId\":5,\"accessMode\":\"ro\",\"code\":\"RoomTemperC\",\"description\":\"温度==数值/10\",\"extensions\":{\"iconName\":\"icon-dp_temp\",\"attribute\":\"2\"},\"name\":\"Room当前温度\",\"typeSpec\":{\"type\":\"value\",\"max\":500,\"min\":0,\"scale\":1,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":6,\"accessMode\":\"rw\",\"code\":\"Floor_limit\",\"description\":\"温度值==数值/10\",\"name\":\"地板限温\",\"typeSpec\":{\"type\":\"value\",\"max\":500,\"min\":200,\"scale\":0,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":7,\"accessMode\":\"rw\",\"code\":\"HomeOffice\",\"description\":\"0-家里\\n1-办公室\",\"name\":\"家里或办公室\",\"typeSpec\":{\"type\":\"bool\"}},
    {\"abilityId\":8,\"accessMode\":\"ro\",\"code\":\"FloorTemperC\",\"description\":\"温度==数值/10\",\"extensions\":{\"iconName\":\"icon-dp_temp\",\"attribute\":\"2\"},\"name\":\"Floor温度\",\"typeSpec\":{\"type\":\"value\",\"max\":500,\"min\":0,\"scale\":1,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":9,\"accessMode\":\"rw\",\"code\":\"HeatCool\",\"description\":\"0-加热\\n1-制冷\",\"name\":\"加热或制冷选择\",\"typeSpec\":{\"type\":\"bool\"}},
    {\"abilityId\":10,\"accessMode\":\"rw\",\"code\":\"AdaptiveFunction\",\"description\":\"0-关\\n1-开\",\"name\":\"自适应开关\",\"typeSpec\":{\"type\":\"bool\"}},
    {\"abilityId\":11,\"accessMode\":\"rw\",\"code\":\"Lock\",\"description\":\"0-无童锁\\n1-童锁\",\"name\":\"童锁\",\"typeSpec\":{\"type\":\"bool\"}},
    {\"abilityId\":12,\"accessMode\":\"rw\",\"code\":\"Schedule\",\"description\":\"0-7天单独可编程\\n1-5+1+1可编程\",\"name\":\"周程序类型\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"7\",\"5_1_1\"]}},
    {\"abilityId\":14,\"accessMode\":\"rw\",\"code\":\"SemChange\",\"description\":\"0-floor sensor\\n1-room-in sensor\\n2-both-in sensors\\n3-room-out sensor\\n4-both-out sensors\",\"name\":\"传感器切换\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"0\",\"1\",\"2\",\"3\",\"4\"]}},
    {\"abilityId\":15,\"accessMode\":\"rw\",\"code\":\"RoomTempCalibration\",\"description\":\"温度==数值/10 \",\"name\":\"Room实时温度校准\",\"typeSpec\":{\"type\":\"value\",\"max\":50,\"min\":-50,\"scale\":0,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":17,\"accessMode\":\"rw\",\"code\":\"FloorTempCalibration\",\"description\":\"温度==数值/10\",\"name\":\"Floor实时温度校准\",\"typeSpec\":{\"type\":\"value\",\"max\":50,\"min\":-50,\"scale\":0,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":21,\"accessMode\":\"rw\",\"code\":\"Reset\",\"description\":\"0-Cancel\\n1-Reset\",\"name\":\"恢复出厂设置\",\"typeSpec\":{\"type\":\"bool\"}},
    {\"abilityId\":22,\"accessMode\":\"rw\",\"code\":\"PowerSet\",\"description\":\"设置范围:0-3600W\\n间距:1W\",\"name\":\"功率设置\",\"typeSpec\":{\"type\":\"value\",\"max\":3600,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"W\"}},
    {\"abilityId\":23,\"accessMode\":\"ro\",\"code\":\"HeatHours\",\"description\":\"范围:0- ∞\\n单位:1hour\",\"name\":\"加热小时数\",\"typeSpec\":{\"type\":\"value\",\"max\":1470279295,\"min\":0,\"scale\":0,\"step\":1,\"unit\":\"\"}},
    {\"abilityId\":24,\"accessMode\":\"ro\",\"code\":\"Heating\",\"description\":\"standby/heating\\n注:前一版协议中25项\",\"name\":\"工作状态\",\"typeSpec\":{\"type\":\"enum\",\"range\":[\"Standby\",\"Heating\"]}},
    {\"abilityId\":25,\"accessMode\":\"rw\",\"code\":\"week_programC\",\"description\":\"周一到周日,分别是 0x01,0x02,0x04,0x08,0x10,0x20,0x40表示;\\nWAKE、LEAVE、RETURN、SLEEP分别是 0x00 0x01 0x02 0x03表示。\\n例如:时间07:30, 0x07  0x1e\\n例如:温度39.5,  0x01  0x8b\\n例如app下发 周一  wake阶段  7:30  39.5℃\\n数据格式如下:0x55 0xaa 0x00 0x06 0x00 0x0a 0x1a 0x00 0x00 0x06 01 00 07 1e 01 8b crc\\n例如设备端上报 周一  wake阶段  7:30  39.5℃\\n数据格式如下:0x55 0xaa 0x00 0x07 0x00 0x0a 0x1a 0x00 0x00 0x06 01 00 07 1e 01 8b crc\\n注:前一版协议中26项。\\n周程序上报按天上报:示例在序号27 查询里\",\"name\":\"周程序参数设置\",\"typeSpec\":{\"type\":\"raw\",\"maxlen\":128}},
    {\"abilityId\":26,\"accessMode\":\"rw\",\"code\":\"AntiFrozenTempSet\",\"description\":\"防冻模式温度设置范围:5-15℃\\n注:原版协议27项\",\"name\":\"防冻模式温度设置\",\"typeSpec\":{\"type\":\"value\",\"max\":150,\"min\":50,\"scale\":0,\"step\":5,\"unit\":\"℃\"}},
    {\"abilityId\":27,\"accessMode\":\"wr\",\"code\":\"inquire\",\"description\":\"在每次刚进入app界面时,app主动下发查询指令,来获取周程序的最新数据\\n\\n设备接收到查询指令就主动上报所有周程序数据,按天上报,例如上报周日wake 7:00  23.5℃    leave 9:30  25℃   return 11:30  22℃  sleep   16:00  19℃\\n数据格式如下:55 AA 00 07 00 19 1A 00 00 15   40   00  07 00 00 EB  01  09 1E 00 FA  02  11 1E 00 DC  03  16 00 00 BE 86\",\"name\":\"查询\",\"typeSpec\":{\"type\":\"bool\"}}]}]}

Based on this I was able to find the Action and Mode ranges used above, also I was able to configure my climate control properties in the tuya local configuration. See below images:

E-Heat C16 LocalTuyaConfig

Functionality:

  • Switch modes:
    • Automatisch == Smart
    • Verwarmen == Manual
    • Uit == Frost Protection
  • Current temperature
  • Set temperature
  • Indication if heating or not

I hope this helps anyone!!