カメラも動作させているためか、FNK0060なるESP32 は、BMP280ライブラリの中の名称のダブりなどでうまくビルドできず、苦労した。google AIからかなりハードよりのコードを出してもらいなんとか解決。 また、I2Cは、2つが限度らしく、リレー動作がひとつあまってしまう。
2026年2月8日日曜日
esp32温度センサ動作で苦労する
2026年2月7日土曜日
苗床温度調整をesp32で
3月ぐらいから、小さめの衣装ケースに発泡スチロールを入れ、5Vヒーターで温度調整しながら、試してみようかと思い準備中。念のため、ヒーターには70度ぐらいの温度ヒューズを直列に入れるといいらしい。コードはこれから考える予定。ハードは、センサ部分の残してほぼできてきた。
2026年2月3日火曜日
(備忘録)sqliteでのデータのコピー
GUIのsqlite3ブラウザでデータコピーする方法を忘れないようにメモしておこうと思います。
・B Browser for SQLiteを使う場合
1) コピー先を開く
2) コピー元を Attach(別名を付ける)
「データベースに接続」(「開く」ではないので注意!)で →ソースの データベースを追加
Alias(別名)に src と入力
※ この段階で「src」という別DBとして認識される
3) SQL 実行(INSERT のみ)
「SQL実行」タブで以下を実行
INSERT INTO shishutunyu1 (date, sishutu, shunyu, zandaka, himoku, biko)
SELECT date, sishutu, shunyu, zandaka, himoku, biko
FROM src.shishutunyu1
WHERE date BETWEEN '2025-01-01' AND '2026-02-03';
4)変更を書き込み
2026年2月1日日曜日
Qtによる家計簿アプリ公開
こちらにあります。(マニュアル・ヘルプ等はまだつくっていませんが。)
1 銀行からのCSVインポート機能(極力汎用性もたせて、現段階では3~4つぐらいのところには対応させました) 2 スマホで入力したデータの転記機能
など追加しました。
2のためには、 raspiのbottleとandroid studioが必要です。参考までにコードは以下のとおり。
bottle
android
2026年1月30日金曜日
android自作アプリがWIFIで内部サーバに接続できない問題
外部からは、モバイル回線だと接続できるけれど、家でWIFIだと内部サーバに接続できないという問題があり、いろいろ解決まで時間がかかった。ちなみに、Chromeなどでは問題なく接続できるので、自作アプリに問題あるのは予想できた。
ChatGPTでも解決できず、googleAIに質問したところ、解決。android:networkSecurityConfig="@xml/network_security_config"が厳格すぎたせいだった。自作アプリには、かなりセキュリティ対策を厳密にしているらしい。もともと、androidはgoogle製なので、的確な回答ができたのだと思う。
WIFIかどうかをアプリ内で判別し、URLを切り替えたり、ポート制限もしているので、合わせて、network_security_configでLocalIpの設定を入れたらOkだった。
2026年1月27日火曜日
スマホから支払記録のセキュリティ改善
買い物などしたとき、少し時間あるときはスマホで支出内容をraspiにネット経由で記録して、あとでPCで自作家計簿を開くと確認ボタンですぐ反映できるようにしている。転記したら一時置き場所のraspiのデータは削除します。これまでは、一時的データなのでとくに認証とかしてなかったのですが。少し工夫してみました。
C#版とQt版としばらく併用していて、先々Qt版に切り替える予定ですが、いずれもデータ取り込みについては、同じraspiサーバ(bottle)を使っているので、大幅に作り変えたくないと考えました。家計簿ソフトはさわらず、bottleのみ改善しました。
いったん外部から接続できなくして、認証ページをつくり、指定した時間、認証ページが使っているアドレスからのアクセスのみ受け付けるような仕組みを組み込みました。これによって、一定時間のみスマホからデータ入力ができるようになりました。入力が終わって、指定時間がすぎれば、自動的にまた接続できなくなるので、それほど手間なくできそうです。
2026年1月26日月曜日
raspiにbind9
LAN内のラズパイ、ルータ、プリンタ、アクセスポイントなど、ホスト名でアクセスできるように 内部DNSにしてみた。以前行ったbind9の設定の仕方を思い出しながら、うまくいかなかったところは、chatGPTの助けも借りながら、なんとか完了。
・ルータは静的ルーティング設定で、自分のドメインのものはすべて、ルータに行くように設定。LAN側サーバアドレスをラズパイにして、ラズパイにbind9を入れます。
・ufwで、tcp,udpでローカル内からの53番ポートのアクセスを許可します。
2026年1月25日日曜日
raspiでcloudflareのリバースプロキシを使うためにufwいれてみた
curl https://ifconfig.meで、グローバルIp確認、それを次にいれる
sudo ufw allow from <自分のIP> to any port 443 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcpで、LAN限定にしたいなら
sudo ufw delete allow sshで、最初の設定削除
cloudflareのリバースプロキシを使うのが目的なので、そちらにのみ許可する設定です
# IPv4
curl https://www.cloudflare.com/ips-v4
# IPv6
curl https://www.cloudflare.com/ips-v6 でIp確認
これをみて
sudo ufw allow from 173.245.48.0/20 to any port 443 proto tcpを続ける
sudo ufw allow from 2400:cb00::/32 to any port 443 proto tcpも同様
ここまでの確認は sudo ufw status numbered この時表示なる番号をもとに、削除もできる
注意:Cloudflare IPは変わることがある→ cron スクリプトで自動更新
cloudflare側は 「SSL/TLS」メニュー> Origin Certificate を入れている場合 → Full (strict)
・「Edge Certificates」タブ>Always Use HTTPS:オンにすると自動で HTTPS にリダイレクト
・ Cloudflare → SSL/TLS → Origin Server>「Create Certificate」で Origin Certificate を作成>サーバに設置、この証明書があれば Let’s Encrypt は不要になる
sudo a2ensite default-ssl
sudo systemctl reload apache2
sudo mkdir -p /etc/ssl/cloudflare
sudo chmod 700 /etc/ssl/cloudflare
origin_cert.pemとorigin_key.pemとして保存
sudo chmod 600 /etc/ssl/cloudflare/*
sudo nano /etc/apache2/sites-available/default-ssl.conf
SSLEngine on
SSLCertificateFile /etc/ssl/cloudflare/origin_cert.pem
SSLCertificateKeyFile /etc/ssl/cloudflare/origin_key.pem
# 推奨の TLS 設定
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
2026年1月24日土曜日
raspi復旧マニュアル
保存場所: /home/pi/ssr_control.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# SSR制御スクリプト
# 指定曜日・時間のみSSRをONにし、それ以外はOFF
# 対象GPIO: 17 (BCM)
import RPi.GPIO as GPIO
import datetime
import time
# GPIO 設定
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
try:
while True:
now = datetime.datetime.now()
weekday = now.weekday() # 月曜=0, 日曜=6
# 水曜(2)と土曜(5)の6時〜7時にON、それ以外はOFF
if (weekday == 2 or weekday == 5) and 6 <= now.hour < 7:
GPIO.output(17, GPIO.HIGH) # SSR ON
else:
GPIO.output(17, GPIO.LOW) # SSR OFF
time.sleep(30) # 30秒ごとにチェック
finally:
GPIO.cleanup()
ポイント:
時間は 6 <= now.hour < 7 で 1時間だけ ON。
曜日は weekday() の値を確認(0=月曜, 6=日曜)。
30秒ごとにチェックするループ。
保存場所: /etc/systemd/system/ssr_control.service
[Unit]
Description=SSR Control
After=network.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi
ExecStart=/home/pi/bottle-env/bin/python /home/pi/ssr_control.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
ポイント:
User=pi にして仮想環境(bottle-env)の Python を使用。
WorkingDirectory はスクリプトのあるディレクトリ。
失敗時に自動再起動。
3 systemd の操作コマンド
# サービスを再読み込み(設定変更後は必須)
sudo systemctl daemon-reload
# サービスを有効化(起動時に自動開始)
sudo systemctl enable ssr_control.service
# サービス起動
sudo systemctl start ssr_control.service
# 状態確認
sudo systemctl status ssr_control.service
# サービス停止
sudo systemctl stop ssr_control.service
# ログ確認
journalctl -u ssr_control.service -b
※ バックアップ・復旧のコツ
/home/pi/ssr_control.py と /etc/systemd/system/ssr_control.service を両方コピーして保存。
Python 仮想環境 (bottle-env) も丸ごとバックアップしておくと、ライブラリの問題で復旧に悩まなくて済む。
OSアップデート後は、GPIOライブラリや Python バージョンを確認してから systemd サービスを再有効化。
2026年1月18日日曜日
FreeNove Esp32 Wroverで間欠WebCam動作テスト
Freenoveのesp32 wroverについては、ストリーミングだと負荷がかかりすぎるし、付属のサンプルコードはカメラとGPIOを同時に細かい制御ができないコードのようなので、間欠で静止画をWebで表示しつつ、GPIOの操作するようなコードを試してみた。FNK0060というパッケージに合わせてライブラリなどそろえる必要あるようだった。
index.htmlは、IDEがver2だとアップロードできないので、Ver1を使う必要があった。
2026年1月14日水曜日
外気温 温度計の液晶修理
接触不良を接点復活材で直した液晶温度計も、今度は中心部が黒っぽくなり見づらくなってきた。たまたま、Youtubeで修理方法出ていたので試してみた。反射フィルムと偏光フィルムをはがして、ガラス板(中に液晶があると思われる)だけにしてから、アルミテープと購入した偏光フィルム(amazonn等でも入手可)を入れなおしたらうまくいった。偏光フィルムは角度を調整して、一番見やすい角度にしてから、枠に合わせて切り取る必要があります。ちょっとしたことだけれど、毎日見るものでもあるので、少しでも見やすくすることは大事かもしれない。
2026年1月13日火曜日
半田ごて温度調整器をつくってみた
以前、作成したCWキーヤーは使わなくなったので(発振器が不安定?になった)、その中のPIC12F675を有効活用するため、はんだごて温度調整器を作ってみた。壊れたWIFI_APの12Vアダプタと、ジャンクのアンテナチューナのリレー、3端子レギュレータ、ダイオード等を使ってみた。たまたま廃品からかき集めた部品をうまく活用できた。PICは、書き込み時はずさなくてもいいように、PICKitとつなげるPINソケットをつけた。
|
|
2026年1月10日土曜日
dfplayerをesp32C3で動かしてみた
dfplayerはネットラジオをraspiでタイマー録音した英語教材 をmicroSDにもってきて再生、whisper使って音声認識したテキストをrapiにおいてwifiで読み取ったものをOLEDで表示できるようにしてみた(Qtで準備のためのツールも作成)。LGT8F328Pを使っていたけれど動作が不安定になってきたので、esp32c3に置き換えたついでに、テキスト表示できるようにバージョンアップしてみた。数百円で入手できるので、コスパがとてもよくなっていると思う。
GPIO5:IN2 ...file番号2桁を順に長押しで入れる。モード切り替えたら、テキスト番号のインクリメントをする。
GPIO6:IN1 ...Cmd機能とし、長押し1回でファイル番号をインクリメント、長押し2回でデクリメント。モード切り替えたら、テキスト番号のデクリメント
GPIO7:IN3 ...モード切替。テキスト番号を変更して表示するようにした。
esp32C3は小型のわりに機能満載で、便利に使える。
2026年1月8日木曜日
esp32-c3のWIFI不具合
アリエクで購入したESP32-C3は、大丈夫だったのですが、某サイトで購入したほうは、WIFIがだめで、ハードの不具合かと別のもの注文してしまったのですが、どうやら、原因は送信出力にあるようで、半分の出力にしたらうまく動作しました。
2026年1月5日月曜日
関数解析P69 閉包による集合の包含関係
Aの閉包+Aの閉包⊂A+Aの閉包 という性質を使っている式の変形があり、なぜだろうと気になり、調べてみた。
A={(x,0)|x∈R} B={(x,1/x)|x>0} (双曲線の正の部分)
・A+B={(x+u,1/u)|x∈R,u>0} これは、よく考えたら、y>0の上半面で、x軸は除く領域
・A+Bの閉包は、x軸も入る。
・AもBも閉集合なのでAの閉包+Bの閉包=A+B
よって Aの閉包+Bの閉包⊂A+Bの閉包
今回は、chatGPTよりもgoogleのAIのほうが、的確な回答がもらえた。
2026年1月1日木曜日
SO-02Lスマホがなぜか、突然WIFI接続できなくなる
古いスマホなので、新しいWIFIアクセスポイントと合わなくなってきたようだ。これまでWPA/WPA2-PSK(AES)からWPA2-PSK(AES)にしてみたら解決。複雑なネゴシエーションがあると、うまくいかないこともあるから?かもしれません。また、SSIDも同じでないほうがいいようです。以前は、同じにしてローミングできるようにしていましたが、家庭用レベルでは、最近はあまり推奨されないようです。業務等ではきちんと本格的なシステムにしないとローミングは難しいようです。
※その後、よく確認したら、どうもアクセスポイントの故障のようでした。新しいアクセスポイントに変えたら、動作Okでした。ローミングが原因かとうかは、よく確認していませんが、いずれにしろ、SSIDのローミングは、家庭用では、今回のような不具合があると原因がつかみにくいので、やめたほうがいいかもしれません。




