A simple plugin to control Tuya devices based on the tuyawebapi
This plugin is made to cooperate with Homebridge: https://github.com/nfarina/homebridge
It also offers some tweaks and improvements to the original devices.
- Device Control: View and control your Tuya devices.
- Scene Support: Connect your Tuya scenes with switches.
- HTTP Access: Update and read device states via HTTP calls.
- Automation: We integrated our powerful automation API for fast and complex automation.
Reportus yourIssuesJoinourDiscord Server
- Install homebridge using:
sudo npm install -g homebridge - Install this plugin using:
sudo npm install -g homebridge-syntex-tuya - Update your
config.jsonfile. See snippet below. - Restart the Homebridge Service with:
sudo systemctl restart homebridge; sudo journalctl -fau homebridge
Info: If the baseDirectory for the storage can't be created you have to do it by yourself and give it full write permissions!
sudo mkdir -p /var/homebridge/SynTex/( create the directory )sudo chmod -R 777 /var/homebridge/SynTex/( permissions for many processes )sudo chown -R homebridge /var/homebridge/SynTex/( permissions only for homebridge )
"platforms": [
{
"platform": "SynTexTuya",
"baseDirectory": "/var/homebridge/SynTex",
"username": "xxxxx@mail.com",
"password": "xxxxxxxxxx",
"countryCode": "xx",
"options": {
"port": 1713,
"language": "us",
"platform": "smart_life",
"pollingInterval": 1200
},
"discovery": {
"addDevices": true,
"addScenes": true,
"generateConfig": true
},
"log": {
"debug": false
},
"accessories": [
{
"id": "ABCDEF1234567890",
"name": "Overwrite Accessory",
"services": [
{
"type": "outlet"
}
]
},
{
"id": "multi1",
"name": "Multi Accessory",
"services": [
{
"id": "ABCDEF1234567890",
"type": "outlet",
"name": "Basic Outlet"
},
{
"id": "ABCDEF1234567890",
"type": "led",
"name": "Basic LED"
},
{
"id": "GHIJKL0987654321",
"type": "dimmer",
"name": "Basic Dimmer"
},
{
"id": "GHIJKL0987654321",
"type": "dimmer",
"name": "Modified Dimmer",
"min": 12,
"max": 32.5
},
{
"id": "MNOPQR1234567890",
"type": "blind",
"name": "Basic Blind"
}
]
}
]
}
]platformis alwaysSynTexTuyabaseDirectoryThe path where cache data is stored.usernameThe username for the account that is registered in the Android / iOS App.passwordThe password for the account that is registered in the Android / iOS App.countryCodeYour account country code,1for USA or86for China.accessoriesFor the accessory config.
portTo control your accessory over HTTP calls.languageYou can use your country initials if you want to change it ( Currently supported:us,en,de)platformThe App where you registered your account.tuyafor Tuya Smart,smart_lifefor Smart Life,jinvoo_smartfor Jinvoo Smart. Defaults totuyapollingIntervalDefaults to empty which entails no polling. The frequency in seconds that the plugin polls the cloud to get device updates. When you exclusively control the devices through Homebridge, you can set this to a low frequency ( high interval number, e.g. 1800 = 30 minutes ). Minimum is 1030.
addDevicesAdding your existing Tuya devices.addScenesCreates switches to control your Tuya scenes.generateConfigGenerates an accessory list and includes it into theconfig.jsonfor later editing ( required using thehomebridge-syntexplugin )
- Disable certain log level:
error,warn,info,read,update,successanddebug( for exampledebug: false)
- Every accessory needs these parameters:
id,nameandservices( required ) idhas to be either areal tuya idor anotherrandom unique text( no duplicates! )namecould be anything.servicesThe services of your accessory.
namecould be anything.idhas to be areal tuya id( when using multiple services )typeDefine the service type (blind,dimmer,led,outlet)minCalibrate the brightness conversion minimum ( from0to100)maxCalibrate the brightness conversion maximum ( from0to100)
Control and set up your devices by installing homebridge-syntex
This plugin is made for plugin management, automation system and device control.
Check out the GitHub page for more information:
https://github.com/SynTexDZN/homebridge-syntex
- Open
http://Bridge IP/devices?id=Device ID&value=New Value - Insert the
Bridge IPandDevice ID - For the
New Valueyou can type this pattern:
- For boolean devices:
true/false( dimmer, led, outlet, switch ) - For numeric devices:
10/12.4( blind ) - For dimmable lights add
&brightness=New Brightness ( has to be a number ) - For accessories with multiple service types add
&type=SERVICETYPE - For accessories with multiple services with more than one of the same service type add
&counter=SERVICENUMBER
( First of that type = 0, second = 1 .. )
Example: http://homebridge.local:1713/devices?id=ABCDEF1234567890&type=dimmer&counter=0&value=true&brightness=100
( Updates the value and brightness of ABCDEF1234567890 to turned on, 100% brightness for example )
- Open
http://Bridge IP/devices?id=Device ID - Insert the
Bridge IPandDevice ID
- For accessories with multiple service types add
&type=SERVICETYPE - For accessories with multiple services with more than one of the same service type add
&counter=SERVICENUMBER
( First of that type = 0, second = 1 .. )
Example: http://homebridge.local:1713/devices?id=ABCDEF1234567890
( Reads the state of ABCDEF1234567890 for example )
- Open
http://Bridge IP/devices?id=Device ID&remove=CONFIRM - Insert the
Bridge IPandDevice ID
- To remove a specific service add
&type=SERVICETYPE - To remove a specific service from an accessory with more than one of the same service type add
&counter=SERVICENUMBER
( First of that type = 0, second = 1 .. )
Example: http://homebridge.local:1713/devices?id=ABCDEF1234567890&remove=CONFIRM
( Removes ABCDEF1234567890 from the Config and Home App )
To enable the automation module you have to create a file named automation.json in your baseDirectory >> automation or install the homebridge-syntex plugin to create them via UI ( only between SynTex plugins )
Example: For manual configuration update your automation.json file. See snippet below.
{
"automation": [
{
"id": 0,
"name": "Demo Automation",
"active": true,
"trigger": {
"logic": "AND",
"groups": [
{
"logic": "OR",
"blocks": [
{
"id": "multi2",
"name": "Multi Device",
"letters": "F0",
"plugin": "SynTexWebHooks",
"operation": "<",
"state": {
"value": 1000
}
},
{
"operation": "=",
"time": "16:00",
"options": {
"stateLock": true
}
}
]
},
{
"logic": "AND",
"blocks": [
{
"id": "multi1",
"name": "Multi Switch",
"letters": "41",
"plugin": "SynTexWebHooks",
"operation": "=",
"state": {
"value": false
},
"options": {
"stateLock": true
}
},
{
"operation": "=",
"days": [
1,
2,
3,
4,
5
]
}
]
}
]
},
"result": [
{
"id": "58747302d8afc008d0dc",
"name": "Kitchen Dimmable LED",
"letters": "90",
"plugin": "SynTexTuya",
"operation": "=",
"state": {
"value": true,
"brightness": 75
}
},
{
"id": "extern1",
"name": "Extern Accessory",
"letters": "40",
"bridge": "192.168.1.100",
"plugin": "SynTexWebHooks",
"operation": "=",
"state": {
"value": false
},
"options": {
"stateLock": false
}
},
{
"operation": "=",
"delay": 1000
},
{
"url": "http://192.168.1.100:1713/devices?id=ABCDEF1234567890&value=true&brightness=100"
}
]
}
]
}idA unique ID of your automation.nameThe name of the automation.activeEnable / disable a single automation.triggerWhat triggers the automation?
logicDefine a logical operation for your groups (AND,OR)groupsLogical layer one
logicDefine a logical operation for your blocks (AND,OR)blocksLogical layer two
resultWhat happens when running an automation?optionsGeneral automation options
timeLockSet a timeout to prevent to many executions ( in milliseconds )
idis the same like in your config file ( or in your log )nameThe name of the accessory.lettersSee letter configuration below.bridgeIP of your other bridge ( optional )pluginUse the platform name of the plugin ( optional, see supported plugins below )operationUse the logical operands (>,<,=)stateThe state of your accessory.
valueis used for the main characteristic.brightnesscan be used for dimmable / RGB lights.huecan be used for RGB lights.saturationcan be used for RGB lights.
operationUse the logical operands (>,<,=)timeDefine a time point ( e.g.16:00)
operationUse the logical operands (=)daysSet the weekdays ( from0to6)
delaySet a timeout ( in milliseconds )
urlFetch an URL.
The letters are split into two parts ( characters )
1. Service Type
- 0 : Occupancy
- 1 : Smoke
- 2 : Airquality
- 3 : RGB
- 4 : Switch
- 5 : Relais
- 6 : Stateless Switch
- 7 : Outlet
- 8 : LED
- 9 : Dimmer
- A : Contact
- B : Motion
- C : Temperature
- D : Humidity
- E : Rain
- F : Light
- G : Blind
- H : Thermostat
- I : Fan
2. Duplicate Counter
- If there are more services of the same type the counter indicates which is which
- Simply count from top to bottom.
Example: The first switch in your config has the letters 40, the second 41 and so on ..
- SynTexKNX (
homebridge-syntex-knx) - SynTexMagicHome (
homebridge-syntex-magichome) - SynTexTuya (
homebridge-syntex-tuya) - SynTexWebHooks (
homebridge-syntex-webhooks)
- Outlets
- LED Lights / Dimmable Lights
- Blinds / Shutters / Window Coverings
- Scenes ( From the Tuya app )