スマートロックが壊れたので直しつつ、IoT的な勉強をしてみる その1

IoT

自宅のスマートロックが壊れた模様。
カチカチ音がして全く回らない状態になり、分解して調べるとロック?しているソレノイドは動くがサーボモータが動かない。
仕方ないので、分解して治す事に。今回の記事は、スマートロックを直して、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だとピン番号という事。

 

という事で長くなりましたので、次回。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG