自宅のスマートロックが壊れた模様。
カチカチ音がして全く回らない状態になり、分解して調べるとロック?しているソレノイドは動くがサーボモータが動かない。
仕方ないので、分解して治す事に。今回の記事は、スマートロックを直して、IoT的な機器を学び直すという備忘録的な記事です。
今回はひとまずラズパイのGPIOをPythonで操作まで書いてみます。
構造を調べる
6V小型モーターとソレノイドでロックをかけて回しているよう。
さらに回る部分の歯車とその内側にも回転を感知する形。
ひとまずギアモーターを秋月で買ってきて修理、お値段660円。
ひとまず無事に治りました。
しかし、自分で作れないか?
購入しても1万円程ですが、やはり私もエンジニアの端くれ、結構皆自作しているので、私も作る事にしましたよ。
Bluetoothで操作でもいいが、まずはまずはWEB画面上からのフレームワークで作成してみる。
WebIOPiを入れる
Raspberry PiでWebサーバが立ち、ブラウザからGPIO操作やPythonプログラムを実行できる環境です。
1 2 3 4 5 6 7 8 9 10 |
$ wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz --2022-07-20 17:30:27-- https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz sourceforge.net (sourceforge.net) をDNSに問いあわせています... 172.64.153.13, 104.18.34.243 -- (略) ---- HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 213894 (209K) [application/x-gzip] `WebIOPi-0.7.1.tar.gz' に保存中 WebIOPi-0.7.1.tar.gz 100%[=============================================================================>] 208.88K 831KB/s 時間 0.3s |
ダウンロードしたファイルを解凍して、ディレクトリ内に移動。
1 2 3 |
$ tar xvzf WebIOPi-0.7.1.tar.gz $ cd WebIOPi-0.7.1 |
ブラウザで表示するGPIOの表示を修正するパッチが必要なようなので適用
1 2 |
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch $ patch -p1 -i webiopi-pi2bplus.patch |
1 |
sudo ./setup.sh |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Installing startup script... Installing webiopi command... Installing webiopi-passwd command... Do you want to access WebIOPi over Internet ? [y/n] n WebIOPi successfully installed * To start WebIOPi foreground : sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port] * To start WebIOPi background : sudo /etc/init.d/webiopi start * To start WebIOPi at boot : sudo update-rc.d webiopi defaults * Run ./weaved-setup.bin to install the Weaved IoT Kit and access your device over Internet * Look in /home/konica/WebIOPi-0.7.1/examples for Python library usage examples Do you want to access WebIOPi over Internet ? [y/n] |
1 2 3 4 5 6 7 |
startでサービスを起動 $ sudo systemctl start webiopi stopでサービスを停止 $ sudo systemctl stop webiopi statusで状況を確認 $ sudo systemctl status webiopi restartでサービスの停止と起動をまとめて実行 $ sudo systemctl restart webiopi 自動実行:sudo systemctl enable webiopi |
いずれラン入れてときたいですよね。
早速ブラウザでhttp:ラズパイのIP:8000にアクセスします。
初期のベーシック認証は、以下。 ユーザー名:webiopi パスワード:raspberry
画面を組み込んでみる
1 2 3 4 5 6 |
$ pwd /etc/webiopi $ ls -l 合計 12 -rw-r--r-- 1 root root 4108 7月 20 17:35 config -rw-r--r-- 1 root root 64 7月 20 17:35 passwd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
27 #------------------------------------------------------------------------# 28 29 [HTTP] 30 # HTTP Server configuration 31 enabled = true 32 port = 8000 33 34 # File containing sha256(base64("user:password")) 35 # Use webiopi-passwd command to generate it 36 passwd-file = /etc/webiopi/passwd 37 38 # Change login prompt message 39 prompt = "WebIOPi" 40 41 # Use doc-root to change default HTML and resource files location 42 #doc-root = /home/pi/webiopi/examples/scripts/macros 43 44 # Use welcome-file to change the default "Welcome" file 45 #welcome-file = index.html 46 47 #------------------------------------------------------------------------# 48 |
1 2 3 4 |
41 # Use doc-root to change default HTML and resource files location 42 #doc-root = /home/pi/webiopi/examples/scripts/macros 43 44 doc-root = /home/konica/lock/ |
1 |
$sudo systemctl restart webiopi |
動作スクリプト周りを書いていく
さて、これでWEB画面が見れたので、pythonでまずはサーボの前に簡単にLED点灯を書いてみます。
1 2 3 4 5 6 7 8 9 10 |
#------------------------------------------------------------------------# [SCRIPTS] # Load custom scripts syntax : # name = sourcefile # each sourcefile may have setup, loop and destroy functions and macros #myscript = /home/pi/webiopi/examples/scripts/macros/script.py myscript = /home/konica/lock/gpio.py #------------------------------------------------------------------------#ま |
まずgpio.pyを置きます。
注意:気をつけたいところはGPIOコマンドではGPIO番号ですが、Pythonだとピン番号という事。
という事で長くなりましたので、次回。