Raspberry pi 3 Model Bを使って気温・湿度・気圧・照度を測定　USBでスマホに接続しCloudにアップ

ラズパイ　Rasspberry Pi 3 Model B
https://projects.raspberrypi.org/ja-JP/projects

Indoor Corgi Elec. RPZ-IR-Sensor Rev2.0
https://www.indoorcorgielec.com/products/rpz-ir-sensor/
I2CでBME280の温度センサー(基盤についてるアドレス0x77,コードで外付けは0x76)、照度センサー(TSL2572 アドレス0x39　測る
サンプルプログラム　https://www.indoorcorgielec.com/wp-content/uploads/products/rpz-ir-sensor/rpz-sensor.zip

ラズパイのOSをダウンロードする　Liteを選択
https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit

rufus-3.4.exeでMicroSDに書き込む

SDカードをラズパイにさしこみ、起動する

login:pi
pass:raspberry

passwd root でrootのパスワードを作ってrootでもログインできるようにしておく

vi /etc/ssh/sshd_config
でパスワードでログインできるように、該当ラインの＃を外しておく

systemctl enable ssh
systemctl start ssh
これをしておけば、リモートからアクセスできる

cat /proc/cpuinfo | grep Revision でリビジョンを確認

以下の実行
apt-get install python-smbus
apt-get install libi2c-dev　これはやっていないかも・・・

i2cをイネーブルする
raspi-config
で該当場所を探し、I2Cをイネーブルする

以下のコマンドを実行して、アドレスを確認しておく
i2cdetect -y 0
i2cdetect -y 1

サンプルプログラムを動かす
ラズパイにはPythonは2.7ももともとインストールされているのでそれを使ってみた
環境はPython3で動くとあるが、2.7でも動いた

python bme280i2c.py
python tsl2572.py

Python3で動かすときには、以下を実行しておく
apt-get install python3-smbus
python3 bme280i2c.py


apt-get install python-pip
python -m pip freeze
python -m pip list
pip install docopt
python rpz_sensor.py 

python rpz_sensor.py -l logfile.csv でログファイルに残せる。追記も可能。

cronで自動記録する crontabの編集
crontab -u root -e
vim.tinyで編集
*/1 * * * * python /home/pi/rpz_sensor.py -l /home/pi/log.csv
これで1分おきに自動記録
一時間毎の場合は
0 * * * * python /home/pi/rpz_sensor.py -l /home/pi/log.csv

編集の実体は　/var/spool/cron/crontabs/root　の中

または
vi /etc/cron.d/raspi  に次の1行を書く。プラス空行も追加しておく
*/1 * * * * root /home/pi/cron_script

vi /home/pi/cron_script　に次の1行を書いておく
python /home/pi/rpz_sensor.py -l /home/pi/log.csv

chmod 755 /home/pi/cron_script
これでもＯＫ

時間を日本時間に変更しておく
ln -s -f /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

WiFiネットワークをOFFにする
ifdown wlan0  -> /etc/network/interfaces 内のwlan0を見るがDHCPだと記述ないので動かない
ifconfig wlan0 down  -> 実装が古いのでお勧めではない
ip link wlan0 down

Androidスマホ ネットワークUSB共有をかけることで　ラズパイ側でusb0として使えた

Webサーバーにアップする
GETリクエストのPythonスクリプト

```python:getrequest.py

import urllib.request
import subprocess
from subprocess import PIPE


proc=subprocess.run('date "+%Y%m%d%H%M"', shell=True, stdout=PIPE, stderr=PIPE, text=True)
date=proc.stdout
date=date.rstrip('\n')
print(date)

proc=subprocess.run("python /home/pi/rpz_sensor.py | grep Temp", shell=True, stdout=PIPE, stderr=PIPE, text=True)

str=proc.stdout
str=str.replace(' ','%20')
str=str.replace('\n','-')
print(str)

#str= "http://www.xxxx.jp/xxxxx/getreceive.php?id=\""+ date + "%20" + str + "\""
str= "http://www.xxxx.jp/xxxxxx/getreceive.php?id="+ date + "%20" + str
#str= "http://www.xxxx.jp/xxxxxxx/getreceive.php?id=\"5%20---55\""
print(str)

response=urllib.request.urlopen(str)
print(response.getcode())
html=response.read()
print(html.decode('utf-8'))
```

Web側のPHPコード (単純な受け取りとTXTデータへの保存)

```php:getreceive.php

<?php
if(isset($_GET[id])){
$comment = $_GET[id];
echo $comment;

$fp = fopen('temparature.txt','a');
fwrite($fp, $comment."\n");
fclose($fp);
}
?>

<!DOCTYPE html>
<html lang = ja>
<head>
<meta charset = UFT-8>
<title>フォームからデータを受け取る</title>
</head>
<body>
<h1>フォームデータの送信</h1>
<form action = getreceive.php method = get>
<input type=text name=id><br/>
<input type=submit value=送信>
</form>
</body>
</html>

```