かざいむ日誌

IT関係で知ったことなどを記事としてあげていきます。内容に不備や質問などあればぜひコメントをよせてください。

Bluemixを触ってみた。いつの間にか課金されててちょっと怖い。

ChatBotを作りたくて、Watsonを触ってみた。

QiitaでChatBotを作っている記事を参考に自分でもやってみたけど、どのタイミングからか、有償サービスっぽいものが追加されていた、、、。こういうのがあるとOpenShiftの方が分かりやすくて良いかなぁとか思う。

でも、なんでだろう。Liteのサービスが追加されてて、多分そこから発生しているであろう$0.77のサービス料が計上されていたので、早速サービスを削除。

この、$0.77はどう処理されるんだろう??

Android の構造の説明。

これまであまり裏側を意識させない授業をしていたが、裏側のトラブルで作業が止まる(ダウンロードしたソースのbuild.gradleではまるとか)ことが結構あったのと、ハードウェアが好きな人が多いので、今回の授業では構造や役割をある程度説明して見ることにした。

まずは、javaコンパイルを確認した。

http://www.ytp.ne.jp/tech/java/sineruka/jarhowto.html

Jarまでは説明しなかったけど、コマンド打って、classファイルが出来る。というのを見せた後で、Android StudioでBuild APKをして、apkファイルが出来るというのを実演。その後、Developerのbuildの流れを説明。

f:id:name_untitled:20170217133909p:plain

https://developer.android.com/studio/build/index.html#build-process

次に、ここでいうソース、リソース、ライブラリは何か、DEXはclassに近いけどちょっと違うよという説明をして、最後にAPKが出来るんだよ~と説明した。

前回、APKからソースコードをリバースしてみせたのでなんとなく分かっている感じだったが、今回もソースからAPKを作って、それを戻してみせるという流れの方が良かったかも。

IoT用Webサービス XivelyとUbidots

『M2M/IoTシステム入門』という本を紹介されて読んでいる。

https://www.amazon.co.jp/M2M-IoT%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E5%85%A5%E9%96%80-%E9%9B%BB%E6%B0%97%E5%AD%A6%E4%BC%9A%E7%AC%AC2%E6%AC%A1M2M%E6%8A%80%E8%A1%93%E8%AA%BF%E6%9F%BB%E5%B0%82%E9%96%80%E5%A7%94%E5%93%A1%E4%BC%9A/dp/4627853319

これが結構見通しが良くなる本で、IoTに出てくる話を整頓してくれている。

 

その中で、XivelyというWebサービスが紹介されていたので、ちょっと試してみた。位置付けとしては、ラズパイやArduinoでとったデータを、受け取って可視化してくれるサービスらしい。本の中ではどんな感じでデータがとれるかを試すならこのサービスがいいとのこと。

今手元に、LinkIt Oneというネットワークが充実しているIoT機器があるので、試してみようとした。が、Xivelyはバージョンアップでかなり洗練されていて、セキュリティも強化されているらしい。JWTというセキュリティ機能を使うので、お試しで作るにはつらい感じになっていた。

そこでほかのサービスを探してみた。Ubidotsというサービスが、結構分かりやすい。Adruinoのプログラムを使って送信はさくっとできた。(繰り返しがうまく行かないのはバグかな、、、。)

 

とりあえずの結論は、Raspberry PiならXively、AdruinoならUbidotsを使うとお試ししやすいかも。

Ubidotsでダッシュボード画面を作ったらこんな感じ。

f:id:name_untitled:20170206214633j:plain

Raspberry Pi 定期的にサーバーにJSONをアップロード。

在席情報を教えてくれるボットを作った。

Raspberry PiでProbe Requestを取って、MACアドレスを収集。
それを5分ごとにサーバーにあげる。最初cronが動かなかったが、設定漏れだった。

 

 

qiita.com

 

roboneco.hateblo.jp

 

qiita.com

 

cronでも、カレントパスをちゃんと意識する必要がある。ちょっとうっかりしてた、、、。

 

ログインしてないとスケジュールタスクも実行してくれないみたいなので、自動ログインもするように設定。

Raspberry Piのログインを簡単にする設定(自動ログイン、デスクトップ表示) | そう いう わけさ

 

Mongooseでのあれこれ。(メモ)

Mongooseで列を指定したらエラーになった。

Mongooseで特定のフィールドだけ出そうと思って、引数に「この列は表示、この列は非表示」ってやってたらエラーが出た。表示するフィールドだけ、または表示しないフィールドだけという指定の仕方しか許されていないらしい。

[SERVER-16966] Error 10053 when combining inclusion and exclusion semantics in a single projection - MongoDB

 

 Mongooseで1件のデータを更新する、なければInsert

 upsertはないけど、findOneAndUpdateで同じことが出来るらしい。これが出来るとすごく楽。

Mongoose API v4.8.1

Insert-or-Update with MongoDB and Mongoose

 

findOneAndUpdateでエラーが起きる、、、。Mongo2.4を使っているからか、、、。MongoDBをアップグレードすればと書いてあるけど、OpenShiftで公式カートリッジがない。個人の作ったカートリッジがあるっぽい。

github.com

 

stackoverflow.com

Raspberry Pi で詰んだかと思った。常時稼働のプログラムを起動プロセスで実行、、、終わらない。

Raspberry PiWi-Fiパケットをとるシステムを作っている。常時稼働のプログラムを作ったが、どうもいつの間にか落ちている。夜帰る時まではOK。翌朝来ると、しれっと再起動している。参考にしたアプリでもその辺りをinit.dで毎回起動するようにしていた。

同じように起動時にプログラムを実行させたい。Linuxではinit.dを使うのが通常らしい。Raspberry Piではrc.localに起動時に実行したいプログラムを書くことによってスタートアッププログラムを実行できる。

Linuxのスタートアップの処理についてはこの辺りが分かりやすかった。

www.infraeye.com

d.hatena.ne.jp

ただ、そこに大きな落とし穴が、、、。

rc.localの記述の最後に & を書き忘れていた。これを書くとバックグラウンドで実行をしてくれるらしい。逆に言うと、書かないと終わるまで待つ、つまり待ちぼうけ。

teratail.com

終わりの見えない黒画面。とりあえず電源を落として、深呼吸してググル。

どうも、起動時にShift押しっぱなしで、BIOSみたいな画面に入り、起動オプションをいじって、スタートアップの手前で止めて、rc.localを編集すればいいらしい。

buturi.heteml.jp

助かりました!!

皆さん本当にありがとうございました。