Capteur PM2.5 MH10 de MCOHOME

Hello,

J’ai acheté le capteur MH10 de MCO HOME pour une utilisation dans un petit atelier sensible aux particules.
http://www.mcohome.com/show_list.php?id=44&sid=52

Actuellement, le capteur est détecté en unknown et retourne uniquement les température et humidité en cas de variations.

Est ce que quelqu’un a déjà réussi à le configurer pour récupérer la valeur de PM2.5 ?

Etant relativement nouveau, je ne sais pas s’il s’agit « juste » de trouver les numeros (classe, instance, index) d’une commande pour l’ajouter à la main ou si c’est vraiment dépendant d’une modification du plugin Zwave.
(et si il s’agit de trouver les numeros, est ce qu’il y a une technique/un outil? Sachant que le commande PM2.5 est envoyée seulement en cas de variation et c’est souvent stable, ce qui ne simplifie pas les choses !)

Merci pour vos avis et aide.

PS : j’ai ouvert un ticket de support il y a quelques jours mais j’imagine que ca prend du temps à l’équipe donc si quelqu’un a une idée, ca pourrait me permettre de débloquer la situation.

Bonjour @D106,

Pour configurer soi-même c’est ici : [RTEX] plugin Z-Wave - équipement inconnu (Unknown) - configuration DIY

akenad :slight_smile:

1 « J'aime »

Merci @Akenad,

Etant nouveau, il va falloir que je digère toute la procédure.
Entre temps, j’ai déjà passé du temps sur le sujet pour trouver certains liens que tu mentionnes comme les config du MH9 et échanger avec le fabricant qui semble un peu avare dans ses réponses jusqu’à présent.

Si quelqu’un a le temps de creuser, je suis preneur sinon j’essayerai de creuser la semaine prochaine. Ce n’est pas facile pour montrer à mes collègues que Jeedom est une bonne solution !

Le modèle détecté est bien : Unknown: type=0a01, id=3102

Mon arbre Z-wave pour ce capteur, vu que ca peut aider si j’ai bien compris :


