[PYTHON] Home Control von Cortana.

Steuern Sie Raspberry PI von Cortana unter Windows 10.

Cortana Cortana ist eine in Windows 10 integrierte Spracherkennung. image.png Erstellen Sie eine Verknüpfung im Startmenü, damit der Befehl in Windows 10 Cortana erkannt wird. Erstellen Sie einen Halter namens ifttt und platzieren Sie die Verknüpfung. Zum BeispielImage.png "Schalten Sie das Licht ein Wenn Sie "" öffnen, wird die Verknüpfung ausgeführt. ** Achtung ** Unmittelbar nach dem Platzieren wird es nicht erkannt. Klicken Sie zum Ausführen darauf.

C:\Users\{Nutzername}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ifttt

Erstellen Sie eine Verknüpfung für den folgenden Ausführungsbefehl.

image.png

image.png

image.png

Das Verbindungsziel ist das folgende Programm.

C:\Users\hirat\Anaconda3\python.exe C:/Users/hirat/source/repos/shortCut0/ifttt.py TV

ifttt.py. Ich habe einen einfachen Webanforderungsbefehl erstellt. Wenn Sie eine Anfrage an ifttt mit Python codieren

ifttt.py


import os,sys,requests
if __name__ == '__main__':    r=requests.post('https://maker.ifttt.com/trigger/HomeControl/with/key/{Schlüsselzeichenfolge}',
                   {'value1':sys.argv[1]})
    print(r.text)

Installieren der Windows Script Host-Bibliothek

pip install pypiwin32

Verwenden Sie Windows Script Host, um programmgesteuert Windows-Verknüpfungen zu erstellen.

shortcut0.py


import win32api as WScript
import win32com.client
if __name__ == '__main__':
    cortana={"1 Kanal":"1","2 Kanäle":"2","3 Kanäle":"3","4 Kanäle":"4","5 Kanäle":"5","6 Kanäle":"6","7 Kanäle":"7","8 Kanäle":"8","9 Kanäle":"9","10 Kanäle":"10","11 Kanal":"11","12 Kanäle":"12","TV-Netzteil":"TV","TV-Kanal Plus":"cup","Fernsehkanal minus":"cdwn","Erhöhen Sie die TV-Lautstärke":"vup","Verringern Sie die TV-Lautstärke":"vdwn","Stumm":"vcut","bs":"bs","cs":"cs","bs1":"bs1","bs2":"bs2","bs3":"bs3","bs4":"bs4","bs5":"bs5","bs6":"bs6","bs7":"bs7","bs8":"bs8","bs9":"bs9","bs10":"bs10","bs11":"bs11","bs12":"bs12","inUp":"inUp","inDwn":"inDwn","ent":"ent","Mach das Licht an":"on","Schalte das Licht aus":"off","Favorit":"fav","Sicherheitslicht":"small","Hell":"lup","Dunkel":"ldwn","Schalten Sie die Klimaanlage ein":"ac","Stoppen Sie die Klimaanlage":"acoff","Schalten Sie die Heizung ein":"heeting","Entfeuchten":"Joshitsu","Funkstrom":"ron","Radio 1":"r1","Radio 2":"r2","Radio 3":"r3","Radio 4":"r4","Radio 5":"r5","Radio 6":"r6","Radio 7":"r7","Radio 8":"r8","Radio 9":"r9","Radio 0":"r0","Erhöhen Sie die Lautstärke des Radios":"R+","Verringern Sie die Lautstärke des Radios":"R-","Radio nächster Kanal":"r>"}
    for key,item in cortana.items():    
        WshShell = win32com.client.Dispatch("WScript.Shell")
        shortCut=WshShell.CreateShortcut("C:/Users/hirat/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/ifttt_p/%s.lnk"%key)
        shortCut.TargetPath="python.exe"
        shortCut.Arguments = "C:/Users/hirat/source/repos/shortCut0/ifttt.py %s"%item
        shortCut.IconLocation ="C:/Users/hirat/source/repos/shortCut0/favicon.ico"
        shortCut.Save()

