Yamawine’s blog

ホームオートメーション奮闘記

気象ステーション(Ecowitt WN90LP)を設置した話

実は私、軽ーく気象オタクが入ってて、自宅に気象ステーション(温度、湿度、気圧、風向、風速などが測れるセンサー群のこと)を設置したいとズーーっと思っていたのでした。Home Assistant(HA)を始めてからも、HAに気象ステーションがつながると嬉しいんだけどなぁー、と思い、探し続けてました。特に私の家は南の風をモロに受ける立地なので、風が強いと洗濯物が飛ばされたりするのでした。なので、気象ステーションを設置すると家人にも喜ばれる(かもしれない)のでした。また夏のオーニングも風が強くなってくるとしまう必要があるのです。

設置したEcowitt社製のWN90LP(上部の針金は鳥よけ)

まあ温度や湿度だけだったらSiwtchbotの防水温湿度計を外に置いておくだけなので、すでに設置してあります。が、それだけだと物足りず、やっぱり気圧やら風向やら風速なんか測りたいのでした。Amazonで探すとクルクル回る風速計と矢印のついた羽の風向計や雨量計などがセットになったもので4万円弱。これでも良いのですが問題は室内へのデータ転送なのです。太陽電池とバッテリーが内蔵されていてWifi通信できるワイヤレスなものもあるようなのですが*1、ソーラーポストで電欠した経験から信頼できないのでした。また多くの場合、専用の液晶ダッシュボードが付いているのですが、HAに繋ぐ前提の私の場合、専用ダッシュボードは不要であって、かえって邪魔なのでした。またAliexpressとかで探すと安いものの多くはABS樹脂なので耐候性/耐久性が気になります。

結局Ecowitt社製の気象ステーションに決めました。Ecowitt社のものは色々と種類があるのですが、多くの場合430MHzとかのWifiではない無線で宅内のダッシュボードにデータを飛ばし、ダッシュボードからWifiに接続するというものです。この無線方式だと日本では多分使えないので、宅内へはRS485の有線でデータ転送するWN90LPというマイナーな機種にしました。広く使われているWS90とデータ転送方式は違うのですが、計測するデータは同じと思われます。このWS90もWN90LPも超音波方式の風向風速計なので機械式よりも信頼性があると考えました。また本体はASA樹脂製でABSより耐候性があるとされています。WN90LPにはダッシュボードは付属していません。電源はRS485とは別に12Vが必要です。本体はAliexpressからも買うことができたのですが、鳥除けオプションも購入することからEcowitt社のホームページから購入してトータルで4万円弱でした。

 

WN90LP RS485 Electronic Weather Station with Modbus Protocolshop.ecowitt.com

 

WN90LPは25mm径のパイプに合うようになっているのでステンレスのパイプをホームセンターで購入し、屋外用のEthernetケーブルをバラしてRS485のA/B信号線と12Vの電源をWN90LPに繋いでいます。ケーブルはエアコンのダクト穴を通して家の中に入れています。WN90LPにはRS485をUSBに変換するアダプタが付属しているので、そのままHAを走らせているminiPCに接続しました。設置に関してChatGPTに色々と相談したのですが、雷サージが発生するとminiPCに被害が及ぶ可能性があると脅すのです。付属のRS485-USB変換アダプターはAmazonで調べたら599円の安物と同じだったので、サージ対策がされている変換アダプターに変えました。WS90LPは冬の零下になるとヒーターが作動して付着した氷を溶かすようになっています。これ時12Wほど消費するのと24時間365日稼働するので、それなりの電源を用意する必要があります。ヒーターが作動しなければ電気はほとんど食いません。

外部電源がなくても内蔵の太陽電池とバッテリー(おそらくスーパーキャパシタ)、さらにバッテリーが空になった時用の非常用電池(充電式でないリチウム電池推奨)でも動作するようです。ただしこの場合、氷点下のヒーターは動作しません。私の場合、どうせRS485の線を引く必要があるので外部電源としました。

WN90LPは、温度、湿度、風向、風速、気圧、光量、UV、雨量が計れます。雨量に関しては、上面に振動センサーがあって雨粒が当たる振動で計測しているのですが、SNSとかで見るとあまり信頼できないようです。

これでHAの新しいネタができたので、しばらくはダッシュボードを作ったりして遊べそうです。私の場合、別途RG-9の雨センサーがあるので、WN90LPの雨センサーと比較すると面白いかもしれません。

