1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonとAPIを使ってツイートしたらライトをつける

Last updated at Posted at 2022-01-22

#1. はじめに
今回はTwitterで「ライトつけて」とつぶやくだけで部屋のライトがつくプログラムを作ります。
ライトをつけるにはSwitch Bot hubが必要なので気を付けてください。

#2. Python開発環境を作る
##2.1 Pythonをダウンロードする
下記のURLへアクセスしてください。

python.jpg
次に最新バージョンの Python をダウンロードします。
画面に表示されている「Latest Python 3 Release - Python 3.10.1」をクリックしてください。
python2.jpg
一番下までスクロールすると、ソースコードやOSごとに用意されたダウンロード用リンクの一覧が表示されます。
「Windows installer (64-bit)」と書かれたリンクをクリックしダウンロードしてください。

##2.2 Pythonをインストールする
続いてインストールを行います。
ダウンロードしたファイルをダブルクリックするとインストーラーが起動してインストールが開始されます。
python3.jpg
Python をインストールしたあとに Path を自動で設定してもらえるように「Add Python 3.10 to PATH」にチェックをしましょう。
そしてインストール先を変更するなどカスタムする場合以外は「Install Now」をクリックしインストールしましょう。
python4.jpg
最後にこの画面が表示されたら「Close」をクリックしインストールは終わりです。

##2.3 試しに使ってみる
自分のPCでPythonが使えるようになっているかを確認してみましょう!
Pythonを実行するには「コマンドプロンプト」と言うツールを使います。

今回はPythonがインストールされているかどうかを確認します。
下記のコマンドを入力して、「Enter」キーを押してください。

python --version

下記のように、Python 3.6.5 と表示されれば、正常にPythonのインストールができています。

Python 3.10.1

#3. Switch Botのトークンを取得する
API認証用のトークンを取得します。
SwitchBotアプリの 設定 > アプリバージョンを10回ほどタップすると以下のように表示されます。
switchbot.jpg
開発者向けオプションからトークンを確認できます。

#4. Switch BotのデバイスIDを調べる
##4.1はじめに
Pythonを書くにはVSCodeなどのエディターが必要です。
下記の記事を参考にしてインストールしてください。

##4.2 使うモジュールをインストールする
モジュールをインストールするにはpipコマンドを使います。
下記のコマンドを入力して、「Enter」キーを押してください。

pip install requests

下記のように、一番下に Successfully と表示されれば、モジュールのインストールができています。

Successfully installed requests-2.26.0

##4.3 実際にデバイスIDを調べる
まず、下記のプログラムを任意の場所に保存しましょう。

SearchID.py
import requests
import json

token = "先ほど取得したトークン"

url = "https://api.switch-bot.com/v1.0/devices/"
h = {"Authorization": token, "Content-Type": "application/json; charset=utf8"}

reply = json.loads(requests.get(url, headers=h).text)
message = reply['message']

if message == 'success':
    list = reply['body']['infraredRemoteList']
    item = len(list)
    id = None

    name = input("デバイス名は?:")

    for i in range(1, item):
        if name == list[i-1]['deviceName']:
            id = list[i-1]['deviceId']
    
    if id:
        print(id)
    else:
        print('Error!')
else:
    print('Error:', message)

次に、「C:\Users\Username\Documents\Python\SearchID.py」のとろは先ほど保存したプログラムのパスに変更し、実行してください。

python C:\Users\Username\Documents\Python\SearchID.py

「デバイス名は?」と聞かれたらSwitch Botで設定しているライトの名前を入力し、「Enter」キーを押してください。
成功すると下記のように表示されます。
後で使うのでどこかにメモしておいてください。

もし、「Error: Unauthorized」が表示されたらトークンを間違えていないか確認してください。
もしくは、「error!」が表示されたらデバイス名を間違えていないか確認してください。

デバイス名は?:ライト
00-000000000000-00000000

#5. ツイートしたらライトをつける
##5.1 はじめに
Twtter APIを使うにはキーが必要になります。
下記のサイトを参考にして申請し、キーを取得してください。

##5.2 使うモジュールをインストールする
下記のコマンドを入力して、「Enter」キーを押してください。

pip install tweepy

下記のように、一番下に Successfully と表示されれば、モジュールのインストールができています。

Successfully installed tweepy-4.4.0

##5.3 実際に動かしてみる
まず、下記のプログラムを任意の場所に保存しましょう。

TurnOnLight.py
import tweepy
import re
import requests

#Twitter用定数
BT = "先ほど取得したBearer Token"
CK = "先ほど取得したConsumer Key"
CS = "先ほど取得したConsumer Secret"
AT = "先ほど取得したAccess Token"
ATS = "先ほど取得したAccess Token Secret"

#Switch Bot用定数
token = "前回取得したトークン"
url = "https://api.switch-bot.com/v1.0/devices/前回調べたデバイスID/commands"
h = {"Authorization": token, "Content-Type": "application/json; charset=utf8"}
j = {"command": "turnOn", "parameter": "default", "commandType": "command"}

#自分のTwtterのユーザーネーム
UN = "ユーザーネーム"

#認証
client = tweepy.Client(bearer_token=BT, consumer_key=CK, consumer_secret=CS, access_token=AT, access_token_secret=ATS)

#自分のID検索
search = str(client.get_user(username=UN))
UID = re.findall("(?<=User id=)\w+", search)[0]

#ツイートとツイートID検索
tweets = str(client.get_users_tweets(id=UID))
TID = re.findall("(?<=Tweet id=)\w+", tweets)[0]
tweet = re.findall("(?<=text=)\w+", tweets)[0]

#ツイート検索&実行
if tweet == "ライトつけて":
    client.create_tweet(in_reply_to_tweet_id=TID, text="つけました!")
    requests.post(url, headers=h, json=j)
    print("実行しました!")
elif tweet == "ライトけして" :
    client.create_tweet(in_reply_to_tweet_id=TID, text="けしました!")
    requests.post(url, headers=h, json=j)
    print("実行しました!")
else:
    print("見つかりませんでした")

次に、「ライトつけて」とツイートしてください。
その後に、「C:\Users\Username\Documents\Python\TurnOnLight.py」のとろは先ほど保存したプログラムのパスに変更し、実行してください。

python C:\Users\Username\Documents\Python\TurnOnLight.py

成功するとライトがつき、下記のように表示され、リプライに「つけました!」と送信されます。

実行しました!

もしツイートが見つからなければ下記のように表示されます。
ツイートしたのに見つからない場合は、少しタイムラグがあるようなので数秒後にやりなおしてください。

見つかりませんでした

#6. 定期的に実行させるには
毎回ツイートした後にプログラムを実行させるのは大変ですよね
なので、Herokuなどを利用して定期的に実行しましょう。
下記の記事を参考にして導入してみてください。

#7. おわりに
今回の記事はどうだったでしょうか。
誤字、脱字があれば教えてくれるとありがたいです。
また、プログラムのわからないことや質問、ミスなどありましたらコメントしてください。

今回作ったプログラムはGitHubにありますので、ご自由にお使いください!

1
1
3

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?