エアコン配管用パテ(白)200g cho45
外側のエアコンのパテが割れきっていて劣化がひどいので盛りなおした。200gのパテを2つ(400g)使った。
内側も割れてるんだけど、こちらは新しくせず既存のを取り外さずに屋内用の穴うめパテでとりあえず埋めた。
エアコン配管用パテ(白)200g cho45
外側のエアコンのパテが割れきっていて劣化がひどいので盛りなおした。200gのパテを2つ(400g)使った。
内側も割れてるんだけど、こちらは新しくせず既存のを取り外さずに屋内用の穴うめパテでとりあえず埋めた。
カレンダーを表示するおうちサイネージ というのを作っていたがモニタの置き場がなくなってしまったので、テレビ画面に映すことにしてみた。
Google TV と Switch でしか使わないので、普段は基本的に Google TV のリモコンで操作している。しかし Raspberry Pi の HDMI を繋いで外部入力をそちらにすると、Google TV のリモコンからの操作 (HDMI CEC信号) をテレビ(SONY BRAVIA)が無視するという困った挙動になった。
試行錯誤してみると Raspberry Pi を HDMI CEC デバイスとして単に参加させる (以下のように)と、他の機器の CEC 信号も無視しなくなるようだった。
# 再生デバイスとして CEC デバイスのネットワークに参加 cec-ctl --playback
ここまではいいとして、カレンダーアプリはある程度自動的に起動してくれないと見ないため、Google TV のリモコンから電源をオフにすると、自動的に Raspberry Pi のカレンダーを表示する、という挙動にしたくなった。cec-ctl --monitor で HDMI CEC のイベントをストリーム取得できるようなので、これを利用してフックし、他の機器からのSTANDBYがきたら、Raspberry Pi 側に画面を切り替えるという処理を入れた。
#!/usr/bin/env python3
import subprocess
import time
import re
import sys
# ====== 設定値 ======
CEC_ADAPTER_INIT_CMD = ["/usr/bin/cec-ctl", "--playback"]
CEC_MONITOR_CMD = ["/usr/bin/cec-ctl", "--monitor"]
TV_ON_CMDS = [
["/usr/bin/cec-ctl", "--to", "0", "--image-view-on"],
["/usr/bin/cec-ctl", "--to", "0", "--active-source", "phys-addr=4.0.0.0"]
]
DEBUG = True
# ====================
def log(msg):
"""ログ出力(デバッグ時のみ)"""
if DEBUG:
print(f"[{time.strftime('%H:%M:%S')}] {msg}", flush=True)
def run_cmd(cmd):
"""単発コマンド実行"""
try:
subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
log(f"Executed: {' '.join(cmd)}")
except subprocess.CalledProcessError as e:
log(f"Command failed: {cmd} ({e})")
def main():
log("Initializing CEC adapter...")
run_cmd(CEC_ADAPTER_INIT_CMD)
log("Starting CEC monitor...")
proc = subprocess.Popen(
CEC_MONITOR_CMD,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True
)
last_device_standby = 0
try:
for line in proc.stdout:
line = line.strip()
if not line:
continue
# 他のデバイスが STANDBY 送信
if re.search(r"Received from Playback Device", line) and "STANDBY" in line:
log("Detected STANDBY from another playback device")
time.sleep(3)
for cmd in TV_ON_CMDS:
run_cmd(cmd)
except KeyboardInterrupt:
log("Interrupted by user")
finally:
proc.terminate()
log("Monitor stopped")
if __name__ == "__main__":
if sys.version_info < (3, 6):
print("Python 3.6+ is required", file=sys.stderr)
sys.exit(1)
main()
これを systemd にいれておく
sudo vi /etc/systemd/system/cec-init.service [Unit] Description=Configure HDMI CEC playback mode After=graphical.target Wants=graphical.target [Service] Type=oneshot ExecStart=/home/pi/cec.py RemainAfterExit=true [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable cec-init.service
sudo systemctl start cec-init.service
sudo systemctl status cec-init.service
● cec-init.service - Configure HDMI CEC playback mode
Loaded: loaded (/etc/systemd/system/cec-init.service; enabled; preset: enabled)
Active: activating (start) since Sat 2025-10-18 14:59:08 JST; 11min ago
Main PID: 2820 (python3)
Tasks: 2 (limit: 754)
CPU: 371ms
CGroup: /system.slice/cec-init.service
├─2820 python3 /home/pi/cec.py
└─2823 /usr/bin/cec-ctl --monitor
Oct 18 14:59:08 sinage systemd[1]: Starting cec-init.service - Configure HDMI CEC playback mode...
Oct 18 14:59:08 sinage cec.py[2820]: [14:59:08] Initializing CEC adapter...
Oct 18 14:59:09 sinage cec.py[2820]: [14:59:09] Executed: /usr/bin/cec-ctl --playback
Oct 18 14:59:09 sinage cec.py[2820]: [14:59:09] Starting CEC monitor...
Oct 18 15:00:42 sinage cec.py[2820]: [15:00:42] Detected STANDBY from another playback device
Oct 18 15:00:45 sinage cec.py[2820]: [15:00:45] Executed: /usr/bin/cec-ctl --to 0 --image-view-on
Oct 18 15:00:45 sinage cec.py[2820]: [15:00:45] Executed: /usr/bin/cec-ctl --to 0 --active-source phys-addr=4.0.0.0
Oct 18 15:08:43 sinage cec.py[2820]: [15:08:43] Detected STANDBY from another playback device
Oct 18 15:08:46 sinage cec.py[2820]: [15:08:46] Executed: /usr/bin/cec-ctl --to 0 --image-view-on
Oct 18 15:08:46 sinage cec.py[2820]: [15:08:46] Executed: /usr/bin/cec-ctl --to 0 --active-source phys-addr=4.0.0.0 子どもがデカくなってきており集中して勉強できる「子ども部屋」が必要なのではないかという話になった。引っ越しも検討したけど、学区や家賃の問題があり、なんとか高校入学まではこのままでいけないかということに。
ということで自宅内のリレイアウト(模様替え)だけで「子ども部屋」を捻出することに。
事前に家具と間取りを Fusion (3Dモデリングソフト) でモデリングし、なんとか良い配置にならないか机上で試行錯誤してから着手した。だいたい1~2ヶ月ぐらいかけてマイグレーションしていった
作業前
ダイニングテーブルの廃棄とリビングの再配置
一時的にローテーブルとアイロン台で食事をとるということに (のちに折り畳み式のローテーブルを買う)
ベッドの移動。シングルベッド+セミダブルベッドを並べて3人で寝ていたのを、独立させる。(シングルベッドに子どもを寝かす予定だが、一旦自分がシングルに寝る)
寝室にあった子どもの机と棚の移動。一旦リビングに移動
寝室にスペースができる。
寝室へ自分の作業机などをすべて移動
「子ども部屋」の構築
3Dプリンタなどの移設。これはもともとあった部屋に残すのですこし位置をずらすだけ、、だけどベッドなどの兼ね合いで割と大変
子ども机を新たに買って、今までのものは棚として再配置し、勉強スペースを作る
部屋Bの半分ぐらいが「子ども部屋」として機能するように。ただまだ自分が「子ども部屋」のベッドで寝ている状態。タイミングをみて寝る場所を入れ替える。
2021年から使っているNASのHDDの音が気になるようになってしまった。作業部屋を移動したからかもしれないがなんとかすることに。
箱に入れるとかも考えたが、同じ部屋に置いておくのは無理という結論にいたり、玄関に置き場所を確保した。
そのうえで 10Gbps の LAN をどうするかという問題に対処することに。
今までは 1m の DAC (ダイレクトアタッチケーブル) を使っていたが、玄関まで配線しようとすると 7m ぐらい必要。あんまり長い DAC よくなさそうだし高いので、この時点で排除して2択
一応 10GBASE-T のトランシーバ×2 + CAT6 LAN ケーブルという選択肢もあるかもだけど、消費電力は高いしコストも高いし信頼性も低いので新規導入では選択肢に入らないと思う。
結論としては 10GBASE-SR にした。
10GBASE-SR の SR は Short Range の略。MMF(マルチモードファイバー)というコアが比較的太くて機械的精度要求が低い光ファイバーを使い、300mぐらいまでの通信に使えるものらしい。意外とコスト低め。家庭内では十分
SFP+ の場合、光コネクタは LC を使うのがデファクトスタンダードらしい。
光ファイバーは OM3、OM4、OM5 などがマルチモードファイバーの規格名のようだ。数字が大きいほど性能が良いが、OM3でも十分なので一番安いのを選べばよい。つまり LC/LC OM3 となっている光ファイバーを買えばいい。
送受信で別々のファイバーを使うので、2本必要。duplex と書かれたものを買う。両端でペアになるように部品がついている。そしてペアのどっちがどっちのケーブルかわかるようになっている。そしてこれらはクロス接続する必要がある。
ただ今回買った光ファイバーは最初からクロス接続になるように配線されていた。買ってそのまま挿せばいいだけだった。
何もハマることなくすんなり接続できた。SFP+ はベンダーロックとかがあったりするので不安要素が多いのだけど、今回は大丈夫だった。
光ファイバーは最小曲げ半径が 7.5mm らしく意外を曲げられるようだ? しかしなんとなく銅線よりも取り回しに気をつかってしまう。
これで電気的に絶縁されて接続されてると思うと気分が良い