The Daily WTF на русском
Подписаться
CodeSOD: Набирает обороты
Системы «мини-сплит» пользуются популярностью при модернизации старых домов благодаря своей экономичности и энергоэффективности, однако их зависимость от ИК-пультов дистанционного управления затрудняет интеграцию с системами домашней автоматизации. Частая проблема возникает из-за логики преобразования температуры в этих системах, особенно при пересчете между градусами Цельсия и Фаренгейта. Проект с открытым исходным кодом, направленный на интеграцию мини-сплит-систем в системы домашней автоматизации, выявил несовершенство метода преобразования температуры.В коде проекта используются таблицы перевода для преобразования из градусов Цельсия в градусы Фаренгейта и наоборот. Эти таблицы содержат конкретные, зачастую неточные сопоставления, что приводит к расхождениям по сравнению со стандартными формулами преобразования. Например, 18 °C неверно сопоставляется с 65 °F вместо более точного значения 64 °F (при округлении). Структура этих таблиц поиска свидетельствует о попытке приблизительного преобразования, а не о точных математических вычислениях.Изначально автор полагал, что это была наивная оптимизация, характерная для любительского проекта, но комментарий в коде поясняет, что речь идет о «прямых сопоставлениях, основанных на данных пульта». Это указывает на то, что неточности происходят из самого пульта дистанционного управления. Вероятно, пульт использует таблицы пересчёта из-за ограничений встроенного микроконтроллера, который, возможно, не способен эффективно обрабатывать вычисления с плавающей запятой.Следовательно, когда пользователь устанавливает на пульте температуру, например, 72F, пульт внутренне преобразует её в приблизительное значение в градусах Цельсия (например, 22,5C) перед отправкой команды на устройство. Это приближение, хотя и «достаточно хорошее» в большинстве случаев, создаёт несоответствия при точной автоматизации. По мнению автора, основная проблема заключается не в коде этого любительского проекта или в самом пульте, а в том, что во всем мире по-прежнему используются нестандартные единицы измерения (Фаренгейт), что вынуждает прибегать к таким неточным преобразованиям.