1号機で作成したMariaDBの情報を介して、2号機のTFTDisplayに温度、湿度、気圧、照度の情報を表示させる【準備】。

リモートプロシジャーで温度等の情報を取得することを考えたが、よくわからん。
それでは1号機で作成したMariaDBの情報を介して、2号機のＴＦＴDisplayに温度、湿度、気圧、照度の情報を表示させる。でやってみる。ひょっとしてこれが、簡単かも（技術に逃げているかも。。。）

【１】MariaDBインストール
mariadbをインストール
■一括ＬＡＭＰインストール　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有効【一応】
```
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.3-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/

【２】ユーザ作成
■ログイン
```
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

【３】ホスト名設定　上段ラズパイ、下段ラズパイ共に設定
■ホスト名設定
```
sudo cp /etc/hosts /etc/hosts.bak
sudo vim /etc/hosts
```
　以下　追加
XXX.XXX.XXX.XXX miyamodb

【４】ＤＢ作成、テーブル作成
■ルートユーザでログイン
```
sudo mysql -p
```
■ＤＢ作成、テーブル作成
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
 
【５】mariadbclientのインストール　上段ラズパイ、下段ラズパイ共にインストール
上段ラズパイはクライアント入っていると出ます。
```
sudo apt-get install libmariadb-dev
sudo apt install -y mariadb-client
```
【６】上段ラズパイはMariaDBをPythonで操作。下段ラズパイもMariaDBをPythonで操作するので以下の操作を実施■上段＆下段　Pythonライブラリをインストール
pythonのライブラリをインストールする方法は仮想環境からに代わっていたんだ、ひょっとしてTFTのドライバも
導入がうまくいかなかったのはそのせいだ。pythonのほうが扱いやすいので、下段ラズパイも　pythonでいく。
参考サイト：
https://qiita.com/toiee_kame/items/c3781abb53f385dae4f9

１）仮想環境を起動するためのファイル群を生成
```
python3 -m venv ~/vpy
```
２）仮想環境にライブラリをインストール。これで入った。
```
source ~/vpy/bin/activate
pip3 install  mysql-connector-python
deactivate
```
■下段ラズパイ　adafruit-circuitpython-rgb-displayドライバインストール
 digitalio,boardのライブラリは　raspi-blinka.pyを導入することでimport可能となる。
```
source ~/vpy/bin/activate
sudo apt install python3-rpi.gpio python3-spidev python3-pip python3-pil python3-numpy
pip3 install --upgrade adafruit-python-shell
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
```
リブートするかを聞いてくるので、「ｙ」でreboot
画像表示してみる　以下　参考ＵＲＬ
https://learn.adafruit.com/1-8-tft-display/python-usage

１）画像表示　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)