1.以下の理由から1号機もBullseyeにダウングレードする。
あとでもいいかと思って放置していたけど。ひまなのでダウングレード。
・キーボードが何故かUSで日本語に変えようとしても変わらない。
・漢字変換がいまくいかない。
・Bullseyeのほうが早いような感じがする。
2.USB設定
1)パーテイションのUUIDを記録
$sudo blkid /dev/sda1
/dev/sda1: UUID="xxxxxxxxxxxxxxxxxxxxx" TYPE="ext4" PARTUUID="xxxxxx-01"
$sudo blkid /dev/sda2
/dev/sda2: UUID="xxxxxxxxxxxxxxxxxxxxx" TYPE="ext4" PARTUUID="xxxxxx-02"
2)シンボリックリンク確認
$ls /dev/disk/by-uuid/
3)マウントポイント設定
$sudo mkdir /usb
$cd /usb
$sudo mkdir 21g
$sudo mkdir 11g
$sudo chmod 777 21g
$sudo chmod 777 11g
4)vimインストール
sudo apt-get install vim
5)マウント
$sudo vim /etc/fstab
以下を追加。
UUID="xxxxxxxxxxxxxxxxxxxxx" /usb/21g ext4 defaults,noatime 0 0
UUID="xxxxxxxxxxxxxxxxxxxxx" /usb/11g ext4 defaults,noatime 0 0
4)リブート
$df -h で確認これで入れ直し完了。
3.Samba設定
https://qiita.com/m_sunafukin77/items/930317457a7c845b28cb
だが ユーザ作成は以下で行う。
sudo useradd -s /bin/bash -m miyamo
sudo passwd miyamo
sudo pdbedit -a miyamo
4.時刻同期設定
https://qiita.com/m_sunafukin77/items/76b9536db4beb4eb72d6
以下で そんなもん無いとでるが、無視。
sudo apt remove systemd-timessyncd
以下 モジュールがないとでてエラーとなるが、時刻は同期されている。
udo apt install nptdate
sudo ntpdate ntp.nict.jp && date
5.RPZ-IR-SensorRev2 導入&結果確認
センサー制御ソフトウェア「cgsensor」をインストール
sudo python3 -m pip install -U cgsensor
cgsensor all
i2c-toolsでI2Cで接続されているデバイスを確認します。
i2cdetect -y 1
python 作成 bme280_tsl2572.py
sudo vim bme280_tsl2572.py
中身は以下 Indoor Corgiさんのサイトからサンプルをマージして作成。
#!/usr/bin/env python3
import cgsensor # インポート
bme280 = cgsensor.BME280(i2c_addr=0x76) # BME280制御クラスのインスタンス, i2c_addrは0x76/0x77から選択
bme280.forced() # Forcedモードで測定を行い, 結果をtemperature, pressure, humidityに入れる
print('気温 {}°C'.format(bme280.temperature)) # 気温を取得して表示
print('湿度 {}%'.format(bme280.humidity)) # 湿度を取得して表示
print('気圧 {}hPa'.format(bme280.pressure)) # 気圧を取得して表示
tsl2572 = cgsensor.TSL2572() # TSL2572制御クラスのインスタンス
tsl2572.single_auto_measure() # 条件を自動で調整しながら1回測定を行い, luxに結果を入れる
print('明るさ {}lux'.format(tsl2572.illuminance)) # 明るさを取得して表示
実行
python bme280_tsl2572.py
cgsensor allと同じ内容で表示された。OK。
6.mariadbインストール&設定
【1】MariaDBインストール
mariadbをインストール
■一括LAMPインストール apacheを選択 かなり仕組みが理解できている。
sudo apt-get -y install apache2 php php-dev php-fpm php-gd mariadb-server php-mysql phpmyadmin perlmagick
■cgi.loadファイルの設定。
シンボリックリンクを /etc/apache2/mods-enabled/cgi.loadに設定して cgi.loadを有効にする。
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/cgi.load
■ PHP 7.3 FPM有効【一応】
php -v
2号機 VER確認できてなったのでエラー。いまごろ気づいた。
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm
sudo systemctl reload apache2
■apache2.conf 編集
sudo vim /etc/apache2/apache2.conf
内容は下記の通り、一番下に追加
Include /etc/phpmyadmin/apache.conf
■再起動
sudo service apache2 restart
■確認①apache ブラウザで確認
http://xxx.xxx.xxx.xxx/
■確認②phpmyadmin
http://xxx.xxx.xxx.xxx/phpmyadmin/
【2】ユーザ作成
■ログイン
sudo mysql
権限を付与すると上記は使用不能
■権限設定(すべて)/ユーザ作成 5年前とはコマンンド変わっていた。
CREATE USER 'miyamo'@'%' IDENTIFIED BY 'password';
GRANT ALL ON . TO 'miyamo'@'%';
■ルートユーザのパスワード変更(初期パスワードが不明の為、Verが変わっていて/var/log/mysql.logが存在しない。導入時に設定したパスワードはルートユーザのパスワードとは違うかも。
とにかく以下でphpmyadminにログイン成功。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
・設定の反映
flush privileges;
quit
■外部接続可能とする。
sudo cp /etc/mysql/mariadb.conf.d/50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf.bak
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
以下を変更
bind-address = 127.0.0.1
↓
bind-address = 0.0.0.0
【3】ホスト名設定 上段ラズパイ、下段ラズパイ共に設定
■ホスト名設定
sudo cp /etc/hosts /etc/hosts.bak
sudo vim /etc/hosts
以下 追加
XXX.XXX.XXX.XXX miyamodb
【4】DB作成、テーブル作成
■ルートユーザでログイン
mysql -u root -p
■DB作成、テーブル作成
create databae miyamodb;
use miyamodb
create table room_env (id INT NOT NULL PRIMARY KEY, Temperature varchar(20), humidity varchar(20), air_pressure varchar(20), illuminance varchar(20),upd_datetime datetime default(CURRENT_TIMESTAMP));
■テーブル確認
show tables;
■テーブル構造確認
describe room_env;
■初期データ作成
insert into room_env values (1,'Temperature','humidity','air_pressure','illuminance',default);
quit
7.コネクターインストール
pip3 install mysql-connector-python
8.まずは テーブルに情報を書き込む python作成。 room_env_disp.py で保存&実行。いけた。
#!/usr/bin/env python3
import cgsensor # インポート
import datetime
import mysql.connector
bme280 = cgsensor.BME280(i2c_addr=0x76) # BME280制御クラスのインスタンス, i2c_addrは0x76/0x77から選択
bme280.forced() # Forcedモードで測定を行い, 結果をtemperature, pressure, humidityに入れる
print('気温 {}°C'.format(bme280.temperature)) # 気温を取得して表示
print('湿度 {}%'.format(bme280.humidity)) # 湿度を取得して表示
print('気圧 {}hPa'.format(bme280.pressure)) # 気圧を取得して表示
tsl2572 = cgsensor.TSL2572() # TSL2572制御クラスのインスタンス
tsl2572.single_auto_measure() # 条件を自動で調整しながら1回測定を行い, luxに結果を入れる
print('明るさ {}lux'.format(tsl2572.illuminance)) # 明るさを取得して表示
temp = '{}°C'.format(bme280.temperature)
humi = '{}%'.format(bme280.humidity)
air_p = '{}hPa'.format(bme280.pressure)
illumi = '{}lux'.format(tsl2572.illuminance)
# db connect
def main():
# mysql connect
cnt = mysql.connector.connect(
host='miyamodb',
port='3306',
db='miyamodb',
user='miyamo',
password='miyamoXXXX',
charset='utf8'
)
db = cnt.cursor(buffered=True)
# query table update run
sql = 'UPDATE room_env SET temperature = %s, humidity = %s, air_pressure = %s, illuminance = %s, upd_datetime = now() where id = 1';
data_env = (temp, humi, air_p, illumi)
db.execute(sql,data_env)
sql = 'commit';
db.execute(sql)
# select
sql = 'SELECT * FROM room_env';
db.execute(sql)
# display
rows = db.fetchall()
print('room_env update:',rows)
# cursol end
db.close()
# close
cnt.close()
if __name__ == "__main__":
main()
9.cronに登録 5分毎に実行。
sudo crontab -e
*/5 * * * * /usr/bin/python3 /home/pi/room_env_disp.py >> /tmp/cron.log 2>&1
10.最後にFW設定
1).インストール
sudo apt install ufw
2).有効化
sudo ufw enable
3).ポート開放 http,https,samba,vnc,ssh,mysql
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 445
sudo ufw allow 5900
sudo ufw allow 22
sudo ufw allow 3306
4).リロード
sudo ufw reload
5).ルール確認
sudo ufw status
これで完了。 入れ直しはわかっているので早いもんだ。 安定している感あり。