Skip to content

1.5.3

Choose a tag to compare

@github-actions github-actions released this 07 Apr 07:57

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._serial

Bug 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