Il semble qu'il ait été facturé à partir du 1er novembre 2020. Je l'ai utilisé sur des webhooks jusqu'à présent, mais cela ne fonctionne pas. Il n'y a pas d'autre choix que de développer des alternatives. Quand je l'ai recherché, il semble qu'il puisse être contrôlé par python, alors je l'ai essayé.
Je ne l'utilisais pas tout le temps, je voulais juste pouvoir allumer et éteindre l'appareil, donc ma motivation était de prendre la peine de recevoir un service payant.
Fondamentalement, si vous pouvez utiliser tinytuya, vous pouvez le contrôler à partir de python. Cependant, l'ID de périphérique (= ID virtuel), l'adresse IP et la clé locale sont nécessaires pour contrôler avec tinytuya. Par conséquent, tuyapower (Python3) et tuya-cli (node) sont nécessaires. Il y a de nombreuses étapes avant et c'est gênant.
--Get IP Addr, identifiant virtuel avec tuyapower
La plupart sont encore écrits sur le github de tinytuya, etc. Aussi appelé simple localisation japonaise.
tinytuya / tuyapower / tuya-cli
# Install required libraries
$ sudo apt-get install python-crypto python-pip # for RPi, Linux
$ python3 -m pip install pycryptodome # or pycrypto, pyaes or Crypto
$ python3 -m pip install tinytuya # or pytuya
$ python3 -m pip install tuyapower # this tuyapower module
$ npm i @tuyapi/cli -g
Seul tuya-cli est npm.
Device ID, IP address
$ python3 -m tuyapower
TuyaPower (Tuya compatible smart plug scanner) [0.0.25] tinytuya [1.0.3]
Scanning on UDP ports 6666 and 6667 for devices (15 retries)...
FOUND Device [Valid payload]: 192.168.x.xx
ID = 02xx11xxbcxxc2xxffxx, product = xxSUxxTWxx8ExxTw, Version = 3.1
Stats: on=False [Timeout polling device]
FOUND Device [Valid payload]: 192.168.x.xx
ID = 02xx77xxbcxxc2xx99xx, product = xxSUxxTWxx8ExxTw, Version = 3.1
Stats: on=False [Timeout polling device]
FOUND Device [Valid payload]: 192.168.1.62
ID = 03xx01xxdcxx22xxccxx, product = xx0VxxFcxxBTxxWt, Version = 3.1
Stats: on=True, W=0.1, mA=0.0, V=0.0 [OK]
Scan Complete! Found 3 devices.
Nous avons 3 appareils smartlife, donc 3 seront affichés. L'important est l'ID et l'adresse IP. Entrez cet ID comme ID virtuel tuya-cli.
local key Tuya API key / Tuya secret
Sur iot.tuya.com, accédez au développement cloud et obtenez l'API Tuya et le secret Tuya.
Access ID = Tuya API key Access Secret = Tuya secret
local key
Obtenez-le en exécutant l'assistant tuya-cli. Cible les termes clés au format json.
$ tuya-cli wizard
? The API key from tuya.com: nnxxxxxxxxxxxxxxxxur
? The API secret from tuya.com 53xxxxxxxxxxxxxxxxxxxxxxxxxxxxa3
? Provide a 'virtual ID' of a device currently registered in the app: 03xxxxxxxxxxxxxxxx08
[
{
name: 'Pas de thé',
id: 'XXXXXXXXXXXXXXXXXXXX',
key: 'YYYYYYYYYYYYYYYY'
},
{
name: 'Remarque B',
id: 'XXXXXXXXXXXXXXXXXXXX',
key: 'YYYYYYYYYYYYYYYY'
},
{
name: 'Remarque C',
id: 'XXXXXXXXXXXXXXXXXXXX',
key: 'YYYYYYYYYYYYYYYY'
}
]
Eh bien, c'est Pakuri. Nous utiliserons les informations avec lesquelles nous avons eu du mal ci-dessus.
DEVICE_ID_HERE: ID de l'appareil, ID virtuel (obtenu à tuyapower / tuya-cli) IP_ADDRESS_HERE: adresse IP (obtenue à tuyapower) LOCAL_KEY_HERE: clé (obtenue par tuya-cli)
import tinytuya
d = tinytuya.OutletDevice('DEVICE_ID_HERE', 'IP_ADDRESS_HERE', 'LOCAL_KEY_HERE')
d.set_version(3.3)
data = d.status() # NOTE this does NOT require a valid key vor version 3.1
# Show status of first controlled switch on device
print('Dictionary %r' % data)
print('State (bool, true is ON) %r' % data['dps']['1'])
# Toggle switch state
switch_state = data['dps']['1']
data = d.set_status(not switch_state)
data = d.status()
print('State (bool, true is ON) %r' % data['dps']['1'])
Si vous voulez juste obtenir le statut (data = d.status ()), vous n'avez pas besoin d'une clé locale. Lors de l'appel de d.set_status, une erreur sera renvoyée si la clé locale correcte n'est pas définie. S'il est réglé correctement, il fonctionne comme suit. Après avoir passé set_status (et non switch_status), l'état sous tension est passé de False à True.
$ python3 sample.py
Dictionary {'devId': '02XXXXXXXXXXXXXXXXeb', 'dps': {'1': False, '2': 0}}
State (bool, true is ON) False
State (bool, true is ON) True
Le système Meross est contrôlé par une autre méthode. C'est plus facile à contrôler depuis python.
La fin
Recommended Posts