*1:気象センサーから専用ダッシュボードまでがWifiでない無線で、ダッシュボードがWifiを喋るというものもあるので注意。

さよなら、チャッピー君

Home Assistant(HA)の音声アシスタントですが、そのwake word検出には標準(?)のopen-wake-wordではなくPicovoice社のPorcupineを使っていたことは以前にblogで書きました。

yamawine.hatenablog.com

先月、Picovoice社からいきなり(?)メールが届いて「Porcupine(と他の製品)の無料での利用は6月いっぱいまでだからね。」という内容のメールが届きました。えええー?まさに寝耳に水とはこのことか、という衝撃です。上のblogにも書きましたがPorcupineのwake wordの認識率の高さに感激していたのですが、同時にこうなるような予感もしていたのです。金額が妥当なものであればいくらか支払っても良いとも考えましたが、Picovoice社に問い合わせるためにメールしようとしても会社メールしか受け付けてくれないのです。つまりは趣味の個人ユーザなんか相手にしても一銭も儲からない、とでも言いたげな感じです。でもでも、無料の個人ユーザを切り捨てて企業として本当に利益になるんでしょうか?実際私がこうやって「Porcupineはすごい」というblogを書いてるのは広い意味での広告になるのではないか(読者数はたった一桁なんですけどね)。逆にいえばそれほど困った状況にあるのかもしれません。憶測ですけど。で、7月になった今、無事(?)Porcupineが使えなくなりました。うーーーん、悲しーー。

さてさて困りました。認識率のことを考えると再びopen-wake-wordに戻るのも躊躇してしまいます。代わりになるものはないかと探したら

davoice.io

なるものを見つけました。で、早速メールをすると「今はカスタムwake wordは受け付けていないんだ」という返事。ということは「ねーチャッピー」と言って我が家のチャッピー君に話しかけることはもう事実上できないということなのでした。これまで我が家の音声アシスタントを「チャッピー君」と呼んでいたのですが、これも何かしら変えないといけません。

我が家でのHA音声アシスタントですが、最初の頃は、朝起きて「ねーチャッピー、おはよう」、夜になると「ねーチャッピー、おやすみ」とかやっていたんですが、最近はほとんど誰も「ねーチャッピー」と呼びかけないのでした。音声アシスタントって、なんかAI使ってる、という雰囲気があるのですが、実際には誰かが「ねーチャッピー」とか「アレクサ」とか呼びかけると、ちゃんと認識されるよう音をたてたり声を出すのを控えようとするのです。逆に呼びかける方は、噛まないようにとか、誰かが喋りそうになってるか、なんか雑音になるような音が鳴ってないか気にするのです。で、結局、音声アシスタントに多少のAIは感じられるものの、手放しでお気軽とまではいかないのでした。

よく考えてみると、朝起きてきたことを(モーション?)センサーと時刻で検知して、人間が何も言わないでも「おはようございます。今日の天気は、、、」と勝手にその時必要と思われる内容のおしゃべりを開始してくれるのが一番です。これこそ究極の「気が利く」AIなのではないでしょうか。

Porcupineが使えなくなったことのショックで、今後どうするか、まだ決められないのでした。

カスタムコンポーネントの管理

Home Assistant(HA)の凄いところはユーザがカスタムコンポーネントを自由に作ることができて、それらがGithubで公開されていて、かつその数が膨大なことです。試しにGeminiに幾つあるか聞いてみたところ、なんと3,000以上、もあるとのことです。凄すぎる!

カスタムコンポーネントをHAにインストールするには大抵の場合HACSから持ってくるのですが、毎回HAをリブートしたり、lovelaceカードの場合はwebブラウザのキャッシュを空にする必要があったりと、少々面倒ですが、自分の要望にピッタリな場合には、そんな手間も惜しみなくインストールしてしまうのでした。

とは言っても、実際にインストールして使ってみると、あれ?思ったのと違う、と言うこともしばしばあったりします。結果、折角インストールしたもののそのまま放置することも少なくありません。

そんな中、たまたまHACSで何か面白そうなカスタムインテグレーションはないかと探していたところ、Custom Component Monitorと言うインテグレーション(+lovelaceカード)が目にとまりました。

github.com

このインテグレーションはHAにインストールされているカスタムコンポーネントの状態を一目で知ることができます(↓はcustom:custom-component-monitor-cardのスクリーンショット)。

