自宅の温湿度モニタシステムを飛躍的に発展させた話
背景
昔から自宅の環境をモニタリングしたいという欲求があり、温湿度センサを動かしたりして遊んでいた。yanatsuba.hatenablog.com
その後引っ越ししたりして、複数の部屋の温度を取得するシステムを作りたいと思っていたのだけど、センサーへのワイヤリングが面倒臭いとか色々と思案しているだけで結局着手しないままであった。ところが最近良さげな商品を見つけて、また自宅の環境モニタを高度化したいと思いはじめた。
INKBIRDのBluetooth高精度温湿度計である。
結果
問題はこのモジュールで取得したデータを、自由に読み出しし、解析に使える形で扱えるのかというところであるが、調べてみると下のような技術解説記事があり、ひとまず買って試してみようじゃないかと考えた。qiita.com
3つのInkbirdモジュールを買って、基本的なところはこの記事に従ってシステムを構築してみることにして、理解はしていないが見よう見まねでやってみた。
- Raspberry Pi 2B + Bluetoothアダプタを母機とする。
- Pythonモジュール"Bluepy"でInkbirdと通信
- 測定温湿度データを、オープンソースシステム監視ツールPrometheusへ送信
- モニタリング指標可視化ツールGrafanaによるコンソール表示
- 測定データはCSVでファイル保存もする。
- 元記事にあったInfluxDBはひとまず利用しない
ところでこのやり方に至るまでのところで、いくつも試行錯誤があった。
- Inkbirdの温湿度モジュールは内部に測定データをストアしていて、スマホアプリなどをして取得できる。初めはこのようなデータ取得スキームを想定していたが、今のところやり方がわからないので、crontabを利用した定期実行に頼っている。
- 使い慣れたMini PCとWSLを使ってシステムを作ろうとしたが、WSLからBluetoothを操作するのは難しかったので、引き出しの奥にあったラズパイ引っ張り出して使用した。昔インストールしたRaspberry Pi OSが乗っていたのでこれをそのまま使用しようとしたが、bluepyが動かせなかった。`apt install`できるpythonが3.9までしかないのが原因かと思い、Python 3.12や3.13をソースからビルドしたりもしたのだが、そもそもlibstdc++6などが根こそぎ古いらしく、どうにも更新できない・・・ということで最新のRaspberry Pi OSをインストールし直したところ、すんなりインストール完了。
- Prometheusに関する知識が皆無だったのでやや苦労した。というよりserviceのことをよくわかっていなかった。`--collector.textfile.directory`オプションで、外部モニタリング指標を読み込めるのだがこれがうまくいかない・・・Chat-GPTに相談して、Prometheusサービスに権限付与する必要があると教えてもらい、なんとか解決。
- Prometheusがきちんと動くようになってからは簡単で、Grafanaの設定はかなり直感的だった。
Inkbirdは居間、寝室、物置部屋の三箇所においてデータ収集。ラズパイのIPにアクセスすると、Grafanaが提供するwebページの形でコンソール画面が提示される。この画面がカスタマイズできる上に表示範囲の変更などやりやすく、使いやすい。
まとめ
いいBluetoothモジュールが安く出現したので、夢見ていたような家中のマルチセンサーモニタリングが現実になった。モジュールが安いので、かなり色々な使い方ができる。モジュールを買い増しして、ベランダに設置したり冷蔵庫の庫内温度のデータもとってみたいと思っている。Mac版Powerpointの数式入力
職場でMacbook Airの中古を譲ってもらった。私用では2016年版MBPを使っているため基本的な操作には全く戸惑うところはないのだが、Mac版Officeを使うのは初めてで戸惑った。飛行機の中で数式モードを使おうと思ったところ、`\mu`などと打ってもギリシャ文字が出ず混乱。太平洋の真ん中ではインターネットで検索することもできず、途方に暮れていた。
帰国後調べてみると、MicrosoftOfficeに関する設定ファイルなどを消せというQ&Aなどがヒットしたので試してみたが解決せず。
結局、バックスラッシュの入力ができておらず、エンマーク¥になっていたということであった。システムによっては¥で\を表現することも多いので気づかなかった。MacOSのシステム環境設定→キーボード→入力ソースの「日本語ーローマ字入力」で、入力モード:英字にチェックし、「"¥"キーで入力する文字」で「"\"(バックスラッシュ)」を選択。さらにキーボード一覧から英語を削除して設定完了。
新NISA枠を使うために特定口座の株式等を売却すべきか
はてなブックマークでこんな記事が話題になっていた。
直感的にはNISA枠で課税運用した方が良いと思われる。この記事には面倒臭い数表が載っているが、こういう数表は読ませる気があるのかというくらいわかりづらく、もう少し一般的に見た方が却って行動原則が見えてきたりすることがよくあr。そう思っていたらコメント欄でそういう観点で計算をやってくれている人がいた。
新NISA「特定口座からお金を移すべきか」が一発でわかる早見表 | AERA dot. (アエラドット)数値例でなく一般的に→ <a href="https://luke-randomwalker.hatenablog.com/entry/2023/06/30/220347" target="_blank" rel="noopener nofollow">https://luke-randomwalker.hatenablog.com/entry/2023/06/30/220347</a> なお、非課税期間が長い方が得なのでさっさと乗り換えるべき。(長期投資スタンスの人ならこの数年の株価上昇局面で含み損なんて無いはず。)
2023/11/20 15:40
こちらの方が記事本編よりずっと見通しが良いと思う。基本的にはこの記事で尽きているが、ここではさらなる納得のため、これを図示してみる。その結果がこちら。
これは、特定口座の株式を持ち続けた場合と、それを今すぐ売却し新NISAで買い直した場合の差額を、割合(%)で示したコンタープロットである。横軸は現在所有している株式の現在価格(買ったときの価格を1とする)で、縦軸は将来その株式を売却する場合の価格(現在の価格を1とする)で示したものである。目安のために横軸と縦軸の1の箇所に点線を引いた。これを見ると、高い確率で値上がりが見込める買い方においてどう行動するべきか一目瞭然ではなかろうか。
なお細かいことであるが、プロットの色区分の都合のため持ち続けても買い直しても同じ(数値が0%である)にもかかわらず、薄いブルーで表示されている部分があり注意が必要である。具体的には点線より左側の青領域である。
ゼロから作るOS
プログラム対象のPicoともう一台別のPicoを用意してOpenOCDでのデバッグが可能なのだけど、このOpenOCDをどうやってインストールするかという所からして、大いにてこずった。Picoの公式ドキュメントにはGitHubからダウンロードしてmakeせよと書いてあったがなぜか動かず、結局brew installした。またEclipse IDEを使用せよという話だけど、組み込みシステム用のアドオンをインストールできておらず設定画面で困ったり。IDEに頼らずまずコマンドラインからコンパイラを叩いてみたのは、どういうオプションが必要かとか、Makefileのご利益とか、ちょっと勉強になった。
なんとか環境構築が完了したのだけど当然ここからも難儀している。著者の書いたコードは動くのだけど、中身がかなーりわからない。C言語にも不慣れだし、リンカスクリプトに至っては何を読んだら理解できるのかすらわからない。というわけでバシバシChatGPTに聞きながらコードを解読している。ChatGPTというのはコード読みに関しては本当に頼りになる存在で、かなり心強い。下は関数ポインタの配列宣言について細かく説明をお願いしてみたところ。
無尽蔵の忍耐力を持った知識豊富な先生が専属でついてくれているようなもので、非常に助かる。(もちろん100 %信用できないところはあるが。)
実力不足を感じながらやっているが、なかなか面白くやっております。
技術の時間
これからマイコンを勉強するとしたらAVRとPICのどっちがいいだろうと調べてみら、MicrochipがAVRを吸収したいまとなっては両者は結構融合が進んでいるらしい。トランジスタ技術 2021年4月号の特集「AVRでサクッとマイコン開発」を読んだら、「どちらも同じツール、同じIDE、同じコンパイラを使って開発ができます」とのこと。安心してとりあえずPICkit4を買った。
早速作りたいものがあるので慣れない頭で数日間考えていたが、マイコン部分以外にも回路作製が必要になりそうだ。電子回路については学生時代の実験で数時間触れただけで、知識はほぼない。というわけでとりあえず基礎から勉強できそうな良さげな教科書を買った。
これは流石に結構簡単そうなので早めに読み切ってしまいたい。新分野に取り組むときには考える前にとにかく知識量を増やすことが不可欠だ。今回の工作は前途が長い。プリント基板作製も初めて取り組むし、ハードウェアとソフトウェアを両方開発しながらデバッグするのも初めてだ。一通り流れを経験して入門者から初心者へ!を目指していきたいですな。
技術力が欲しい
もっと技術力を身につけたいと思う。というのも研究をしていると最適な装置(計測器とか)を自作できたらいいのにと思うことが少なからずあるからだ。自分の技術力の低さゆえに及び腰になってしまい、研究の進展が遅くなるケースもある(たとえばアナログ回路などを億劫がったり)。研究をして得られる知識をいざそれを実用的な問題に適用したいという時にも実装のイメージが湧いてこないこともある。これは結局、自分の技術力というか、ものづくり力が低すぎるせいだと思う。物理系の研究というのは案外枯れた技術で成り立っている部分が大きいので、これでもやれてないことはない。しかし技術力がないから技術が十分と思えているだけということもありうる。
技術力が研究を大きく進展させた例としてPCの活用がイメージと近いかもしれない。私の上司の世代はアナログ装置を使った実験で、定期的にメーターを目視してデータを得ていた時代を経験したそうだが、今日からはなかなか想像できない。PCが研究に普及して大量のデータを取得できるようになったし、解析も高度になって…いろんな面で研究の質が大きく向上した。もう一つ別の理想として、20年ほど前に電子顕微鏡をマイコン工作でチョチョチョイと改造し、電子線リソグラフィ装置を自作したなんていう話があるらしい。今の自分にはそんな技術力がないが、もしそんなことができたらカッコいい。というわけで自分も技術力を身につけて、研究の幅を広げてみたい。業務上の不便を解決して研究の生産性を上げたいし、実装力を上げて基礎研究と実社会を近づけられたら満点。
妄想を語りすぎたが、そういう感じでゆるく頑張っていきたい。一朝一夕には以下がないでしょうがとりあえず所信表明。