2026年8月16日日曜日

Eufy Indoor CamでRTSPを使ってみた。

 先日購入したEufy Indoor Cam 2K Pan & Tiltなんだけど、RTSPが使えるらしいのでPCからVLCプレーヤーを使ってリアルタイムストリーミング機能を試してみた。

RTSP機能を有効にするにはEufyアプリからカメラの設定を開く必要がある。カメラの設定画面を開いたら、一般→ストレージ→NAS(RTSP)と開いくとセキュリティーの警告が出るんだけども気にせず突き進む。

進んでいくとRTSPのアドレスが取得できるのでこちらをコピーする。ユーザー名とパスワードは設定するたびにランダムに設定してくれるっぽい。こちらのリンクをコピーしたらPCとかにメールで送付する。
VLCプレーヤーからRTSPアドレスを開くと普通にストリーミングが始まった。ウォーターマークとかもアプリから設定した通りの表示がされるっぽい。LEDは青色のままだった。

PCから動画は見れるんだけど、パン・チルト操作はアプリ側からしか出来ない。まぁもともとNASとかに常時録画するためにつけてあるような機能なので仕方ないか…

ついでに遅延を測ってみた。

遅延は1.4秒ぐらいってところ。やはりRTSPはバッファとかもあるので結構遅いかもしれない。アプリよりも200msぐらい遅い。

2026年8月15日土曜日

Anker T8410Xのジャンクを買ってみた。

 最近フリマアプリでジャンク品を購入していじるのにハマっているんだけども、たまたまAnkerのT8410X(Eufy Indoor Cam 2K Pan & Tilt)のジャンク品が出ていたのでポチってみた。送料込みで1000円を余裕で切っていたのでつい…
T8410XにはT8410N25とT8410N26があるっぽいけど違いがわからない。イメージセンサ違いかな?(SmartSensのSC3235、SC3335、SC3336の3種類のバージョンがあるらしい。)

ジャンクな理由は初期化出来ないとのことだったんだけど、Ingenic T31搭載だしThinginoでもサポートしてるので色々遊べそうだと思ったので。フラッシュメモリはWinbond W25Q256JVEIQらしいので少し剥がしにくいかも。実装したままで書き換えられるとよいが…

Eufy Indoor Cam 2K Pan & Tilt

純正の付属品が無いのでカメラマウントのネジも使えないけども、非純正のMicroUSBケーブルとELECOMのUSB充電器をつけてくれてた。純正ACアダプタは5V 2Aなので2.4Aなら問題ないか…

カメラを手動で上に上げるとmicroSDカードスロットがあった。でも固着してそう。押しても全く抜けない。そもそも押すタイプなのか?
とりあえず電源を入れてみたけどなんか起動しているっぽい。問題は初期化出来ないとのことだったのでSETUPボタンを長押しして初期化してみる。

説明書によるとビープ音が1回なった後もまだまだ押し続けるらしい。1回目のビープ音がなっても押し続けているとしばらくしてもう一回ビープ音がなる。(おそらく1回目のビープ音はアプリ側でWiFiをセットアップする用のビープ音)

2回目のビープ音がなってから指を離すとまたしばらくしてもう一回ビープ音がなって初期化完了したっぽい。あれ?もしかして初期化出来ないのってボタンがうまく押せてなかっただけなのでは?と思いセットアップしてみる。

念のためしばらく放置した後電源を切ってアプリでセットアップをしてみる。

Eufyアプリを起動してアプリに従ってセットアップをしていき、カメラ本体の裏面にあるQRコードを読んだりWiFiパスワードを設定したら普通に動いてしまった。
ファームウェアバージョンは2.3.2.4だった。

microSDカードもツメで押すときに少し上の方にずらすように押してみたら取り外すことが出来た。Sandiskの128GBが入っていた。

とりあえず動いたので純正での遅延を測ってからThinginoでも入れてみようと思う。

2026年8月14日金曜日

クリップ型ソーラーセンサーライトを買ってみた。

 アリエクでクリップ型ソーラーセンサーライトが450円で売っていたので買ってみた。

YD-21シリーズってやつっぽい。
こういった安い製品にしては珍しくちゃんとスペックが載っている。説明書でも誤訳だとおもうけどGearってModeのことだよね。説明書でもギアチェンするにはボタンを押すか、ダブルクリックか、長押ししろって書いてある。
ソーラーは40x52mmってところ(直接透明のエポキシで注型されてそうなので中身のサイズを測定)
何故かこちらにはModel:XW001ってなってるし。箱によるとYD-21Aじゃなかったの?
人感センサーとスイッチとLEDがこちらの面。3020サイズっぽいLEDが28個
ソーラーと本体の間はケーブル2本でつながっていて、一応シリコンシーラントで防水されてそう。

