監視カメラ　ホップ　としようとしたが、最新ＯＳだと色々と問題があるらしいので　2号機　入れ直し。

１．以下の理由からＯＳを　Bullseyeにダウングレードする。
GPIOライブラリが一部非対応
pipで仮想環境が必要
Bookwormに対応していないパーツがある　
参考サイト
　https://sozorablog.com/raspberrypi_initial_setting/
 なるほど。カメラがpythonライブラリで動かなかったのはこのせいだと思う。
 まあ色々やった記録がキータにあるので問題無し。
 はじめからやり直し。
 
 １．2号機　Mysqlクライアント設定
```
sudo apt-get install libmariadb-dev
sudo apt install -y mariadb-client
```
２．関連ライブラリインストール adafruit以降はTFT関連ライブラリ。
```
sudo pip3 install  mysql-connector-python
sudo apt install python3-rpi.gpio python3-spidev python3-pip python3-pil python3-numpy
sudo pip3 install --upgrade adafruit-python-shell
sudo pip3 install adafruit-circuitpython-rgb-display
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/raspi-blinka.py
sudo -E env PATH=$PATH python3 raspi-blinka.py
```
３．画像表示　test_image.py で保存＆実行
```
import digitalio
import board
import RPi.GPIO as GPIO
from PIL import Image, ImageDraw
from time import sleep

import adafruit_rgb_display.st7735 as st7735

cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D25)
reset_pin = digitalio.DigitalInOut(board.D24)

BAUDRATE = 24000000

# Create Display
disp = st7735.ST7735R(
    board.SPI(),
    rotation=270,
    cs=cs_pin,
    dc=dc_pin,
    rst=reset_pin,
    baudrate=BAUDRATE,
)

# Create blank image for drawing.
# Make sure to create image with mode 'RGB' for full color.
if disp.rotation % 180 == 90:
    height = disp.width  # we swap height/width to rotate it to landscape!
    width = disp.height
else:
    width = disp.width  # we swap height/width to rotate it to landscape!
    height = disp.height
image = Image.new("RGB", (width, height))

# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)

# Draw a black filled box to clear the image.
draw.rectangle((0, 0, width, height), outline=0, fill=(0, 0, 0))
disp.image(image)

image = Image.open("blinka.jpg")

# Scale the image to the smaller screen dimension
image_ratio = image.width / image.height
screen_ratio = width / height
if screen_ratio < image_ratio:
    scaled_width = image.width * height // image.height
    scaled_height = height
else:
    scaled_width = width
    scaled_height = image.height * width // image.width
image = image.resize((scaled_width, scaled_height), Image.BICUBIC)

# Crop and center the image
x = scaled_width // 2 - width // 2
y = scaled_height // 2 - height // 2
image = image.crop((x, y, x + width, y + height))

# Display image.
disp.image(image)
```
表示した。　
![IMG_0035.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433305/9993fc4c-f211-ad5b-ccc7-f1c957a65da8.jpeg)