Custom Component Monitorカード

カスタムコンポーネントは、"Integrations"、"Themes"、"Frontend Cards"に分けられていて、かつこの図の青で囲った部分をクリックすることで、"all"、"used"、"unused"のコンポーネントをそれぞれフィルタできるようになっています。

いやいや、自分でもちょっとびっくりしましたが、インストールしたコンポーネントが57個もあることと、その中で使っていないものが20個もあると言う事実です。まあ確かにHACSってものによっては消すことがUIからできないものもあったりしますからね。

それに加え暫定的に(意図的に)使っていないものもあったりします。例えば、私の場合、EcoFlowのポータブルバッテリーをHAサーバーなどのUPSとして使っていて、HAのEcoflowのインテグレーションを使ってバッテリーを監視するようにしています。元々は"EcoFlowCloud"と言う正規(?)のクラウド経由のインテグレーションを使っていたのですが、最近"EcoFlow BLE (Unofficial)"が出たので乗り換えました。クラウド経由だと停電などでWANが使えなくなるとEcoFlowの状態が取れなくなるという理由で、Bluetoothを使ったローカル版に置き換えたのでした。でも名前の"Unofficial"というのが気になって元のEcoFlowCloudは残してあるのです。

何はともあれ、本当に使われていないコンポーネントは整理して消さないとダメですね。ChatGPT曰く、config/custom_components/以下にあるコンポーネントのディレクトリを丸ごと削除すれば良いようです。暇を見つけて整理しようと思います。

iPhoneを鳴らせ、からの、ダッシュボード計画

スマホって家の中でもどっかに行ってしまうことってよくありますよね?で、見つけるためにわざわざスマホに電話をかけて、その音を頼りに探したりします。そうだ!チャッピー君(ChatGPTでなく、我が家のHome Assistant ローカルAIの名前)に頼んでiPhoneを鳴らせばいいのでは?と思いつきました。

万が一にも家族全員のスマホが同時に行方不明になってしまっても、これなら対処可能です。あ、でもこの場合は固定電話(もしあれば)から電話すれば良いか。でももしスマホの電話番号を覚えていなかったら困った状況になります。スマホのおかげで電話番号覚えなくなりましたからね。

これを実現するのは簡単なので、わざわざChatGPTにお願いするまでもありません(嘘、本当は少しだけお願いしました)。チャッピー君に「iPhone鳴らして/探して」とお願いすると、それに対応したスクリプトでnotificationをiPhoneに送るだけです*1。この時、音量を最大にし、"critical"で送れば、たとえマナーモードになっていたとしてもけたたましく鳴ってくれます。ついでに、このスクリプトの最後にチャッピー君に「iPhone見つかった?」と喋らせて、気遣ってくれるようにしました。多分Androidでも同様のことができると思います。

「誰々のiPhone」といちいち指定するのも面倒なので「iPhoneを鳴らして/探して」で家人のiPhoneを全部鳴らすようにしてしまいました。おっと、こうすると外出している家人のiPhoneもけたたましく鳴ってしまい、時と場合によっては大迷惑になってしまいます。なので、device_trackerを使って家の中にあるiPhoneだけを鳴らすようにしました。

もしダッシュボード端末があるのなら、探したいスマホのアイコンをクリック/タップするとそのスマホだけにnotificationが送られるとかすれば良いかと思います。


そう言えば、我が家のダッシュボード計画もそろそろなんとかしたいのです。実はいまだに電子ペーパー端末に未練があって、そういうネット記事やYouTubeを見つけるとついつい観てしまうのでした。私が計画しているものは正確にはダッシュボードというよりHome Assistantからのメッセージボード的なものです。これはつまり、ダッシューボードのように操作して照明等を付けたり消したりするのではなく、家の温度などの状態やチャッピー君のお喋りの内容(聞き逃した時用)を主に表示するだけです(上記の「iPhoneを探す」ボタンを除く)。

このメッセージボードは当然ながら目につきやすい場所に設置する必要があります。逆に、目につく場所に設置したことでかえって目障りに思うようになるかもしれません。なので、マジックミラーを使って普段は鏡、新しい情報があるときだけ鏡の中の液晶が光って表示される、なんてすると目障りじゃなくなるし、なんと言ってもかっこいいじゃないですか!これも電子ペーパー同様、随分と検討したのですが、かなり問題が多い(大きい?)のでした。

