zigbee2mqttで遊ぶ

昔、Amazon Dashボタンでお風呂時間をログしていた。
しかし、DashボタンはAmazonに殺されてしまい、今ではもうただの不燃ごみ。

では…と、AWS IoT ボタンに乗り換えたが、これもまたサービス終了。

しばらく放置していたが、なんとなくまたログを取りたいなと思って考えてみた。
…考えてみたといってもChatGPTに相談しただけなんだけども。

Dashボタンの頃と同じことをするなら、Zigbeeボタンを使えばいいらしい。
Zigbeeでの通信は、USBドングルを使えば良く、Zigbeeボタンは Aqara のボタンを揃えろ。とのこと。
ソフトウェア的には zigbee2mqtt というブリッジソフトウェアがあるので、これを使えば構築できる。
なるほど。

Sonoff Dongle-P USBドングルとAqaraのボタンで5000円強。
届いたとき、Aqaraのボタンの電池の金具が変形していて明らかにおかしくなっていたので、手で直した。
(CR2032電池の上に来るべき金具が、下に行ってしまっていた。そのせいで蓋がやたら硬かった)

最初は、Raspberry Pi Zero W が余っているのでこれでやろうと思ったが、セットアップしてみると遅い…
さすがにこれは厳しい。何より、armhf は docker も node.js もサポート外という感じなのが辛い。
これでは構築してもいまいちなので、普通にx86のサーバー上で構築した。

zigbeeの機器は、それぞれがメッシュネットワークを構築して、パケットの中継みたいなことをするらしいので
理屈上は距離が届くのではないかという期待を込めている。
(お風呂場の前にRPiでも置きたくないし…湿度すごいので)

ハマりどころとしては、なかなかペアリングがうまく行かなかった。
エラーメッセージを貼ってみると、ChatGPT曰く

① ペアリング手順(重要)

手順

  1. Zigbee2MQTTで Permit join ON
  2. ボタンのリセット穴(ピン)を長押し 5秒以上
  3. LEDが点滅したらすぐ離す
  4. その後 2〜3回 短押し(これ重要)

👉 この「短押し追撃」で安定して join します

だそうで。 怪しいなと思いながら試したら、本当にjoinした。 短押し追撃をしないとjoinが失敗する。
ChatGPTすげーな・・・

Joinが成功すると、MQTTにイベントが流れ出すのであとはそれをListenして好きに処理すればいいだけ。
多分 n8n とかを通して楽する感じになるかなと。
(相談してみたら、 node-red のがいいよと言われて結局従った)

Thinkpad X13 Gen2 が起動しなくなった

再起動したら、Boot menuに入ってしまい、どの項目を選んでも起動しなくなった。
BIOSセットアップに入ろうと思ったら、またBoot menuが表示され、 System Deployment Modeと表示された。

これは、おそらくUEFIに内蔵されたMSの証明書の有効期限が切れたので、UEFIセットアップすら起動しなくなったに違いない。

このPCは、ずっとLinuxで使っているので、証明書の更新はされていないはず。

…ということで、NVMe SSDを入れ替えて、Windows 11をセットアップし、Windows Updateをすべて更新した。ライセンスはBIOSに書いてあるタイプなので助かった。 まあ、アクティベーションが必要になるまでの間にWindows Updateだけなら終わるだろうけど。
Windows Updateの中に、Lenovo Firmware というのがあったのでコレがおそらく問題のかなと。

Windows Updateをあてて、再起動してみると BIOSセットアップにも入れるようになっていた。
で、SSDを元に戻して、念のためBIOSセットアップに入って Save and Exit したら、何事もなかったかのようにLinuxが起動してきた。

PCの寿命に対して証明書の寿命が足りないというか、証明書の更新プロセスがWindows Onlyなのはひどいというか…

JenkinsサーバーをDocker化した

めちゃくちゃ大変だった。
大変だったのは主に以下

依存パッケージの洗い出し

