CodeSOD:熱を帯びてくる ノート

CodeSOD:熱を帯びてくる

ミニスプリットシステムは、コストパフォーマンスとエネルギー効率の高さから、古い住宅の改修に広く利用されていますが、赤外線リモコンに依存しているため、ホームオートメーションとの連携が複雑になります。 これらのシステム内部の温度変換ロジック、特に摂氏と華氏間の変換において、よくある問題が発生します。ミニスプリットをホームオートメーションに統合しようとするオープンソースプロジェクトにより、この温度変換方法に欠陥があることが明らかになりました。このプロジェクトのコードでは、摂氏から華氏、および華氏から摂氏への変換にルックアップテーブルを使用しています。これらのテーブルには特定の(しばしば不正確な)マッピングが含まれており、標準的な変換式と比較して不一致が生じます。例えば、18℃は(四捨五入した場合)より正確な64°Fではなく、誤って65°Fにマッピングされています。 これらのルックアップテーブルの設計からは、正確な数学的計算というよりは、近似的な換算を試みていることがうかがえます。筆者は当初、これを趣味のプロジェクトによる単純な最適化だと考えていましたが、コード内のコメントにより、これらが「リモコンに基づく直接的な対応関係」であることが明らかになりました。これは、不正確さがリモコン自体に起因していることを示しています。 リモコンは、浮動小数点演算を効率的に処理できない可能性のある組み込みマイコンの制限により、ルックアップテーブルを使用していると考えられます。その結果、ユーザーがリモコンで72Fのような温度を設定すると、リモコンは内部でそれを概算の摂氏値(例:22.5C)に変換してから、ユニットにコマンドを送信します。この近似は、ほとんどの状況では「十分」ですが、精密な自動化においては不整合を引き起こします。 著者によれば、根本的な問題は、この趣味のプロジェクトのコードやリモコンそのものではなく、世界的に非標準の単位(華氏)が依然として使用されていることにあり、それがこうした不正確な換算を余儀なくさせているのです。