もちろんそんな出来合いのものは売っていないので自分で作らなくてはなりません。アクリルのハーフミラーを買ってきて、額に入れて、中に液晶ディスプレイを仕込みます。これなら不器用だけど工作好きな私でもなんとかなりそうな気がします。最大の問題はその動作原理にあります。

マジックミラー(ハーフミラー)の光の透過率を高くすると鏡としての質が落ちてしまいます。実用的と言われる透過率が30%なんだそうな。このとき、明るいと言われる500nitsの液晶パネルであってもその30%しか見えてこないので実質150nitsの明るさになってしまいます。うっすら表示で良いのならそれでも良いのかもしれませんが、くっきりスッキリ見せるためには例えば1000nitsもの明るさが必要になります。これでもマジックミラー越しには普通の液晶の明るさの300nitsにしかなりませんので、日光が差し込むような明るい場所では結構きついです。1000nits以上の高輝度液晶はデジタルサイネージ用を謳ったものがありますが、もちろん安くはないですし、液晶自体の消費電力もそれなりに増えます。本格的デジタルカメラのためのファインダー用として売られている液晶には直射日光にも負けない2000nitsもの明るさがあったりしますが、一般的なモニター的な使い方はできなくて、カメラのファインダー用途限定なのでした。

ということで憧れの電子ペーパーやマジックミラーディスプレイは諦めるしかない状況なのでした。うーん、悲しい。結局は、ごく普通に、バッテリーレス(POE)のAndroid端末か、モバイル液晶モニター+省エネminiPCか、という2つの選択肢しか残されていないのでした。POEのAndroid端末は普通のタブレットに比べて安くはないし、miniPCもここしばらく値下がりしそうもないので、今だにどうしようか迷っているのでした。

*1:こうするためにはiPhoneにHome Assistantのコンパニオンアプリが入っていないといけません。

「魔法は探し求めている時が一番楽しい」−フリーレン