{

"state" : "ok",

"code" : 0,

"result" : {

"associations" : [],

"instances" : {

"1" : {

"updateTime" : 1582102420,

"commandClasses" : {

"49" : {

"data" : {

"1" : {

"updateTime" : 1582250617,

"help" : "",

"typeZW" : "Decimal",

"genre" : "User",

"read_only" : true,

"expected_data" : null,

"poll_intensity" : 0,

"name" : "Temperature",

"val" : 20.8,

"pendingState" : null,

"type" : "float",

"data_items" : "Read only",

"value_id" : 72057594093256720,

"units" : "C",

"write_only" : false

},

"5" : {

"updateTime" : 1582292675,

"help" : "",

"typeZW" : "Decimal",

"genre" : "User",

"read_only" : true,

"expected_data" : null,

"poll_intensity" : 0,

"name" : "Relative Humidity",

"val" : 16,

"pendingState" : null,

"type" : "float",

"data_items" : "Read only",

"value_id" : 72057594093256780,

"units" : "%",

"write_only" : false

},

"updateTime" : 1582250617

},

"name" : "COMMAND_CLASS_SENSOR_MULTILEVEL"

},

"134" : {

"data" : {

"0" : {

"updateTime" : 1582102420,

"help" : "",

"typeZW" : "String",

"genre" : "System",

"read_only" : true,

"expected_data" : null,

"poll_intensity" : 0,

"name" : "Library Version",

"val" : "5",

"pendingState" : null,

"type" : "String",

"data_items" : "Read only",

"value_id" : 72057594103037950,

"units" : "",

"write_only" : false

},

"1" : {

"updateTime" : 1582102420,

"help" : "",

"typeZW" : "String",

"genre" : "System",

"read_only" : true,

"expected_data" : null,

"poll_intensity" : 0,

"name" : "Protocol Version",

"val" : "3.67",

"pendingState" : null,

"type" : "String",

"data_items" : "Read only",

"value_id" : 72057594103037970,

"units" : "",

"write_only" : false

},

"2" : {

"updateTime" : 1582102420,

"help" : "",

"typeZW" : "String",

"genre" : "System",

"read_only" : true,

"expected_data" : null,

"poll_intensity" : 0,

"name" : "Application Version",

"val" : "1.03",

"pendingState" : null,

"type" : "String",

"data_items" : "Read only",

"value_id" : 72057594103037980,

"units" : "",

"write_only" : false

},

"updateTime" : 1582102420

},

"name" : "COMMAND_CLASS_VERSION"

},

"updateTime" : 1582102420,

"data" : {

"updateTime" : 1582102420

}

}

},

"updateTime" : 1582292675

},

"groups" : {

"1" : {

"associations" : [

[

1,

0

]

],

"maximumAssociations" : 5,

"pending" : 1,

"label" : "Group 1"

},

"updateTime" : 1582292675

},

"command_classes" : {

"0" : {

"hex" : "0x00",

"name" : "COMMAND_CLASS_NO_OPERATION"

},

"32" : {

"hex" : "0x20",

"name" : "COMMAND_CLASS_BASIC"

},

"49" : {

"hex" : "0x31",

"name" : "COMMAND_CLASS_SENSOR_MULTILEVEL"

},

"114" : {

"hex" : "0x72",

"name" : "COMMAND_CLASS_MANUFACTURER_SPECIFIC"

},

"133" : {

"hex" : "0x85",

"name" : "COMMAND_CLASS_ASSOCIATION"

},

"134" : {

"hex" : "0x86",

"name" : "COMMAND_CLASS_VERSION"

}

},

"last_notification" : {

"code" : 1,

"help" : "Messages that timeout will send a Notification with this code",

"description" : "Timeout",

"next_wakeup" : null,

"receiveTime" : 1582279496

},

"data" : {

"isReady" : {

"updateTime" : 1582292675,

"value" : true

},

"isRouting" : {

"value" : true

},

"isZwavePlus" : {

"value" : false

},

"basicType" : {

"value" : 4

},

"isListening" : {

"value" : true

},

"is_enable" : {

"value" : true

},

"is_manufacturer_specific_ok" : {

"enabled" : true,

"value" : true

},

"genericType" : {

"value" : 33

},

"isAwake" : {

"updateTime" : 1582292675,

"value" : true

},

"manufacturerProductId" : {

"hex" : "0x3102",

"value" : 12546

},

"statistics" : {

"delivered" : 100,

"total" : 31,

"deliveryTime" : 21

},

"isEnable" : {

"value" : true

},

"specificType" : {

"value" : 1

},

"neighbours" : {

"value" : [

1

]

},

"maxBaudRate" : {

"value" : 40000

},

"isSecurity" : {

"value" : false

},

"state" : {

"value" : "Complete"

},

"version" : {

"value" : 4

},

"location" : {

"value" : "BMH - Laquage"

},

"manufacturerId" : {

"hex" : "0x015f",

"value" : 351

},

"type" : {

"value" : "Routing Multilevel Sensor"

},

"product_name" : {

"value" : "Unknown: type=0a01, id=3102"

},

"pending_changes" : {

"count" : 0

},

"battery_level" : {

"value" : null

},

"description" : {

"product_name" : "Unknown: type=0a01, id=3102",

"name" : "Capteur PM2.5",

"location" : "BMH - Laquage"

},

"isVirtual" : {

"value" : ""

},

"isFrequentListening" : {

"value" : false

},

"wakeup_interval" : {

"next_wakeup" : null,

"value" : null

},

"is_neighbours_ok" : {

"neighbors" : 1,

"enabled" : true,

"value" : true

},

"can_wake_up" : {

"value" : false

},

"lastReceived" : {

"updateTime" : 1582292675

},

"isBeaming" : {

"value" : true

},

"name" : {

"value" : "Capteur PM2.5"

},

"manufacturerProductType" : {

"hex" : "0x0a01",

"value" : 2561

},

"is_groups_ok" : {

"enabled" : true,

"value" : true

},

"isSecured" : {

"enabled" : false,

"value" : false

},

"vendorString" : {

"value" : "Mcohome"

},

"isInfoReceived" : {

"value" : true

},

"isFailed" : {

"value" : false

},

"security" : {

"value" : 0

}

},

"multi_instance" : {

"instances" : 1,

"support" : false

}

}

}

Pour ceux que ca intéresse, voici ce que j’ai fait avant de voir la réponse d’akenad :

  1. parmi les échanges de mail avec le fabricant, la donnée de PM 2.5 devrait remonter sur le " 0x23 " (donc j’imagine la class 49, index 35 =0x23 ?).
    J’ai essayé de mettre cette commande manuellement ( est ce que ca peut marcher sans autre paramétrage?) mais je ne reçois rien (tout en sachant que je ne sais pas si la valeur change car je ne suis pas sur place)

  2. J’ai un doute sur le fait que le capteur soit réglé pour envoyer la valeur de PM2.5 et je sais qu’on régler (ou rerégler) le fait que le capteur envoie bien la valeur de PM2.5 (effectivement dans ce cas, ca servirait à rien d’attendre la valeur…) : par analogie avec le MH9 (ou le 7 je sais plus), ca pourrait être sur la class 112, avec l’index 2 (si le manuel est juste). En tout cas là aussi en créant une commande action à la main, ca ne donne rien de plus… (mais bon la tehcnique à la main comme ca ne doit pas marcher !).

