Ich werde den Beispielcode für den Betrieb von Haushaltsgeräten von ECHONET Lite mit Python veröffentlichen.
Was ich machen will; was ich vorhabe zu tun
Die Ruby-Version finden Sie unter Steuern von ECHONET Lite-Haushaltsgeräten mit Ruby. Schauen Sie also dort nach.
● Luftreiniger (kompatibel mit ECHONET Lite) ⇒ Sharp KI-EX100 ● Windows 7 ● Python 2.7.11
ip = "192.168. ○. ○" Bitte geben Sie die IP Ihres Geräts ein
ON_send.py
# coding: utf-8
import socket
ip = "192.168.2.166"
ECHONETport = 3610
message = "1081000005FF010135016101800130"
msg = message.decode("hex")
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(msg, (ip, ECHONETport))
OFF_send.py
# coding: utf-8
import socket
ip = "192.168.2.166"
ECHONETport = 3610
message = "1081000005FF010135016101800131"
msg = message.decode("hex")
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(msg, (ip, ECHONETport))
Was ist anders im obigen Programm Nur in der Nachrichtenvariablen in der 7. Zeile
Wenn sie auf message = "1081000005FF010135016101800130"
Wenn AUS message = "1081000005FF010135016101800131"
Mit einem Programm, das eine Anfrage nach dem Betriebsstatus von Haushaltsgeräten sendet Die Erklärung ist in Programme unterteilt, die den Betriebsstatus von Haushaltsgeräten erhalten.
get_send.py
# coding: utf-8
import socket
ip = "192.168.2.166"
ECHONETport = 3610
message = "1081000005FF0101350162018000"
msg = message.decode("hex")
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(msg, (ip, ECHONETport))
receive.py
# coding: utf-8
import socket
port = 3610
bufsize = 4096
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", port))
data = sock.recvfrom(bufsize)
print data[0].encode('hex')
print data
sock.close()
Wenn Sie es gut empfangen können, sollte die folgende Meldung angezeigt werden Die richtigen Informationen befinden sich in der ersten Zeile. Die zweite Zeile ist nicht hexadezimal codiert und wird nicht korrekt angezeigt. Ich wollte Ihnen nur etwas Nützliches sagen, weil recvform Ihnen die IP des Absenders mitteilt. Dieses Mal habe ich die 11. Zeile des Beispielcodes zum Testen eingefügt, aber bitte löschen Sie sie, da es sich um unnötigen Code handelt.
Übrigens die 9. Zeile des Beispielcodes
data[0].endode("hex")
Scheint nur mit der Python2-Serie zu funktionieren. Ich habe also noch keine 3 Serien ausprobiert. Suchen Sie daher die Codierungsmethode und führen Sie sie aus, um sie selbst zu einer Hexadezimalzahl zu machen.
Wenn Sie nicht verstehen, was Sie sagen, z. B. 3 oder 2, führen Sie an der Eingabeaufforderung oder am Terminal die folgenden Schritte aus.
$ python --version
Das Display ist Im Fall von Python 2. ○. ○ ist es 2 System Im Fall von Python 3. ○. ○ handelt es sich um 3 Serien
Recommended Posts