漫画/アニメ「葬送のフリーレン」の主人公の言葉です。この言葉、Home Assistant(HA)の新しいオートメーションを考えているときにピッタリです。常に何か新しい/面白いオートメーションができないか考えてしまうのでした。家のアナログ電話をHAに繋ぐと何ができるようになるかもその一つです。今回はそんな内容のお話で、2つほど取り上げてみました。

  1. 鳥の鳴き声から庭に現れた鳥を認識する

    こんな記事をたまたま見つけました。

    ai.watch.impress.co.jp

    なるほど!生き物の鳴き声からその生き物の種類を判別するってわけですね。おもしろそー!でもでもこれって30万円もする!これでは手が出せません。

    ん?ひょっとしてそういうソフトってすでにあったりするんでないの?と思って(またまた安直に)ChatGPTに聞くとあるっていうではないですか。ただし鳥専門になってしまいます。

    BirdNET – AI-Powered Sound ID

    BirdNETって派生(?)がいくつかあって、本家(?)のBirdNETはどちらかというと研究目的なので、例えばHome Assistant(HA)とささっと連携したい、なんて用途にはそれなりに面倒なんだとか。で、ChatGPTが最終的に勧めてくれたのが、birdnet-goなのでした。

    github.com

    もちろん小鳥の声を入力するためには家の外にマイクが必要ですが、幸い監視カメラがあるので、そのマイクを音声ストリームとしてやればOK。音声ストリームということでCPU1コアで十分、メモリは500MB程度で良いようです。これなら今のminiPCでも十分動かせそうです。で、おもしろそうなので早速ChatGPTに言われるままにインストールしてみました。今のgo2rtcと同じPROXMOXコンテナに別なDockerとしてbirdnet-goを入れ、音声ストリームはgo2rtcから引っ張ってきました。

    おお、ちゃんと認識されるじゃないですか。ちょっと残念なのが鳥の名前が全部英語で日本語には対応していないことです*1鳴き声を認識すると何時何分にどの小鳥の声を認識した、というのがデータベースに登録され、WebUIでも認識結果を見ることができます。で、小鳥に関してもちゃんと小鳥ごとにアイコンが設定してあって、こんな鳥の声を認識したよ、ってな具合にわかるのですが、最初は見たこともない鳥が表示されて戸惑いました。このソフトとてもよくできていて、地域の設定をすればその地域の鳥のデータベースに切り替わるのです。先の見たこともない鳥は日本とは全く違う地域に生息する鳥なのでした。で、ちゃんと地域を日本にすると、Common Redpoll(ベニヒワ)という名前の鳥が検出されたことになってました。でも実際にはスズメなんです。まあベニヒワもスズメ目なんだそうで当たらずとも遠からずといったところでしょうか。

    インストールしたBirdNet-Goのスクリーンショット

    Frigateでも鳥の種類をある程度識別することはできるようですが、残念ながら私の場合、カメラが悪いのか設置場所が悪いのか、鳥の種別どころか鳥かどうかさえもほとんど認識してくれないのでした。

    おっと、大事なことを忘れてました。もちろんBirdnet(-go)はローカルAIなので、基本データが第3者に渡ることはないそうなのですが、Birdweatherと連携するとデータが第3者に送られるようになってしまうので注意が必要です。

    で、HAと連携するにはbirdnet-goからMQTT経由で接続すれば良いみたいです。実際にHAに接続するのは少し様子を見てからにしたいと思います。

  2. クルマのOBD2のデータをHAに取り込む
    たまたまYouTubeを見ていて見つけたものなのですが、世の中にはクルマのOBD2ポート(コンピュータ診断用ポート)をWifi/Bluetoothに変換してくれる機械があって、WiCANとか呼ばれているようです。例えばコレ。

    www.meatpi.comで、これを買って(これ以外にも似た機能のものがいくつかあるようです)、クルマのOBD2ポートに接続するとOBD2から得られた情報(燃料の残量、バッテリー電圧、エンジンの回転数などなど)をWifi/Bluetooth経由でHAに取り込むことができるというわけです。中身はというとESP32なのでした。なので、クルマが家のガレージにあってWifiやBluetoothが届くのであれば簡単なのですが、走行中はそうはいきません。また、OBD2ポートは普通はハンドルの下あたりにあるので、アンテナが貧弱なESP32によるWifi/Bluetoothではかなり条件が良くないと繋がらないようです。どうしても走行中のデータを取りたいというのであれば、スマホによるテザリングで家のHAとVPNなりで繋ぐというような工夫が必要です。

    これに注目した理由は、「そういえばガソリンどれくらい残ってたかな?」というのが家の中から分かればそれなりに便利かと思った次第。ガソリンが少なくなっていればスタンドに行かなくてはなりません。もう一つの理由は、もし万が一、ガレージから盗難されそうになった時、HAがクルマから情報が来始めたことでイグニッションがオンになったことがわかるので、例えば夜中にこの通知が来ると盗難されそうになっているというのが分かります。
    ChatGPT曰く、バッテリー電圧を見ることでバッテリーの健康状態が分かるし、水温をチェックすることで冷却系の異常を察知できる、とか言いますが、日本車で、ちゃんと6ヶ月点検をしていればそのような心配は不要なのではないでしょうか。そもそも、こういう故障系のオートメーション(プログラム)ってテストするのが大変なんですよね。故障の状態を作り出さなければなりませんから。なので私はあまり乗り気ではないのでした。
    試しにクルマのハンドル下に手持ちのESP32を置いてみたのですが、家のWifiにはうまくつながりませんでした。なので、別途Wifiリピーターとか必要になります。WiCAN装置はAliexpressでも売っていて、数千円から1万円前後のお値段です。それだけの投資をしてガソリンの残量が家の中から分かるだけって、ちょっと悲しいものがあります。

実は新しいセンサーデバイスを導入してHAでできることが増えた時は嬉しいのですが、それが不調になると多くの場合、解決するのは簡単ではなかったりします。これってつまりは「考える」だけで止めておいた方が良いってこと?

*1:すいません、間違ってました。設定をすればちゃんと日本語で鳥の名前が表示されます

MCPサーバーってHome Assistantに必要?

最近MCPサーバーなるものがAI界隈で流行っているようです。で、調べたらどうやらAIが外部のサービスやツール、データを共通方式で扱えるようにするための仕組み、と理解しました。

今の私のHome Assistant(HA)でもOllamaを使ってAIを「より自然な会話」にするために使っています。具体的には、

  1. Speech-to-textで生成された文字列をマッチングして、対応した処理を呼び出して結果をテキストで返し、最後にそれをずんだもんの声(VOICEVOX)でText-to-speech(TTS)する。
  2. もしマッチングに失敗した場合は、AIを使って適切な処理(スクリプト)を選択し、それを呼び出しで得られた文字列をTTSする。
  3. AIが適切な処理の選択に失敗した場合は、AIにフリートークさせる

