3.2 KiB
localtuya-homeassistant
local handling for Tuya switch devices and getting parameters from them (as Power Meters: Voltage, Current, Watt)
Local handling for Tuya Devices under Home-Assistant and Hassio
How it works:
-
Copy switch.py to /custom_components/mytuya/ folder, inside /config folder (via Samba for HASSIO).
-
Identify on your Home-Assistant logs (putting your logging into debug mode), the different attributes you want to handle by HA.
-
Find in the switch.py file that part, and edit it for ID/DPS that is correct for your device. @property def device_state_attributes(self): attrs = {} try: attrs[ATTR_CURRENT] = "{}".format(self._status['dps']['104']) attrs[ATTR_CURRENT_CONSUMPTION] = "{}".format(self._status['dps']['105']/10) attrs[ATTR_VOLTAGE] = "{}".format(self._status['dps']['106']/10) except KeyError: pass return attrs
-
Use this declaration on your configuration.yaml file (you need to get the 'device_id' and 'local_key' parameters for your device, as it can be obtained on other tutorials on the web: switch:
- platform: localtuya host: 192.168.1.251 local_key: 1234567890abcdef device_id: abcdef1234567890abcdef switches: switch1: friendly_name: TUYA_LED id: 1 switch2: friendly_name: TUYA_SW01 id: 101 NOTE: (as many switch declared as the device has, take note that: If your device is composed (ex. one switch with a independent led light in it), this led can be declared as a 'switch'. ¡This Python script does not include RGB handling! (RGB Handling is independent and must be declared as a 'light' custom device, you can search web for examples, but i have not test this).
-
Use this declaration on your configuration.yaml file, for stating sensors that handle its attributes: sensor:
- platform: template
sensors:
device_voltage:
value_template: >-
{{ states.switch.TUYA_SW01.attributes.voltage }}
unit_of_measurement: 'V'
device_current:
acs_voltage: >-
{{ states.switch.TUYA_SW01.attributes.current }} unit_of_measurement: 'mA'
device_current_consumption: value_template: >- {{ states.switch.TUYA_SW01.attributes.current_consumption }} unit_of_measurement: 'W'
- platform: template
sensors:
device_voltage:
value_template: >-
{{ states.switch.TUYA_SW01.attributes.voltage }}
unit_of_measurement: 'V'
device_current:
acs_voltage: >-
-
If all gone OK, your switch is working, so the sensors are working too.
NOTE: You can do as changes as you want in scripts ant/or yaml files. But: You can't declare your "custom_component" as "tuya", tuya is a forbidden word from 0.88 version or so. So if you declare a switch.tuya, the embedded (cloud based) Tuya component will be load instead custom_component one.
Thanks to: sean6541, for the working (standard) Python Handler for Tuya devices some-other-user, i really can't find now, (i will credit/thank him here), who published a partialy Python script that inspired this solution