ホーム » T-Saitoh
「T-Saitoh」カテゴリーアーカイブ
Raspbian を bullseyeからbookwormへ
新しい bookworm の sources.list を追加して、sudo apt dist-upgrade する。まずは、一番パワーのある ARMv7 rev.4 の Pi について実行。
((( /etc/apt/sources.list.d/12-bookworm.txt ))) deb http://raspbian.raspberrypi.org/raspbian/ bookworm main contrib non-free rpi
Ubuntu 24.04 LTS を 24.10 normal に更新
ただのメモ
自宅サーバを更新するにあたって、Ubuntu 24.04 LTS を入れたけど、以前の Debian では testing で運用していたし、Ubuntu も LTS より 新しくさせたい。
ということで、Ubuntu 24.04 LTS(Noble Numbat) から 24.10 normal(Oracular Oriole) に更新。
$ sudo apt install ubuntu-release-upgrader-core $ sudo vi /etc/update-manager/release-upgrades ((( 修正 ))) # /etc/update-manager/release-upgrades - Prompt=lts + Prompt=normal $ do-release-upgrade
inotify-tools ふむふむ
homebridge-people-pro で ping 相手の有無を検出できるが、これに合わせて通知をしたい。
shell script で実現しようと思うと、crontab で file-exist と思うけど、crontab の頻度と通知の遅れのトレードオフ。
でも、ファイルシステムイベント監視の inotify(7) を活用してくれる inotify-tools の中に、inotifywait / fsnotifywait というコマンドがあるのか。これなら、shell script で実現できそうだな。
sambaをWindowsのネットワークで表示
以前から、samba を運用しているけど、エクスプローラのネットワーク検索で、samba サーバが見えない。
なにげなく、Gemini に問い合わせをかけてみたら wsdd(Web Services on Devices (WSD) daemon) をインストールする方法を教えてくれた。あらためて、wsdd でググったら、wsdd2 ならインストールするだけとのことであった。ということで、”apt install wsdd2″ でインストール。今までなら、IPアドレス直打ちとかしていたけど、他の PC から簡単に見えるようになった。
switchbot API の排他処理とリトライ
自宅サーバを更新し、Switchbot の温度監視を munin でグラフ化、その結果を nagios4 で結果のモニタリングをしていたけど、新しいサーバで Unknown の状態が頻発している。旧サーバでの運用時より、発生回数が増えている。
排他処理とリトライの追加
Switchbot API での値の取得だけれど、muninでの値取得とnagios4での値取得の処理と重なるとデータ取得に失敗すると思われるので、flock コマンドで排他処理を追加。これである程度は Unknown が減ったが、それでも Unknown 発生する。
しかたがないので、Switchbot API で 成功ステータス100が取れなかった時は、1秒の間をあけて1度だけリトライするようにした。(当初は0.3秒 sleep にしたけど効果が薄かった) これにより Unknown はかなり減ったけど、まだ失敗することがある。しかしながら、Switchbot API の1日あたりの回数制限もあるし、何度もリトライさせるのはやめておこう。
#!/bin/bash . "/usr/local/etc/switchbot/token-v11.sh" function curl_status() { # flockで排他処理 /usr/bin/flock -x /tmp/switchbot-api.lock \ /usr/bin/curl -s --request GET \ -H "Content-Type: application/json" -H "Authorization: ${token}" \ -H "sign: ${sign}" -H "nonce: ${nonce}" -H "t: ${t}" \ "${url_list_v11_meter}" } function device_status() { url_list_v11_meter="${url_list_v11}/$1/status" JQ=/usr/bin/jq json=$(curl_status) state=$($JQ '.statusCode' <<< "$json" ) # 取得に失敗したら1度だけリトライ if [ "$state" != "100" ]; then # リトライ間隔(sleep 0.3 では効果が薄かった) sleep 1 json=$(curl_status) fi $JQ -r '. | (.statusCode|tostring) + " " + (.message|tostring)' <<< "$json" }
(追記) 0:00 頃に unknown
上記の改良後だけど、2日連続で 0:00 に unknown 状態になる。 Switchbot HUB 自身が、日替わり時に何らかの処理を実行しているんだろうなぁ…