スマートロック「Sesame」を使っている人なら感じたことがあるでしょう。
クラウドにアクセスするのが遅すぎる…と。
かといってBluetoothに接続するも遅い…と。
これだったらリアル鍵を取り出した方が早いんじゃね…と。
SesameはWebAPIを公開してくれています。
なのでそれをPHPからcURLで叩いてそこそこ早く施錠・解錠したいと思います!
#準備
・SesameとWifiアクセスポイント
今このページを見ている人なら既に持ってると思いますが一応
・無線LANルーター
スマホでローカルWebサーバーにアクセスするのに要ります。
・PHPでcURLが動かせるローカルWebサーバー
構築方法はググって下さい。
IPアドレスはスマホからアクセスできるように固定しといて下さい。
自分はRaspberryPiにNginxを入れてます。WebサーバーにできるNASとかもありますし何でもいいと思います。
・SesameIDとAPIキー
下記URLを参照しSesameIDとAPIキーを取得して下さい。
APIキー取得方法とセサミIDの確認方法
#PHPファイルをローカルWebサーバーに配置
SesameIDとAPIキーは書き換えて下さい。
・施錠用PHP
<?php
$url = 'https://api.candyhouse.co/public/sesame/<SesameID>';
$apikey = '<APIキー>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$data = array('command'=>'lock');
$data_json = json_encode($data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: ' . $apikey, 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_exec($ch);
curl_close($ch);
?>
・解錠用PHP
<?php
$url = 'https://api.candyhouse.co/public/sesame/<SesameID>';
$apikey = '<APIキー>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$data = array('command'=>'unlock');
$data_json = json_encode($data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: ' . $apikey, 'Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_exec($ch);
curl_close($ch);
?>
上記PHPファイルを作成したらドキュメントルートに配置します。
/var/www/html/lock.php
/var/www/html/unlock.php
#施錠・解錠方法
スマホのWifiで無線LANルーターに接続し、ブラウザから
http://<ローカルWebサーバーのIPアドレス>/lock.php
にアクセスします。すると体感3秒位で施錠してくれます。
解錠も同様の手順でunlock.phpにアクセスします。
(ショートカットを作っておくと便利!)
#参考文献
Sesame API