Ajout thermostat sunricher SG9092

Bonjour,

pourriez vous inclure ce thermostat sunricher ZG9092 dans le plugin zigbee officiel.

Désolé pour la photo mais ce produit n’est pas encore au catalogue ni sur le marché, il sera commercialisé en fin d’année:

Merci

Données bruts:

{
    "ieee": "ff:ff:03:02:01:03:02:5e",
    "nwk": 519,
    "status": 2,
    "lqi": "255",
    "rssi": "-58",
    "last_seen": "1634747854.6364853",
    "node_descriptor": "01:40:8e:24:12:52:52:00:00:2c:52:00:00",
    "endpoints": [
        {
            "id": 1,
            "status": 1,
            "device_type": 769,
            "profile_id": 260,
            "manufacturer": "Sunricher",
            "model": "ZG9092",
            "output_clusters": [
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 10,
                    "name": "Time",
                    "attributes": []
                },
                {
                    "id": 1030,
                    "name": "Occupancy Sensing",
                    "attributes": []
                }
            ],
            "input_clusters": [
                {
                    "id": 0,
                    "name": "Basic",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zcl_version",
                            "value": 3
                        },
                        {
                            "id": 1,
                            "name": "app_version",
                            "value": 7
                        },
                        {
                            "id": 2,
                            "name": "stack_version",
                            "value": 0
                        },
                        {
                            "id": 3,
                            "name": "hw_version",
                            "value": 1
                        },
                        {
                            "id": 4,
                            "name": "manufacturer",
                            "value": "Sunricher"
                        },
                        {
                            "id": 5,
                            "name": "model",
                            "value": "ZG9092"
                        },
                        {
                            "id": 6,
                            "name": "date_code",
                            "value": "NULL"
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 1
                        },
                        {
                            "id": 16384,
                            "name": "sw_build_id",
                            "value": "6.9.1.0_r4"
                        }
                    ]
                },
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 4,
                    "name": "Groups",
                    "attributes": []
                },
                {
                    "id": 5,
                    "name": "Scenes",
                    "attributes": []
                },
                {
                    "id": 9,
                    "name": "Alarms",
                    "attributes": []
                },
                {
                    "id": 513,
                    "name": "Thermostat",
                    "attributes": []
                },
                {
                    "id": 1794,
                    "name": "Metering",
                    "attributes": []
                },
                {
                    "id": 2820,
                    "name": "Electrical Measurement",
                    "attributes": []
                }
            ]
        },
        {
            "id": 2,
            "status": 1,
            "device_type": 7,
            "profile_id": 260,
            "manufacturer": "Sunricher",
            "model": "ZG9092",
            "output_clusters": [
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 25,
                    "name": "Ota",
                    "attributes": []
                }
            ],
            "input_clusters": [
                {
                    "id": 0,
                    "name": "Basic",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zcl_version",
                            "value": 3
                        },
                        {
                            "id": 1,
                            "name": "app_version",
                            "value": 7
                        },
                        {
                            "id": 2,
                            "name": "stack_version",
                            "value": 0
                        },
                        {
                            "id": 3,
                            "name": "hw_version",
                            "value": 1
                        },
                        {
                            "id": 4,
                            "name": "manufacturer",
                            "value": "Sunricher"
                        },
                        {
                            "id": 5,
                            "name": "model",
                            "value": "ZG9092"
                        },
                        {
                            "id": 6,
                            "name": "date_code",
                            "value": "NULL"
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 1
                        },
                        {
                            "id": 16384,
                            "name": "sw_build_id",
                            "value": "6.9.1.0_r4"
                        }
                    ]
                },
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                }
            ]
        },
        {
            "id": 242,
            "status": 1,
            "device_type": 97,
            "profile_id": 41440,
            "manufacturer": null,
            "model": null,
            "output_clusters": [
                {
                    "id": 33,
                    "name": "GreenPowerProxy",
                    "attributes": []
                }
            ],
            "input_clusters": []
        }
    ],
    "signature": {
        "manufacturer": "Sunricher",
        "model": "ZG9092",
        "node_desc": {
            "logical_type": 1,
            "complex_descriptor_available": 0,
            "user_descriptor_available": 0,
            "reserved": 0,
            "aps_flags": 0,
            "frequency_band": 8,
            "mac_capability_flags": 142,
            "manufacturer_code": 4644,
            "maximum_buffer_size": 82,
            "maximum_incoming_transfer_size": 82,
            "server_mask": 11264,
            "maximum_outgoing_transfer_size": 82,
            "descriptor_capability_field": 0
        },
        "endpoints": {
            "1": {
                "profile_id": 260,
                "device_type": 769,
                "input_clusters": [
                    0,
                    3,
                    4,
                    5,
                    9,
                    513,
                    1794,
                    2820
                ],
                "output_clusters": [
                    3,
                    10,
                    1030
                ]
            },
            "2": {
                "profile_id": 260,
                "device_type": 7,
                "input_clusters": [
                    0,
                    3
                ],
                "output_clusters": [
                    3,
                    25
                ]
            },
            "242": {
                "profile_id": 41440,
                "device_type": 97,
                "input_clusters": [],
                "output_clusters": [
                    33
                ]
            }
        }
    },
    "class": "zigpy.device"
}