Webhooks definieren. image.png

image.png

Sie können die ifttt-Anfrage von der folgenden URL erhalten. https://ifttt.com/maker_webhooksから image.png

Verwenden Sie den MQ-Dienst.

MQ (Message Queuing) ist eine der Methoden zum Senden und Empfangen von Daten zwischen verschiedenen Softwareprogrammen. Anstatt die Daten direkt weiterzuleiten, werden sie vorübergehend in der Software eines Drittanbieters abgelegt, sodass sowohl der Sender als auch der Empfänger das gewünschte Timing verwenden können. Eine Methode, die die Sende- / Empfangsverarbeitung mit ermöglicht. Dieses Mal verwende ich es, um die Schnittstelle zwischen dem PC und Raspberry PI zu verbinden. Ursprünglich wird es verwendet, um den Hauptrahmen und verschiedene Systeme wie Geldautomaten zu verbinden.

image.png

BeeBottle ist ein kostenloser MQ-Service.

image.png Unmittelbar nach dem Anmelden werden ein Test und ein Kanal erstellt. image.png

image.png Notieren Sie sich den Kanal-Token. image.png Öffnen Sie die Konsole und stellen Sie sicher, dass Sie senden und empfangen können. image.png

{ "channel": "test", "resource": "res", "eid": "test.res", "data": "Hello World", "ts": 1573277790737 }

Wenn Sie und Hallo Welt von Publish abonnieren können, ist es OK! Testen Sie als Nächstes, ob das im LAN verbundene Raspberry PI-Python-Programm abonniert werden kann. Laden Sie das Zertifikat herunter, um von https://beebotte.com/certs/mqtt.beebotte.com.pem darauf zuzugreifen.

Testprogramm für Raspberry pi zum Abonnieren

test.py


import paho.mqtt.client as mqtt
import json
HOST = 'mqtt.beebotte.com'
PORT = 8883
CA_CERTS = 'mqtt.beebotte.com.pem'
TOKEN = '{Token-Zeichenfolge}'
TOPIC = 'test/res' #Kanal/Ressource
#Wenn verbunden
def on_connect(client, userdata, flags, respons_code):
    print('on_connect status {0}'.format(respons_code))
#Wenn Sie eine Nachricht erhalten
def on_message(client, userdata, msg):
    msg=json.loads(msg.payload.decode("utf-8"))
    mqmsg=msg['data']
    print(mqmsg)
    

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.username_pw_set('token:%s' % TOKEN)
client.tls_set(CA_CERTS)
client.connect(HOST, PORT)
client.subscribe(TOPIC)
print('start')
#Ereignisschleife
while True:
    try:
        client.loop_start()
    except:
        break
print('exit')

Veröffentlichen Sie Tools https://beebotte.com/api/play

image.png

Wenn Sie dies in einem Python-Programm codieren

publish.py


import os,sys,requests,json
if __name__ == '__main__':
    payload = {'data': sys.argv[1]}
    r=requests.post('https://api.beebotte.com/v1/data/write/test/res?token=token_X5Gyvy1ymKHzpBQd',payload)
    print(r.text)

Ausführungsergebnis

C:\Users\hirat\source\repos\mqtt>python publish.py "Hallo Welt Tokio"
true

C:\Users\hirat\source\repos\mqtt>test.py
start
on_connect status 0
Hallo Welt Tokio
exit

Curl zum Testen

curl -i -H "Content-Type: application/json" -X POST -d '{"data":"Hello World form curl"}' https://api.beebotte.com/v1/data/write/test/res?token=token_X5Gyvy1ymKHzpBQd

image.png

Wenn Sie es einbauen, wird es funktionieren.

Recommended Posts

Home Control von Cortana.
Studie aus Python Hour2: Steueranweisung
Steuern Sie das Matrix-LED-Panel von ROS aus