mirror of
https://github.com/bourquep/mysa2mqtt.git
synced 2025-11-03 13:19:40 +00:00
# Fix Temperature Handling in Fahrenheit Mode
## Problem
When operating in **Fahrenheit mode**, Mysa still expects temperature
values to be provided in **Celsius**.
However, Home Assistant sends integer Fahrenheit values (e.g.,
`72.02°F`), which convert to **non-aligned Celsius values** like
`22.22°C`.
Mysa’s API only accepts temperature values that are either **whole
numbers** or **increments of 0.5°C** (for example: `21.0`, `21.5`,
`22.0`).
As a result, values such as `22.22°C` or `21.72°C` are considered
invalid and are **rejected** by Mysa’s API.
---
## Root Cause
- The original code accepted **0.1°C precision** and **0.5°C step
size**.
- When Home Assistant runs in Fahrenheit, the conversion from °F to °C
produces fractional values that are not valid (e.g., 72°F → 22.22°C).
- Because Mysa enforces strict 0.5°C increments, these fractional
setpoints caused failed updates.
---
## Solution
This update ensures valid behavior when using Fahrenheit mode **while
keeping the current behavior for Celsius**:
- Adds a new environment variable:
**`M2M_TEMP_UNIT`** — accepts either:
- `C` *(default)*
- `F` *(for Fahrenheit operation)*
- When running in Fahrenheit mode (`M2M_TEMP_UNIT=F`):
- Celsius values are **rounded and clamped to the nearest 0.5°C**.
- Temperature step size and precision are adjusted:
- Precision → `1°F`
- Step size → `1°F`
- When running in Celsius mode, existing logic remains unchanged (0.1
precision, 0.5 step).
---
## Technical Summary
| Mode | Env Variable | Precision | Step | Conversion Behavior |
|------|---------------|------------|------|----------------------|
| Celsius | `M2M_TEMP_UNIT=C` (default) | 0.1°C | 0.5°C | Direct
pass-through |
| Fahrenheit | `M2M_TEMP_UNIT=F` | 1°F | 1°F | Convert °F → °C, snap to
0.5°C |
The rounding logic ensures that when a Fahrenheit value (e.g., `72°F`)
is converted to Celsius (`21.72°C`), it is adjusted to the nearest valid
half-degree (`21.5°C` or `22.0°C`).
# Demo
https://github.com/user-attachments/assets/bbffe5fe-a3be-43cb-aed0-f63bdfacb1d4
---------
Co-authored-by: Pascal Bourque <pascal@cosmos.moi>
2 lines
10 B
Plaintext
2 lines
10 B
Plaintext
README.md
|