プログラミング素人のArduino

技術屋の末端。プログラミングは専門外。 電気回路も専門外です。 コードに間違いなど見つけられたら、気軽にコメントください。 VC#、ラズパイ始めました。

ラズパイから通知を送信 その1(Twitter)

Raspberry Piで電子工作を進めているとラズパイから何らかの通知を送りたくなることがあります。
いつもコンソールを立ち上げている訳にはいかないので。

そこで、LANに標準で接続するラズパイだからこそ、ラズパイとpythonwebサービスを組み合わせてスマホに通知することをやってみます。

まずは、こちらのブログでも何度か取り上げていて私が最も力を入れているTwitterです。
TwitterにはDirect Messageがありますので、pythonでDirect Messageを送信し、スマホのTwiiterアプリやブラウザで受信します。

Direct Messageももちろんtweepyに盛り込まれていますので、公式Referenceをみて実装しました。
API Reference — tweepy 3.5.0 documentation

API.send_direct_message(user/screen_name/user_id, text)

こちらが、Direct messageのAPI classです。
()のなかがパラメータでスクリーン名もしくはユーザーID、ユーザー名と実際に送りたいMessage(text)であると推測できます。私はスクリーン名を使用しました。
スクリーン名とは@に続いて表示される、↓の例では "MomentsJapan" のようなもののことです。
ユーザーIDはint型の数字で表せれる固有の番号です。user classのデータを取得すると調べることができます。
userが "Twitter モーメント" のことでしょう(未確認なので使う場合は確認してね)
f:id:s51517765:20171007220108j:plain

# -*- coding: utf-8 -*-
import datetime
import tweepy

CONSUMER_KEY="****************"
CONSUMER_SECRET="****************"
ACCESS_TOKEN="****************"
ACCESS_SECRET="***************"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

def direct_messag():
    tdatetime = dt.now()
    api.send_direct_message(screen_name="宛先のスクリーン名",text="test "+tdatetime.strftime('%H%M%S'))

defで始まるものが、関数(メソッド)でapi.send_direct_messageで送信することができます。
ちなみに、Direct Messageは自分あてにも送信できるので、ラズパイから自身のアカウントへDMをを送信しスマホで確認することもできます。
text(DMの本文)はstring型なので、その中に含める内容はアイデア次第です。
f:id:s51517765:20171007221338j:plain

ちなみに、↑が私が現在ラズパイで運用しているTwitterアカウントです。
twitter.com