[PYTHON] Contrôler à distance le climatiseur de l'extérieur (par MQTT)

Mise en garde

Le sango utilisé dans cet article est actuellement indisponible car le service est terminé. À la place, vous devriez utiliser quelque chose comme AWS IoT.

Objectif

Permet de faire fonctionner le climatiseur en déplacement avec le moins d'effort possible. Cela coûte plus cher que si vous fabriquez le vôtre avec un élément récepteur de lumière infrarouge + LED infrarouge en raison de l'omission. Comme la ligne est de type appartement et n'est pas accessible directement de l'extérieur, utilisez MQTT.

Quoi préparer

  1. Raspberry Pi avec raspbian installé (j'ai utilisé 2)
  2. Avance de la télécommande infrarouge Je vais prix un peu. Cependant, c'est la clé de l'omission.
  3. Mini câble USB pour connecter 1 et 2
  4. Application smartphone pour MQTT Publish ↑ J'ai utilisé l'application Android MQTT Dash. C'est assez facile à utiliser.
  5. Inscrivez-vous sur sango

Infrared Remote Control Advance Une application de bureau Windows créée par Bit Trade One, le fabricant. Je pense que c'est une bonne idée de vérifier une fois le fonctionnement et la convivialité. http://bit-trade-one.co.jp/product/module/adir01p/

procédure

Fonctionnement avancé de la télécommande infrarouge

Tout d'abord, faisons fonctionner la télécommande infrarouge à partir de la tarte à la râpe.

1. clone à portée de main

Créez un répertoire approprié et utilisez git clone comme outil pour utiliser Infrared Remote Control Advance sur la ligne de commande.

$ mkdir /home/pi/aircon
$ cd /home/pi/aircon
$ git clone https://github.com/Drunkar/bto_ir_advanced_cmd.git

2. Installez les outils requis

Installez libusb-1.0.0. Requis pour créer l'outil. [Ajout] Il semble que libusb-1.0.0-dev soit également requis. https://qiita.com/Kaz-su/items/93ec120b4bb90de7da2b#comment-2ff5f5b73f0ff8ecea44

$ sudo apt-get install libusb-1.0.0
$ sudo apt-get install libusb-1.0-0-dev
  1. make «faire». Vous pouvez maintenant utiliser Infrared Remote Control Advance à partir de la ligne de commande.
$ cd bto_ir_advanced_cmd
$ make
$ sudo make install

4. Conversion de données des signaux de télécommande infrarouge

Connectez l'avance de la télécommande infrarouge à la tarte à la râpe et limez le signal de télécommande du climatiseur. Créez un signal de chauffage ON, un fichier de signal d'arrêt du climatiseur, etc.

** [Commencer à recevoir] **

$ bto_advanced_USBIR_cmd -r

(Vers l'avance de la télécommande infrarouge, appuyez sur le bouton de la télécommande.)

** [Fin de la réception] **

$ bto_advanced_USBIR_cmd -s

** [Ecrire le signal dans le fichier] **

$ bto_advanced_USBIR_cmd -g | tee data.txt

5. Créez un script pour l'envoi

Créez un script pour l'envoi. (Je l'ai emprunté à la page de quelqu'un, mais j'ai oublié ... je suis désolé)

$ vi send_ir

send_ir


#!/usr/bin/python3
import os
import sys

def send(code):
    os.system('/usr/local/bin/bto_advanced_USBIR_cmd -d ' + code)

if __name__ == '__main__':
    argv = sys.argv
    try:
        filename = argv[1]
        if os.path.isfile(filename) is True:
            f = open(filename, 'r')
            code = f.read()
            send(code)
            sys.exit(0)
        else:
           sys.stderr.write('File not found.\n')
           sys.exit(-1)

    except (OSError, IndexError):
        sys.stderr.write('File not found.\n')
        sys.exit(-1)

6. Transmission du signal de la télécommande infrarouge

Transmission du signal de la télécommande infrarouge avec le script créé

$ ./send_ir data.txt

Le climatiseur a-t-il fonctionné? En d'autres termes, si vous pouvez exécuter "./send_ir data.txt`" à distance, vous pouvez faire fonctionner le climatiseur de l'extérieur.

Télécommande

Utilisez MQTT pour activer le contrôle à distance sur Internet. (L'explication de MQTT est omise ...)

1. Vérifiez les informations de connexion

Entrez dans la console sango et notez les informations de connexion MQTT. image.png

2. Installez les bibliothèques requises

Installez la bibliothèque python mqtt.

$ pip install paho-mqtt

3. Création de scripts d'abonnement

Créez un script pour vous abonner à MQTT en fonction des informations de connexion MQTT. Message ʻAircon_heat_on pour signaler le chauffage ON, Ceci est un exemple qui envoie un signal pour arrêter le climatiseur avec le message ʻaircon_off.

$ vi subscribe.py

subscribe.py


# coding:utf-8
import paho.mqtt.client as mqtt
import commands

def on_connect(client, userdata, flags, rc):
        print('Connected with result code '+str(rc))
        client.subscribe("[topic]")

def on_message(client, userdata, msg):
        print(msg.topic + ' ' + str(msg.payload))
        if msg.payload == "aircon_heat_on":
                print "aircon heat ON!"
                print commands.getoutput("./usbir_send ./aircon_heat_on.txt")
        if msg.payload == "aircon_off":
                print "aircon OFF!"
                print commands.getoutput("./usbir_send ./aircon_off.txt")

if __name__ == '__main__':

        username = '[username]'
        password = '[password]'
        host = 'lite.mqtt.shiguredo.jp'
        port = 1883

        client = mqtt.Client()
        client.on_connect = on_connect
        client.on_message = on_message

        client.username_pw_set(username, password=password)
        client.connect(host, port=port, keepalive=60)
        client.loop_forever()

4. Exécutez le script d'abonnement en arrière-plan

Continuez à exécuter subscribe.py Il semble que hogehoge continuera à fonctionner en arrière-plan même si ssh est coupé avec $ nohup [hogehoge] &. C'est étonnant.

$ nohup python subscribe.py &

5. Envoyer la commande de contrôle du climatiseur

Depuis MQTT Dash, connectez-vous à sango et envoyez un message à [sujet] " aircon_heat_on " ou " aircon_off "

Est-ce que les mots «aircon heat ON!» Ou «aircon OFF!» Apparaissent sur la console Raspeye et le climatiseur a fonctionné? Vous pouvez maintenant allumer le climatiseur avant de rentrer chez vous. Est-ce le meilleur? Je pense que cela peut être appliqué à diverses choses telles que la télévision, alors essayez de faire différentes choses.

en conclusion

――Si vous êtes intéressé par le mécanisme de la télécommande infrarouge, vous devez préparer un élément récepteur de lumière infrarouge, une LED infrarouge et une planche à pain et expérimenter.

Recommended Posts

Contrôler à distance le climatiseur de l'extérieur (par MQTT)
Contrôlez le panneau LED Matrix depuis ROS
Comment accéder à la banque de données de l'extérieur
Comment faire fonctionner Linux depuis l'extérieur Procédure