MUDAなことをしよう。MUDAなことをしよう。DashでおとうさんDashボタンをつくる2017年4月1日Twitterの方ではちょいちょい呟いているのですが、四ヶ月ほど前に長男が生まれました。それはもう大変にかわいいのですが、生活は一変。これまでは休日になれば半田ごてを握るほどに自由奔放に生きてきたのですが、今ではテレビの音量を上げることすらままならなくなってしまいました。趣味の電子工作に割ける時間は激減してしまいました(←ここ三ヶ月ほどほぼ毎週更新できたのは、年末年始の間に記事をある程度ストックしていたからです)。時間を捻出できるのですが、奥様が長男の世話をしてくれている横で自分一人趣味に耽るのもなんだか申し訳ない気がしましたので、せめて奥様の役に立つものを作ることにしました。Dashの活用(ハック)例の記事が色々目に入ってきましたので、これを使って、奥様が自室にいる私を簡単に呼び出すことができるボタンを作ることにしました。長男を抱っこしていると両手が塞がってしまうので、ナースコールのように、ボタン一つでお父さん(=私)を呼び出すボタンがあれば便利かな、と考えたのです。Dashを入手しまして、いざチャレンジ。Dashボタンのハックについては、先人の方々がたくさんおられます。Dashのボタン押下を検知してHTTPリクエストを発行」という、自分のやりたいことをドンピシャで実現してくれているdasherを使いたいと思います。APIを想定していると思いますが、ここでは簡単かつ実用的に、ローカルホストでサーバを動かして、それに対してHTTPリクエストを投げることにします。イメージとしては、こんな感じですね。PiにはUSBオーディオデバイスとLEDを接続してるものとします。USBオーディオデバイスを認識させる方法は、こちらを参照ください。Frameworkのbottleをインストールします。APIを利用するためのパッケージもインストールしておきます。APIを利用するようにしています。インストールが済んだら、適当なフォルダを作ってそこで待受用プログラムを作成します。controller.py例えばこんな感じ。debug=True)上記のソースコードについて、いくつか補足です。フルカラーLEDはGPIO経由で制御していて、ライブラリとしてpigpioを使っています。フルカラーでなくて単色のLEDでもOKです。HTTPリクエストを受け取った後は、別にスレッド(PapaDashThread)を起動するようにして、すぐにHTTPレスポンスを返すようにしています。ON/OFFや音声再生の処理はスレッドの方で処理するようにしています。Channelを使って、スマホの方にも通知が来るようにしています。試しに、これを以下のように実行します。一つめのコマンドはpigpioを有効にするためのデーモン起動コマンドなので、一度デーモンが起動した後は不要です。controller.pyブラウザで”http://192.168.xxx.xxx:10080/call”を入力すると、「お父さん、お母さんがお呼びですよー」という音声が再生されるハズです。確認できたら、Ctrl+Cで一旦サーバプログラムを終了させます。これで、HTTPリクエストの受け側の準備はできました。Dash側の方の設定に入ります。Dash本体の設定については、こちらの方の記事が詳しいので、こちらの内容に従ってセットアップしてください。注文する商品を選択する」で、商品を選択せずに右上の×で終了させることだけ注意が必要です。この作業については、こちらの方の記事が詳しいです。Piへのインストールについては、githubのページに詳細が記載されているので、それをそっくりそのまま実行します。installこれで最初のセットアップは完了。DashのMacアドレスを確認します。arpMacアドレスが確認できたら、設定用ファイルを作成します。URLには、先ほど作成したPythonサーバのURLを指定します。}]}以上で準備完了です。HTTPリクエストの受け側のPythonサーバを起動。pigipod”コマンドは、すでにpigpioのデーモンを起動中であれば不要です。それから、dasherを起動。Dashのボタンを押せば、LEDが光って先ほど設定した音声が鳴る!。ちなみに自分の環境ではボタンを押してから5〜6秒後に音声が再生されました。https://make-muda.net/wp-content/uploads/2017/03/come_father.mp4上の動画では、前に作ったコミュニケーション向けロボを使用していますので、ついでにLEDマトリクスでロボットが目覚めるような表情付けを行っています。表情付けのコードは、上のコードに対してこちらのコードを組み合わせてもらえば実現できます。DashのMACアドレスとプロトコルを確認してみてください。MACアドレスが見えているときのプロトコルが”udp”のみの場合(=”arp”プロトコルのリクエストが見えない場合)、config.jsonに以下のようにptorocolのパラメータを追加してください。}]}これを指定しないと、デフォルトでは”arp”プロトコルをチェックするようになっているため、udpリクエストに反応することができません。Dashは”udp”プロトコルを指定しておいた方が確実そうです。Piの電源を入れたときに、これらのプログラムが自動的に起動するようにしておきます。dasherの方の設定の仕方はこちらに手順が書かれていますので、その設定の仕方に従っていきます。scriptの全文をコピーして貼り付けます。0そして、冒頭の以下の部分を記述します。これで再起動後に自動でdasherプログラムが立ち上がるようになりますが、手動で立ち上げて動作確認したい場合は、以下を実行します。start次に、Pythonサーバの方の自動起動の設定です。pigpiod”コマンドが確実に実行されていないといけないので、dasherとは別の方法で起動設定をします。ファイル末尾のexitの手前で、以下を追記します。Dashのボタンに対して反応があればOKです。Pi起動時のプログラム実行を行っていますが、このあたりのことを詳しく知りたい方は、こちらの方の記事が参考になると思います。いうわけで、おとうさんDashボタン無事完成です。ラベルも変えてみました。こちらの方が用意してくださったラベルのテンプレートを使ってデザインをして、ラベル用用紙にインクジェットプリンタで印刷してみました。45-225ちなみに、デザインには以下の素材を使わせてもらいました。本業の方のお仕事でも大変お世話になっています。(デジタル素材BOOK)一部はこちらで無料で利用できます。おとうさんDashボタンは、写真のような感じで、ベビーベッドの横のラックに結びつけています。そんなに頻繁に出番があるわけではないのですが、奥様的には「結構便利」だそうなので、まあとりあえずは良かったかなと思います。Dashはなかなか楽しいですね。他にも色々遊べそうです。Amazonから怒られるまで遊ぼう。DashでおとうさんDashボタンを拝見しました。内容に関してお聞きしたいのですがお時間が御座いましたらお願いします。Piでナースコール的な緊急連絡を作りたいのですが説明が上手くないのですがトイレ、浴室、寝室などで高齢者が緊急を要する場合、ボタン操作で知らせる内容です。出来れば屋内での警報音と指定された連絡先にメールが配信されれば一番です。可能だと思いますが、何を優先されるかで、手段は変わってくるかなと思っています。Piを使うことが最優先なのであれば、今回のおとうさんDashボタンと同じやり方を試すのが良いと思います。Dashの非公式な使い方になりますので、商品登録を行わずにボタンを押しまくっていると、Amazonから「ちゃんと商品登録してね」という催促メールが届くようになり、あまりおすすめしません。IoTエンタープライズボタンを使うのが適切かと思います。Dash」ボタンになります。Piを使用する必要がなくなるので、トータル費用としてはそんなに高くならないと思います。Piのセットアップの代わりに、その名の通りAWS(Amazonのクラウドサービス)のセットアップが必要になりますが、ボタンに反応してメールを送るぐらいならおそらく設定も簡単で、料金もそんなにかかわらないと思います。Lambda関数の呼び出しを設定して、そのLambdaプログラムの中で、メール送信の他、IFTTTと連携するという手もあると思います。IoTボタンは、WiFi接続限定で、さらに電池交換ができないので、約2000回ほどボタンを押したら使えなくなります。Buttonを使うという手もあります。IoTボタンと同じですが、LTE網を使用するのでほぼどこでも使用可能、かつ、電池交換も可能になっています。その分、本体価格はお高い(7,980円)ですし、SORACOMの利用費用もかかっています。こんな感じで、色々選択肢がありますので、ここで挙げたキーワードを参考に、ご自身の優先順位に従って手段を選んでもらえればと思います。MUDAなことをしよう。コメントをキャンセルメールアドレスが公開されることはありません。hidaka_hirojiAmazonほしいものリストこちら自身の工作用に使いたいものがメインですが、必ずしも工作に使うわけではないのでご了承ください。MUDAなことをしよう。