
自宅のスマートロックが壊れた模様。
カチカチ音がして全く回らない状態になり、分解して調べるとロック?しているソレノイドは動くがサーボモータが動かない。
仕方ないので、分解して治す事に。今回の記事は、スマートロックを直して、IoT的な機器を学び直すという備忘録的な記事です。
今回はひとまずラズパイのGPIOをPythonで操作まで書いてみます。
構造を調べる

6V小型モーターとソレノイドでロックをかけて回しているよう。
さらに回る部分の歯車とその内側にも回転を感知する形。

ひとまずギアモーターを秋月で買ってきて修理、お値段660円。
ひとまず無事に治りました。
しかし、自分で作れないか?
購入しても1万円程ですが、やはり私もエンジニアの端くれ、結構皆自作しているので、私も作る事にしましたよ。
Bluetoothで操作でもいいが、まずはまずはWEB画面上からのフレームワークで作成してみる。
WebIOPiを入れる

Raspberry PiでWebサーバが立ち、ブラウザからGPIO操作やPythonプログラムを実行できる環境です。
$ 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
ダウンロードしたファイルを解凍して、ディレクトリ内に移動。
$ tar xvzf WebIOPi-0.7.1.tar.gz $ cd WebIOPi-0.7.1
ブラウザで表示するGPIOの表示を修正するパッチが必要なようなので適用
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch $ patch -p1 -i webiopi-pi2bplus.patch
sudo ./setup.sh
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]
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

画面を組み込んでみる
$ 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
まずwebiopiの設定ファイルを見てみる。
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
42行目にWEBルートがあので、ここを変更
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/
設定はwebiopiを再起動します。
$sudo systemctl restart webiopi
動作スクリプト周りを書いていく
さて、これでWEB画面が見れたので、pythonでまずはサーボの前に簡単にLED点灯を書いてみます。
#------------------------------------------------------------------------# [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だとピン番号という事。
という事で長くなりましたので、次回。
