Es scheint, dass es ab dem 1. November 2020 in Rechnung gestellt wurde. Ich habe es bisher für Webhooks verwendet, aber es funktioniert nicht. Es bleibt nichts anderes übrig, als Alternativen zu entwickeln. Als ich es nachgeschlagen habe, scheint es, dass es von Python gesteuert werden kann, also habe ich es versucht.
Ich habe es nicht die ganze Zeit benutzt, ich wollte nur in der Lage sein, den Strom ein- und auszuschalten, also war meine Motivation, mir die Mühe zu machen, einen kostenpflichtigen Service zu erhalten.
Wenn Sie Tinytuya verwenden können, können Sie es grundsätzlich von Python aus steuern. Für die Steuerung mit tinytuya sind jedoch die Geräte-ID (= virtuelle ID), die IP-Adresse und der lokale Schlüssel erforderlich. Daher sind tuyapower (Python3) und tuya-cli (Knoten) erforderlich. Es gibt viele vordere Bühnen und es ist mühsam.
Das meiste davon ist immer noch auf Tinytuyas Github usw. geschrieben. Wird auch nur japanische Lokalisierung genannt.
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
Nur Tuya-Cli ist 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.
Wir haben 3 Smartlife-Geräte, daher werden 3 angezeigt. Wichtig ist die ID und IP-Adresse. Geben Sie diese ID als virtuelle tuya-cli-ID ein.
local key Tuya API key / Tuya secret
Gehen Sie von iot.tuya.com zur Cloud-Entwicklung und holen Sie sich die Tuya-API und das Tuya-Geheimnis.
Access ID = Tuya API key Access Secret = Tuya secret
local key
Holen Sie es sich, indem Sie den Tuya-Cli-Assistenten ausführen. Zielt auf Schlüsselbegriffe im JSON-Format ab.
$ 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: 'Kein Tee',
id: 'XXXXXXXXXXXXXXXXXXXX',
key: 'YYYYYYYYYYYYYYYY'
},
{
name: 'Anmerkung B.',
id: 'XXXXXXXXXXXXXXXXXXXX',
key: 'YYYYYYYYYYYYYYYY'
},
{
name: 'Hinweis C.',
id: 'XXXXXXXXXXXXXXXXXXXX',
key: 'YYYYYYYYYYYYYYYY'
}
]
Nun, das ist Pakuri. Wir werden die Informationen verwenden, mit denen wir oben zu kämpfen haben.
DEVICE_ID_HERE: Geräte-ID, virtuelle ID (erhalten bei tuyapower / tuya-cli) IP_ADDRESS_HERE: IP-Adresse (erhalten bei tuyapower) LOCAL_KEY_HERE: Schlüssel (erhalten von 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'])
Wenn Sie nur den Status (data = d.status ()) abrufen möchten, benötigen Sie keinen lokalen Schlüssel. Beim Aufruf von d.set_status wird ein Fehler zurückgegeben, wenn der richtige lokale Schlüssel nicht festgelegt ist. Bei korrekter Einstellung funktioniert dies wie folgt. Nach dem Übergeben von set_status (nicht switch_status) hat sich der aktivierte Status von False in True geändert.
$ python3 sample.py
Dictionary {'devId': '02XXXXXXXXXXXXXXXXeb', 'dps': {'1': False, '2': 0}}
State (bool, true is ON) False
State (bool, true is ON) True
Das Meross-System wird nach einer anderen Methode gesteuert. Es ist einfacher, von Python aus zu steuern.
Das Ende
Recommended Posts