A bientôt !

Bonjour à tous,

j’ai pu avancé sur le sujet en créant les xml de config et le json pour les commandes mais j’ai des phénomènes bizarres :

  • Seuls 2 paramètres de config sur les 3 créés apparaissent dans Jeedom (réglages seuil PM2.5 et seuil humidité mais il maque le seuil de température…) et j’ai l’impression que ceux qui apparaissent ne fonctionnent pas.

  • Le json et l’image ne sont apparemment pas pris en compte (les commandes sont celles par défaut qu’il y avait quand le capteur n’était pas reconnu et l’image par défaut du zwave)

D’ailleurs à force de faire des exclusions/inclusions, mon contrôleur n’est plus associé au module…
J’ai du interrompre mes tests et débrancher le module car je devais partir (le capteur n’est pas chez moi)…

Quelqu’un aurait une piste pour me débloquer ? Merci


Voici mon arbre zwave actuel :

{
"state" : "ok",
"code" : 0,
"result" : {
"associations" : [
],
"instances" : {
"1" : {
"updateTime" : 1,
"commandClasses" : {
"49" : {
"data" : {
"1" : {
"updateTime" : 1,
"help" : "",
"typeZW" : "Decimal",
"genre" : "User",
"read_only" : true,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "Temperature",
"val" : 0,
"pendingState" : null,
"type" : "float",
"data_items" : "Read only",
"value_id" : 72057594143588370,
"units" : "",
"write_only" : false
},
"5" : {
"updateTime" : 1,
"help" : "",
"typeZW" : "Decimal",
"genre" : "User",
"read_only" : true,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "Relative Humidity",
"val" : 0,
"pendingState" : null,
"type" : "float",
"data_items" : "Read only",
"value_id" : 72057594143588430,
"units" : "",
"write_only" : false
},
"updateTime" : 1
},
"name" : "COMMAND_CLASS_SENSOR_MULTILEVEL"
},
"112" : {
"data" : {
"2" : {
"updateTime" : 1,
"help" : "=0 report disabled. =10 report when change =n*0.1ug/m3",
"typeZW" : "Byte",
"genre" : "Config",
"read_only" : false,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "PM2.5 report interval",
"val" : 10,
"pendingState" : null,
"type" : "int",
"data_items" : "A byte between 0 and 100",
"value_id" : 72057594148814880,
"units" : "0.1ug/m3",
"write_only" : false
},
"4" : {
"updateTime" : 1,
"help" : "=0 report disabled. =2 report when change =n%",
"typeZW" : "Byte",
"genre" : "Config",
"read_only" : false,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "Humidity report interval",
"val" : 2,
"pendingState" : null,
"type" : "int",
"data_items" : "A byte between 0 and 50",
"value_id" : 72057594148814910,
"units" : "%",
"write_only" : false
},
"updateTime" : 1
},
"name" : "COMMAND_CLASS_CONFIGURATION"
},
"134" : {
"data" : {
"0" : {
"updateTime" : 1583336488,
"help" : "",
"typeZW" : "String",
"genre" : "System",
"read_only" : true,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "Library Version",
"val" : "5",
"pendingState" : null,
"type" : "String",
"data_items" : "Read only",
"value_id" : 72057594153369600,
"units" : "",
"write_only" : false
},
"1" : {
"updateTime" : 1583336488,
"help" : "",
"typeZW" : "String",
"genre" : "System",
"read_only" : true,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "Protocol Version",
"val" : "3.67",
"pendingState" : null,
"type" : "String",
"data_items" : "Read only",
"value_id" : 72057594153369620,
"units" : "",
"write_only" : false
},
"2" : {
"updateTime" : 1583336488,
"help" : "",
"typeZW" : "String",
"genre" : "System",
"read_only" : true,
"expected_data" : null,
"poll_intensity" : 0,
"name" : "Application Version",
"val" : "1.03",
"pendingState" : null,
"type" : "String",
"data_items" : "Read only",
"value_id" : 72057594153369630,
"units" : "",
"write_only" : false
},
"updateTime" : 1583336488
},
"name" : "COMMAND_CLASS_VERSION"
},
"updateTime" : 1,
"data" : {
"updateTime" : 1
}
}
},
"updateTime" : 1583402408
},
"groups" : {
"1" : {
"associations" : [
],
"maximumAssociations" : 1,
"pending" : 1,
"label" : "Notification"
},
"updateTime" : 1583402408
},
"command_classes" : {
"0" : {
"hex" : "0x00",
"name" : "COMMAND_CLASS_NO_OPERATION"
},
"32" : {
"hex" : "0x20",
"name" : "COMMAND_CLASS_BASIC"
},
"49" : {
"hex" : "0x31",
"name" : "COMMAND_CLASS_SENSOR_MULTILEVEL"
},
"112" : {
"hex" : "0x70",
"name" : "COMMAND_CLASS_CONFIGURATION"
},
"114" : {
"hex" : "0x72",
"name" : "COMMAND_CLASS_MANUFACTURER_SPECIFIC"
},
"133" : {
"hex" : "0x85",
"name" : "COMMAND_CLASS_ASSOCIATION"
},
"134" : {
"hex" : "0x86",
"name" : "COMMAND_CLASS_VERSION"
}
},
"last_notification" : {
"code" : 1,
"help" : "Messages that timeout will send a Notification with this code",
"description" : "Timeout",
"next_wakeup" : null,
"receiveTime" : 1583402408
},
"data" : {
"isReady" : {
"updateTime" : 1583402408,
"value" : true
},
"isRouting" : {
"value" : true
},
"isZwavePlus" : {
"value" : false
},
"basicType" : {
"value" : 4
},
"isListening" : {
"value" : true
},
"is_enable" : {
"value" : true
},
"is_manufacturer_specific_ok" : {
"enabled" : true,
"value" : true
},
"genericType" : {
"value" : 33
},
"isAwake" : {
"updateTime" : 1583402408,
"value" : true
},
"manufacturerProductId" : {
"hex" : "0x3102",
"value" : 12546
},
"statistics" : {
"delivered" : 86,
"total" : 23,
"deliveryTime" : 35
},
"isEnable" : {
"value" : true
},
"specificType" : {
"value" : 1
},
"neighbours" : {
"value" : [
1
]
},
"maxBaudRate" : {
"value" : 40000
},
"isSecurity" : {
"value" : false
},
"state" : {
"value" : "Complete"
},
"version" : {
"value" : 4
},
"location" : {
"value" : "aucun"
},
"manufacturerId" : {
"hex" : "0x015f",
"value" : 351
},
"type" : {
"value" : "Routing Multilevel Sensor"
},
"product_name" : {
"value" : "MH10-PM2.5-WD PM2.5 Monitor"
},
"pending_changes" : {
"count" : 0
},
"battery_level" : {
"value" : null
},
"description" : {
"product_name" : "MH10-PM2.5-WD PM2.5 Monitor",
"name" : "6 MH10-PM2.5-WD PM2.5 Monitor",
"location" : "aucun"
},
"isVirtual" : {
"value" : ""
},
"isFrequentListening" : {
"value" : false
},
"wakeup_interval" : {
"next_wakeup" : null,
"value" : null
},
"is_neighbours_ok" : {
"neighbors" : 1,
"enabled" : true,
"value" : true
},
"can_wake_up" : {
"value" : false
},
"lastReceived" : {
"updateTime" : 1583402408
},
"isBeaming" : {
"value" : true
},
"name" : {
"value" : "6 MH10-PM2.5-WD PM2.5 Monitor"
},
"manufacturerProductType" : {
"hex" : "0x0a01",
"value" : 2561
},
"is_groups_ok" : {
"enabled" : true,
"value" : false
},
"isSecured" : {
"enabled" : false,
"value" : false
},
"vendorString" : {
"value" : "Mcohome"
},
"isInfoReceived" : {
"value" : true
},
"isFailed" : {
"value" : true
},
"security" : {
"value" : 0
}
},
"multi_instance" : {
"instances" : 1,
"support" : false
}
}
}