ホストに適当にパッケージを入れて運用していたので、それを洗い出すのが大変だった。
ジョブを実行してはコケ、パッケージを入れて… という感じ。
途中からは docker exec -it -u root container bash とやって、パッケージ追加してOKかどうかを見てから次に進む。ということをした。
ついでに、言語処理系はすべてmiseに寄せることにした。

avahi

avahi のsocketとD-BUSをコンテナにbindして、avahi-utils 入れて nsswitch.conf を書き換えれば mDNSをコンテナでも解決できる

SSH トンネル

ControlMaster と、 initがなくてゾンビが回収されなかった問題、 BUILD_ID=dontKillMe 問題

python

venv を使って書いていたが、なんか妙なディレクトリができたり、 bin/activate が実行できないとか言われたりで微妙だったので、全面的に uv に移行した。

preloader+hashtool -> shim に移行した

ChatGPTに頼りまくった。
ちょっとだけわかったことをまとめてみる。

UEFIから最初に起動できるバイナリは、UEFIで信頼できる鍵だけ。
なので、通常はMicrosoftに署名してもらう必要がある。
(署名に使う鍵を登録することもできるが、ミスって既存の鍵を消しちゃったらPCが文鎮化するらしい。しかも、コマンド見てるとオプションつけ忘れるとアウトみたいなデンジャーさを感じる)

現状、Microsoftが署名してくれているのはPreloaderか、shimの二択。
systemd-bootとかgrubに署名してくれればいいんだけど、残念ながらそうはいかず…
(バージョンアップごとに署名してもらわないといけないので、更新が頻繁なものは向かないぽい)
ArchWikiを見ると Preloaderが先に書いてあるけれども、今からやるならshimのほうが絶対いい。Preloader+hashtoolの機能はshimにもあるので普通に入れ替えて良い。

で、shimに乗り換えると何が良いかというと、MOK (Machine Owner’s Key)が使える。
UEFIで起動するときはUEFIから信頼された署名がないといけないが、shimがカーネルを起動するときには、自分で署名したカーネルを信頼する。ということができる。
(SSL証明書でいうところの、CAにオレオレCAを追加したイメージ)
これで、カーネルが更新された際にHashToolが起動して、手動でカーネルイメージをEnrollするという作業がなくなる。

ディスクの暗号化周りも行っているが、この変更は特に私には影響がなかったようで、
本当に入れ替えだけで済んだ。

緑内障の疑いの件

眼科二回目。

視野角検査を受けてきた。 中央を見ながら周辺に丸い光が出るので、見えたらボタン押してね。みたいな検査だった。

結果、左目の一部が怪しい(スコアが悪い)

話を聞いてみると、結局のところこれは遺伝で決まっていてなる人はなる。
しいて言えば、カフェイン取りすぎとたばこは良くないとのこと

そして、スコアが悪いのは実は機械慣れしてないというのもあるので、経過観察をしましょう。
半年後にまたきてください。となった。

GLM 14thいってきた

今回から渋谷ヒカリエ。

何がいいって、外で人だかりができてないので大変良かった。
入口がぐるっと回ったところにあるという罠はあったが。

とにもかくにも広くなった。本当に広くなった。
通路が今までの2,3倍になったのではないか?
その分、出展者数は意外と増えておらず、もうちょっと詰めてもいいのかもという気もした。

自撮りエリアができたのは本当に最高、それでなくても建物もおされなので良き。
今回も楽しかったなぁ

ChatGPT契約した

個人で ChatGPT の有料プランに入ってみることにした。

なんか、自分のコーチとして使えそうな気がしたので…
ただ、今のところ、写真の加工とかをやってもらってる。 これだけでもだいぶすごい。とてもいい

ChatGPT契約した

個人で ChatGPT の有料プランに入ってみることにした。

なんか、自分のコーチとして使えそうな気がしたので…
ただ、今のところ、写真の加工とかをやってもらってる。 これだけでもだいぶすごい。とてもいい

AIすごいなと思った

実は会社でClaudeのアカウントをもらっていたことが判明し、早速使ってみた。

