Step-by-Step guide for adding Tuya-bulbs, Wi-Fi smart LED (Smart Life app) to OH2 using tuya-mqtt.js by AgentK

Did you try tuya/ver3.3/…?

I tried today with both v3.3 and v3.1, but none worked. I am guessing I did something wrong in the tuya-mqtt part.

When I use mosquitto_pub to update the item it works perfectly, but apparently the device communication with Tuya cloud is not being intercepted.

No idea how to move on…

Well… the only thing I can recommend you is to try the new version of tuya-mqtt:

The author @tsightler rewrote almost everything and I was able to manage devices which I still can’t control with tuyapi… Especially as you already have the device id’s and keys, I think it’s worth a try…

If you need a small tutorial:

1 Like

Nice tip, I will give it a try this weekend and let you guys know the outcome.

Thank you for the help.

Tuyaapi does not support sensors. At least not sensors which sleep the most time as door sensors.

1 Like

Dear OH-community, i’m going to be crazy! couple of days on this problem:

I succeeded in integrating my Zemismart vertical shutter motor in openhab thanks to the AgentK binding, -I found my secret key etc …,
-I have configured my broker correctly,-configured my MQTT thing like this:



,with a rollershutter ID channel type

  • created my articles like this:
    Dimmer Direction "Store sam" {channel="mqtt:topic:0f66ae51:direction"}

-and create a basic rule like this:

`rule “rule name”
when
Item Direction received command OFF
then
Direction.sendCommand(0)
end

rule “rule name”
when
Item Direction received command ON
then
Direction.sendCommand(100)
end`

-I noticed while running MQTT fix that the topics of my device were tuya / “name” / dps / 2 / state, this one returns a number value.

My problem is the following, when I activate my roller shutter via the tuya application, I see the change of values ​​of my MQTT fix topic, on my sitemap I also see that the switch opens and closes, however I can’t send a shutter command from openhab to my roller shutter, what am I doing wrong with my rule?

i also tried this one reading the binding documentation
MQTT binding doc
`rule “Toggle Tuya light/switch on/off via MQTT”
when
Item Direction received command
then
val mqttActions = getActions(“mqtt”,“mqtt:systemBroker:embedded-mqtt-broker”)

 switch(receivedCommand) {
 case ON : mqttActions.publishMQTT("tuya/store_de_la_salle_a_manger/dps/2/state/","40",true)
 case OFF : mqttActions.publishMQTT("tuya/store_de_la_salle_a_manger/dps/2/state/","100",true)
 }
 end`

Sorry for the layout firefox doesn’t help me

I did not understand how I run the test, can you explain?

to see if it installed it globally try out the command at the C:\ power shell prompt:

tuya-cli help

Solved like a dummy i check "is command " in the state status of the MQTT things, to trigger my roller shutter i use the “tuya/store_de_la_salle_a_manger/dps/2/command” set in like a dimmer

In the end I got it working. But it is terribly unreliable and requires several triggers on the sensor to result in a status update via MQTT. So I just gave up. As soon as I can I’ll replace the sensors with something that’s actually supported.

Is there any way to ping the device and check if it is online or not ? I have id and key, but can’t find topic which would trigger such action

EDIT:
Needed to restart tuya mqtt server and send command “get-states” to “tuya/< ID >/command” topic

1 Like

Hey all,

Is this method still valid? cause I followed the step and installed Bluestack but Smarlife App keeps crashing when trying to enter any device inside the App in Bluestack. And I am not able to find the file where i can see the Keys of the devices noting that Bluestack is rooted properly.

Regards,

I have 2 smart sockets and 1 smart bulb added in Tuya app on my android phone, and this method still working great. I can control all of them in both Tuya app and openHAB-3.
You should try Tuya and get device’s ID from iot.tuya.com, then get key with tuya-cli wizard

is this repository available somewhere?

I have a problem with the tuya-cli get command.
It returns: “undefined”

tuya-cli get --ip 192.168.1.193 --id bf5dda5b30a1xxxxxxxxxx --key 69c46byyyyyyyyyyy
undefined

Any hints? run under win10. I will add that during the polling, the openhab server and tuya app from my mobile were turned off

Sorry, i no longer use OpenHAB.

Okay, I was able to start the floodlight lamp (by LSC) working with all possible settings (on/off, brightness, white temp, mode: sensor/manual, all settings of sensor)

The problem is that it only works in ONENHAB when I have the script running manually
(putty session on my raspberry)

cd /etc/openhab2/scripts/tuya-mqtt
DEBUG=* node tuya-mqtt.js

I added script as a service to systemd (as well as in tutorial)

HELP !!!

which direction? HA?

I modified a version of LSC Smart App that actually shows the local key in the device properties. It is an older version since the latest versions dont really play nice with apktool. Uninstall the app first before installing this (it has a differrent signature).
Download here: 51.97 MB file on MEGA

The latest version supports v3.3. Just config your devices.conf like this:
[
{
name: ‘LSC-A60-RGB-CCT 1’,
id: ‘xxx’,
key: ‘xxx’,
version: ‘3.3’
}
]

My adventures with openhab and LSC Smart Connect lightbulb:

Install openhab3
----------------

sudo apt-get install openjdk
wget -qO - 'https://openhab.jfrog.io/artifactory/api/gpg/key/public' | sudo apt-key add -
sudo apt-get install apt-transport-https
echo 'deb https://openhab.jfrog.io/artifactory/openhab-linuxpkg stable main' | sudo tee /etc/apt/sources.list.d/openhab.list
sudo apt-get update && sudo apt-get install openhab
sudo apt-get install openhab-addons
Navigate with a web browser to http://<ip-address>:8080

