Demande de creation Vindstyrka d'Ikea

Bonjour,
Pouvez vous créer l equipement Zigbee suivant :
Type d’equipement Capteur qualité d’air Vindstyrka d’Ikea
Le lien est Lien site ikea
La photo


Les infos brutes

{
    "ieee": "94:34:69:ff:fe:81:44:4e",
    "nwk": 51983,
    "status": 2,
    "lqi": "255",
    "rssi": "-49",
    "last_seen": "1678549676.168397",
    "node_descriptor": "01:40:8e:7c:11:52:52:00:00:2c:52:00:00",
    "endpoints": [
        {
            "id": 1,
            "status": 1,
            "device_type": 770,
            "profile_id": 260,
            "manufacturer": "IKEA of Sweden",
            "model": "VINDSTYRKA",
            "output_clusters": [
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 25,
                    "name": "Ota",
                    "attributes": []
                },
                {
                    "id": 32,
                    "name": "Poll Control",
                    "attributes": []
                },
                {
                    "id": 514,
                    "name": "Fan Control",
                    "attributes": []
                }
            ],
            "input_clusters": [
                {
                    "id": 0,
                    "name": "Basic",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "zcl_version",
                            "value": 8
                        },
                        {
                            "id": 1,
                            "name": "app_version",
                            "value": 16
                        },
                        {
                            "id": 2,
                            "name": "stack_version",
                            "value": 106
                        },
                        {
                            "id": 3,
                            "name": "hw_version",
                            "value": 1
                        },
                        {
                            "id": 4,
                            "name": "manufacturer",
                            "value": "IKEA of Sweden"
                        },
                        {
                            "id": 5,
                            "name": "model",
                            "value": "VINDSTYRKA"
                        },
                        {
                            "id": 6,
                            "name": "date_code",
                            "value": "20220719"
                        },
                        {
                            "id": 7,
                            "name": "power_source",
                            "value": 1
                        },
                        {
                            "id": 16384,
                            "name": "sw_build_id",
                            "value": "1.0.010"
                        }
                    ]
                },
                {
                    "id": 3,
                    "name": "Identify",
                    "attributes": []
                },
                {
                    "id": 4,
                    "name": "Groups",
                    "attributes": []
                },
                {
                    "id": 1026,
                    "name": "Temperature Measurement",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 1800
                        }
                    ]
                },
                {
                    "id": 1029,
                    "name": "Relative Humidity Measurement",
                    "attributes": [
                        {
                            "id": 0,
                            "name": "measured_value",
                            "value": 5300
                        }
                    ]
                },
                {
                    "id": 64599,
                    "name": "Manufacturer Specific",
                    "attributes": []
                },
                {
                    "id": 64636,
                    "name": "Manufacturer Specific",
                    "attributes": []
                },
                {
                    "id": 1066,
                    "name": "PM2.5",
                    "attributes": []
                },
                {
                    "id": 64638,
                    "name": "Manufacturer Specific",
                    "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": "IKEA of Sweden",
        "model": "VINDSTYRKA",
        "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": 4476,
            "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": 770,
                "input_clusters": [
                    0,
                    3,
                    4,
                    1026,
                    1029,
                    64599,
                    64636,
                    1066,
                    64638
                ],
                "output_clusters": [
                    3,
                    25,
                    32,
                    514
                ]
            },
            "242": {
                "profile_id": 41440,
                "device_type": 97,
                "input_clusters": [],
                "output_clusters": [
                    33
                ]
            }
        }
    },
    "class": "zigpy.device"
}

Le log zigbee

