﻿[2026-10-16 14:14:36] DHCP対応ログサーバー自動探索 実装開始
変更前バックアップ: C:\Users\kueno\OneDrive\Desktop\Ham\3_Arduino\ESP32_SatBox\SatBox_Ver0.1.0c\backup\20261016_141203_log_server_discovery
変更: WebPage.cpp / SatBox_Log_Server.py
新規: SatLogDiscovery.h / SatLogDiscovery.cpp / satbox_log_discovery.py
方式: UDP50001 nonce付きLAN探索 + HTTP health確認。固定IPを廃止し、接続失敗時は再探索。記録POSTは自動再送しない。
検証: Python構文・UDP実通信の単体試験成功。ESP32ビルド・EXEビルドは実施中。
実機フラッシュ・稼働EXE置換・ファイアウォール設定変更は未実施。
既存の変更履歴.txtは変更していない。指定の作業履歴.txtを新規作成。

[2026-10-16 14:21:18] 自動探索 実装・検証結果
変更前バックアップ: C:\Users\kueno\OneDrive\Desktop\Ham\3_Arduino\ESP32_SatBox\SatBox_Ver0.1.0c\backup\20261016_141203_log_server_discovery
変更ファイル: WebPage.cpp / SatBox_Log_Server.py（各変更前SHA256一致確認済み）
新規ファイル: SatLogDiscovery.h / SatLogDiscovery.cpp / satbox_log_discovery.py
新規テスト: tests_log_discovery/test_discovery.py / tests_log_discovery/test_server_integration.py
成果物: dist/SatBox_Log_Server.exe / dist/DHCP自動探索_導入手順.md
仕様: UDP50001でnonce付きLAN探索。応答元IPv4サブネットとHTTP healthを検証。接続先を一時記憶し、Wi-Fi側IP変化・HTTP疎通失敗後は再探索。固定192.168.1.36を記録・検索・手入力経路から除去。記録POSTを自動再送しない。
成功: Python構文確認、プロトコル/不正要求/送信元検証、UDP実通信/停止/再起動、UDP→HTTP health結合、EXE作成とモジュール同梱確認、設定なしEXE起動終了0。
実DB初期化・取り込みは結合試験でモック化。QSO/ADI/DB/settings.ini、稼働中C:\JI1FGX\SatBox\SatBox_Log_Server.exeに変更なし。
ESP32ビルド: esp32 core3.3.8、ESP32S3/Huge APPで試行。コンパイラ起動前段でIllegal System DLL Relocation（システムDLLの無効な再配置）。ソースのコンパイル成功・.bin生成は未確認。Arduino IDEから検証が必要。
未実施: 実機フラッシュ、稼働EXEの置換、ファイアウォール/ルーター/Tailscale設定の変更、実機でのDHCP変更・再接続試験。
PC EXEとSatBoxファームウェアの双方の更新が必要。既存変更履歴.txtは変更なし。

[2026-10-16 15:05:38] ローテーター反転ハンチング抑制
変更前バックアップ: C:\Users\kueno\OneDrive\Desktop\Ham\3_Arduino\ESP32_SatBox\SatBox_Ver0.1.0c\backup\20261016_150016_rotor_reversal_delay
変更: RotorControl.cpp / Settings.cpp / Settings.h / WebPage.cpp
新規: RotorReversalGuard.h
作業履歴.txt自身も変更前にバックアップ・SHA256一致確認。既存変更履歴.txtは変更なし。
仕様: 左右・上下ごとに独立。逆方向要求で即時停止し、同じ逆方向要求が設定秒数継続した場合だけ反転。元の方向へ戻る/停止指示/デッドバンドで待機を取り消す。STOPは即時。待機にdelay()を使わない。
設定: /calibration に1〜10秒の整数設定・保存。初期値2秒。日英表示。POSTの範囲外/非整数入力を拒否。保存失敗時はエラー。
保存: Preferences NVSのsatbox-rotor/rev-delay。既存SettingsData/EEPROM構造は変更せず、既存キャリブレーションを維持。
検証: 実際のRotorControl.cppをGPIO/時刻モック付きでホストC++実行。1〜10秒境界、左右上下の独立、反復要求、停止、デッドバンド、millis桁あふれ、両方向同時出力なしを確認。
検証: 実際のSettings.cppをNVS/EEPROMモック付きで実行。初期値/保存再読込/範囲外/保存失敗/不正NVS値/既存キャリブレーション保持を確認。
検証: 実際のhandleCalibration関数をホストC++で実行。GET表示・POST入力検証・保存失敗・303リダイレクト・初期値2のHTMLを確認。
ESP32コンパイラは起動時にIllegal System DLL Relocationが継続。全体ファームウェアのESP32ビルド・.bin生成は未確認。Arduino IDEで検証が必要。
実機のフラッシュ・モーター操作・設定変更は行っていない。既存ログ自動探索/手動IP変更等の無関係なコードは維持。