Install mosquitto
-----------------
sudo opt-get install mosquitto
sudo systemctl mosquitto restart

Install node/npm
----------------
sudo apt-get install nodejs
sudo apt-get install npm

Install tuya-mqtt
-----------------
cd /opt
sudo git clone https://github.com/TheAgentK/tuya-mqtt
sudo cd tuya-mqtt
sudo npm install
sudo cp config.json.sample config.json
nano devices.conf (see next step)

example:

[
  {
    name: 'LSC-A60-RGB-CCT 1',
    id: 'bfa4875da7d3c05f459aof',
    key: '7cdbc8a0c742715b',
    version: '3.3'
  }
]



Install modfied lsc app
-----------------------

Sideload https://mega.nz/file/2V8UlDwC#9f0_M6Af_tMHgXR8lionNA6ScFM82EZUae4YLBiUzy4
Login, select a device, press menu, Device info, get device id and localkey
Add to devices.conf

Install MQQT Binding
--------------------
Open openhab
Add thing, install binding MQQT Binding
Add a MQQT Broker, set ip to 127.0.0.1 (mosquitto)

Run tuya-mqtt in debug
----------------------
cd /opt/tuya-mqtt
DEBUG=tuya-mqtt:* node tuya-mqtt.js
You can now use the app and see the commands + payload

LSC-A60-RGB-CCT
---------------
Add a Generic MQQT Thing eg. LSC-A60-RGB-CCT 1, select MQQT Broker as bridge.
Add folowing channels:

• On/Off (switch)

  State: tuya/lsc-a60-rgb-cct_1/dps/20/state
  Command: tuya/lsc-a60-rgb-cct_1/dps/20/command 
  On value: true
  Off value: false
  
• Brightness (number)
  State: tuya/lsc-a60-rgb-cct_1/dps/22/state
  Command: tuya/lsc-a60-rgb-cct_1/dps/22/command 
  Min value: 10
  Max value: 1000
 
• Whiteness (number)
  State: tuya/lsc-a60-rgb-cct_1/dps/23/state
  Command: tuya/lsc-a60-rgb-cct_1/dps/23/command 
  Min value: 10
  Max value: 1000
 
• Color (string)
   First copy RGBToColorString.js and ColorStringToRGB.js to /etc/openhab/transform

colorStringToRGB.js:

(function(i) {
    var re = /.*([a-fA-F0-9]{4})([a-fA-F0-9]{4})([a-fA-F0-9]{4}).*/i;
	var r = i.match(re);
	if (r === null||r.length===0)
	return i;
	
	var one = Number('0x' + r[1]);
	var two = Number('0x' + r[2]) / 10;
	var three = Number('0x' + r[3]) / 10;
	return one+','+two+','+three;
})(input);

RGBToColorString.js:

function pad(num, size) {
    num = num.toString();
    while (num.length < size) num = "0" + num;
    return num;
}

(function(i) {
    var r = i.split(',');
	if (r === null||r.length!==3)
	return i;
	
	var one = Number(r[0]) ;
	var two = Number(r[1]) * 10;
	var three = Number(r[2]) * 10;
	return pad(one.toString(16), 4) + pad(two.toString(16), 4) + pad(three.toString(16), 4);
})(input);

   State: tuya/lsc-a60-rgb-cct_1/dps/24/state
   Command: tuya/lsc-a60-rgb-cct_1/dps/24/command
   Transformation Out: JS:RGBToColorString.js
   Transformation In: JS:colorStringToRGB.js

• Mode (switch)
   Command: tuya/lsc-a60-rgb-cct_1/dps/21/command
   State: tuya/lsc-a60-rgb-cct_1/dps/21/state
   Off value: colour
   On value: white
   Has another value: scene

• Scene (string)
  State: tuya/lsc-a60-rgb-cct_1/dps/25/state
  Command: tuya/lsc-a60-rgb-cct_1/dps/25/command 

Install tuya-mqtt as service
----------------------------

cd /lib/systemd/system/
sudo touch tuyaapi-mqtt.service
echo [Unit] | sudo tee -a tuyaapi-mqtt.service
echo Description=tuyaapi-mqtt | sudo tee -a tuyaapi-mqtt.service
echo After=network-online.target | sudo tee -a tuyaapi-mqtt.service
echo Wants=network-online.target | sudo tee -a tuyaapi-mqtt.service
echo | sudo tee -a tuyaapi-mqtt.service
echo [Service] | sudo tee -a tuyaapi-mqtt.service
echo ExecStart=/usr/bin/node /opt/tuya-mqtt/tuya-mqtt.js | sudo tee -a tuyaapi-mqtt.service
echo Restart=always | sudo tee -a tuyaapi-mqtt.service
echo User=openhab | sudo tee -a tuyaapi-mqtt.service
echo Group=openhab | sudo tee -a tuyaapi-mqtt.service
echo Environment=PATH=/usr/bin/ | sudo tee -a tuyaapi-mqtt.service
echo Environment=NODE_ENV=production | sudo tee -a tuyaapi-mqtt.service
echo WorkingDirectory=/opt/tuya-mqtt | sudo tee -a tuyaapi-mqtt.service
echo | sudo tee -a tuyaapi-mqtt.service
echo [Install] | sudo tee -a tuyaapi-mqtt.service
echo WantedBy=multi-user.target | sudo tee -a tuyaapi-mqtt.service
echo Alias=tuyaapi-mqtt.service | sudo tee -a tuyaapi-mqtt.service
sudo chmod 644 /lib/systemd/system/tuyaapi-mqtt.service
sudo systemctl daemon-reload
sudo systemctl enable tuyaapi-mqtt.service
sudo systemctl start tuyaapi-mqtt.service
1 Like

THX for that. Now it works like a charm

1 Like