[PYTHON] Fernbedienung der Klimaanlage von außen (per MQTT)

Hinweis

Sango, das in diesem Artikel verwendet wird, ist derzeit nicht verfügbar, da der Dienst beendet wurde. Verwenden Sie stattdessen etwas wie AWS IoT.

Zweck

Machen Sie es möglich, die Klimaanlage mit möglichst geringem Aufwand unterwegs zu betreiben. Es kostet mehr als wenn Sie Ihr eigenes mit Infrarotlichtempfangselement + Infrarot-LED wegen der Auslassung machen. Verwenden Sie MQTT, da die Leitung ein Wohnungstyp ist und nicht direkt von außen zugänglich ist.

Was vorzubereiten?

  1. Raspberry Pi mit installiertem Raspbian (ich habe 2 verwendet)
  2. Fortschritt der Infrarot-Fernbedienung Ich werde ein wenig Preis. Es ist jedoch der Schlüssel zum Auslassen.
  3. USB-Minikabel zum Anschließen von 1 und 2
  4. Smartphone App für MQTT Publish ↑ Ich habe die Android-App MQTT Dash verwendet. Es ist ziemlich einfach zu bedienen.
  5. Registrieren Sie sich in sango

Infrarot-Fernbedienung Advance Eine Windows-Desktop-App des Herstellers Bit Trade One. Ich denke, es ist eine gute Idee, den Betrieb und die Benutzerfreundlichkeit einmal zu überprüfen. http://bit-trade-one.co.jp/product/module/adir01p/

Verfahren

Erweiterte Infrarot-Fernbedienung

Lassen Sie uns zunächst die Infrarot-Fernbedienung vom Raspelkuchen aus bedienen.

1. Klon zur Hand

Erstellen Sie ein geeignetes Verzeichnis und verwenden Sie "git clone" als Werkzeug, um Infrared Remote Control Advance in der Befehlszeile zu bedienen.

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

2. Installieren Sie die erforderlichen Werkzeuge

Installieren Sie libusb-1.0.0. Erforderlich, um das Tool zu erstellen. [Ergänzung] Es scheint, dass "libusb-1.0.0-dev" ebenfalls erforderlich ist. 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 make. Sie können jetzt Infrared Remote Control Advance über die Befehlszeile verwenden.
$ cd bto_ir_advanced_cmd
$ make
$ sudo make install

4. Datenkonvertierung von Infrarot-Fernbedienungssignalen

Schließen Sie den Vorschub der Infrarot-Fernbedienung an den Raspelkuchen an und speichern Sie das Fernbedienungssignal der Klimaanlage. Erstellen Sie ein Einschalt-Signal für die Heizung, eine Stoppsignaldatei für die Klimaanlage usw.

** [Empfangen beginnen] **

$ bto_advanced_USBIR_cmd -r

(Drücken Sie zum Vorrücken der Infrarot-Fernbedienung die Taste auf der Fernbedienung.)

** [Ende des Empfangs] **

$ bto_advanced_USBIR_cmd -s

** [Signal in Datei schreiben] **

$ bto_advanced_USBIR_cmd -g | tee data.txt

5. Erstellen Sie ein Skript zum Senden

Erstellen Sie ein Skript zum Senden. (Ich habe es von einer Seite ausgeliehen, aber ich habe vergessen ... es tut mir leid)

$ 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. Signalübertragung der Infrarot-Fernbedienung

Signalübertragung der Infrarot-Fernbedienung mit dem erstellten Skript

$ ./send_ir data.txt

Hat die Klimaanlage funktioniert? Mit anderen Worten, wenn Sie " ./send_ir data.txt "remote ausführen können, können Sie die Klimaanlage von außen bedienen.

Fernbedienung

Verwenden Sie MQTT, um die Fernsteuerung über das Internet zu aktivieren. (Die Erklärung von MQTT wird weggelassen ...)

1. Überprüfen Sie die Verbindungsinformationen

Betreten Sie die Sango-Konsole und notieren Sie sich die MQTT-Verbindungsinformationen. image.png

2. Installieren Sie die erforderlichen Bibliotheken

Installieren Sie die Python-MQTT-Bibliothek.

$ pip install paho-mqtt

3. Abonnieren Sie die Skripterstellung

Erstellen Sie ein Skript zum Abonnieren von MQTT basierend auf den MQTT-Verbindungsinformationen. Mit der Meldung aircon_heat_on wird das Heizungssignal eingeschaltet Dies ist ein Beispiel, das ein Signal zum Stoppen der Klimaanlage mit der Meldung "aircon_off" sendet.

$ 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. Führen Sie das Abonnementskript im Hintergrund aus

Lass subscribe.py laufen Es scheint, dass hogehoge weiterhin im Hintergrund funktioniert, selbst wenn ssh mit $ nohup [hogehoge] & geschnitten wird. Es ist unglaublich.

$ nohup python subscribe.py &

5. Senden Sie den Steuerbefehl für die Klimaanlage

Stellen Sie über MQTT Dash eine Verbindung zu Sango her und senden Sie eine Nachricht an [Thema] "aircon_heat_on" oder "aircon_off"

Haben die Wörter "Klimaanlagenheizung EIN!" Oder "Klimaanlage AUS!" Auf der Raspeye-Konsole angezeigt und die Klimaanlage funktioniert? Jetzt können Sie die Klimaanlage einschalten, bevor Sie nach Hause gehen. Ist es das beste Ich denke, es kann auf verschiedene Dinge wie Fernsehen angewendet werden, also versuchen Sie bitte, verschiedene Dinge zu machen.

abschließend

――Wenn Sie sich für den Mechanismus der Infrarot-Fernbedienung interessieren, sollten Sie ein Infrarot-Lichtempfangselement, eine Infrarot-LED sowie ein Steckbrett und ein Experiment vorbereiten. --Bitte beachten Sie, dass die nicht erweiterte Infrarot-Fernbedienung wahrscheinlich über ein anderes Befehlszeilen-Tool zum Senden und Empfangen verfügt.

Recommended Posts

Fernbedienung der Klimaanlage von außen (per MQTT)
Steuern Sie das Matrix-LED-Panel von ROS aus
So greifen Sie von außen auf den Datenspeicher zu
So bedienen Sie Linux von außen Vorgehensweise