にかいどーIoTびぼうろく H30.7.29

#RaspberryPi Zero W 購入
目標を確認したい。
課題はポンプを任意の時間で動かすためにACコンセントをRaspberryPiで制御し、デジタルタイマーを作成することだ。
そのためにはRaspBerryPiを動かさねばならない。
初購入したのはRaspBerryPi Zero W Starter Kit。
![RaspberryPi Zero W.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/e91d7177-7afb-056a-b946-911a3cae8f33.jpeg)
安価でかつ電源やUSB変換器やSDカードなど一通りのものがそろってる、Raspberry財団が用意してる公式セットだ。
これだけで起動はするが、モニタやモニタとつなぐHDMIケーブル、またはキーボード、マウスなどはないので自分で用意する必要がある。
今回私はモニタ・HDMIケーブル・キーボード・マウスはWindowsのを流用した。

#Raspbianインストール
RaspberryPiは基本的にRaspbianというOSで動く。今回は付属してきたSDカードに最初から入っているので何も考えずにそのまま
インストールした。
公式セットは良いものだ。
特に何か引っかかったとかなかった記憶なので次へを連打だけしただけであろう。

#RaspbianでのPython
ポンプを制御するためにRaspberryPiでPythonを実行しなければならない。
なのでまずはPythonを動かしてみる必要がある。
/home/piフォルダにfirstraspberrypipython.pyという名前の空のファイルを作成しthonnyでpythonを編集する。
raspberrypiでの最初のプログラムは以下であった。

```Python:firstraspberrypipython.py
print ("First RaspberryPi Python!")
```

これをLXterminal上で実行せねばならない。
そのためにLXTerminalで最初にpythonとうちスペースを空けたのちにfirstraspberrypipython.pyのアドレスを指定すれば良い。

```
pi@raspberry: ~ $ python /home/pi/firstraspberrypipython.py
```

実行結果がこれである。
![firstraspberrypipython.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/56c42016-c19f-76d3-5593-0aec464c14d8.jpeg)
画像がスクリーンショットでなく携帯カメラで汚いのはご容赦して欲しい。
ファイルをやり取りする方法、検索はしてSSHという方法があることはわかったが、RaspberryPi Zero W はLANケーブルも刺さらないし大変そうに見えたので試していない。
今日の記事はすべてスクリーンショットではなく携帯カメラによるものである。
なんにせよPythonが扱えるようになった。
windowsで創ったコードが使えるようになる。
なおファイルのやりとりが大変なのでコピーはせず再度Raspberry上にて手打ちで済ましている。
pumptimer.pyというのが今回の目標となるpythonコードだが、windowsで創ったものと若干変わっている。
おもにコメントなどが。
動く内容はほぼ同じなので割愛する。

#RaspberryPiにおけるPythonスクリプト自動起動
今回の目標はポンプを任意の時間だけ起動するタイマー付きポンプの作成であるが、
ディスプレイをつけるつもりはないため、創ったコードがRaspberryPi起動と同時にスクリプトも起動するようにしなければならない。
自動起動の方法はおよそ5種類あるようだが、今回使ったのは.configフォルダにある、autoStartフォルダを使うというものだ。
この.configフォルダは隠れていて最初は見えないので、Ctrl+hボタンを押して隠しフォルダを見えるようにする必要がある。

隠されている状態
![隠しフォルダ.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/3778446d-6039-f892-9319-9e2ba533ae7c.jpeg)


Ctrl+h同時押し後
![Ctrl+h.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/8806548e-484a-af4d-60f1-19add39bb11c.jpeg)


この.configフォルダにautostartフォルダがある。
ない場合もあるようで、その場合は自分でフォルダを創ればよい。
![フォルダの位置.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/8dae2941-8f0c-16ba-d029-7831cc926f07.jpeg)


このautostartフォルダに.desktopという拡張子のファイルを作成する。
![desktop.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/a9834ee8-164f-f6c0-9829-5eff1b1550f2.jpeg)


このファイルをテキスト帳で編集するのであるが、
以下のように編集すれば良い。

```
[Desktop Entry]
Name=firstraspberrypipython
Exec=lxterminal -e python /home/pi/firstraspberrypipython.py
Type=Application
```

Nameは名前を記述する。おそらく何でもよい。
Execは何を起動するかを記述する。ターミナルを python で　/home/pi フォルダにある firstraspberrypipython.py を起動する。-eはまだ私にはなんだかわからないが、入れていないと起動しないようだ。
Typeはどの種類なのかを記述する。今回はCUIアプリケーションなのでApplicationにしてある。
ここで気をつけなければならないことがある、
Execだが、多くのサイトでアドレスを指定するときに""で囲うようになっているが、それでは起動しなかった。
参考にしているサイトが間違っているのか、アップデートで変わったのかはわからない。
これはかなりの人が引っかかるポイントだと思われるので共有したい。

```
×　Exec=lxterminal -e python "/home/pi/firstraspberrypipython.py"
〇　Exec=lxterminal -e python /home/pi/firstraspberrypipython.py
```

![テキストファイル.jpg](https://qiita-image-store.s3.amazonaws.com/0/269002/59e80e5e-c496-3aa3-6da9-150a9dd56b87.jpeg)

このままファイルを保存すると、右にあるpumptimerのように名前にある.desktopが省略されて、firstraspberrypipythonだけになる。
あとは再起動すれば指定したスクリプトが自動で走るようになる。
もっともこのスクリプトはprint一行だけなので一瞬で終わってしまうのでなかなかカメラに収めることはできなかった。
実際のテストはpumptimer.pyで行っていた。

#ビジョンとは見えないものを見るための技術である
RaspberryPiを動作させ、Pythonスクリプトを自動起動させられるようになった。
目標であるタイマー付きポンプまであと少しである。
あとはRaspberryPiのGPIOとACコンセントを繋ぎ、制御すれば良い。