IoTで親子の絆を深められるか・・・と思ったけど作るのがやっとだった話
この記事は、 IoTLT Advent Calendar 2017 - Qiita の5日目の記事です。
自己紹介
どうも、金髪豚野郎 a.k.a とんちゃん またの名を大道寺です。 あ、身バレした。
IoTLTでは、過去にこんなネタでLT登壇しておりました。
普段はとある事業会社でバックエンドエンジニアをやっております。
人生初アドベントカレンダーです。緊張します。
前の方々がとても有益な記事を投稿している中、超ゆるい内容の記事を投稿します。
ご了承ください。
クソ記事なのでQiitaに書きたくなくて自分のブログに書きました。
Raspberry Pi を ansible でプロビジョニングしてみたよ!!
約半年前に書いたこちらの記事がようやく実を結びました。
なにかというと
Raspberry Pi の設定もろもろを一々手でやるのめんどくさいと思いませんか!!
せっかくならプロビジョンしちゃえと思ったのです。
ほいで、できたリポジトリはこちら。
なにができるのか
- python-apt モジュールのインストール
- raspbian のアップデート
- git のインストール
- vim のインストール -- 自分の .vimrc を持ってくる
- node.js (nodebrew) の stable バージョンのインストール
- .bashrc で少し楽にする
まだまだ感すごい
issue もあり、まだまだ以下のような課題があります。。
- README がない
- raspbian のアップデートは ssh 越しにやるとしくるケースがあるため、cron に移行する
- apt モジュール使ってないところがある
詰まった個所
ansible の apt モジュールが使えない
半年前くらいの raspbian には、python-apt モジュールがデフォルトでは存在しなかったので、
そのままでは ansible の apt モジュールが使えませんでした。
最近の raspbian はわかりませんが・・・
とにかく動かしてみたい場合
こちらのリポジトリで作れる vagrant にて、 manager を構成管理サーバーとして、色々遊べるようにはなってます。
まとめ
Raspberry Pi を ansible でプロビジョニングできました!!
もし問題や不明点などありましたら、お気軽に issue なりコメントなりしていただけると嬉しいです!!
ではでは。
Google Places APIで近場のカフェを取得してみた
近場のカフェ!!!
ねぇちょっと!今いる場所から一番近いカフェはどこなのよぉ!
ということで、Google Places API使って、
とある緯度経度から近いカフェを距離順でリストアップしてみました。
流れ
Google API Auth key発行
Google API console にて、プロジェクトを作成し、API Auth keyを発行します。
!注意!
2016/06/22現在のUIです。
googleさんはちょいちょいUI変えてくるので、その時に応じた同ニュアンスのメニューから操作してください。
ちなみにgoogleユーザーでのログインが必要です。
プロジェクトを作成します。

プロジェクト名を入力します。

作成できたら、APIライブラリからGoogle Places API Web Serviceのリンクをクリックします。

Google Places API Web Serviceを有効にしちゃいます。

認証情報を設定しる!!と怒られるので、設定しに行きます(強く推奨)

呼び出す場所を適宜設定します。
今回はcuiでcURLなのでこちらにしてみました。

実行する環境に名前を決めます。
デフォルトにしちゃいました。
そして、APIキーを作成するをクリックすると・・・

ぺかーん!!!
めでたくAPI Authキーが発行されました。
こちら、実行に必要なので、控えておきます。

控え忘れた!!どうしよう!!
控え忘れてもあわてる必要はありません!!
確認も可能で余裕でございます。

REST APIをcURLで叩く
APIのURL、パラメータの設定の仕方はこちらを参照してください!
公式ドキュメントで、めっちゃんこわかりやすく説明されております!
Place Search | Google Places API Web Service | Google Developers
ちなみに今回は、こんなURLで取得してみます!!
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location={緯度},{経度}&language=ja&rankby=distance&types=cafe&key={Auth key}
パラメータは以下です
| パラメータ名 | 設定値 | 設定値の意味 | 注意点 |
|---|---|---|---|
| location | {緯度},{経度} | 位置情報 | |
| language | ja | 言語 | |
| rankby | distance | 並び順 | これを設定すると、最大範囲が設定できなくなる。 |
| types | cafe | タイプ | |
| key | {API Auth key} | 認証キー |
では実行してみましょう!
位置情報は、本郷三丁目駅です!

キターーーーーーー(((('ω')))))ーーーーーーーーー!!!!
名前だけ抜いてみると・・・

