Open drbhpark opened 3 years ago
You can use any of the Device IDs on your network:
I noticed you use tuya-cli
instead of tinytuya
wizard. If you run this you can have tinytuya pull the Tuya local keys and store them and other device info in a devices.json file.
You will need the local key (tinytuya wizard will show these) to be able to use the code you posted. TinyTuya's wizard will also run a series of status() pulls for all of your devices:
python -m tinytuya wizard -nocolor
Fair warning: I see that your devices are temperature sensors. Some of these are designed to send their data only to the Tuya Cloud instead of responding to local queries. Still, give them a try in the d.status() code you posted:
import tinytuya
# First One
d1 = tinytuya.OutletDevice('0420029xxxxx22c9789d', '192.168.219.111', 'LOCAL_KEY_HERE')
d1.set_version(3.1)
data = d1.status()
print('d1 result %r' % data)
# Second One
d2 = tinytuya.OutletDevice('75162802e8xxxxxc1774', '192.168.219.109', 'LOCAL_KEY_HERE')
d2.set_version(3.3)
data = d2.status()
print('d2 result %r' % data)
Dear Jason!
Thank you for help. I tried tinytuya wizard. First part was okay but still had time to get polling local devices So I mixed the information gathered from tinytuya wizard and scan to see this result -
import tinytuya
d1 = tinytuya.OutletDevice('04200298dc4f22c9789d', '192.168.219.111', 'a7f77ff86aa963c0') d1.set_version(3.1) data = d1.status() print('d1 result %r' % data)
d2 = tinytuya.OutletDevice('75162802e868e76c1774', '192.168.219.109', 'daffa1aa3db81b9e') d2.set_version(3.3) data = d2.status() print('d2 result %r' % data)
d1 result {'devId': '04200298dc4f22c9789d', 'dps': {'1': False, '2': 0}} d2 result {'Error': 'Invalid JSON Response from Device', 'Err': '900', 'Payload': ''}
d1 seems to work fine.
I still have problems on Polling local information in tinytuya wizard.
Scanning local network for Tuya devices... 2 local devices discovered
Polling local devices... [Temperature Humidity Sensor] - 0 - Error: No IP found [Temperature Humidity Sensor 2] - 0 - Error: No IP found
Saving device snapshot data to snapshot.json
I gotta be patient!!!!
Upgrade TinyTuya to v1.2.11 and run the wizard again with an additional parameter:
# Upgrade
python -m pip install --upgrade tinytuya
# Run Wizard
python -m tinytuya wizard -nocolor 50
The 50 tells it to wait longer listening for the devices to broadcast their IP address. You can increase or decrease that number.
d1 result {'devId': '04200298dc4f22c9789d', 'dps': {'1': False, '2': 0}}
Unfortunately, based on the payload for D1 above, it seems that you may not be able to get the sensor data (temp or humidity) from the local network. It looks like it is only sending back DPS 1 and 2 and they look more like switch data points. Look at the tuya-raw.json
file generated by the wizard to see what DPS value should be available.
Hi! Thank you for your efforts.
I am a bit confused to follow your instruction to handle tuya devices 👍
C:\Windows\system32>tuya-cli wizard ? The API key from tuya.com: qp99stxxxxyk8uf6wca ? The API secret from tuya.com 83146ffe6f0a4xxxxxb5b4295786972 ? Provide a 'virtual ID' of a device currently registered in the app: eb376exxxxxdca582ao8my [ { name: 'Temperature Humidity Sensor', id: 'eb376e8xxxxxa582ao8my', key: 'a7f77fxxxxx963c0' }, { name: 'Temperature Humidity Sensor 2', id: 'eb3eexxxxx891f500gvr', key: 'daffaxxxxxb81b9e' } ]
(base) C:\Windows\system32>python -m tinytuya scan -nocolor
TinyTuya (Tuya device scanner) [1.2.10]
[Loaded devices.json - 2 devices]
Scanning on UDP ports 6666 and 6667 for devices (15 retries)...
Unknown v3.1 Device Product ID = jutTAkekSaIvLkun [Valid payload]: Address = 192.168.219.111, Device ID = 0420029xxxxx22c9789d, Local Key = , Version = 3.1 Status: {'1': False, '2': 0} Unknown v3.3 Device Product ID = key5nck4tavy43jp [Valid payload]: Address = 192.168.219.109, Device ID = 75162802e8xxxxxc1774, Local Key = , Version = 3.3 No Stats for 192.168.219.109: DEVICE KEY required to poll for status
Scan Complete! Found 2 devices.
Here's question. Which device ID should I use to run your first module,
import tinytuya
d = tinytuya.OutletDevice('DEVICE_ID_HERE', 'IP_ADDRESS_HERE', 'LOCAL_KEY_HERE') d.set_version(3.3) data = d.status() print('set_status() result %r' % data)
Thank you !