Je publierai l'exemple de code de fonctionnement de l'électroménager par ECHONET Lite avec python.
Ce que je veux faire
La version Ruby peut être trouvée dans Contrôler les appareils électroménagers ECHONET Lite avec Ruby, veuillez donc y jeter un œil.
● Purificateur d'air (compatible avec ECHONET Lite) ⇒ Sharp KI-EX100 ● Windows 7 ● Python 2.7.11
ip = Veuillez utiliser l'adresse IP de votre appareil pour la partie "192.168. ○. ○".
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))
Ce qui est différent dans le programme ci-dessus Uniquement dans la variable message sur la 7ème ligne
Quand ON message = "1081000005FF010135016101800130"
Quand OFF message = "1081000005FF010135016101800131"
Avec un programme qui envoie une demande d'état de fonctionnement des appareils ménagers L'explication est divisée en programmes qui reçoivent l'état de fonctionnement des appareils ménagers.
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()
Si vous pouvez bien le recevoir, le message suivant devrait s'afficher Les informations correctes se trouvent sur la première ligne. La deuxième ligne n'est pas codée en hexadécimal et ne s'affichera pas correctement. Je voulais juste vous dire quelque chose d'utile car recvform vous indique l'adresse IP de l'expéditeur. Cette fois, j'ai mis la 11e ligne de l'exemple de code pour le test, mais supprimez-la car c'est du code inutile.
À propos, la 9e ligne de l'exemple de code
data[0].endode("hex")
Semble fonctionner uniquement avec la série python2. Je n'ai donc pas essayé 3 séries, alors veuillez trouver et exécuter la méthode de codage pour en faire un nombre hexadécimal par vous-même.
Si vous ne comprenez pas ce que vous dites, par exemple 3 ou 2, exécutez ce qui suit à l'invite de commande ou au terminal.
$ python --version
L'affichage est Dans le cas de python 2. ○. ○, c'est 2 système Dans le cas de python 3. ○. ○, il s'agit de 3 séries
Recommended Posts