[2023-03-11 16:54:14][DEBUG] : {"devices":{"2c:11:65:ff:fe:22:13:86":{"1":[{"1":{"value":"70","cluster_name":"Basic"}}]}}}
[2023-03-11 16:54:14][DEBUG] : Search attribut for 2c:11:65:ff:fe:22:13:86 logicalId : 1::0::1 => 70 convert to 70
[2023-03-11 16:54:16][DEBUG] : {"devices":{"a4:c1:38:31:ef:31:4c:fd":{"1":[{"1":{"value":"72","cluster_name":"Basic"},"65506":{"value":"56","cluster_name":"Basic"},"65508":{"value":"0","cluster_name":"Basic"}}]}}}
[2023-03-11 16:54:16][DEBUG] : Search attribut for a4:c1:38:31:ef:31:4c:fd logicalId : 1::0::1 => 72 convert to 72
[2023-03-11 16:54:16][DEBUG] : Search attribut for a4:c1:38:31:ef:31:4c:fd logicalId : 1::0::65506 => 56 convert to 56
[2023-03-11 16:54:16][DEBUG] : Search attribut for a4:c1:38:31:ef:31:4c:fd logicalId : 1::0::65508 => 0 convert to 0
[2023-03-11 16:54:17][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1029":[{"value":"5300","cluster_name":"Relative Humidity Measurement"}]}}}}
[2023-03-11 16:54:17][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1029::0 => 5300 convert to 5300
[2023-03-11 16:54:21][DEBUG] : {"devices":{"a4:c1:38:41:31:08:e9:cd":{"1":[{"1":{"value":"67","cluster_name":"Basic"},"65506":{"value":"32","cluster_name":"Basic"},"65508":{"value":"0","cluster_name":"Basic"}}]}}}
[2023-03-11 16:54:21][DEBUG] : Search attribut for a4:c1:38:41:31:08:e9:cd logicalId : 1::0::1 => 67 convert to 67
[2023-03-11 16:54:21][DEBUG] : Search attribut for a4:c1:38:41:31:08:e9:cd logicalId : 1::0::65506 => 32 convert to 32
[2023-03-11 16:54:21][DEBUG] : Search attribut for a4:c1:38:41:31:08:e9:cd logicalId : 1::0::65508 => 0 convert to 0
[2023-03-11 16:54:25][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"6":[{"value":"Bool.true","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:54:25][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::6::0 => Bool.true convert to 1
[2023-03-11 16:54:29][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"2820":{"1291":{"value":"4","cluster_name":"Electrical Measurement"}}}}}}
[2023-03-11 16:54:29][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::2820::1291 => 4 convert to 4
[2023-03-11 16:54:34][DEBUG] : {"devices":{"b4:e3:f9:ff:fe:c6:54:ae":{"1":{"6":[{"value":"Bool.true","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:54:34][DEBUG] : Search attribut for b4:e3:f9:ff:fe:c6:54:ae logicalId : 1::6::0 => Bool.true convert to 1
[2023-03-11 16:54:38][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":[{"1":{"value":"67","cluster_name":"Basic"}}]}}}
[2023-03-11 16:54:38][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::0::1 => 67 convert to 67
[2023-03-11 16:54:47][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1029":[{"value":"5400","cluster_name":"Relative Humidity Measurement"}]}}}}
[2023-03-11 16:54:47][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1029::0 => 5400 convert to 5400
[2023-03-11 16:54:59][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"2820":{"1291":{"value":"0","cluster_name":"Electrical Measurement"}}}}}}
[2023-03-11 16:54:59][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::2820::1291 => 0 convert to 0
[2023-03-11 16:55:03][DEBUG] : http://127.0.0.1:8091/device/attributes type : POST
[2023-03-11 16:55:03][DEBUG] : {"ieee":"0c:43:14:ff:fe:9a:fb:f5","endpoint":1,"cluster":6,"cluster_type":"in","attributes":[0],"allowCache":0}
[2023-03-11 16:55:03][DEBUG] : [Zigbee][Asus SDJ] refresh
[2023-03-11 16:55:03][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"6":[{"value":"Bool.true","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:55:03][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::6::0 => Bool.true convert to 1
[2023-03-11 16:55:16][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1029":[{"value":"7200","cluster_name":"Relative Humidity Measurement"}]}}}}
[2023-03-11 16:55:16][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1029::0 => 7200 convert to 7200
[2023-03-11 16:55:17][DEBUG] : {"devices":{"b4:e3:f9:ff:fe:c6:4f:d1":{"1":{"6":[{"value":"Bool.false","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:55:17][DEBUG] : Search attribut for b4:e3:f9:ff:fe:c6:4f:d1 logicalId : 1::6::0 => Bool.false convert to 0
[2023-03-11 16:55:21][DEBUG] : {"devices":{"cc:86:ec:ff:fe:bf:a2:bc":{"1":[{"1":{"value":"80","cluster_name":"Basic"}}]}}}
[2023-03-11 16:55:21][DEBUG] : Search attribut for cc:86:ec:ff:fe:bf:a2:bc logicalId : 1::0::1 => 80 convert to 80
[2023-03-11 16:55:29][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"2820":{"1291":{"value":"0","cluster_name":"Electrical Measurement"}}}}}}
[2023-03-11 16:55:29][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::2820::1291 => 0 convert to 0
[2023-03-11 16:55:35][DEBUG] : {"devices":{"2c:11:65:ff:fe:22:13:86":{"1":[{"1":{"value":"70","cluster_name":"Basic"},"65506":{"value":"31","cluster_name":"Basic"},"65508":{"value":"0","cluster_name":"Basic"}}]}}}
[2023-03-11 16:55:35][DEBUG] : Search attribut for 2c:11:65:ff:fe:22:13:86 logicalId : 1::0::1 => 70 convert to 70
[2023-03-11 16:55:35][DEBUG] : Search attribut for 2c:11:65:ff:fe:22:13:86 logicalId : 1::0::65506 => 31 convert to 31
[2023-03-11 16:55:35][DEBUG] : Search attribut for 2c:11:65:ff:fe:22:13:86 logicalId : 1::0::65508 => 0 convert to 0
[2023-03-11 16:55:38][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1026":[{"value":"1800","cluster_name":"Temperature Measurement"}]}}}}
[2023-03-11 16:55:38][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1026::0 => 1800 convert to 1800
[2023-03-11 16:55:46][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1029":[{"value":"10000","cluster_name":"Relative Humidity Measurement"}]}}}}
[2023-03-11 16:55:46][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1029::0 => 10000 convert to 10000
[2023-03-11 16:55:56][DEBUG] : {"devices":{"50:32:5f:ff:fe:39:90:3d":{"1":[{"1":{"value":"70","cluster_name":"Basic"}}]}}}
[2023-03-11 16:55:56][DEBUG] : Search attribut for 50:32:5f:ff:fe:39:90:3d logicalId : 1::0::1 => 70 convert to 70
[2023-03-11 16:55:59][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"2820":{"1291":{"value":"4","cluster_name":"Electrical Measurement"}}}}}}
[2023-03-11 16:55:59][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::2820::1291 => 4 convert to 4
[2023-03-11 16:56:03][DEBUG] : {"devices":{"50:32:5f:ff:fe:39:90:3d":{"1":[{"1":{"value":"70","cluster_name":"Basic"},"65506":{"value":"31","cluster_name":"Basic"},"65508":{"value":"0","cluster_name":"Basic"}}]}}}
[2023-03-11 16:56:03][DEBUG] : Search attribut for 50:32:5f:ff:fe:39:90:3d logicalId : 1::0::1 => 70 convert to 70
[2023-03-11 16:56:03][DEBUG] : Search attribut for 50:32:5f:ff:fe:39:90:3d logicalId : 1::0::65506 => 31 convert to 31
[2023-03-11 16:56:03][DEBUG] : Search attribut for 50:32:5f:ff:fe:39:90:3d logicalId : 1::0::65508 => 0 convert to 0
[2023-03-11 16:56:08][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1026":[{"value":"1900","cluster_name":"Temperature Measurement"}]}}}}
[2023-03-11 16:56:08][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1026::0 => 1900 convert to 1900
[2023-03-11 16:56:14][DEBUG] : {"devices":{"0c:43:14:ff:fe:bb:60:f9":{"1":{"6":[{"value":"Bool.false","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:56:14][DEBUG] : Search attribut for 0c:43:14:ff:fe:bb:60:f9 logicalId : 1::6::0 => Bool.false convert to 0
[2023-03-11 16:56:16][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1029":[{"value":"5300","cluster_name":"Relative Humidity Measurement"}]}}}}
[2023-03-11 16:56:16][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1029::0 => 5300 convert to 5300
[2023-03-11 16:56:17][DEBUG] : {"devices":{"b4:e3:f9:ff:fe:c6:4f:d1":{"1":{"6":[{"value":"Bool.false","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:56:17][DEBUG] : Search attribut for b4:e3:f9:ff:fe:c6:4f:d1 logicalId : 1::6::0 => Bool.false convert to 0
[2023-03-11 16:56:27][DEBUG] : {"devices":{"00:12:4b:00:23:43:7a:29":{"1":{"6":[{"value":"Bool.false","cluster_name":"On\/Off"}]}},"00:12:4b:00:23:43:f2:ee":{"1":{"6":[{"value":"Bool.false","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:56:27][DEBUG] : Search attribut for 00:12:4b:00:23:43:7a:29 logicalId : 1::6::0 => Bool.false convert to 0
[2023-03-11 16:56:27][DEBUG] : Search attribut for 00:12:4b:00:23:43:f2:ee logicalId : 1::6::0 => Bool.false convert to 0
[2023-03-11 16:56:29][DEBUG] : {"devices":{"0c:43:14:ff:fe:9a:fb:f5":{"1":{"2820":{"1291":{"value":"0","cluster_name":"Electrical Measurement"}}}}}}
[2023-03-11 16:56:29][DEBUG] : Search attribut for 0c:43:14:ff:fe:9a:fb:f5 logicalId : 1::2820::1291 => 0 convert to 0
[2023-03-11 16:56:46][DEBUG] : {"devices":{"2c:11:65:ff:fe:22:13:86":{"1":[{"1":{"value":"70","cluster_name":"Basic"}}]}}}
[2023-03-11 16:56:46][DEBUG] : Search attribut for 2c:11:65:ff:fe:22:13:86 logicalId : 1::0::1 => 70 convert to 70
[2023-03-11 16:56:46][DEBUG] : {"devices":{"94:34:69:ff:fe:81:44:4e":{"1":{"1029":[{"value":"5100","cluster_name":"Relative Humidity Measurement"}]}}}}
[2023-03-11 16:56:46][DEBUG] : Search attribut for 94:34:69:ff:fe:81:44:4e logicalId : 1::1029::0 => 5100 convert to 5100
[2023-03-11 16:56:47][DEBUG] : {"devices":{"0c:43:14:ff:fe:bb:60:f9":{"1":{"6":[{"value":"Bool.false","cluster_name":"On\/Off"}]}}}}
[2023-03-11 16:56:47][DEBUG] : Search attribut for 0c:43:14:ff:fe:bb:60:f9 logicalId : 1::6::0 => Bool.false convert to 0

Voilà j’ai suivi la procédure de la doc, j’espère que toutes les infos sont là.
Cordialement

Merci @iPapy d’avoir remis en forme ma demande.

Bonjour,
quelques nouvelles sur ce projet?
Chez moi cela ne fonctionne pas!

Bonsoir,
L equipement ne sera certainement pas créé, l’equipe semble être mobilisée sur le nouveau plugin jeezigbee.
Cependant, avec le plugin zigbee il est possible de remonter la température l humidite et le taux pm2.5, il y a un sujet ou la commande à créer est indiquée.
Sinon avec le nouveau plugin jeezigbee, les informations remontent, avec en plus le taux de tvoc. Cependant ce plugin est en beta et est instable chez moi, donc je me contente de la température, humidité et pm2.5
Je recherche le lien pour la creation de la commande et la procédure pour actualiser les données et j actualise ma reponse,
Bonne soirée

Bonjour,
merci pour ton retour.
J’utilise Zigbeelinker. Je vais voir si de ce côté, il n’y aurait pas qq chose à faire avec @MrGreen
Bonne journée

Comme toujours, fonctionne avec ZIGBEE2MQTT : IKEA E2112 control via MQTT | Zigbee2MQTT

1 « J'aime »

Bonjour,

il y a eu une mise à jour du plugin Zigbee aujourd’hui mais je ne trouve pas ce capteur.

Bonjour,
Je ne l’ai pas vu dans les nouveaux équipements zigbee ajoutés (je suis en stable).
Par contre Jeezigbee est passé en stable, et il est très bien reconnu.
J’avais des problèmes avec la version bêta, mais maintenant impeccable depuis quelques jours (version stable)
Bonne soirée

Bonjour à tous

Si vous n’avez pas encore basculé sur le nouveau plugin JeeZigbee, voici la solution avant d’inclure le module IKEA Vindstyrka avec le plugin Zigbee.

Ouvez un shell de votre Jeedom puis :

Ajoutez le quirks manquant de la librairie zigpy :
Inspiré de https://github.com/zigpy/zha-device-handlers/pull/2315

cat <<EOF > /usr/local/lib/python3.7/dist-packages/zhaquirks/ikea/vindstyrka.py
"""Device handler for IKEA of Sweden VINDSTYRKA Air quality sensor."""

from typing import Dict

from zigpy.profiles import zha
from zigpy.quirks import CustomCluster, CustomDevice
import zigpy.types as t
from zigpy.zcl.clusters.general import (
    Basic,
    GreenPowerProxy,
    Groups,
    Identify,
    Ota,
    PollControl,
)
from zigpy.zcl.clusters.hvac import Fan
from zigpy.zcl.clusters.measurement import (
    PM25,
    RelativeHumidity,
    TemperatureMeasurement,
)
from zigpy.zcl.foundation import ZCLAttributeDef

from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)
from zhaquirks.ikea import IKEA
IKEA_CLUSTER_ID = 0xFC7C  # decimal = 64636
WWAH_CLUSTER_ID = 0xFC57  # decimal = 64599


class VOCIndex(CustomCluster):
    """VOC index value as reported by the Senserion SEN54 inside VINDSTYRKA."""

    cluster_id: t.uint16_t = 0xFC7E
    name: str = "VOC Index"
    ep_attribute: str = "voc_index"

    attributes = {
        0x0000: (
            "measured_value", t.Single, True
        ),
        0x0001: (
            "min_measured_value", t.Single, True
        ),
        0x0002: (
            "max_measured_value", t.Single, True
        ),
    }


class IkeaVINDSTYRKA(CustomDevice):
    """IKEA of Sweden VINDSTYRKA Air quality sensor."""

    signature = {
        MODELS_INFO: [(IKEA, "VINDSTYRKA")],
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=770
            # device_version=0
            # input_clusters=[0, 3, 4, 1026, 1029, 1066, 64599, 64636, 64638]
            # output_clusters=[3, 25, 32, 514]>
            1: {
                PROFILE_ID: zha.PROFILE_ID,  # 260
                DEVICE_TYPE: zha.DeviceType.TEMPERATURE_SENSOR,  # 0x0302
                INPUT_CLUSTERS: [
                    Basic.cluster_id,  # 0x0000
                    Identify.cluster_id,  # 0x0003
                    Groups.cluster_id,  # 0x0004
                    TemperatureMeasurement.cluster_id,  # 0x0402
                    RelativeHumidity.cluster_id,  # 0x0405
                    PM25.cluster_id,  # 0x042a
                    WWAH_CLUSTER_ID,  # 0xfc57
                    IKEA_CLUSTER_ID,  # 0xfc7c
                    VOCIndex.cluster_id,  # 0xfc7e
                ],
                OUTPUT_CLUSTERS: [
                    Identify.cluster_id,  # 0x0003
                    Ota.cluster_id,  # 0x0019
                    PollControl.cluster_id,  # 0x0020
                    Fan.cluster_id,  # 0x0202
                ],
            },
            # <SimpleDescriptor endpoint=242 profile=41440 device_type=97
            # device_version=0
            # input_clusters=[]
            # output_clusters=[33]>
            242: {
                PROFILE_ID: 0xA1E0,
                DEVICE_TYPE: 0x0061,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id],  # 0x0021
            },
        },
    }
    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,  # 260
                DEVICE_TYPE: zha.DeviceType.TEMPERATURE_SENSOR,  # 0x0302
                INPUT_CLUSTERS: [
                    Basic.cluster_id,  # 0x0000
                    Identify.cluster_id,  # 0x0003
                    Groups.cluster_id,  # 0x0004
                    TemperatureMeasurement.cluster_id,  # 0x0402
                    RelativeHumidity.cluster_id,  # 0x0405
                    PM25.cluster_id,  # 0x042a
                    WWAH_CLUSTER_ID,  # 0xfc57
                    IKEA_CLUSTER_ID,  # 0xfc7c
                    VOCIndex,  # 0xfc7e
                ],
                OUTPUT_CLUSTERS: [
                    Identify.cluster_id,  # 0x0003
                    Ota.cluster_id,  # 0x0019
                    PollControl.cluster_id,  # 0x0020
                    Fan.cluster_id,  # 0x0202
                ],
            },
            242: {
                PROFILE_ID: 0xA1E0,
                DEVICE_TYPE: 0x0061,
                INPUT_CLUSTERS: [],
                OUTPUT_CLUSTERS: [GreenPowerProxy.cluster_id],  # 0x0021
            },
        },
    }
EOF

Ajoutez l’image :

wget -O /var/www/html/plugins/zigbee/core/config/devices/ikea/IKEA_of_Sweden.VINDSTYRKA.png https://www.ikea.com/fr/fr/images/products/vindstyrka-capteur-qualite-de-lair-connecte__1137096_pe880020_s5.jpg?f=xxxs

Ajoutez la configuration :

cat <<EOF > /var/www/html/plugins/zigbee/core/config/devices/ikea/IKEA_of_Sweden.VINDSTYRKA.json
{
    "name": "VINDSTYRKA Air qualitysensor",
    "commands": [
        {
            "logicalId": "1::1029::0",
            "generic_type": "HUMIDITY",
            "name": "Humidité",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "%",
            "configuration": {
                "calculValueOffset": "#value# \/ 100",
                "minValue": "0",
                "maxValue": "100"
            },
            "template": {
                "dashboard": "default",
                "mobile": "default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::1026::0",
            "generic_type": "TEMPERATURE",
            "name": "Température",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": "°C",
            "configuration": {
                "calculValueOffset": "#value# \/ 100",
                "minValue": "-10",
                "maxValue": "50"
            },
            "template": {
                "dashboard": "default",
                "mobile": "default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::1066::0",
            "name": "PM2.5",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "unite": " μg\/m3",
            "configuration": {
                "minValue": "0",
                "maxValue": "1000"
            },
            "template": {
                "dashboard": "default",
                "mobile": "default"
            },
            "isVisible": "1"
        },
        {
            "logicalId": "1::64638::0",
            "name": "VOCIndex",
            "type": "info",
            "subType": "numeric",
            "isHistorized": "1",
            "configuration": {
                "minValue": "0",
                "maxValue": "500"
            },
            "template": {
                "dashboard": "default",
                "mobile": "default"
            },
            "isVisible": "1"
        }
    ]
}
EOF

Ajoutez la bonne configuration des reporting pour les 2 paramètres PM2.5 et VOCindex :

cat <<EOF >> /var/www/html/plugins/zigbee/resources/zigbeed/channels/measurement.py

@registries.ZIGBEE_CHANNEL_REGISTRY.register(measurement.PM25.cluster_id)
class PM25():
        """PM25 measurement channel."""
        REPORT_CONFIG = [{"attr": "measured_value","config": (REPORT_CONFIG_MIN_INT, REPORT_CONFIG_MAX_INT, 1),}]
EOF

cat <<EOF >> /var/www/html/plugins/zigbee/resources/zigbeed/channels/manufacturerspecific.py

import zhaquirks.ikea.vindstyrka as vindstyrka

@registries.ZIGBEE_CHANNEL_REGISTRY.register(vindstyrka.VOCIndex.cluster_id)
class VOCIndex():
        """VOCIndex measurement channel."""
        REPORT_CONFIG = [{"attr": "measured_value","config": (REPORT_CONFIG_MIN_INT, REPORT_CONFIG_MAX_INT, 1),}]
EOF

Et enfin vous pouvez procéder à l’inclusion du module Vindstyrka comme d’habitude.

Bien à vous.

Je possède ce capteur et vient d’installer le plugin jeezigbee.

Comment faire pour qu’il soit détecté et pilotable svp ?

Bonjour,
Comme sur l’autre post.Discussion générale vindstyrka
On appuie sur inclusion et 4 fois sur le capteur, ensuite chez moi l’équipement a été correctement créé du premier coup.
Bonne journée

Exact ! J’ai réussi, merci :wink: