tizen.moe

tizen.moe

Qt 勉強会 @ Tokyo #53 に参加しました

はじめに

どうも今年は1度も参加出来てなかったみたいなので参加してきました。大体いつもQtと直接関係ないことをしています。
qt-users.connpass.com
1年以上参加していなかったのですがいる人が固定していて大変居心地は良く。そこで違いを強いていうと@task_jpさんがいいお父さんにクラスチェンジしていましたw


tl;dr

  • 過去やっていた内容まで思い出しました
  • やりたいことはろくに出来ていません
  • 先は長いな、、、

やったこと

github.com
もともとは@task_jpさんから貰ったお題で、去年のこのpushをした頃は暇だったので仕事サボってやっておりましたが*1、ホボ進捗無いまま放置していた奴です。

ざっくり自分の認識では、

  1. in kernelで動くfile systemにする
  2. 起動時にinitrd→オンメモリにfsを展開
  3. 期待のバイナリをミニサイズで動かす
  4. 最終的にsilkとかがkernelから展開出来れば面白いんじゃね?

と言うお話。

至近に仕事でやってることとも関わるし、上手くやればしょぼいゲートウェイからクラウドにセンサデータを投げるフレームワークとかができるかも知れません。*2

ビルド手順

を、思い出す。。。

$ git clone https://github.com/moguriso/rootfs_qemu
$ cd rootfs_qemu
$ ./script.sh
$ ./run.sh

足りないdevelとかあったらaptで入れる(環境が新しくないので特に言われた記憶はない)

テスト

取りあえずconsoleが起動するので./scrips.shが一緒にビルドしていた test バイナリをコマンドベースで叩く。

# ./test

りざると

/ # ./test
./test: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
/ #

動きません、と。

やること

調査。対応。動かない理由は割りと自明。つまるところ、必要なライブラリが参照出来ていないだけではある。

/ # export LD_LIBRARY_PATH=/lib
/ # ./test

これなら動く。要はビルド時のパス設定の問題。ココまではわかっている訳ですが。。。
(と言うか、渡された時点で既にココまでは分かっていた訳で)

過去の環境まで戻す

わかっている所まですら動きませんでした。結論から書くと

diff --git a/gcc-4.9.2.sh b/gcc-4.9.2.sh
index 3a7a057..5ee219d 100755
--- a/gcc-4.9.2.sh
+++ b/gcc-4.9.2.sh
@@ -86,7 +86,7 @@ third)
 esac

 # make
+make -j8 2>&1 | tee make.log
-make 2>&1 | tee make.log

gccを並列ビルドにしたのでlibstdc++のビルドでエラー吐いてました。。。
先は長いな、、、

懇親会

T.B.D.

*1:本blogはフィクションです。事実と異なる可能性があります

*2:知りませんが。

CC3200(WiFi センサータグで照明 ON/OFF) (2)

blog.tizen.moe

http://<senseortag ip>/sensortag.html にアクセスすると param_sensortag_poll.html より具体的な情報が取れたり、やってることを見るとsensortag.jsとか居てJS経由でsensortagとやり取りしたりができるらしい。実際にレジスタを書き換えたりもできる(らしい。)

f:id:moguriso:20171108041002p:plain

が、実際にやってみると、

before

<html>
<body>
<p id="tmp">0AAC 0CAC 25.34 21.34</p>
<p id="hum">C228 65A8 75.84 25.52</p>
<p id="bar">56F240 7EDD00 25.62 1019.77</p>
<p id="gyr">FFB4 FF5E 0033 -0.58 -1.24 0.39</p>
<p id="acc">FFE0 005B EF77 -0.01 0.02 -1.03</p>
<p id="opt">273D 74.12</p>
<p id="mag">FECA 02E8 FE8A -310 744 -374</p>
<p id="key">0</p>
<p id="syn">40</p>
</body>
</html>

after

<html>
<body>
<p id="tmp">Unknown Token</p>
<p id="hum">Unknown Token</p>
<p id="bar">Unknown Token</p>
<p id="gyr">Unknown Token</p>
<p id="acc">Unknown Token</p>
<p id="opt">Unknown Token</p>
<p id="mag">Unknown Token</p>
<p id="key">Unknown Token</p>
<p id="syn">Unknown Token</p>
</body>
</html>

データが取れなくなりました ... orz 単に切れただけかなと思って(帰ってから)ユーザーボタンとか電源ボタンとか押してみるもNG。復旧しないので電池抜いてみたら見事にLEDすら反応しなくなりました。いわゆる文鎮状態を回避するために、左右ボタンを同時に6秒押し続けるとデフォルト設定でリカバリする機構がついてるらしいのですが*1これもNG。ウンともスンとも言いません。ググってみると「ボクのセンサータグ壊れたのかな?」「ハード故障の可能性もあるからTiストアに交換を依頼してみたら?」なんてのもありますが信用しません。。というか、これもTiストアから買ったものなので交換してくれる可能性はある(かも?)ですが、米国に発送して往復させる送料で新品が買えそうだし、税関通る可能性を考えると待つ時間が阿保らしい。


閑話休題。要は、なんか変な設定で動かなくなってるだけだろうと高をくくって電池抜いてしばらく放電させてみたところ、Stationモードには復旧(LEDは点滅するようになった)してWifiにはアクセスに行きました。やっぱりsensortag.htmlにアクセスに行くとUnknown Tokenに戻るのと、左側ボタンのイベントが反映されなくなってますがとりあえず文鎮からは戻ったのでよしとします。*2

とりあえずWifi経由でfirmware焼きなおそう・・・。冶具買うかなぁ・・・

*1:これはこれで分かりにくくて初期にWifi設定してるときにはまった原因だったりします

*2:22:30ゴロに電池を抜く→30分ほどで確認しようと思って寝る→4時間以上寝て起きた→一応ある程度復旧(イマココ)

CC3200(WiFi センサータグで照明 ON/OFF) (1)

blog.tizen.moe
の続き。というか、格好悪いことを除けば大して困って無かったせいで放置しておりましたが、頻繁に電気を消し忘れたり、そもそも電気をON/OFFするだけにPCのブラウザから操作とかスマホからブラウザ開いたりとか非常に阿保らしいとは思っておりました。

TiのセンサータグはCC2650(BLEとかのやつ)は散々いじっていたので*1、自宅用にも1個買っておいたはずが紛失(多分実家に持って帰って忘れたと思われる)したので、なぜか3つも余ってるWifi接続のCC3200*2を使おうと思った次第です。が、盛大にはまりました。

はまり3段活用は

  1. そもそも自宅Wifiのルータにつながらない
  2. つながったけどIP取れない
  3. IP取れたけどどうやってデータとるの?

の順でした。頑張って調べて

http://www.ti.com/lit/ug/swru509/swru509.pdf

のドキュメント曰く、

  • CC2650でも使っていたAndroid/iPhone用アプリを用意
  • 適当に左右ボタン押し続けたら緑LEDが3回点滅→APモードになる
  • スマホからSensortagXXというAPにアクセス(多分デフォルトはパスワードなし)
  • アプリからアクセス→OTAでFirmwareアップデート(念のため)
  • 正常に終わったら念のためAPに再接続→アプリ再起動→WiFi Configuration
  • WPA2の仕様ではPassPhraseはHEX(64char)かCHAR(0-63char)ならOKのはずがUIにはHEXしかなかったのでWiFiのパスワードをHEXにして(AtermにはGuestモードがあるのでそれを利用)設定
  • 自動的にセンサータグが再起動するのでしばし待つ

で、一応Atermのログを見るとつなぎに行ってるのですが(HEXにしてないとそもそも繋ぎにも来なかった。HEXじゃなく文字数のせいという可能性もあり)IPをとってくれません。とりあえずDHCP Clientモード解除して固定IPにしてもだめでした。どうもルータの設定で

f:id:moguriso:20171107031708p:plain

↑のピンク枠のところを無効にしたら(固定IPのままですが)pingが飛ぶようになってデータが取れるようになりました。

f:id:moguriso:20171107031814p:plain

かわいげもへったくれもないデータ(http://XXXXXXXX/param_sensortag_poll.htmlでアクセス)*3

というわけで、サーバアプリ側を強引にいじって定周期でデータ取得→ボタン押下時にシーリングライトのON/OFFを呼び出すようにゴリゴリいじくりました。これで毎朝出社前にPCでブラウザから電灯OFFとか、帰宅後にもいちいちPC前でブラウザから電灯ONとかしなくても玄関からON/OFFできます。*4

github.com

後でリファクタリングしようと思いますが、この対応で以前書いてた

  • センサー使って温度/湿度等をセンシング
  • センシング情報を用いてエアコン/扇風機の自動制御
  • センシング情報を用いて電灯ONとかカメラON/OFFとか
  • 人感センサで人検知(照度センサはついてるので雑めな検出はできるかも知れない)

この辺は対応可能ですねぇ。。。気力があれば。。。

*1:仕事で。。。

*2:これ、ちゃんと技適も通ってるし接続さえできればBLEなんぞよりずっと楽にデータとれるのに意外と日本語情報少ないんですけどなんでだろ・・・

*3:ぱっと見でもわかりそうですが、個人的に→https://github.com/jimtaylor1974/CC3200SensorTagToEventHubs/blob/master/CC3200SensorTag.ConsoleApp/Program.cs を参照させていただきました

*4:いや、厳密にはシーリングライトのリモコン使えば出社時はできますけど、赤外線リモコンなので玄関からON/OFFはさすがに無理なので多少は意味があるでしょう、と

ジャッジ 裁かれる判事

まるで期待してなかった割には大変良かった。