LoginSignup
16
15

More than 5 years have passed since last update.

Python と IRKit で家電を操作する

Last updated at Posted at 2015-11-16

Pythonの勉強がてらIRKitのAPIをたたいて家電を操作してみる。
IRKitそのものと、API仕様などは、下記参照。
簡単に言うとリモコンの赤外線を覚えてくれて、それをネット越しに叩けるようにするデバイス。

概要

ca3258ff-0d29-d8f6-1ddf-568b3ca4aa02.png

コード

#!/usr/bin/env python
# coding: utf-8

import requests
import json


class IrkitInternetAPI:
    endpoint = "https://api.getirkit.com/1"
    clientkey = ""
    deviceid = ""

    def __init__(self, clientkey, deviceid):
        self.clientkey = clientkey
        self.deviceid = deviceid

    def get_messages(self):
        params = {
            'clientkey': self.clientkey,
        }

        headers = {'X-Requested-With': "irkit-python"}
        url = self.endpoint + "/messages"

        r = requests.get(url, headers=headers, params=params)

        if r.status_code == 200:
            return r.json()

    def post_messages(self, data):
        message = {
            "format": "raw",
            "freq": 38,
            "data": data
        }
        message = json.dumps(message)

        params = {
            'clientkey': self.clientkey,
            'deviceid': self.deviceid,
            'message': message
        }

        url = self.endpoint + "/messages"
        headers = {'X-Requested-With': "irkit-python"}
        r = requests.post(url, headers=headers, params=params)


def main():
    clientkey = "your_clientkey"
    deviceid = "your_deviceid"

    irkit = IrkitInternetAPI(clientkey, deviceid)

    # 直近の 赤外線信号を取得(すぐ消えるので、直前にIRKitに向けてリモコンをピってやる)
    messages = irkit.get_messages()
    data = messages['message']['data']

    # それをそのまま再度呼び出し
    irkit.post_messages(data)


if __name__ == '__main__':
    main()

とりあえず、電気がついたり、消えたりした。
プログラムから家電が操れるのは面白い!

curl で叩けばこんなにコード書かなくても済むけど、今回は練習ということで。

参考

16
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15