これは、なかなかいい。
それ以前にも、AIがあることを前提に仕事のやり方を考えないといけないよね。という話もあって、色々と変わっていかないと行けないんだろうなぁと思った。

初詣

近所の神社に行った。
普段は人がいる感じがしないのに正月は行列ができてる。

和服の着付けができるようになってちょっとよかった

初詣

テレビすてた。 回収所まで持っていくのたいへんだった。

Ozz 新宿行った

いつも迷子になって遠回りするので、めっちゃ遠いと思って足が遠のいてた。
実は、駅からはそんなに遠くなくて、割と近所だということがわかった。

今日は馴染みの店員さんがいたので、本当に本当に話が早かった。
おかげで、それは着れるかもしれない、これは絶対無理。ってバッサリとやってくれて、めちゃくちゃ助かった。
あと、セール中だったらしく… 1着お迎えするつもりが2着お迎えしてしまった。
この値段で1着買えるなら、もう普段着もこっちに切り替えていいのかも。。

そして、BOZのコート初出し。アームホールがキツいけれども、これはちょっと痩せたらまた変わる気がする。
部屋で着たときはこれは… だめかもと思ったけれども、着てしまえば意外と大丈夫。
大きな動きをすると怖いけど…(破れそうという意味で)
程々に暖かくて大変よかった。見た目と暖かさのバランスのギリギリ見た目寄りみたいなところ。

デコパレいってきた

前に行ったときに、もしかしたら入荷するかもしれないブラウスとコートが入荷した。って聞いたので大慌てで向かった。

いらっしゃいました。もちろんブラウスもコートもお迎え。ちょうど冬の季節でいきなり着れる。なんて素晴らしいのでしょう…

ブラウスの色が本当に美しくて最高だし、コートも…素敵。

これであとは、春ものがあれば、年中(夏以外)ずっとBOZのお洋服を着れるー

痩せよう。

Obsidian + Syncthing でスマホでもメモれるように

色々と検討したものの、最終的(?)にこれに固まる気がする。

とりあえず、前提条件として、クライアントは3種類ある。

  • PC (Windows)
  • ノートPC (Arch Linux / KDE6)
  • Android

候補として考えたのは以下。

  • pCloud (買い切りで買っているので。 Remotely Save経由)
  • iCloud
  • Google Drive (Google drive sync)
  • git (GitHub)
  • LiveSync (self hosted LiveSync)
  • SyncThing

この時点で、 iCloud は厳しい。Androidではサポートされず、Windowsも怪しいようだ。
pCloudは、WindowsとLinuxだけなら、VaultのディレクトリをpCloudクライアントで同期させればいいので楽だったが… スマホを考えるとRemotely Saveが必要になってしまう。これを使うと同期が地味に遅いというかラグがある感じがしていて、あまり使いたくない(今は無料だが、有償になるという予告も出ているし…)

Google Driveは、試していないがアリではありそう。ただ、iPhoneがいる場合はどうにもならない。
今回は、なんとなくパスしている。Google Driveにアクセスするために、GCPにアプリ作ってAPIキー取得して…が面倒だったというのもある。

gitを使うのは割と賢い気がするが、Vaultの内容をどこか外に置きたくないなぁ…
という気持ちがあるのでNG。 (なにかまかり間違ってBANされると影響が大きい)

LiveSyncは、ちょっと興味があった。が、セットアップが面倒だなぁという感じがして敬遠してしまった。

で、最後。 SyncThingを採用した。 これはこれでセットアップが面倒だが、少なくとも私のクライアント3種類には、すべて対応していて、同期も早かった。
ただ、常時起動しているサーバーがご家庭内にいる。みたいなことを前提にしているので、誰でもこれでいいとは思えない(Oracle Cloud上のAlways Freeインスタンスで起動すればいい気がするが)
ちなみに、リレーとか、グローバル探索はOFFにしていて、城内LANでのみ同期されるようにしているが、メモを書くのは一人なので特に問題にはならないだろう。

これにさらに、pCloudへのバックアップを追加して一旦は運用してみようかと思う。
(pCloudに上がらないと、この日記帳が更新されないし)