Hello,

Un petit UP pour cette intégration.

Merci








J’ajoute la doc à cette demande d’intégration, @Loic si tu peux regarder ce serait vraiment cool.

Merci d’avance.

Bonjour
Malheureusement la d’après le json ça va être compliqué j’ai bien le cluster thermostat mais aucun attribut… Sans ça impossible pour moi de faire quoique ce soit

Tu peux ajouter comme sur ma capture j’ai testé toutes les commandes/infos c’est ok.

Merci

Si tu as la dernière version du plugin il faut aller dans configuration du module et dernière onglet et la tu me donne le json normalement ca m’évite de tous recopier a la main et les risque d’erreur.

Voici

{
    "name": "",
    "configuration": {
        "last_seen::check_mode": "auto",
        "dontAwaitCmd": "0",
        "allowQueue": "0",
        "ignoreExecutionError": "0"
    },
    "commands": [
        {
            "logicalId": "1::513::18",
            "generic_type": "THERMOSTAT_SETPOINT",
            "name": "Consigne ",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "0",
            "unite": "°C",
            "configuration": {
                "calculValueOffset": "#value# \/ 100"
            },
            "isVisible": "0"
        },
        {
            "logicalId": "1::1794::0",
            "generic_type": "CONSUMPTION",
            "name": "Consommation",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "kWh",
            "configuration": {
                "historizeRound": 2,
                "calculValueOffset": "#value# \/ 1000"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::0",
            "generic_type": "THERMOSTAT_TEMPERATURE",
            "name": "Température ",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "°C",
            "configuration": {
                "calculValueOffset": "#value# \/ 100"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::18::#slider#*100",
            "generic_type": "THERMOSTAT_SET_SETPOINT",
            "name": "Thermostat ",
            "type": "action",
            "subType": "slider",
            "isHistorized": "0",
            "unite": "°C",
            "configuration": {
                "minValue": "6",
                "maxValue": "28"
            },
            "template": {
                "dashboard": "core::button",
                "mobile": "core::button"
            },
            "value": "Consigne ",
            "isVisible": "1"
        },
        {
            "logicalId": "1::2820::1291",
            "generic_type": "POWER",
            "name": "Puissance ",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "W",
            "configuration": {
                "historizeRound": 2,
                "calculValueOffset": "#value# \/ 10"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::28",
            "generic_type": "THERMOSTAT_STATE_NAME",
            "name": "Mode ",
            "type": "info",
            "subType": "string",
            "isHistorized": "0",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::0",
            "name": "Arrêt",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::1",
            "name": "Auto",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::4",
            "name": "Manu",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::8",
            "name": "Séchage",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "value": "Mode ",
            "isVisible": "1"
        }
    ]
}

Parfait merci ca sera dans la beta de demain

1 « J'aime »

Hello et merci pour cet ajout, j’avais fais la config en 4 eme vitesse et il manquait deux ou trois choses:

{
    "name": "Sunricher.ZG9092",
    "configuration": [],
    "commands": [
        {
            "logicalId": "1::513::18",
            "generic_type": "THERMOSTAT_SETPOINT",
            "name": "Consigne ",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "0",
            "unite": "°C",
            "configuration": {
                "calculValueOffset": "#value# \/ 100"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "0"
        },
        {
            "logicalId": "attributes::1::in::513::18::#slider#*100",
            "generic_type": "THERMOSTAT_SET_SETPOINT",
            "name": "Regalge consigne",
            "type": "action",
            "subType": "slider",
            "isHistorized": "0",
            "unite": "°C",
            "configuration": {
                "minValue": "6",
                "maxValue": "28"
            },
            "template": {
                "dashboard": "core::button",
                "mobile": "core::button"
            },
            "value": "Consigne ",
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::20",
            "name": "Consigne Hors Gel",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "configuration": {
                "repeatEventManagement": "never"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::20::#slider#",
            "name": "Réglage Consigne Hors Gel",
            "type": "action",
            "subType": "slider",
            "isHistorized": "0",
            "configuration": {
                "minValue": "0",
                "maxValue": "15",
                "calculValueOffset": "#value#*100",
                "actionConfirm": "0"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "value": "Consigne Hors Gel",
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::28",
            "generic_type": "THERMOSTAT_STATE_NAME",
            "name": "Mode ",
            "type": "info",
            "subType": "string",
            "isHistorized": "0",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::0",
            "name": "Arrêt",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::1",
            "name": "Auto",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::4",
            "name": "Manu",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::28::8",
            "name": "Dry",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "value": "Mode ",
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::8194::1",
            "name": "Hors Gel",
            "type": "action",
            "subType": "other",
            "isHistorized": "0",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::41",
            "name": "Etat Chauffage",
            "type": "info",
            "subType": "string",
            "isHistorized": "1",
            "configuration": {
                "minValue": "0",
                "maxValue": "1"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::8194",
            "name": "Etat Hors Gel",
            "type": "info",
            "subType": "string",
            "isHistorized": "1",
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::513::16",
            "name": "Etat Compensation",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "0",
            "unite": "°C",
            "configuration": {
                "minValue": "-30",
                "maxValue": "30"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "attributes::1::in::513::16::#slider#",
            "name": "Compensation",
            "type": "action",
            "subType": "slider",
            "isHistorized": "0",
            "configuration": {
                "minValue": "-30",
                "maxValue": "30",
                "lastCmdValue": "0.0"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "value": "Etat Compensation",
            "isVisible": "1"
        },
        {
            "logicalId": "1::2820::1291",
            "generic_type": "POWER",
            "name": "Puissance ",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "W",
            "configuration": {
                "historizeRound": 2,
                "calculValueOffset": "#value# \/ 10"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::1794::0",
            "generic_type": "CONSUMPTION",
            "name": "Consommation",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "kWh",
            "configuration": {
                "historizeRound": 2,
                "calculValueOffset": "#value# \/ 1000"
            },
            "template": {
                "dashboard": "core::default",
                "mobile": "core::default"
            },
            "isVisible": "1"
        }
    ],
    "ref": "Sunricher.ZG9092"
}

Si tu peux pousser ce Json ce serait top.

J’ai juste une question car je n’arrive pas à mettre le thermostat via Zigbee en mode Hors Gel (Away) le cluster est le 0x2002 (8194) cf la doc constructeur:

Alors que j’arrive à lire le contenu du cluster via:

Par contre si j’envoi une commande 0/1 le log me retourne une erreur:

le log me dit que l’attribut 8194 n’est pas valide alors qu’il l’est bien sinon je ne pourrait pas lire sa valeur, également dans la doc l’attribut est bien noté comme « reportable ».

Si tu as une idée je te remercie

Merci je mets à jour demain.

Pour le mode hors gel c’est normal c’est pas un attribut standard il faut donc faire un quirks. Par défaut zigpy sait lire n’importe quel attribut mais si il est pas standard il ne sait pas l’écrire sans un quirks (car il connaît pas sont type)

Merci pour ta réponse en tant que simple user je suis capable de le faire?

C’est pas simple si je trouve le temps j’essayerai de le faire mais je promets rien je suis un peu débordé par la 4.2

1 « J'aime »

J’avoue ça doit être chaud… Mais elle est gamechanger :ok_hand:

Pour ce thermostat après en avoir testé beaucoup en zigbee, c’est un super produit équivalent voir mieux que les heatit en Zwave.
Étonnant que les modes horsgel ne soit pas inclus de base en zigbee non? c’est quand même la base niveau régulation, dans la doc il est d’ailleur écrit:

Ben c’est qu’ils disent que c’est as standard et donc il est possible avec l’occupency de jouer dessus (lui est standard). Donc ça doit être possible de changer le mode sans le quirks

Ben oui mais non cf la doc:


L’attribut occupancy est en read only.

Par contre je l’ai à dipso en bind sur son cluster sortant:

Je sais pas la désolé alors ça dépasse mes compétences…

Bonjour,

Ce thermostat est-il commercialisé ? Je ne le trouve nulle part.

Merci

Hello, non pas encore.

Oui c’est un peu confus, je capte pas la logique.

Du coup le quirks est de mise pour le mode awy/horsgel.

Je laisse ouvert ce fil et si jamais tu trouves du temps fais moi un UP.

Ça nous rendrait un énorme service.

D’avance merci