と言う処理になっています。

よく見ると2の処理は、AIがツールを選択して呼び出す最近のAIエージェント的な構成にかなり近いのです。大きな違いは、私の場合は一つの処理しか選んでいないのに対し、(もし)MCPサーバーを導入した場合は、関連する複数のスクリプトやツールをAIが文脈に応じて選択・組み合わせられる可能性がある、という点です。実際、今現在、「おはよう」と言われた時には、「おはようございます」に続き、現在の気温、今後の天気予報、今日のスケジュールなどを喋らせるためのスクリプトを用意していますし、「おやすみ」に対しても同様なことをしています。MCPサーバーと賢いAIを導入すれば、こんなスクリプトをいちいち用意する必要がなくなりますし、他のことももっと柔軟に処理してくれることが期待されます。

いや、ちょっと待てよ?AIが家の状態を問い合わせるためにスクリプトを順に呼び出すのはいかにも遅そうです。AIの処理は重いですし、AIが必要と考えるスクリプトを呼び出して得られた文字列を解釈し、次のスクリプトを呼び出す、という処理を繰り返すわけです*1。ここで思い出しました。今現在Gemma 2を使っているのですが、その時にプロンプトの処理が思いのほか速かったこと。ならばいちいちスクリプトを呼ぶのではなく、家の状態(全てのエンティティではなく、取捨選択したものだけ)をプロンプトに入れ込んでそれを一回のAI呼び出しで処理してしまった方が速いのではないか?

早速実験してみました。試したプロンプトは以下の通り(使ったエンティティの数は11個)。

あなたはHome Assistantの会話アシスタントです。

以下は現在の家の状態です。
この情報を使って、質問に自然な日本語で砕けた感じで答えてください。

ルール:
- 重要そうな情報を優先する
- 事実にないことは言わない
- 行動を推測しない
- 項目名をそのまま読み上げない
- 箇条書きにしない
- ユーザーの言い方に引っ張られず、現在の家の状態を優先する
- 質問と状態が違う場合は、訂正する
- 話し言葉
- 短めに
- 最後に全体をまとめる短い1文を自然に入れる
- 英語、絵文字禁止
- 返答文章だけ出力
- 家の状態と無関係な質問には、単に「わからない」と返答する。

現在の家の状態:

室内:
- リビングは24.8度
- 湿度58%
- 快適
- CO2濃度1100ppmで換気を推奨
- 電力1234ワットで節電推奨

戸締まり:
- 玄関は施錠
- 勝手口も施錠

外の様子:
- くもり
- 外気温21度
- 今後6時間は雨の可能性が低い

今日の予定:
- ミーティング

今日のゴミ:
- 燃やせるゴミ

質問:

これと質問事項をOllama(Gemma 2)に入れて--verboseオプション付きで実行してみた結果がこれです。

... 質問:おはよう
おはよう!
部屋の温度は快適だけど、CO2濃度が1100ppmなので換気推奨だよ。
外はくもりで気温21度。雨の可能性は低いみたい。

total duration:       4.246988173s
load duration:        96.245611ms
prompt eval count:    624 token(s)
prompt eval duration: 970.91233ms
prompt eval rate:     642.69 tokens/s
eval count:           56 token(s)
eval duration:        3.101700234s
eval rate:            18.05 tokens/s

会話の終了(total duration)まで4秒、プロンプトの読み込み(prompt eval duration)が1秒足らずです。これなら十分実用になります。実際には回答の最初の文が返ってきた段階でVOICEVOXが走りますから(パイプライン動作)、4秒よりも短い時間で応答が始まります。また回答の内容も、いくつか抜けがありますが、まあまあといった感じ。これならば、先の現在のAIの手順の1と2をまとめて一回のAI呼び出しにしてしまえば良いのではないでしょうか。ただし、プロンプトにあるようにプロンプトに書いてあること以外は「わからない」と答えるようになっているので(こうしないとハルシネーションが起きる)、処理手順の3は外せないのでした。


ちなみに同じプロンプトと質問をGeminiに投げた結果がこれです。

