slack → RaspberryPiを実現するため

python3.6で実装

下記を参考に

【AWS Lambdaの基本コードその4】 AWS IoTにメッセージをPublish

事前に作っておいたエンドポイント raspberrypi/speak へ送信

RaspberryPi側でsubscribeできることを確認しておく

 

Lambda応答

return {
‘isBase64Encoded’: False,
‘statusCode’: statusCode,
‘body’: json.dumps(dict),
‘headers’: {
‘Content-Type’: ‘application/json’,
},
}

 

Lambdaの注意点

API Gateway側でプロキシ統合を選んだ場合は、Lambda側で実装しなくてはならない

API Gateway側で吸収するなら、決まった形式で返す必要がある

こことか参考にさせてもらった

https://qiita.com/taknuki/items/dd47d1c6d4190b52df9a#%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9

 

テスト送信しておく

AWS IoT

raspberry pi用のthingsを作成

ダウンロードした証明書とroot証明書を配置、エンドポイントを控えておく

 

Raspberry Pi

AWS IoTのMQTTクライアントを導入。Pahoを使用。

下記にまとめている

https://github.com/nilesflow/AWSIoTSpeaker/blob/master/README.md

 

AWS IoT Device SDK for C 等もあるが、pythonクライアントとした

下記ソースを参考にさせて貰った

MQTT with AWS IoT Platform using Python and Paho

から参照して下記Git Repository

https://github.com/pradeesi/AWS-IoT-with-Python-Paho

 

準備

pip install paho-mqtt

pip install boto3

git clone https://github.com/nilesflow/AWSIoTSpeaker/blob/master/README.md

証明書を配置

vi config.ini

  • AWS IoTのHost、証明書情報を入力
  • トピック名を指定

今回は、raspberrypi/#とした

 

起動(バックグラウンド起動しておく)

python index.py &

 

Amazon polly でテキスト→音声変換し、mp3ファイルをローカルに保存

mp3ファイルを再生

音声ファイルの生成処理は下記を参照

AWS SDK for Python (boto3)でAmazon Pollyの声を使い分けてみる

 

mp3の再生は下記を参考に

第12回「Raspberry Piで音遊び!」

 

コマンドラインからの再生テスト

apt-get install mpg321

mpg321 polly.mp3

 

pythonからの再生は下記を参照

https://qiita.com/Nyanpy/items/cb4ea8dc4dc01fe56918

pygameで再生

 

上記ソースでは、raspberrypi/speak トピックで指定音声を再生するようにしている

AWS IoTのテスト画面からトピックを発行して確認しておく