tag:crieit.net,2005:https://crieit.net/tags/balenaOS/feed 「balenaOS」の記事 - Crieit Crieitでタグ「balenaOS」に投稿された最近の記事 2020-03-11T20:21:24+09:00 https://crieit.net/tags/balenaOS/feed tag:crieit.net,2005:PublicArticle/15760 2020-03-11T20:21:24+09:00 2020-03-11T20:21:24+09:00 https://crieit.net/posts/RaspberryPi-Bluetooth RaspberryPi Bluetoothレシーバー(スピーカー)構築について <p>この間 "balenaOSを用いて簡単にラズパイBluetoothレシーバを構築する" という記事を書いた。改めてこの記事について深堀りしたいと思う。</p> <p>この間の記事<br /> <a target="_blank" rel="nofollow noopener" href="https://qiita.com/ksmndevelop/items/39bbb650ef21798f89fb">https://qiita.com/ksmndevelop/items/39bbb650ef21798f89fb</a></p> <h1 id="そもそもbalenaOSとは"><a href="#%E3%81%9D%E3%82%82%E3%81%9D%E3%82%82balenaOS%E3%81%A8%E3%81%AF">そもそもbalenaOSとは</a></h1> <p>balenaCloudについてはここでは触れない。<br /> 検索しても日本語のページが少ないため一応簡単に説明しておく。</p> <p>balenaOS公式ページに書いてある。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.balena.io/os/">https://www.balena.io/os/</a></p> <blockquote> <p>"最新のソフトウェア開発ツールを接続ハードウェアの世界にもたらすプラットフォームであるbalenaCloudの構築を目指して、2013年にDockerをARMチップに移植することから始めました。"</p> </blockquote> <p>と記載どおりDockerをARMに移植するために始めたとのこと。<br /> 要するにほぼDockerコンテナだけを動かすOSと言えるだろう。<br /> Dockerだと簡単にIoT環境構築できるためとても汎用的。</p> <p>公式からの画像<br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543063/c5115c44-d777-44b9-3c1c-442fac157cf2.png" alt="[email protected]" /></p> <h1 id="balenaOSの利点"><a href="#balenaOS%E3%81%AE%E5%88%A9%E7%82%B9">balenaOSの利点</a></h1> <ul> <li>Dockerコンテナをほぼ直接動かしているため動作が軽快(X Window などGUIではなくCUI環境のためOSが軽い)</li> <li>ラズパイのようなシングルボードコンピュータにほぼ対応していおり同じ環境が簡単につくれる</li> <li>balena Cloud上でコードデプロイするためネット環境さえあればどこでも遠隔操作が簡単に可能</li> <li>balena Cloud上でデバイスの状態をGUIで監視、操作するため複数のデバイスを誰でも簡単に管理操作ができる。</li> <li>つまりIoT環境がとても簡単に構築できるということ。</li> </ul> <h1 id="balenaOSでできること"><a href="#balenaOS%E3%81%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8">balenaOSでできること</a></h1> <p>ラズパイでBluetoothレシーバを構築したように他にも様々なプロジェクトを構築できる。</p> <p>・WEBフレーム<br />  YouTubeやGoogleフォトに保存した画像等をディスプレイに表示する。"balena DASH"というプロジェクトコードを利用する。<br /> 30分でつくれると書いてある。。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.balena.io/blog/make-a-web-frame-with-raspberry-pi-in-30-minutes/">https://www.balena.io/blog/make-a-web-frame-with-raspberry-pi-in-30-minutes/</a><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543063/1f463e5a-9517-420b-2fcc-c3dcafd34d78.png" alt="image.png" /></p> <p>・エアーモニター<br />  室内環境をセンサーを用いて監視できるようにする。"balena Sense"というプロジェクトコードを利用する。<br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543063/97734aaa-2529-d860-f40a-d6b8dfdc35ab.png" alt="image.png" /></p> <p>この他たくさん構築出来るようなのでbalena blogを参照してほしい。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.balena.io/blog/">https://www.balena.io/blog/</a></p> <h1 id="今回構築したラズパイBluetoothレシーバの詳細"><a href="#%E4%BB%8A%E5%9B%9E%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%9F%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4Bluetooth%E3%83%AC%E3%82%B7%E3%83%BC%E3%83%90%E3%81%AE%E8%A9%B3%E7%B4%B0">今回構築したラズパイBluetoothレシーバの詳細</a></h1> <p>構築方法しか書かなかったためここでコードについて少し記述する。<br /> balana Soundのコード(Github)<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/balenalabs/balena-sound/">https://github.com/balenalabs/balena-sound/</a></p> <p>Bluetoothについてのコードを見てみる。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/balenalabs/balena-sound/blob/master/bluetooth-audio/Dockerfile.template">https://github.com/balenalabs/balena-sound/blob/master/bluetooth-audio/Dockerfile.template</a><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543063/1d08715d-0a5c-dfc0-0ab7-d1c38e1da27d.png" alt="image.png" /><br /> <code>RUN install_packages</code> の行をみると <code>alsa-utils</code> <code>bluealsa</code> <code>bluez</code> <code>python-project</code> <code>python-dbus</code> <code>python-gpiozero</code> <code>mplayer</code>を利用していることがわかる。<br /> ラズパイで一般的にraspbian上でレシーバー化するにはbluezを使うのだが、balena Soundもやはりbluezを利用していた。<br /> raspberianでコマンドをそれぞれ打ってインストールしてやるより簡単ではあるが、ほぼ環境は同じと言えよう。</p> <p>次にAirplayのコードを見てみる。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/balenalabs/balena-sound/blob/master/airplay/Dockerfile.template">https://github.com/balenalabs/balena-sound/blob/master/airplay/Dockerfile.template</a><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543063/cc83533b-4bd2-8415-3a83-58afe96a3bc8.png" alt="image.png" /><br /> これもラズパイで一般的にAirplayを利用する際に使われる<code>shairport-sync</code>が使われている。</p> <p>さらにSpotifyConnectのコード。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/balenalabs/balena-sound/blob/master/spotify/Dockerfile.template">https://github.com/balenalabs/balena-sound/blob/master/spotify/Dockerfile.template</a><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543063/d9437c5a-339b-d2f6-ffa1-c82d9fa67648.png" alt="image.png" /><br /> どうやら"raspotify"が使われているらしい。<br /> raspbianでも構築可能。(もともとそっち用)<br /> <a target="_blank" rel="nofollow noopener" href="https://dtcooper.github.io/raspotify/">https://dtcooper.github.io/raspotify/</a></p> <p>言わずもがなであるがraspbianで構築した方法とほぼ一緒だった。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>今回は以前の投稿の詳細として追記した。raspbianでも同じような環境を作れると思うがbalenaOSでとても簡単にできることがより一層理解できたと思う。</p> かすみん@Crieit出張版