ネット非対応のテレビドアホンを対応させる(但し通知のみ)
こんにちは。
インターホンやテレビドアホン、かつてはいろいろなメーカーが出していたと思いますが、今はおそらくパナソニックとアイホン株式会社(AppleのiPhoneではないですがiPhoneの商標はアイホン株式会社のライセンスにもとづき使用されています)の2社がシェアのほとんどではなかろうかと思います。
我が家のそれはパナソニック製ですが、当然ネットには非対応。本体に録画機能があって留守中に誰かが来たことはわかりますが、それは帰宅して本体を見るまではわからない。そう、固定電話の留守番電話みたいなもので「新着あり」表示が点灯しているのを見て初めて「ああ、誰か来たんだな」ということがわかります。
今ならネットに対応し、リアルタイムで外部からスマホで応答するようなものもあるかもしれませんが、あってもきっと高い。まぁ壊れるまで買い替えるようなものでもないので・・・ひとまず本体の裏を見ますとこの機種には「A接点出力」がありました!
取説にA接点に接続可能な機器として挙げられているのは「光るチャイム、メロディサイン、警報ランプ付ブザー、回転灯」など。つまり「玄関の呼出ボタンを押すと連動してこれらがONとなる端子」と理解できます。
耳の不自由な方向けに光るお知らせが連動するようにできる、などの拡張端子であることがわかります。この端子を拝借して、ここがONしたらネットに通知するようにすれば「ネット対応」にできるわけです(一方通行ですが)。
つまり、それを検知して自宅のWi-Fiを経由してネットに飛ばし、自分のスマホ宛に通知する仕掛けが出来れば、うん。「何かカッコイイ」ですね。
リアルタイムにどこにいても来客があったことを確認できる、というよりは(もちろん、防犯的にはそれでも良いと思う)、誰かが来たことがあらかじめわかっていれば帰宅してから本体の録画をチェックすればいいのであって、そのチェック忘れの防止にもなります。今回の改造はどちらかと言えばそっちです。
そう、いつの間にか「新着あり」表示が点灯していて録画を見ると何件も溜まっていたなんてことありませんか?私はあります。何も無いとそもそも、チェックすることすら忘れてスルーしているのです。
とはいえ宅配の人がほとんどで、再配達の伝票があればそこで突き合わせてOKなんですけど、訪問記録ってなんか気になるじゃないですか。でもそれをスルーしておくのもさらに気持ち悪い、その見逃し防止だけでも進化させる方向で良しとします(たいていは宗教とか訪問販売とか得体の知れないロクなもんじゃないやつだけど、たまに近所の人とかが来てることがあって「あれ、何だろう?」と気になったりはする)。
というわけで、ここにラズパイをつなぐでもいいですが、今回はESP32を使用しました、マイコンの一種です。プログラムを書き込んでWi-Fiに接続して、いろいろ出来ます。Amazonでも売ってます。一台1000円前後です、買うならちゃんと技適が通ったものにしてくださいね。
ラズパイでやるようなことでもないのでこれで十分です。通知方法はいろいろ考えられますが最近はLINE notifyが簡単で気に入っています。
https://king.mineo.jp/reports/215280
LINE notifyについてはこっちに少し書いてあるので割愛。
ほんで、こんな具合にA接点出力とGPIOをつないでプログラムをごにょごにょと書いてUSBから書き込んで、動作確認したら完了です。インターホン本体にAC100Vが直接接続されているモノは電気工事士でないと外すことが出来ませんからご注意ください、コンセントタイプのモノは当然、誰でも外せます。玄関子機への配線も無資格で外すことができます(この画像だと赤線と白線がそれで、この配線が玄関につながっています)。
私は電気工事士免状を持っていますので、一旦外してボックスを追加してESP32を収納し、内部から電源を取って動作するように加工してみました。インターホンが壁付けから宙に浮いて見えるようになって、むしろカッコイイとは言いませんが(笑)、配線や基板が剥き出しのものがごちゃごちゃするのは美しくないので、これで良しとします。そんなに違和感ないです。
で、誰かが来訪して玄関で「ピンポーン」とボタンを押しますと、このようにLINEで通知が来るわけです。成功!
ちなみにその下の「玄関ドアが開いた」という通知は、別途、玄関ドアにスイッチを付けていて、開いたらそれを検知して通知するようにしているのでこれはまた別の仕掛けですが、理屈は同じです。
昔はこんなことをやるにはとても大変でしたが、今はモジュール一つ買えば済むのでとても安く「遊ぶ」ことが出来ます。良い時代です。
A接点出力にメーカー指定外のものを接続していますので当然「自己責任」となりますので何卒。at your own riskにてお願いします。
我が家は、2階でインターホンが鳴っても3階に聞こえないといつ問題があります。
そこで、大きな音が鳴ると、離れた子機でピンポン音が鳴る、というセンサーセットを買ったのですが、これがちょっとした振動でもセンサー感知して、子機が頻繁に鳴って役に立ちません。
パナソニックは光るお知らせが連動する端子なんて付いてるんですねー。我が家の単機能インターホンにもあるだろうか…?帰ったら調べてみます。
https://www2.panasonic.biz/jp/densetsu/ha/signal/chime/products02.html
これなんですよねー。ご存じファミマの入店音でございます(というかファミマが登場する前からこれがあるのでパナソニックがオリジナルです)。
つまりはこれを増設すればあのメロディーが流れるわけでして、まぁ、家のどこでも聞こえるでしょ、って感じにはなります。
留守宅でそれが鳴り響いても意味がないので今回は「LINE!」が鳴るようにしてみましたというお話。
子供用携帯(1ボタンタイプ)をインターホンの枠をつけて、留守でも応答可能って工作があったと話題になっていた記憶が。
調べても記事は出てきませんでしたが。
電人さんなら
今のシステムを拡張して古いスマホを利用して、自動でLINE通話等まであと一歩ですね。(そんなに簡単ではないw)
もう数年前から買い替えようと思っていたのですが、数年ごとにモデルチェンジを繰り返しても、表示解像度が低すぎて満足できる製品が出てきません😰
去年の夏過ぎにやっと新型が出たので、オーダーしようとスペックをチェックしていたら、玄関子機カメラの解像度は少し上がった(約200万画素)ものの、オプションの屋外ワイヤレスカメラの撮像素子は、30万画素のまま😱
https://panasonic.jp/door/products/swz700.html
30万画素って20年以上前にデジカメが出始めた頃の仕様です😒
この屋外ワイヤレスカメラを付けないと、誰かがピンポン押さないで玄関前でウリウロしていても何も通知されず判らないですからね
で、もう少しまともな製品が出てくれるまでは、セキュリティ的にちょっと怪しいですが、こんな製品を併用しています。
https://onl.tw/14YdapS
これなら、だれかがピンポン押した時に通知(録画)だけで無くスマホで会話が出来るのはもちろんの事、玄関近くへ誰かが近づいただけでスマホへ通知(録画も可能)してくれます。
内蔵充電式バッテリーだけでも1ヶ月以上使えますが、従来のインターフォン配線を流用して屋内からDC12Vを給電すれば充電は不要です。
>> かくいち さん
そこまでのhackはできません(笑)でも、単にケータイ埋め込んだだけなら盗難とかのリスクがあるような(しかも電池駆動だとそもそも無理がある)。別にリアルタイムで「応答したい」わけではないから(そんなに頻回に来客もありませんので)、とりあえずは「誰か来たのがわかるシステム」で十分です。
ただ、録画した画像とか送れたら良いんですがねぇ。ESP32にはSDが読めるI/Fがあるのですが本体改造を伴うといざという時に簡単に戻せないので、まぁとりあえずはこんなもんかな。
>> corgitan@人生は一度きり🤔 さん
多機能なやつってイマイチ興味ないんです。価格の割に使わない機能が多すぎるとか、専用の子機が最初に壊れがちで、その子機だけ買おうとすると異様に高かったりするのもあるあるです。VL-SWZ700の取説読んだら案の定、スマホ連携には専用アプリが必要でした。専用アプリとか要らねー(笑)
LINEが対応しなくなったらメールで送信するとか、いやSlackがあるとか、いろいろ対応できるのが「自作プログラミング」の良いところです。
輸入品に関してはそもそもWi-Fi対応と言っておきながら技適対応していなかったりするのでそんなものを玄関に堂々と掲げる勇気は私にはありません。
pinMode(SW)をINPUT_PULLUPにしておいて、
void loop() {
if (digitalRead(A_SW) == LOW) {
//
ここにLINE送信処理
//
}
}
とでも書けば済みます。A_SWがLOWになったら、つまりSWが押下されたらLINEが送信される、それだけの無限ループです。
が、夜中の3時にLINEが来ました。そんな時間にインターホンを押すような人は居ませんし、霊現象でもありません(笑)
俗にいうチャタリングというやつで電圧の変動か何かで瞬時に電位が落ちたときに、SW押下と捉えてしまう現象です。落雷でもあったんでしょうかね。
で、
#define PUSH_SHORT 100 //とりあえず100と定義する
void loop() {
unsigned long gauge = 0; //ゲージを0リセットする
while (!digitalRead(A_SW)) //A接点がONになったら
{
gauge++; //ゲージを増加させる
}
if (gauge > PUSH_SHORT) //ゲージがPUSH_SHORTを超えたら
{
//
ここにLINE送信処理
//
}
}
として確実にA接点がONであることを判定するようにしました。
色々な処理法があると思います、他にもdelayを噛ませるとか何度か値を読んで平均を取るとか・・・(PUSH_SHORTの値はカットアンドトライだけど)私はこの処理が簡単で好きですが、もっとスマートな方法をご存じの方は教えてください。
私が知り得る小型で信頼できるUSB電源ってiPhoneの純正充電器なのですがこれより小さくて信頼できるメーカーの製品って何でしょうね
?5V1Aもあれば十分なんですけど。一応、インターホン裏に内蔵することは出来てますが、小さければ小さいに越したことはない。
ドアホンアダプタは盲点でした
>> 電人 さん
こっちのスレから戻ってまいりました。https://king.mineo.jp/reports/261218
そうかあ、マイコンって超単機能のサーバーみたいな物なんですね。(マイコンを知らない)常時通電でずっとループ処理のプログラムが回ってるという事なんですね。
マイコン扱えたら、色んな事が出来て楽しいだろうなあ。
ちゃんとWi-Fiに繋がって、色んな機器と接続して、色んな事が出来るんですねー。LINEでプッシュ型の連絡が出来る事には、可能性を感じます。しかも自由に作れるなんて。
>> さと さん
>常時通電でずっとループ処理のプログラムが回ってるという事世の中の家電はみんなそうなんです。ボタン押したら炊飯が始まる、とか、テレビが点くとか、みんなボタン押されることを待っている状態で待機している。
それを自分の好みで作ること(=電子工作の世界)はハードルが高くてそれこそ回路を組んで、基板を作り、っていうことをしなければならなかったのが一気にハードルが下がったんですね、ESP32で。
それでいてBTとかWi-Fi機能が最初から搭載されているなんてのはもう、こんなにスマホやネットに親和性があるものが千円くらいで買えるなんて私には嬉しすぎますね。いい時代になりました。
A接点の2本の線はESP32のどの端子に接続されてますか?
プログラムはある程度わかるのですが、電子工作は初心者なので、PULLUPとかA接点とか勉強しながらやっていますが、いまいちわからないです。( T_T)
>> blubelry さん
ソースを送ってもいいのですが、前提として。ESP32-DEVKITでまずは何か、作られましたか?Lチカでも何でも。プログラムはわかる。としたら、#define A_SW 13などとして定義すればいいので、何のピンを使ってもいい、ということはわかりそうなものです。まずはここからです。
俗にLチカがよく出てきますね。Lチカ止まりがほとんどで残念なことですが。あれだって、どこのポートでも基本的には良いわけです。定義すればいいので。
とはいえ使えないピンもありますね。
https://lang-ship.com/blog/work/esp32-gpio/
ここは参考になると思います。INPUTからチョイスすればいいと思います。つまり例に挙げた#define A_SW 13はGPIO13です。
>A接点の2本の線
A接点とは単なるスイッチです。インターホンが応答した時ここがON(短絡)します。従ってGPIOをPULL UP(HIGH)しておいて、スイッチが押された瞬間にLOWになるまでloopさせておけばいいわけです。ですから、もう一本はGNDですね。
まずははここまで理解できますか?
>> 電人 さん
setupした際にLINE通知を送るところは動作確認できたので、ソースを完成させて、ドアホンと配線しましたがダメだったのでお聞きしました。A接点と5Vを繋げないといけないのかなと思って。。。もう少し研究してみます!
【やってみた配線】A接点①-->GPIO23、A設定②-->GND
【書いたソース】
#include <WiFi.h>
#include <WiFiClientSecure.h>
const char* ssid = "";
const char* password = "";
const int A_SW = GPIO_NUM_23;
void setup()
{
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
pinMode(A_SW, INPUT_PULLUP);
}
// line通知
void send_line() {
(省略)
}
void loop(){
if (digitalRead(A_SW) == LOW) {
send_line();
}
// 60秒以上 WIFI接続が途切れていたらリセットする
static int ncTimer = 0;
if (WiFi.status() != WL_CONNECTED){
ncTimer++;
if (ncTimer > 120){
ESP.restart();
}
delay(500);
}
else{
ncTimer = 0;
}
delay(10);
}
>> blubelry さん
あーいやいや。A接点は単なるスイッチです。
ですから、
A接点①-->GPIO23、A設定②-->GND
であれば、まず繋ぐ前に単体で23とGNDをショートさせ、正常動作しなければなりません。それを確認してください。
>A接点と5Vを繋げないといけないのかなと思って。。。
そんなことをしたら壊れますよ(インターホンが)。
ソースを見る限り、const int A_SW = GPIO_NUM_23;
これって整数宣言ですよね、合ってます?
>> 電人 さん
いや、考え方は合ってるか。でも動作しないと。後で検証してみよう。>> 電人 さん
助言ありがとうございました。おかげさまで動作確認OKでした!23とGNDをショートをヒントに、ドアホンからの導通を一つずつ確認し、Lチカと組み合わせて目視でも確認しながらやったら成功しました。ブレッドボードかドアホン配線の接触不良だったかもしれません。
>> blubelry さん
あと、上に書いたようにif (digitalRead(A_SW) == LOW)
とただのA接点スイッチONを検出するだけだとたまに誤動作しますので。対策法は書いてある通りです。これで今のところ誤動作はありません。約一年、何の問題もなく動いてます。