Voici dans le détail de ce que j’ai fait :

  • Création du fichier « mh10.xml » dans le dossier « plugins/openzwave/resources/openzwaved/config/mcohome » :
<?xml version="1.0" encoding="utf-8"?>
<Product xmlns='https://github.com/OpenZWave/open-zwave' Revision="1">
    <!--MCOHome PM2.5 Monitor MH10 -->
    <!-- Configuration -->
    <CommandClass id="112">
        <Value type="byte" genre="config" instance="1" index="2" label="PM2.5 report interval" units="0.1ug/m3" min="0" max="100" size="1" value="10">
            <Help>=0 report disabled. =10 report when change =n*0.1ug/m3</Help>
        </Value>
        <Value type="byte" genre="config" instance="1" index="3" label="Temperature report interval" units="0.5°c" min="0" max="100" size="1" value="1">
            <Help>=0 report disabled. =1 report when change =n*0.5c</Help>
        </Value>
        <Value type="byte" genre="config" instance="1" index="4" label="Humidity report interval" units="%" min="0" max="50" size="1" value="2">
            <Help>=0 report disabled. =2 report when change =n%</Help>
        </Value>
    </CommandClass>
    <!-- Association Groups -->
    <CommandClass id="133">
        <Associations num_groups="1">
            <Group index="1" max_associations="1" label="Notification" auto="false"/>
        </Associations>
    </CommandClass>
</Product>
  • Ajout d’une ligne dans le fichier « manufacturer_specific.xml » dans le dossier « plugins/openzwave/resources/openzwaved/config » :
<Manufacturer id="015f" name="Mcohome">
		...
      	<Product type="0a01" id="3102" name="MH10-PM2.5-WD PM2.5 Monitor" config="mcohome/mh10.xml"/>
		...
</Manufacturer>
  • Création du fichier « 351.12546.2561_mco.home.mh10.json » dans le dossier « plugins/openzwave/core/config/devices »
    (PS : je ne sais pas si la ligne comlink est utile, j’ai laissé la valeur de mon fichier d’origine d’un autre capteur, je ne sais pas quoi mettre sinon) :
{
    "name": "PM2.5 Monitor (MH10-PM25-WD)", 
    "type": "Multicapteurs", 
    "comlink": "3734-mcohome-capteur-d-humidite-temperature-et-co2-avec-ecran-z-wave-mh9-co2-4251295700229", 
    "remark": "", 
    "imglink": "351.12546.2561_mco.home.mh10", 
    "commands": [
        {
            "name": "PM2.5", 
            "type": "info", 
            "isVisible": 1, 
            "isHistorized": 1, 
            "configuration": {
                "class": 49, 
                "value": "", 
                "index": 35, 
                "instance": 1, 
                "minValue": 0, 
                "maxValue": 255
            }, 
            "subtype": "numeric", 
            "display": {
                "generic_type": "GENERIC"
            }, 
            "unite": "ug/m3"
        }, 
        {
            "name": "Température", 
            "type": "info", 
            "isVisible": 1, 
            "isHistorized": 1, 
            "configuration": {
                "class": 49, 
                "value": "", 
                "index": 1, 
                "instance": 1, 
                "minValue": -9, 
                "maxValue": 50
            }, 
            "subtype": "numeric", 
            "display": {
                "generic_type": "TEMPERATURE"
            }, 
            "unite": "°C"
        }, 
        {
            "name": "Humidité", 
            "type": "info", 
            "isVisible": 1, 
            "isHistorized": 1, 
            "configuration": {
                "class": 49, 
                "value": "", 
                "index": 5, 
                "instance": 1, 
                "minValue": 0, 
                "maxValue": 100
            }, 
            "subtype": "numeric", 
            "display": {
                "generic_type": "HUMIDITY"
            }, 
            "unite": "%"
        }
    ]
}

Et avec tout ca, quand ca marchera, j’espère que la valeur de PM 2.5 sera enfin récupérée sur l’index 35 de la class 49 (selon échange de mail avec le fabricant).

Bonjour @D106,

les modifications que j’apporterai :

/plugins/openzwave/resources/openzwaved/config/mcohome/mh10.xml :

<?xml version="1.0" encoding="utf-8"?>
<Product xmlns='https://github.com/OpenZWave/open-zwave' Revision="1">
    <!--MCOHome PM2.5 Monitor MH10 -->
    <!-- Configuration -->
 <CommandClass id="112">
      <Value type="byte" genre="config" index="2" label="PM2.5 report interval" size="1" value="0">
        <Help>
          =0 report disabled
          >=10 report when change >
              n * 0.1ug/m3
        </Help>
      </Value>
 	<Value type="byte" genre="config" index="3" label="Temperature report interval" size="1" value="0">
        <Help>
          =0 report disabled
          >=1 report when change >
              n * 0.5 C
        </Help>
      </Value>
 <Value type="byte" genre="config" index="4" label="Humidity report interval" size="1" value="0">
        <Help>
          =0 report disabled
          >=2 report when change > n%
        </Help>
      </Value>
<!-- Association Groups -->
    <CommandClass id="133">
        <Associations num_groups="1">
            <Group index="1" label="Lifeline" max_associations="1" />
        </Associations>
    </CommandClass>
</Product>

changement de nom des fichiers et de imglink :

/plugins/openzwave/core/config/devices/mco_351/351.12546.2561_mh10.monitor.json :

"imglink": "mcohome.mh10",

/plugins/openzwave/core/config/devices/mco_351/351.12546.2561_mh10.monitor.jpg

akenad :slight_smile: