はじめに
ラズパイで撮影した画像をTwitterに自動投稿するbotを作成したので、その手順を書き記したものです。
OSのインストールから完成まで、なるべく細かく手順を記載しました。
開発の参考になれば幸いです。
こんなひとに向けて書いています
- RaspberryPiを初めて触る人
- TwitterAPIを初めて触る人
経緯
在宅勤務になって、死ぬほど作業効率が超落ちました。
そう、私は「誰かに見られていないとサボってしまう意志の弱い人間」なのです。
作業風景を自動投稿して全世界に公開したら、そんなゴミクズでもPCの前でスマホを触らなくなるだろうし、
毎日スウェットではなく人に会えるような格好で仕事をするだろうと考え、当botを作成しました。
使ったもの
- Raspberry Pi Zero WH (RASPIZWHSC0065)
- Piカメラ Official V2 for 3/2/1/0 (913-2664)
- Raspberry Pi Zero W公式シェル新品、RPI zero ABSカバーシェルシェル(通常、GPIOおよびカメラ用)、2 15 cmカメラFFCフレキシブルケーブル付き
- MacBookPro 2012Mid
- microSD
1. RaspberryPiにOSをインストールする
https://www.raspberrypi.org/software/
上記のページからRaspberry Pi Imagerをインストールしましょう。
書き込みを行いたいSDカードをセットして、「WRITE」をクリックすればあとは勝手に書き込んでくれます。
2. ラズパイを無線LANに接続する
そのまま、macbookでSDカードにsshファイルと、wpa_supplicant.confを追加します。
2-1. sshファイルの追加
touch /Volumes/boot/ssh
2-2. wpa_supplicant.confファイルの追加
vi /Volumes/boot/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
country=JP
update_config=1
network={
ssid="wifiのSSIDを書くところ"
psk="wifiのパスワードを書くところ"
}
※ ssidと、pskは環境によって書き換えてください。
2-3. 接続テストを行う
ラズパイにSDカードをセット後、電源をつないで暫く待つ。
※ デーモンの起動とか色々あるから
そのあとMacからpingで疎通確認をしてみる。
$ping raspberrypi.local
PING raspberrypi.local (XXX.XXX.XXX.XXX): 56 data bytes
64 bytes from XXX.XXX.XXX.XXX: icmp_seq=0 ttl=64 time=6.344 ms```
OKっぽいのでssh接続する
ssh pi@raspberrypi.local
※ 初期パスワードは「raspberry」です。
3. Twitterのアプリ作成
3-1. Twitter developerの認証
Twitter Developersページにアクセスして、アプリの作成を行います。
3-1-1. 申請を開始する
「Create an app」をクリックします。
「appを作るのにはdevelopper accountとして認証される必要があるよ〜」 的なことを言っているのでApplyをクリック
3-1-2. アプリの作成理由を説明する
「お前はなんのためにTwitter使うねん」的なことを聞かれているので、画像の順番でクリック&クリック
3-1-4. メールアドレス認証を行う
3-1-5. 質問事項に答える
3-1-6. アプリを作成する理由を英語で説明する
英語が苦手な方は、Google翻訳で日本語文章を打ち込めばいいと思います。
※ アプリ作成時にも英作文があるので、文章残しておくとよいです。
私が作成した文章は下記に記載するので参考程度にどうぞ(コピペで認証通るのかどうかはわからない)
Since September of last year, my work has been working from home.
No one monitors, unlike when I was working in the office.
I'm a weak-willed person, so I skip it.
I want someone to monitor me by automatically posting the work status on the Raspberry Pi.
Someone watching me
3-1-7. 用途を入力する
3-1-8. 規約に同意する
チェック入れて、「Submit application」をクリックします。
これで申請は完了です。承認をもらえたらメールが届くので気長にまちましょう。
3-2. アプリ作成
申請が通ったら、いよいよTwitterAPIアプリを作成していきます。
3-2-1. プロジェクトの作成
届いたメールの「Confirm your email」をクリックします
コンソール画面の「create project」をクリックします
3-2-2. 必要事項を記入する
私の設定を公開するので参考にしてください
※ [前手順](# 3-1-6. アプリを作成する理由を英語で説明します。)で作成した英文をそのまま貼り付ければ良いです
※ App nameは重複が許されないみたいなので、適当に書き換えてください
完了後、上記の画面が表示されます。
アプリ作成に必要な情報が表示されるので、しっかりと控えておきましょう
こちらの情報は再作成するので、控えなくても大丈夫です
3−3. token情報を取得する
3-3-1. 権限の変更を行う
Appが作成できたら左のパネルに「App名」の項目が出現するので、「App名」 > 「Edit」の順にクリックして
権限変更画面に移動します。
作成するAppでは書き込みも行うので、「Read and Write」を選択して、「Save」をクリックします
3-3-2. token情報の生成と取得
「Keys and tokens」タブを選択したあと、
「API key & secret」 と 「Access token & secret」のRegenerateをクリックして、token情報を作成します。
※ 作成したtoken情報はアプリに設定する必要があるので控えておいてください
自動投稿スクリプトを作成する
GitHubでリポジトリを公開しているので、cloneしてください。
git clone https://github.com/nekonisi/monitor_me.git
そのあと、const.py.exampleをコピーしてconst.pyを作成、
値を前手順で取得した情報に書き換えてください
cd monitor_me/
cp const.py.example const.py
vim const.py
#!/usr/bin/env python
#coding: UTF-8
#設定値の定数化
CONSUMER_KEY = "YOUR_CONSUMER_KEY"
CONSUMER_SECRET = "YOUR_CONSUMER_SECRET"
ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"
ACCESS_SECRET = "YOUR_ACCESS_SECRET"
下記コマンドで動作確認をしましょう
python monitor_me.py
問題なければ、カメラで撮影された画像がtweetされているはずです。
crontabの登録
定期的に画像投稿をするためにcrontabを登録しましょう。
crontab -e
*/1 10,11,13-18 * * 1-5 python /home/pi/monitor_me/monitor_me.py
上記のように登録しておけば月〜金の10~19時(12時台はなし)で1分毎に投稿されます。
おわりに
今回、初めて記事を作成しました。
どんな内容でも、なにかフィードバックいただけると幸いです。
作業風景はコチラで投稿しています。
サボってたら怒ってください。