1.5.3
MyEngie v1.5.3
Bug Fix — Trimitere autocitire + device_class ConsumGrafic
Fișiere modificate: custom_components/myengie/button.py, custom_components/myengie/sensor.py
Problema
Butonul „Trimite index" din Home Assistant trimitea autocitirea cu câmpuri greșite către API-ul Engie (POST /v1/index), ceea ce făcea ca trimiterea să eșueze întotdeauna.
Cauză
Trei câmpuri din payload-ul form-urlencoded erau incorecte:
| # | Greșit | Corect (din APK IndexApi.java) |
|---|---|---|
| 1 | poc |
poc_number |
| 2 | reading_value |
index |
| 3 | inst_detail.get("serial", "") |
inst_detail.get("serial_number", ...) |
Bug 1+2: Engie ignora complet request-ul — câmpurile poc și reading_value nu există în API.
Bug 3: serie_contor era mereu gol, deoarece API-ul divisions returnează serial_number, nu serial.
Validare
Payload-ul corectat a fost confirmat funcțional cu debug_myengie.py --send-index:
POST /v1/index → 200 OK
"Transmiterea indexului s-a realizat cu succes"
Payload:
poc_number: "<poc>"
pa: "<pa>"
installation_number: "<installation_number>"
division: "gaz"
index: "<valoare>"
serie_contor: "<serial_number>"
Modificări
# ÎNAINTE (incorect):
self._serial = inst_detail.get("serial", "")
payload = {
"poc": self._poc,
"reading_value": str(index_value),
"serie_contor": self._serial,
...
}
# DUPĂ (corect — conform APK IndexApi.java sendIndex):
self._serial = inst_detail.get("serial_number", inst_detail.get("serie_contor", inst_detail.get("serial", "")))
payload = {
"poc_number": self._poc,
"index": str(index_value),
...
}
if self._serial:
payload["serie_contor"] = self._serialBug Fix — device_class ConsumGraficSensor (sensor.py)
Problema
Home Assistant afișa warning pentru toți senzorii consum_grafic de tip gaz:
Entity sensor.myengie_XXXX_gaz_consum_grafic is using native unit of measurement 'kWh'
which is not a valid unit for the device class ('gas') it is using;
expected one of ['ft³', 'MCF', 'm³', 'CCF', 'L']
Cauză
SensorDeviceClass.GAS acceptă exclusiv unități de volum (m³, ft³, CCF, MCF, L). Senzorul ConsumGraficSensor raportează consum în kWh (energie) — deci device_class nu poate fi GAS, ci trebuie să fie ENERGY pentru ambele utilități (gaz și curent).
SensorDeviceClass.GAS rămâne corect doar pe IndexContorSensor, unde unitatea este m³.
Modificări
# ÎNAINTE (incorect):
if div_short == "gaz":
self._attr_device_class = SensorDeviceClass.GAS
else:
self._attr_device_class = SensorDeviceClass.ENERGY
# DUPĂ (corect):
# Unitatea e kWh → device_class ENERGY pentru ambele (gaz + elec)
# SensorDeviceClass.GAS acceptă DOAR unități de volum (m³, ft³, etc.)
self._attr_device_class = SensorDeviceClass.ENERGY📈 Integrarea în cifre
| ⭐ Stars | 📥 Instalări | 🔄 Clone (14z) |
|---|---|---|
| 6 | 386 | 242 |
Dacă integrarea MyEngie îți este utilă, lasă un ⭐ pe repository — îi ajută și pe alți utilizatori să o descopere.
💛 Dezvoltarea consumă timp și resurse. Dacă vrei să susții proiectul:
☕ Buy Me a Coffee · 💰 GitHub Sponsors