Quirk pour boîtier de pilotage de radiateur Powernity (PO-BOCO-ELEC)

Bonjour,

J’ai récemment fait l’acquisition d’une poignée de boîtier de pilotage de radiateur par fil pilote de marque Powernity (modèle PO-BOCO-ELEC).

Ceux-ci sont a priori gérés sous Zigbee2MQTT, mais pas sous ZHA. Je me suis donc lancé dans le codage d’un quirk.

Je me suis basé sur le code existant pour Z2M :

Pour le moment, j’ai réussi à gérer la sélection du pré-réglage (auto / manuel), du mode manuel, la récupération du mode auto, et les valeurs de température et d’humidité.

Voici le code de mon quirk en l’état actuel :

from zigpy.quirks.v2 import EntityPlatform, EntityType, SensorDeviceClass
from zhaquirks.tuya.builder import TuyaQuirkBuilder, TuyaTemperatureMeasurement
import zigpy.types as t

class POBOCOELECPreset(t.enum8):
    Auto = 0x00
    Manual = 0x01
    Holiday = 0x02


class POBOCOELECMode(t.enum8):
    Off = 0x05
    AntiFrost = 0x04
    Eco = 0x03
    ComfortMinus2 = 0x02
    ComfortMinus1 = 0x01
    Comfort = 0x00


(
    TuyaQuirkBuilder("Powernity", "PO-BOCO-ELEC")
    .applies_to("_TZE204_d6i25bwg", "TS0601")
    .tuya_enum(
        dp_id=2,
        attribute_name="preset",
        enum_class=POBOCOELECPreset,
        entity_platform=EntityPlatform.SELECT,
        entity_type=EntityType.STANDARD,
        translation_key="preset",
        fallback_name="Preset",
    )
    .tuya_temperature(dp_id=16, scale=10)
    .tuya_humidity(dp_id=8)
    .tuya_enum(
        dp_id=126,
        attribute_name="auto_mode",
        enum_class=POBOCOELECMode,
        entity_platform=EntityPlatform.SENSOR,
        entity_type=EntityType.STANDARD,
        translation_key="auto_mode",
        fallback_name="Auto mode",
    )
    .tuya_enum(
        dp_id=127,
        attribute_name="manual_mode",
        enum_class=POBOCOELECMode,
        entity_platform=EntityPlatform.SELECT,
        entity_type=EntityType.STANDARD,
        translation_key="manual_mode",
        fallback_name="Manual mode",
    )
    .skip_configuration()
    .add_to_registry()
)

J’aimerais pouvoir rajouter au moins les valeurs des « schedule » journaliers (DP 28 à 34) pour pouvoir modifier depuis HA la programmation horaire gérée directement par l’équipement en mode auto. Je comprends en gros le principe du converter qui a été codé pour Z2M, qui permet de passer d’un tableau d’entiers à une chaine de caractère lisible et modifiable par l’humain:

Mais je ne suis pas parvenu à retranscrire ça sous forme de quirk ZHA. J’ai trouvé assez peu d’infos et/ou de temps pour bien piger le fonctionnement des quirks et des fonctions spécifiques Tuya.

Quelqu’un serait-il intéressé de contribuer ? Vu le faible coût d’aquisition de ces boîtiers par rapport à d’autres appareils du même type, il serait intéressant de pousser un quirk officiel pour le support sur ZHA.

N’hésitez pas à me faire des remarques sur le code actuel !