LoginSignup
0
1

More than 3 years have passed since last update.

Raspberry Pi Zero WH カメラモジュールで遊ぶ その2

Last updated at Posted at 2020-08-14

前→Raspberry Pi Zero WH カメラモジュールで遊ぶ その1
次→未定

本記事では、discordと連携した監視カメラアプリを作ってみます。

1. 各種pythonライブラリの追加

1.1. discord

discordをインストールします。

# discordのインストール
$ sudo pip3 install discord

2. 監視カメラアプリの作成

2.1. discordサーバ作成

discordアプリから、「サーバーを追加」→「サーバーを作成」→「新規作成」でサーバを作成します。(サーバ名はお好きに。)

10.png
11.png
12.png

2.2. Botアカウント作成

https://discord.com/developers/applications/にアクセスします。
"New Application" → "Create"でアプリを作成します。(アプリ名はお好きに。)

13.png
14.png

Applicationsタブから、作成されたアプリを選択して、Botタブに移動します。
"Add Bot" → "Yes, do it!"でBotを追加します。(追加後、Bot名の後ろに"_bot"を付けました。)
Botのトークンは"Build-A-Bot"欄のトークンからコピーしておきます。(後で使います。)

15.png
16.png
17.png

2.3. サーバへの登録

OAuth2タブから、サーバに参加させるための認証URLを作成します。
"OAuth2 URL Generator" → "SCOPES"でbotにチェックし、作成されたURLをコピーしてアクセスします。

18.png

BOTを追加する場所を聞かれるので、先に作成したサーバを選択し、「認証」をクリックします。
「ロボットではありません」にチェックし、「認証しました」と表示されれば登録は完了です。

19.png

2.4. チャネルの作成とIDのコピー

discordアプリから、サーバを選択し、テキストチャネル横の"+"をクリックしてチャネルを作成します。

20.png

作成したテキストチャネルにポインタを合わせ、右クリックしてチャネルIDをコピーしておきます。(後で使います。)

21.png

2.5. 監視カメラアプリテスト

discordのチャネルに"surveillance"とメッセージを送ると、静止画を撮影してdiscordに送信するBotのスクリプト部分です。
YOUR_CHANNEL_IDとYOUR_BOT_TOKEN部分を、先ほどコピーしておいたチャネルID、Botトークンと入れ替えてください。

discord_bot_test.py

import picamera
import discord
import asyncio
import datetime

def discord_bot():
    print('### Bot is running.')
    client = discord.Client()

    chid = YOUR_CHANNEL_ID
    token = 'YOUR_BOT_TOKEN'

    @client.event
    async def on_ready():
        channel = client.get_channel(chid)
        await channel.send("I've joined!")

    @client.event
    async def on_message(message):
        if message.content == 'surveillance':
            with picamera.PiCamera() as camera:
                camera.resolution = (1920,1080)
                dt_now = datetime.datetime.now()
                fname = '.'.join([dt_now.strftime('%Y%m%d_%H%M%S'), 'jpg'])
                camera.capture(fname)
                channel = client.get_channel(chid)
                await channel.send(file=discord.File(fname))

    client.run(token)

if __name__=='__main__':
    discord_bot()

実行結果は以下のようになります。

2.6. 追記

discord_bot_test.pyは、2020年6月時点で実行可能であることを確認済みです。2020年8月時点で実行すると下記エラーが出力されました。

Traceback (most recent call last):
  File "discord_bot_test.py", line 34, in <module>
    discord_bot()
#
# 中略
#
TypeError: __new__() got an unexpected keyword argument 'deny_new'

どうやらdiscord.pyのバージョンが古くなったことが原因のようだったので、アップデートしたら実行できました。

# discord.pyのアップデート(1.3.3 → 1.4.1)
$ sudo pip3 install -U discord.py
0
1
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
0
1