おはよう!今はリビングが24.8度で、湿度は58パーセントだからちょうどいい空気だよ。ただ、二酸化炭素の濃度がちょっと高いから窓を開けて換気したほうがよさそう。それから、電気をたくさん使っているみたいだから節電も意識してみてね。外はくもりで気温は21度、これからしばらく雨の心配はなさそうだよ。玄関と勝手口の鍵はちゃんと閉まっているから安心して。今日の予定はミーティングがあって、ゴミ出しは燃やせるゴミの日だから忘れないでね。快適な部屋だけど、換気と節電をしながら今日も一日がんばろう。

さすが大きなLLMはそつがない回答を返してきますね。まあモデルの大きさを考えれば今のGemma 2でもそこそこ使えそうです。

と言うわけで今回はMCPサーバーをHAに導入するかどうかの検討結果でした。今後はこの結果をベースに実際に家のHAに導入するつもりなんですが、今のAIの枠組みを壊すのがちょっと怖くて、気力と時間ができた時に挑戦する予定でいます。

*1:ChatGPT曰く、実際にこの処理が重くて今現在問題視されているそうな。

アナログ電話 + Grandstream HT813 + Asterisk + Home Assistant

ネットを見てたらAsteriskという聞き慣れない言葉が出てきました。調べてみるとPBX(電話回線の交換機)として使えるフリーのソフトウェアのようです。うーん、世の中いろんな便利なソフトウェアがあるんですねぇー。

www.asterisk.org

で、今の固定電話回線(いまだにアナログなんです)をGrandstream HT813に通してLANに繋ぐとHome Assistant(HA)でいろんなことができるようです。以前、電話がかかってきたことをHAが知ることができればあんなことやこんなことができるのになぁ、と書いたことがありますが、まさにHT813があればそれができるようです。HT813ですが、一言でいえばアナログ回線をSIP/IP電話にする機械です。


Amazon | Grandstream Handy Tone HT813 VoIPアダプタ/ATA 1-電話入力口、1-電話出力口、1-LAN、1-WAN | Grandstream | 電話機本体


例によってChatGPTとこの件で話をしました。で、HT813を買ってAsteriskを入れ、HAと繋げるとできるようになるのは以下の通り。

  1. 外線をスマホで受けることができる。
  2. スマホから外線を使って電話できる。
  3. HAを使って自動応答ができる。
  4. HAのAIを使って怪しい営業電話かどうか判別できる(かもしれない)。
  5. ナンバーディスプレイ機能があれば「〇〇さんから電話です」とチャッピー君が教えてくれる。
  6. HAで留守録ができ、その内容をメール等で送ることができる。内容は音声または文字起こしした結果あるいはその要約。
  7. 今ある(カメラなしの)ドアホンもスマホで受けられる(かもしれない)。
  8. 電話がかかってきた時にテレビなどの音量を下げる/消すことができる。

このうち1、2、7は今の電話/FAX機でもできることはできるんですが、これのスマホアプリが酷く、ほとんど使い物にならないのでした。また6に関しても今の電話/FAX機でできるとあるのですが、SMTPの認証が甘く(古く)、今時のSMTPではメールを送ることができないのです。4に関しては今のminiPC上の非力なOllamaでどこまでできるのかやってみないとわかりません。もし今のカメラなしドアホンとHAが連携できれば、その時の防犯カメラの映像を流すことができ、カメラ付きドアホンに近い機能を実現できます。

電話をHAの音声サテライト、つまり受話器からHAに対し音声コマンドを入力すること、をChatGPTは何度も推してくるのです。確かに受話器を取るという行為は、音声サテライトの発話ボタンを押すのと同じですし、(古い?)人間にとっては慣れ親しんだ自然な行動です。でも、今既にwake wordで入力できるのですから、わざわざ電話機のあるところに行ってまでコマンドを入力するというのは、やっぱり「なし」なんではないでしょうか。

つまりはHT813を買えばまたHAで色々と遊べるという訳です。ただねぇー、これから固定電話がどれほどのものかビミョーですよね。変な営業電話や選挙前のアンケート調査がいっぱいかかってくる固定電話なんて要らないという話もあったりします。それに対しHT813に12,200円(執筆時点)の投資をするのは考えてしまうのでした。

あ、以上の話はHT813を前提にしたもので、家庭側にアナログ電話ポート(NTTアナログ回線や、ひかり電話ルーターのTEL端子など)があることが前提です。もし電話機が直接SIP/IP電話になっている場合は、Asterisk(+アルファ?)でいけるみたいです、知らんけど。