明るさはまあまあ明るい。ガレージ内でも昼間だとちょっと物足りないかもしれないけど夜だと使えそうなレベルで明るい。あんまり明るいと光源が1個なので眩しいしな…

ソーラーに光があたっているときはLEDがつかない仕様。

ガレージの室内用の人感センサ付きライトにちょうど良さそうなので改造して外付けソーラーで動くようにしてみようかな。

2026年8月13日木曜日

イナバのガレージにソーラーLEDライトをつけてみた。

 バイク用にイナバのガレージ(FM-2230SD)を建てたんだけど、ガレージの入口を照らすのにセンサーライトを付けたかったのでソーラタイプを取り付けてみた。

取り付けにはマグネットベースを使ってガレージには穴あけ不要だし移動もできるようにしておいた。

分離式なのでソーラは日がよく当たるようにしたかったので、ガレージの後ろの方に設置して、配線を中を通すようにしてみた。実は最初は屋根の上に置いただけだったんだけどどうも水の流れを妨げてそうなので…

前の方は空気穴の下の方の隙間から通せないかトライしたんだけどもオプションのシャッターケースをつけてしまったためか隙間がなかった。雨が入らないということはいいことだけど…
結局サイドの水抜き穴を使うことにしてみた。おそらくこのパーツは左右共通なのでこの位置に穴が空いてるだけで、フロントの水抜き穴はほぼ使われないだろうということで…(後ろの方はここの穴からめっちゃ水出てくる)

ケーブルはコネクタがそのまま通らなかったのでカットして通して中でつなぐことに。

後ろは屋根の下にいい感じの隙間がある。

ケーブルをどこに固定するかなんだけど、フロントのケーブルを通した穴のところは中も水が流れるようになっているのでそこからは遠ざけるようにケーブルを貼り付けた。ここからケーブルを伝って水が中に入ってきても困るし。

このソーラー、ちょっと曇ってるときに測定したら充電中でも6.3V~5.2Vぐらい出ていたので横取りしてガレージ内LEDとかも一緒に点灯させることができるんじゃなかろうか。

ちなみにソーラーに光があたってる間はLEDが点灯しないので、室内用は充電しながら使えるタイプじゃないと不便かも。

とりあえずケーブルは適当につなぎ合わせておいたのでガレージ内用のLEDが届いたらもうちょっとなんとかしようかな。

2026年8月12日水曜日

MediaMTXでAction 5 ProのHWエンコードを使ってみた。

 前にラズパイでuStreamerでUSBカメラのMJPEGエンコーダを使ってそのままストリーミングしたらめっちゃ低遅延だったんだけど、友人がDJI Osmo Action 5 Proを持ってるとのことだったので借りてきてH264バージョンを試してみることに。

まず初めにどのフォーマットに対応してるのか確認。ウェブカメラモードにしてラズパイゼロに繋いで、

v4l2-ctl -d /dev/video0 --list-formats-ext

をしてみると

ioctl: VIDIOC_ENUM_FMT
        Type: Video Capture

        [0]: 'MJPG' (Motion-JPEG, compressed)
                Size: Discrete 1280x720
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                Size: Discrete 1920x1080
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
        [1]: 'H264' (H.264, compressed)
                Size: Discrete 1280x720
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)
                Size: Discrete 1920x1080
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.040s (25.000 fps)

まずは前回と同じ条件(720pのMJPEG)で測定してみた。

247msだった。C270だと160msぐらいだったのに。Action 5 ProのほうがC270より遅延がある。やはりここはUSBカメラのチップによるのかな。

お次はH264と思ったんだけどuStreamerが対応していないようなのでMediaMTXで試してみることに。

MediaMTXはラズパイカメラの遅延を試したときに使ったやつをそのまま使うことに。H264をそのまま入れてやるのにffmpegも必要だった。(copyなので変換はしていない)

mediamtx.ymlの下の方のpaths:を書き換える。

paths:
  cam0:
    runOnInit: ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -framerate 30 -i /dev/video0 -c:v copy -f rtsp rtsp://localhost:$RTSP_PORT/$MTX_PATH
    runOnInitRestart: yes

解像度は720pと1080pが対応してるのでそれに合わせて入れてやらないとだめっぽい。

とりあえず1080pで遅延測定。

遅延は312msほど。フルHDでこの遅延はなかなか良いのかも。ちなみにWebRTCを使ってブラウザから見てる。

次は720p

遅延は319msだった。フルHDとあんまり変わらないかも。ちなみに帯域は2Mbpsぐらい。動かないと1/4ぐらいになる。フルHDだと4Mbpsぐらい。

カメラがめっちゃ温かい。そして電源に繋いであるのにバッテリーが減っているのでラズパイと同じところから供給では電流が足りていない可能性。今回はUSB2.0ってのもあるかもしれないけど。

