119 lines
4.7 KiB
Markdown
119 lines
4.7 KiB
Markdown
# Domoticz-Tuya-SmartPlug-Plugin
|
|
|
|
A Domoticz plugin to manage Tuya Smart Plug (single and multi socket device)
|
|
This is a modified plugin from the original by Tixi, The original plugin only supported an On/Off switch.
|
|
Now meters for Watt, Voltage, Ampere, kWh (calculated) are also created.
|
|
|
|
Multi socket has not been tested by sincze. I only have 1 socket. Keep in mind I am not a Python developer.
|
|
Plugin is provided on best-effort.
|
|
|
|
## ONLY TESTED FOR Raspberry Pi
|
|
|
|
With Python version 3.5 & Domoticz version V4.1044 (beta)
|
|
## Prerequisites
|
|
|
|
This plugin is based on the pytuya Python library. For the installation of this library,
|
|
follow the Installation guide below.
|
|
See [`https://github.com/clach04/python-tuya/`](https://github.com/clach04/python-tuya/) for more information.
|
|
|
|
For the pytuya Python library, you need pycrypto. pycrypto can be installed with pip:
|
|
```
|
|
pip3 install pycrypto
|
|
```
|
|
See [`https://pypi.org/project/pycrypto/`](https://pypi.org/project/pycrypto/) for more information.
|
|
|
|
## Installation
|
|
|
|
Assuming that domoticz directory is installed in your home directory.
|
|
|
|
```bash
|
|
cd ~/domoticz/plugins
|
|
git clone https://github.com/sincze/Domoticz-Tuya-SmartPlug-Plugin
|
|
cd Domoticz-Tuya-SmartPlug-Plugin
|
|
git clone https://github.com/clach04/python-tuya.git
|
|
ln -s ~/domoticz/plugins/Domoticz-Tuya-SmartPlug-Plugin/python-tuya/pytuya pytuya
|
|
# restart domoticz:
|
|
sudo /etc/init.d/domoticz.sh restart
|
|
```
|
|
In the web UI, navigate to the Hardware page. In the hardware dropdown there will be an entry called "Tuya SmartPlug".
|
|
At the moment the following DPS codes are hardcoded (under constructor). I'll try to modify the plugin in a later version
|
|
to support a parameter field so these values can be provided during configuration.
|
|
|
|
self.__ampere = 4 # DPS key for Ampere
|
|
self.__watt = 5 # DPS key for Watt
|
|
self.__voltage = 6 # DPS key for Voltage
|
|
|
|
## Known issues
|
|
|
|
1/ python environment
|
|
|
|
Domoticz may not have the path to the pycrypto library in its python environment.
|
|
In this case you will observe something starting like that in the log:
|
|
* failed to load 'plugin.py', Python Path used was
|
|
* Module Import failed, exception: 'ImportError'
|
|
|
|
To find where pycrypto is installed, in a shell:
|
|
```bash
|
|
pip3 show pycrypto
|
|
```
|
|
The Crypto directory should be present in the directory indicated with Location.
|
|
|
|
when you have it, just add a symbolic link to it in Domoticz-Tuya-SmartPlug-Plugin directory with ```ln -s```.
|
|
Example:
|
|
```bash
|
|
cd ~/domoticz/plugins/Domoticz-Tuya-SmartPlug-Plugin
|
|
ln -s /home/pi/.local/lib/python3.5/site-packages/Crypto Crypto
|
|
```
|
|
|
|
2/ Tuya app
|
|
|
|
The tuya app must be close. This limitation is due to the tuya device itself that support only one connection.
|
|
|
|
3/ Alternative crypto libraries
|
|
|
|
PyCryptodome or pyaes can be used instead of pycrypto.
|
|
|
|
## Updating
|
|
|
|
Like other plugins, in the Domoticz-Tuya-SmartPlug-Plugin directory:
|
|
```bash
|
|
git pull
|
|
sudo /etc/init.d/domoticz.sh restart
|
|
```
|
|
|
|
## Parameters
|
|
|
|
| Parameter | Value |
|
|
| :--- | :--- |
|
|
| **IP address** | IP of the Smart Plug eg. 192.168.1.231 |
|
|
| **DevID** | devID of the Smart Plug |
|
|
| **Local Key** | Local Key of the Smart Plug |
|
|
| **DPS** | 1 for single socket device and a list of dps separated by ';' for multisocket device eg. 1;2;3;7
|
|
| **DPS group** | None for single socket device and a list of list of dps separated by ':' for multisocket device eg. 1;2 : 3;7
|
|
| **DPS always ON** | None for single socket device and a list of dps separated by ; for multisocket device eg. 1;2
|
|
| **Debug** | default is 0 |
|
|
|
|
**DPS** should only includes values that correspond to plug's dps id. Be careful some devices also have timers in the dps state.
|
|
|
|
**DPS group** can be used to group multiple sockets in one Domoticz switch.
|
|
|
|
**DPS always ON** can be used to force some sockets to be always on (usb for instance).
|
|
|
|
Helper scripts get_dps.py turnON.py and turnOFF.py can help:
|
|
* to determine the dps list
|
|
* to check that the needed information are valid (i.e. devID and Local Key) before using the plugin.
|
|
|
|
## DevID & Local Key Extraction
|
|
|
|
Recommanded method:
|
|
[`https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md`](https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md)
|
|
|
|
All the information can be found here:
|
|
[`https://github.com/clach04/python-tuya/`](https://github.com/clach04/python-tuya/)
|
|
|
|
## Acknowledgements
|
|
|
|
* Special thanks for all the hard work of [clach04](https://github.com/clach04), [codetheweb](https://github.com/codetheweb/) and all the other contributers on [python-tuya](https://github.com/clach04/python-tuya) and [tuyapi](https://github.com/codetheweb/tuyapi) who have made communicating to Tuya devices possible with open source code.
|
|
* Domoticz team
|
|
* Original Plugin by [Tixi](https://github.com/tixi/Domoticz-Tuya-SmartPlug-Plugin)
|