へぇ、アンモナイトより金魚坂の方が駅に近いんだー
注意事項
24時間に100,000回(呼び出しパラメータによってはもっと少ない回数らしいが)を超える呼び出しをする場合、
課金が必要になってくるらしいです!!
まとめ
地図の検索ってこんなに簡単にできるんですね!!
びっくりでした!!!
raspi ansibleの件
誰も気にしてないと思いますが。。。
頑張って作ってます!!
しばしお待ちを!!
Raspberry Piをansibleでプロビジョニングしてみようと思う
(・・・ゴールデンウィークの宿題にしようと思ったけど、時間がなくてできなかったやつです・・・)
どうもこんにちは!とんちゃんです。
今回は、
Raspberry Piを構成管理サーバーにして、新しく迎えたRaspberry Piに開発環境を仕込んでみます。
構成管理ツール -ansible-とは
構成管理ツールとは、ミドルウェア、ソフトウェアの構成を管理できるツールです。
Chef、Puppet、Itamae、そしてansibleが有名です。
Infrastructure as a Code というやつです。
今回は、ansibleという、ツールを使います。
ソースにやりたいことを書くと、ansibleさんがその通りに動いて、いろいろやってくれます。
この"いろいろ"をプロビジョニングとも言います。
詳しくはこの辺を見てみてください。
やりたいこと
▶構成管理らずぱい
Raspberry Pi Model B+ です。古株です。
こちらのセットアップはすべて手作業となります。
▶新しいらずぱい
Raspberry Pi 2 Model B+ です。先週職場の方にいただきました。
ありがとうございます。
👆手作業で行うこと
- 固定IPをふる
- 証明書の公開鍵の登録(ansibleのために)
☆ansibleでやりたいこと
- Raspberry Piのセットアップ
- git関連
- gitのインストール
- gitの設定
- tigのインストール
- vim関連
- vimのインストール
- vimrcのclone
- node.jsの設定
- nodebrewのインストール
- node.js stableのインストール
- node.js stableのuse
- .bashrcの編集
- set -o viの追記(なければ)
- alias ll ls -ltra の追記(なければ)
よっしゃansible書くぞー。
node-openjtalkをraspberry piにnpm installできてない
まとめ
- node-openjtalkをインストールするには、libiconvが必要。
- libiconvのインストールにはコツが必要。
- node-openjtalkをインストールするには、node.jsのv0.12.*が必要。
何かというと
現在、slack読み上げbotちゃんを作っていて、
通知音再生 (そこはかとない時間) 読み上げ音声再生となっていました。
なぜ?
読み上げ音声再生の処理が
1.通知音再生 ⇒ 2.テキストから音声ファイル作成 ⇒ 3.音声再生になっていたため、です。
使っていたライブラリが、"テキストを渡すと、音声ファイルを再生するまでやってから返す"という作りだったので、
"テキストを渡すと、音声ファイルを作ってくれる"ものを探してました。
ちなみに今使っているもの
こちら、導入はとても楽でした!
欲しいもの見つけた
こちらのライブラリは、音声ファイル作成までを行ってくれる作りになってました!
npm installでコケる
脳死でとりあえずnpm installをたたきました。
$ npm install node-openjtalk
するとエラーが・・・
(略) npm ERR! Linux 4.1.17+ npm ERR! argv "/home/pi/.nodebrew/node/v5.6.0/bin/node" "/home/pi/.nodebrew/curr ent/bin/npm" "install" "node-openjtalk" npm ERR! node v5.6.0 npm ERR! npm v3.6.0 npm ERR! code ELIFECYCLE npm ERR! node-openjtalk@1.1.1 install: `node-pre-gyp install --build-from-source ` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the node-openjtalk@1.1.1 install script 'node-pre-gyp install --build-from-source'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the node-openjtalk packag e, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-pre-gyp install --build-from-source npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs node-openjtalk npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls node-openjtalk npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/pi/work/slack-read-outer-bot/npm-debug.log
npmのページには、でかでかとlibconvが必要だ、と書いてありました。
私の目が節穴すぎる。
libconvのインストール
libconvのインストールは、こちらを参考にしました!
libiconvのインストールでこけた
makeが途中でコケました。。。
(略) In file included from progname.c:26:0: ./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function) _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ^ Makefile:914: recipe for target 'progname.o' failed make[2]: *** [progname.o] Error 1 make[2]: Leaving directory '/usr/local/src/libiconv/libiconv-1.14/srclib' Makefile:865: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/usr/local/src/libiconv/libiconv-1.14/srclib' Makefile:33: recipe for target 'all' failed make: *** [all] Error 2
"gets is a security hole - use fgets instead"でググってみたところ
この行がよくないみたいで、削除する手順と、getsをfgetに書き換える手順がそれぞれ出てきました。
とりあえずこの行は削除しちゃいました。
- Raspberry Piでnagiosを動かす際に気をつけること nagios-pluginsのバグ - 水たまりより狭く、日本海溝より深く
- Mindmap - Linux を上手につかって
- SPEC OMP2012 のインストールメモ (Ubuntu 14.04) - Qiita
configure ⇒ makeを再実行したところ、
ばっちりインストールできました。
それでもコケるnpm install
なんでだーと思って、gitのreadmeを見ていたら
NodeJSのバージョンはv0.12限定でサポートとのこと。。
$ nodebrew install v0.12.14
でv0.12をインストールして、今日は寝ます。
※binaryインストールは、v0.12系はなさそうでした。。
今日の教訓
- 依存するモノのバージョン確認って大事なんだなと
お詫び
ゴールデンウィークの自由研究であった、ansibleでラスパイをプロビジョニングなのですが
まだ未完成です。。。。