車載警報装置が発報したら、メールで携帯電話に通知するようにしてあるが、メールだと、携帯電話の省電力機能のせいで、10分位遅れる事もある。
そこで、SMSも送信する事にした。
使うのは、twilio で、1通あたり、$0.08(約11.53円)。
ログインして、コンソールを見ると、チュートリアルで、簡単にSMSが送れるようになっている。
ステップ1で、twilio 番号(米国の電話番号)を取得して、linux で端末開いて、curl でサンプルコードを実行したら、携帯電話にSMSが届いた。
トライアルアカウントで、約2,000円位のお金がチャージされていて、使う事ができるので、これだけでイケるんじゃね? と思ったら、30日以上使用されていない場合に電話番号が削除される可能性があるそうな。
警報発報なんて、年に1回、あるかないかなので、無料で使い続けるのは難しそうで、アップグレード(最低2,000円〜)して正式なアカウントにしたら大丈夫のようだが、良いサービスなので、金払ってもいいな。
そして、RX-7に積んでいる Raspberry Pi zero 2 W のプログラムをSMS送信するように更新。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#!/bin/bash GPIO=26 GPIO_DIR=/sys/class/gpio MOTION_PID=/dev/shm/motion.pid initialize(){ # GPIO26を有効化。プルアップ抵抗ON echo $GPIO >${GPIO_DIR}/export sleep 0.1 echo in >${GPIO_DIR}/gpio${GPIO}/direction sleep 0.1 echo high >${GPIO_DIR}/gpio${GPIO}/direction } shutdown_handler(){ # GPIOクリーンアップ echo $GPIO >$GPIO_DIR/unexport kill -TERM `cat ${MOTION_PID}` rm -f ${MOTION_PID} || true exit 0 } mail_send(){ cat << _EOD_|/usr/sbin/sendmail -t -f yuji@noizumi.org From: yuji@noizumi.org To: yuji@noizumi.org Subject: Car Security alert $1 Car Security alarm was $1 at `date +"%Y/%m/%d %H:%M:%S"` _EOD_ } sms_send(){ DATEMES=`date +"%Y/%m/%d %H:%M:%S"` curl -X POST https://api.twilio.com/2010-04-01/Accounts/[アカウント]/Messages.json \ --data-urlencode "Body=Car Security alarm was $1 at $DATEMES" \ --data-urlencode "From=[twilio番号]" \ --data-urlencode "To=[わしの携帯番号]" \ -u [アカウント]:[パスワード] -o /home/noizumi/logs/twilio.log } button_pushed(){ mail_send activated sms_send activated # ボタンが押されている間、ループ while [ "`cat ${GPIO_DIR}/gpio${GPIO}/value`" = "0" ]; do sleep 1 done mail_send stopped sms_send stopped } motion_start(){ if [ ! -e ${MOTION_PID} ]; then motion -n & echo $! >${MOTION_PID} fi } initialize trap shutdown_handler 1 2 3 15 while :; do # イヤホンマイクボタンが押された時 if [ "`cat ${GPIO_DIR}/gpio${GPIO}/value`" = "0" ]; then motion_start button_pushed fi sleep 1 done |