itLinkedInPocketCopyみんなのラズパイコンテスト2017応募作品の技術的な仕組みの解説です!しゃべるラズパイとMQTTで館内放送を実現したものの「MQTT実装部分」について詳しく触れます。システムの全体像はコチラの記事でどうぞ!みんなのラズパイコンテスト2017に応募しました!ラズパイを触り始めてはや数ヶ月(夜中や週末にコツコツと。放送用のメッセージを送るプログラムで利用。ラズパイ・テスト用Mac・WEBサーバーを利用しています。Pythonのpaho-mqttを使って実装しているので、これらが使える環境であれば何でもOKです。放送用のメッセージを受け取って音声に変換して再生(放送)するプログラムで利用。ラズパイにスピーカーを接続して利用しています。Pythonのpaho-mqttを使って実装しています。JTalk」を使っています。AI音声アシスタントが花盛りの今日この頃。...https://iot-plus.net/make/raspi/speaker-open-jtalk-japanese-...ブローカーMQTTの通信を仲介するプログラム。パブリッククラウド上に設置しています。HEROKUのアドオン「CloudMQTT」を使用。他にも様々なブローカーサービスがありますが、詳しくは↓コチラの記事を参照してください。Cat)のアドオンを追加した新しいプロジェクトを作成します。Console」を開きます。info」に接続するサーバーの情報が載っているので確認します。あるUserを使っても良いのですが、念のため新しく専用のUserを作成します。Users」にユーザー名とパスワードを入力して「Save」ボタンを押します。Rule」を作成します。先ほど作ったユーザーを選択して、「Topic」に放送用メッセージの配信に使用するトピックを入力します。チェックを入れて「Save」ボタンを押して完了です。パブリッシャー(メッセージ送信)放送用のメッセージを送るプログラム。mosquitto_pubやpaho-mqttを使って送信します。mosquitto_pubコマンドで送る場合は次のようになります。送信するメッセージにはキーバリュー形式で3つの情報を含めます。放送したいメッセージ(日本語テキスト)グループや端末のIDを指定することで、特定の範囲に放送することができます。例)特定の端末に送る場合[code]'{“area":"dev","id":"001′′,"message":"佐藤さん、応接室にお越し下さい。"}'[/code]例)特定のグループに送る場合[code]'{“area":"grp","id":"002′′,"message":"鈴木さん、お客様がいらっしゃいました。"}'[/code]例)全端末に送る場合(idは無視されます)[code]'{“area":"all","id":"003′′,"message":"みなさん、お昼休みの時間になりました。"}'[/code]なお、放送するメッセージを送った後は、以下のコマンドを送ってサーバー側に保持されたメッセージをクリアしておきます。(これをしないと新しいサブスクライバーがアクセスした際に前回のメッセージが届いてしまいます。\-n上記をまとめたシェルスクリプトの例です。変数は自分の環境にあわせて適宜修正して下さい。-n実行する場合は次のように引数にarea、id、messeageを含むテキストを与えます。'{“area":"dev","id":"001′′,"message":"佐藤さん、応接室にお越し下さい。"}'[/code]コントロールパネル上記の3つの情報を指定して送信するWEBインターフェースです。PHPなどでフォームから取得した値を用いて送信コマンドを実行します。コマンドの実装によりますが、メッセージからは特殊な文字(半角スペース、各種記号類等)を除外しておきます。サブスクライバー(メッセージ受信&放送)テスト用に、受信したメッセージを確認する場合はmosquitto_subコマンドが便利です。\※パブリッシャーと同じ設定です。これをラズパイのターミナルで実行しておくとメッセージ待ち状態に入ります。※実際のプログラムはpaho-mqttを使ったpythonで実行しており、メッセージが届いたら、area、id、messageを確認し、該当する端末であればメッセージを音声に変換して再生します。JTalk(各種設定をまとめてjsayコマンドとして/usr/local/bin/に設置)を使って音声化しています。以下に、paho-mqttを使ったpythonのプログラム(必要最小限の動作が可能なもの)を示します。※実際に使用する際はTLSを使うなどセキュリティに気をつける必要があります。client.loop_forever()まとめMQTTブローカー、パブリッシャー、サブスクライバー、及びメッセージ部分の仕組みを紹介しました。it0LinkedIn-Pocket0Copy-無線LANケーブル!?WPA2の脆弱性KRACKに乗っかっておかしなワードが現れた件。さしあたっての対策も。...ラズパイまとめラズベリーパイのまとめページです。Wi-Fiアダプタ(GW-450D2)のドライバを作る方法。4.14.34+)でカーネルの全ビルド不要!どもー、GW前半を全てラズパイに捧げたマークです。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスウェブサイトこのフォームを使用することにより、このウェブサイトによるデータの保管および取り扱いに同意するものとします。buster版)まーくお問い合わせやってみてわからなかったことなど技術的な質問は、各記事の一番下にコメント欄(ディスカッション)がありますのでそちらにお願いします。その他はtwitter(@iot_plus_net)にどうぞ。