Betreiben Sie das Smartlife-Netzteil mit Python (de-IFTTT).

IFTTT schließlich aufgeladen

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.

Rauer Fluss

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.

Werkzeuginstallation

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.

Holen Sie sich die erforderlichen Parameter

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.

image.png

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'
  }
]

Beispielcode

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

Betreiben Sie das Smartlife-Netzteil mit Python (de-IFTTT).
Kinesis mit Python betreiben
Betreiben Sie Blender mit Python
Betreiben Sie Excel mit Python (1)
Betreiben Sie Excel mit Python (2)
Betreiben Sie Excel mit Python Open Pyxl
Betreiben Sie TwitterBot mit Lambda, Python
[Hinweis] Betreiben Sie MongoDB mit Python
[Python] [SQLite3] Betreiben Sie SQLite mit Python (Basic)
Bedienen Sie den Belegdrucker mit Python
Versuchen Sie, Facebook mit Python zu betreiben
Betreiben Sie ECHONET Lite-Haushaltsgeräte mit Python
[GCP] Betreiben Sie Google Cloud Storage mit Python
[Pyto] Betreibe die Taptic Engine des iPhone mit Python
[Python] Betreiben Sie den Browser automatisch mit Selenium
Betreiben Sie Haushaltsgeräte mit Python und IRKit
FizzBuzz in Python3
Scraping mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
So bedienen Sie die Discord API mit Python (Bot-Registrierung)
[Automatisierung] Betreiben Sie GitLab mit Python, um die Verwaltung von Anfragen zu vereinfachen
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Bearbeiten Sie Redmine mit Python Redmine
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python