ラズパイカメラV1より画質が良くて低遅延なんだけども今のところの遅延最強はC270とuStreamerかなぁ。

2026年8月11日火曜日

MacBook Pro Late 2013をmacOS Sonomaにアップグレードしてみた。

 昔購入したMacBook Proを久しぶりに引っ張り出してきたらChromeとかドライバ類のサポートが終了していて困ったんだけど、OSもBigSurまでのサポートなのでどうしようもなくなってしまっていた。

調べてみるとOpenCore Legacy Patcherというソフトを使うとサポート終了したデバイスに新しいOSをインストールすることができるらしい。試しにやってみた。

必要なものは32GB以上のUSBメモリ。できればUSB3.0対応が良いらしい。microSDカードとカードリーダーで試してみたけどEFI bootで表示されなかったのでUSBメモリが良さそう。

ちなみにBootcampはBoot Campアシスタントから削除しておいた。

とりあえずBigSurまでアップデートされているのでOpenCore Legacy Patcherをダウンロードしてインストールする。OpenCore-Patcher.pkgをダウンロードして実行すればOK。

インストールが終わったら起動して、インストール用USBメモリを作成する。Create macOS Installerを選ぶ。

今回は少し古めのSonomaにしてみた。USBメモリの作成が終わるとOpenCoreをインストールするように言われるのでOpenCoreをMac本体のSSDにインストールする。

OpenCoreをインストールしたら作成したインストールUSBメモリを指したままOptionキーを押しながら再起動する。

EFI bootが追加されてるのでそちらからSonomaのインストーラーを選択して起動。インストール先をBigSurが入ってるパーティションを選んだのでアップグレードインストールが実行された。

あとは何回か再起動を繰り返すんだけど、特に何もせずに放置しておくと勝手にSonomaが立ち上がってきた。結構な時間がかかったような気がするけどこれは簡単かも。

とりあえずChromeもアップデートできるようになったし、動作もSonomaとBigSurだとさほど変わらない気がするのでまだ使えそう。



2026年8月1日土曜日

OpenWrt用のMACアドレス検索スクリプトを作ってみた。

 DD-WRTからOpenWrtに移行するにあたって、デバイスが多いと何がつながってるのか調べるのにMACアドレス検索を使っていたんだけど、DD-WRTではクリックするだけで見れていたのにOpenWrtのLuCIにはそういう機能がないのでJavaScriptで試してみた。

最初ブックマークレットを作ってみたんだけど、自動リフレッシュのタイミングでリンクが消えてしまうのでluci.jsに追記する形にしてみた。

(function(){function l(n){let w=document.createTreeWalker(n,NodeFilter.SHOW_TEXT,null,!1),t,m=/\b([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})\b/g,r=[];while(t=w.nextNode())t.parentNode&&"SPAN"!==t.parentNode.tagName&&"A"!==t.parentNode.tagName&&"SCRIPT"!==t.parentNode.tagName&&"STYLE"!==t.parentNode.tagName&&m.test(t.nodeValue)&&r.push(t);r.forEach(e=>{let p=e.parentNode;if(!p)return;let h=e.nodeValue.replace(m,o=>{let oui=o.replace(/[:-]/g,"").substring(0,6).toLowerCase();let u=["https:","","uic.jp","mac","address",oui,""].join("/");return'<span data-mac-link="1" title="MAC Vender: '+o+'" style="color:#0066cc;text-decoration:underline;font-weight:bold;cursor:pointer;" onclick="window.open(\''+u+'\',\'_blank\',\'width=800,height=600,scrollbars=yes,resizable=yes\');">'+o+"</span>"});let s=document.createElement("span");s.innerHTML=h;while(s.firstChild)p.insertBefore(s.firstChild,e);p.removeChild(e)})}let v=new MutationObserver(n=>{n.forEach(w=>{w.addedNodes.forEach(t=>{1===t.nodeType&&!t.querySelector('[data-mac-link="1"]')&&l(t)})})});if("loading"===document.readyState)window.addEventListener("DOMContentLoaded",()=>{l(document.body);v.observe(document.body,{childList:!0,subtree:!0})});else{l(document.body);v.observe(document.body,{childList:!0,subtree:!0})}})();

この一行を/www/luci-static/resources/luci.jsの一番最後に追記するだけ。後は設定画面を開いてCtrl+F5を押してリロードするとあらゆるMACアドレス表示部分がリンクに変更されているはず。

これでhostnameが表示されないデバイスでも、デバイスのメーカーがわかりやすくなったのでデバイスが増えても安心。
MACアドレスをクリックするとこんな感じで検索サイトをそのまま小さいウインドウで出してくれる。DD-WRTの機能としては地味に便利だったのでこれでOpenWrtのLuCIも便利になったな。