Arduinoでソレノイドロックの施錠ON/OFF
【目的】
会社のパソコンには、セキュリティ上「持ち出し制限」の為「ケンジントンロック」が取り付けられている。
席の移動や会議室への持ち運びの度に、事前に申請書を提出し、当日は担当者が来るのを、今か今かと待ちわびる事が、いやー大変だ。
そこで、
1.担当者が現場に出向くことなく
2.申請した日時に解錠/施錠される
3.セキュリティ上、解錠されている時間は5分程度(管理者側で任意に設定可能)
といった製品を先ずは自作で作ってみる。
【購入機材】
1.Arduino Uno Rev3 ATmega328 マイコンボード A000066 (Amazon)
2.Arduino イーサネットシールド2(Amazon)
3.5V用 電気ロック 電磁ロック ソレノイドロック(Amazon)
計7,810円
【PCに開発環境セットアップ】
1.以下のサイトを参考にセットアップ
2.以下を参考にLEDランプをチカチカ
Arduino IDEのインストールからLED点滅まで│FABSHOP.JP -デジタルでものづくり! ファブショップ !
はじめに
現在、社内SEとして
LAMP環境を構築し、社内データを一元的に集約し(MySQL)
レポート動的に提供(PHP+Highcharts.js)する事
を主たる業務としている。
一方で、事業化を目指し
IoTセンシングデバイスを使った「見守りサービス」を目論んできた。
その時々の技術を受け
どう事業(サービス)を創造・変革していくのか、いけばよかったのか
を「ふりかえる場」が当ブログだ。
2000年当時
ストリーミング技術を使った「ストリーミングサーバー」、あったなぁ~。
その前後、ライブカメラで観光地の生配信。したなぁ~。
後先考えず、突っ走ってた。後悔先に立たず、の心境。
迷惑をかけた事を無かった事にして欲しい、と厚かましい考えはない。
もう一度チャレンジとも思わない。今の会社で一旗あげたいという思いもない。
結局は、自己満足。
余生を楽しむための準備としても、今は振り返るタイミングだ!
IoTデバイスを使った自動情報収集
わたしは、株式会社ティアンドデイ (英文: T&D Corporation)の
「おんどとりシリーズ」が大好きだ。
温度、湿度、大気圧、照度/UV、二酸化炭素濃度、電圧、電流、パルス数
が測定できる。
接点出力もあり、簡易的計測制御システムも可能だからだ。
さらに
測定データは、中継器を使って、クラウド上(私的なスペースも可)にFTP転送してくれる。
でも、結構お高くつく印象なのだなぁ。
そこで マイコンボードの「Arduino(アルディーノがしっくりくるなぁ)」がある。
センサーをつなげて、一定間隔で、POSTするといったものができる。
I/O接点もあるので、「おんどとりシリーズ」のようにシステムが組める。
でも接続するセンサーの信頼性・補正がネックになる印象だ。
詳細は、「計測制御自動化のツボ」で広げていきたいと思う
アクセス先にAPIがあるんだったら...
スクレイピングによる情報収集 と
ipaSロボによる画像認識&要素取得
...画面レイアウト、デザインが変更となると、
せっかく自動化を実現していた プログラム、スクリプトを
アップデートする必要がでてくる。
先日も、1週間に1回、デザイン、仕様が変更されるサイトの
自動化に振り回されたところだ。
「こりゃ、自動化の意味ないわぁ~」「やってられん!」
調べてみると、
「(アクセス先に)APIが用意されているではないか!」
となり、早速、検証用PCにPython環境のセットアップ!
会社の環境だと、プロキシサーバーの設定やURLフィルタリングの影響で
なかなかハードルが高いが、
自宅のネット環境で、いざやってみたところ...
いやー、楽チン!これでデザイン変更に振り回されなくて、済むわ^^/
続きは、「Python自動化のツボ」で広げていきたいと思う。
ipaSロボからコマンドプロンプト実行時のツボ
本題に入る前に...
例えば、 メモ帳アプリを起動するために BATファイルに以下記述する。
call notepad.exe
このままだと、コマンドプロンプトのウィンドウが残ってしまう。
残らないようにするには BATファイルの記述内容を
call notepad.exe & exit
のように、exit を追記。「&」は、コマンドの連結だ。
実行してみると、ウィンドウが残らないことが確認できる。
これを踏まえて...
ipaSロボから
といった手順を踏む場合
上記2.の手順のところを
コマンドプロンプト側が受け取らないケースが 、よくある。
「よくある」ではなく頻繁に発生する。
その回避方法として
画像認識で、↓画像赤枠内
が「消えるまで繰り返す」というロジックに変更することで
完全、確実に、BATファイルが実行される。
この部分で、エラートラップが発生する事は、なくなった。
PC環境を整える(Chrome)
RPAでブラウザUIを操作する機会は多いかな。
将来的にInternet Explorerはサポートが無くなるので
わたしは、Google Chromeでスクリプトを組むことにしている。
しかし、Chromeは、ほぼ勝手にバージョンアップを行う。
その時、ipaSロボで使うChromeDriverも更新してくれると良いのだが
ここは、自分でアップデートする必要がある。
わたしは、開発用PC と 実行用PC を分けており
開発用PCで、ipaSロボの動作確認しOKだったら
実行用PCに、ipspファイル移植 と ChromeDriverのアップデート を実施
するようにしている。
実行用PCの方の Chromeバージョンアップが先行してしまえば
今から紹介する方法は、無為かもしれないが
ChromeDriverのバージョンアップも自動化しようという試みだ。
- 定期的に、https://chromedriver.chromium.org/downloads からダウンロードし、任意のフォルダに 例:chromedriver_86.0.4240.22.exe という風に名前を付けて保存。
- 一方で、BATファイルを用いて、Chromeバージョンをファイルに書き出す。
- ipaSロボの中で、2で得たバージョン情報を元に、1のフォルダ内に確保してあるchromedriverファイルを以下のフォルダにコピー。
C:\Program Files\ipaS\ipaSIDE\lib\selenium\chrome\chromedriver.exe
※元の chromedriver.exe は名前を変更しておき、いざという時の為にとっておく。
大まかな流れは、以上。
2.「BATファイルを用いて、Chromeバージョンをファイルに書き出す」には
dir /B /O-N "C:\Program Files\Google\Chrome\Application" > d:\chromeinfo.txt
※パスは Program Files (x86) の場合もあるかも。
とすることで、Dドライブ直下に chromeinfo.txt が作成される。
(ファイルの中身)
SetupMetrics
master_preferences
Dictionaries
chrome_proxy.exe
chrome.VisualElementsManifest.xml
chrome.exe
{バージョン情報}
(以上)
ipaSロボをBATで起動
ipaSロボは、コマンドプロンプトから実行可能だ。
"C:\Program Files\ipaS\ipaSIDE\ipaSCLI.exe" -e "{シナリオ名フルパス}.ipsp"
-eオプションは必須で、ほかにも色々オプションがある。
詳細は、製品のドキュメントをご覧あれ。
さて、BATファイルの記述が、少し手を加える必要がある。
例)ファイル名:sample.bat
rem D:\scenario.ipsp を パラメータ2個付きで 実行する
call "C:\Program Files\ipaS\ipaSIDE\ipaSCLI.exe" -e "D:\scenario.ipsp" "pram1" "param2" ...
rem そして、コマンドプロンプトを抜ける
exit
(以上)
しかし
この「sample.bat」を起動すると、ipaSスクリプト実行中に、
コマンドプロンプトのウィンドウが残ってしまう。
なので もう一つ、sample.batをcallするbatファイルを用意する。
例)ファイル名:sample_start.bat
start /MIN {パス}\sample.bat
(以上)
こっちを起動すると、コマンドプロンプトのウィンドウが最小化された上で
sample.bat が実行され、RPAの画像認識処理に影響を及ぼさない。