４．テキスト表示
ttributeError: 'FreeTypeFont' object has no attribute 'getsize'
要することに、メソッドが無くなっているのでpilのVerを下げろということですな。
とりあえず、Verを下げる。
```
pip install Pillow==9.5.0
```
カラーコードは以下ＵＲＬね。
https://rgb.to/html-color-names/1
ソース　
```
import digitalio
import board
import RPi.GPIO as GPIO
from PIL import Image, ImageDraw, ImageFont

from adafruit_rgb_display import st7735

# First define some constants to allow easy resizing of shapes.
BORDER = 20
FONTSIZE = 24

# Configuration for CS and DC pins (these are PiTFT defaults):
cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D25)
reset_pin = digitalio.DigitalInOut(board.D24)

# Config for display baudrate (default max is 24mhz):
BAUDRATE = 24000000

# Create Display
disp = st7735.ST7735R(
    board.SPI(),
    rotation=270,
    cs=cs_pin,
    dc=dc_pin,
    rst=reset_pin,
    baudrate=BAUDRATE,
)

# Create blank image for drawing.
# Make sure to create image with mode 'RGB' for full color.
width = 160
height = 128
image = Image.new("RGB", (width, height))

# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)

# Draw a green filled box as the background
draw.rectangle((0, 0, width, height), fill=(0,0,0))
disp.image(image)

# Load a TTF Font
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", FONTSIZE)

# Draw Some Text
text = "Hello World1!"
(font_width, font_height) = font.getsize(text)
draw.text(
    (width // 1 - font_width // 1, height // 2 - font_height // 2),
    text,
    font=font,
    fill=(255, 255, 0),
)

# Display image.
disp.image(image)

text = "Hello World2!"
(font_width, font_height) = font.getsize(text)
draw.text(
    (width // 1 - font_width // 1, height // 1 - font_height // 1),
    text,
    font=font,
    fill=(255, 248, 220, 0),
)

# Display image.
disp.image(image)
```

ＯＫ
![IMG_0036.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433305/ac9a7030-81fa-1d27-69ac-01f7be66bd7b.jpeg)

５．まずは接続できるかを確認。
```
mysql -h 192.168.1.XX -P 3306 -u miyamo -p
use miyamodb
select * from room_env
```
で内容表示されるので、環境的にはＯＫ。

２．pythonを　room_env_disp2.py　で保存作成。
```
import digitalio
import board
import RPi.GPIO as GPIO
from PIL import Image, ImageDraw, ImageFont

from adafruit_rgb_display import st7735
import mysql.connector

# First define some constants to allow easy resizing of shapes.
BORDER = 20
FONTSIZE = 24

# Configuration for CS and DC pins (these are PiTFT defaults):
cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D25)
reset_pin = digitalio.DigitalInOut(board.D24)

# Config for display baudrate (default max is 24mhz):
BAUDRATE = 24000000

# Create Display
disp = st7735.ST7735R(
    board.SPI(),
    rotation=270,
    cs=cs_pin,
    dc=dc_pin,
    rst=reset_pin,
    baudrate=BAUDRATE,
)

# Create blank image for drawing.
# Make sure to create image with mode 'RGB' for full color.
width = 160
height = 128
image = Image.new("RGB", (width, height))

# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)

# Draw a green filled box as the background
draw.rectangle((0, 0, width, height), fill=(0,0,0))
disp.image(image)

# Load a TTF Font
font = ImageFont.truetype("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", FONTSIZE)

# 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)   

#room_env select
    sql = 'select temperature, humidity, air_pressure, illuminance from room_env where id = 1'

    db.execute(sql)

    for (temperature, humidity, air_pressure, illuminance) in db:
        print(f"{temperature} {humidity} {air_pressure} {illuminance}")

# Draw Some temp
    text = f"{temperature}"
    print(text)
    (font_width, font_height) = font.getsize(text)
    draw.text(
        (0, 1),
        text,
        font=font,
        fill=(176, 224, 230),
        )

# Display image.
    disp.image(image)

#Draw Some humi
    text = f"{humidity}"
    print(text)
    (font_width, font_height) = font.getsize(text)
    draw.text(
        (0, 32),
        text,
        font=font,
        fill=(154, 205, 50),
        )

# Display image.
    disp.image(image)

# Draw Some air_p
    text = f"{air_pressure}"
    print(text)
    (font_width, font_height) = font.getsize(text)
    draw.text(
        (0, 64),
        text,
        font=font,
        fill=(176, 224, 230),
        )

# Display image.
    disp.image(image)

# Draw Some illum
    text = f"{illuminance}"
    print(text)
    (font_width, font_height) = font.getsize(text)
    draw.text(
        (0,100),
        text,
        font=font,
        fill=(154, 205, 50),
        )

# Display image.
    disp.image(image)

# db.close
    db.close()
# cnt.close
    cnt.close()

if __name__ == "__main__":
    main()
```
３．ホスト名設定
```
sudo cp /etc/hosts /etc/hosts.bak
sudo vim /etc/hosts
```
　以下　追加
XXX.XXX.XXX.XXX miyamodb

４．room_env_disp2.py　実行で　以下で表示された。　

![IMG_0040.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/433305/7d6f9d09-5f1b-245e-276b-e0aa732614df.jpeg)

５．cronに登録 5分毎に実行。　
```
sudo crontab -e
```
*/5 * * * * /usr/bin/python3 /home/pi/room_env_disp2.py >> /tmp/cron.log 2>&1

６．ＦＷ設定
１）．インストール
```
sudo apt install ufw
```
２）．有効化
```
$ sudo ufw enable
```
３）．ポート開放　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
```
４）．リロード
```
sudo ufw reload
```
５）．ルール確認
```
sudo ufw status
```
７．人感センサー設定
１）．wakeonlan.pyの作成＆実行。Cronからの実行で、うまくいかなかったので記述変えました。
node.js　忘れてた。
https://qiita.com/m_sunafukin77/items/b6c988f5e7a8f367b071
```
#!/usr/bin/ python3
from datetime import datetime
import time
import RPi.GPIO as GPIO
import subprocess

INTERVAL = 3
SLEEPTIME = 20
GPIO_PIN = 18

GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIO_PIN, GPIO.IN)
cmd = "sudo node /home/pi/etherwake3.js"

if __name__ == '__main__':
    try:
        print ("cancel CTRL+C")
        cnt = 1
        while True:
            # sencer touch
            if(GPIO.input(GPIO_PIN) == GPIO.HIGH):
                print(datetime.now().strftime('%Y/%m/%d %H:%M:%S') +
                      ":" + str("{0:05d}".format(cnt)) + " human look")
                print("pc wake")
                subprocess.check_call(cmd, shell=True) 
                break
            else:
                print(GPIO.input(GPIO_PIN))
                time.sleep(INTERVAL)
    except KeyboardInterrupt:
        print("stop runnig...")
    finally:
        GPIO.cleanup()
        print("GPIO clean")
```
２）クーロンの登録
```
crontab -e
```
ひまじんの在宅タイミングに合わせて実行。
0 8 * * * /usr/bin/python3 /home/pi/wakeonlan.py
0 11 * * * /usr/bin/python3 /home/pi/wakeonlan.py
0 14 * * * /usr/bin/python3 /home/pi/wakeonlan.py
0 18 * * * /usr/bin/python3 /home/pi/wakeonlan.py

８．ＵＳＢ設定
１）パーテイションのＵＵＩＤを記録
```
$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"
```
２）シンボリックリンク確認
```
$ls /dev/disk/by-uuid/ 
```
３）マウントポイント設定
$sudo mkdir /usb
$cd /usb
$sudo mkdir  21g
$sudo mkdir  10g 

４）マウント
$sudo vim /etc/fstab
以下を追加。

```tab:fstab
UUID="xxxxxxxxxxxxxxxxxxxxx"  /usb/21g ext4 defaults,noatime 0 0
UUID="xxxxxxxxxxxxxxxxxxxxx"  /usb/11g ext4 defaults,noatime 0 0
```

５）リブート
$df -h で確認これで入れ直し完了。

８．Ｓａｍｂａ設定忘れてた。
https://qiita.com/m_sunafukin77/items/930317457a7c845b28cb

９．時刻同期もね
https://qiita.com/m_sunafukin77/items/76b9536db4beb4eb72d6
以下で　そんなもん無いとでるが、無視。
```
sudo apt remove systemd-timessyncd
```
以下　モジュールがないとでてエラーとなるが、時刻は同期されている。
```
udo apt install nptdate
sudo ntpdate ntp.nict.jp　&&　date
```