Plugin pour senseur de qualité de l'air JQ-200 ou JQ-300

Ce sont de petits senseurs de la qualité de l’air permettant de mesurer les niveaux de HCHO & TVOC & CO2, pas chers et très précis:
https://www.amazon.fr/Détecteur-Testeur-moniteur-intelligent-Analyseur/dp/B07XTLJX3K/ref=sr_1_1_sspa?__mk_fr_FR=ÅMÅŽÕÑ&keywords=JQ-200&qid=1576760943&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExRVVQM1hGTUkwOEJXJmVuY3J5cHRlZElkPUEwMjI4MDEzMVJGM1BERlhZQjBIMSZlbmNyeXB0ZWRBZElkPUEwOTQyMjQwMzhLNjNZVUE4RVpBVyZ3aWRnZXROYW1lPXNwX2F0ZiZhY3Rpb249Y2xpY2tSZWRpcmVjdCZkb05vdExvZ0NsaWNrPXRydWU=

Ils sont de type cloud seulement rapportant leur données à un serveur MQTT et une application Android ou IOS agissant comme client permettent de récupérer les données.
Le seul paramètre d’authentification requis pour récupérer les données est le Device ID de l’application client MQTT qui est unique à chaque device.
J’ai réussi à récupérer la valeur de mon Device ID avec une trace réseau et peut lire faciilement les données grace à ce développement Python:

Cela me permet de récupérer les infos en mode print dans un shell:
temp 21 C
hum 49 %
PM2.5 0 ug/m^3
HCHO 0.004 mg/m^3
TVOC 0.292 mg/m^3
eCO2 428 ppm

Avec le développement Python, je suis certain que c’est un petit plugin rapide à développer, ce serait un joili cadeau de noêl à s’offrir ces petit détecteurs!

Merci à la communauté des dev Jeedom.

1 « J'aime »

Effectivement…

Belle trouvaille :pray:

Bonjour @lunarok, je me souviens à pareille date tu nous avais offert le.plugin émulateur Roku avec un dev que j’avais proposé. Ce serait bien un autre cadeau de Noël de ta part pour ces petits appareils!

Faudrait un bout de doc sur comment récupérer l’ID déjà (ta méthode, par snif, pour pas ouvrir le bidule comme j’ai pu voir et brancher le serial)
Après oui dans le principe c’est « facile » à plugger en plugin Jeedom.
Mais là j’ai encore des sujets qui deviennent urgent pour bien gérer les lumières dans la maison :slight_smile:

Je te reviens @lunarok par PM pour aller plus vite.

Pour le deviceID voici une méthode très simple sur Android:
-Installer l’application du bidule Perthings et en faire la configuration:

Démarrer l’application Perthings à partir de Packet Capture qui est un proxy et qui capture les traces du traffic de l’application:

0�ZZ72641346XXXXXXXXXXX{"type":"V","content":"[{\"content\":\"0\",\"dptId\":1,\"seq\":1,\"deviceToken\":\"ZZ72641346XXXXXXXXXXX\"},{\"content\":null,\"dptId\":1,\"seq\":2,\"deviceToken\":\"\"},{\"content\":null,\"dptId\":1,\"seq\":3,\"deviceToken\":\"\"},{\"content\":\"22\",\"dptId\":1,\"seq\":4,\"deviceToken\":\"\"},{\"content\":\"53\",\"dptId\":1,\"seq\":5,\"deviceToken\":\"\"},{\"content\":\"0\",\"dptId\":1,\"seq\":6,\"deviceToken\":\"\"},{\"content\":\"0.012\",\"dptId\":1,\"seq\":7,\"deviceToken\":\"\"},{\"content\":\"0.288\",\"dptId\":1,\"seq\":8,\"deviceToken\":\"\"},{\"content\":\"575\",\"dptId\":1,\"seq\":9,\"deviceToken\":\"\"},{\"content\":null,\"dptId\":1,\"seq\":10,\"deviceToken\":\"\"}]","deviceToken":"ZZ726413464XXXXXXXX"}

Le Device ID est la valeur du deviceToken dans la trace.
Sur IOS, sûr qu’il existe une méthode similaire.

1 « J'aime »

Hello à tous,

Je viens de commander ce modèle en prévision de l’intégrer dans Jeedom en plus de mes autres capteurs Xiaomi.
Je suis un (gros) néophyte, en des termes simples pourriez-vous m’aider à l’implémenter ?

Par avance merci :slight_smile:

Bonjour a tous,

Je suis tres interesé par ce dispositif.
nordix, tu peux expliquer STP comment t’as fait pour inclure le code json dans Jeedom?

Super Merci! :slight_smile:

UP
j’ai reçu mon JQ200 et j’aimerais l’ajouter à mon Jeedom :slight_smile:

Salut a tous.

J’ai regardé un autre post par rapport au JQ-200 mais j’arrive pas a integrer le dispositif.

Quelqu’un a réussi??

Merci!!!

Même problème, toujours d’actu :slight_smile:

Bonjour a tous,

Je reviens encore sur ce sujet car aucune réponse.

J’ai bien essayé la solution du post de nordix ici:

Je laisse ici tout ce que j’ai fait au cas ou qqun d’autre peux m’aider:

J’ai bien réussi a rajouter le JQ-300 dans le plugin JMQTT:

  1. Il faut rajouter un broker avec ceci:
    ip mosquito: mq.youpinyuntai.com
    port mosquito:55450
  2. Il faut rajouter un equipement associé avec le broker pecendent avec:
    Topic: Le token de l’equipement
    (je lui ai donné le nom ‹ Value ›

Apres j’ai créé des virtuels appelés (info/numerique):
#[Devices][JQ300-Virtuel][Temperature]#
#[Devices][JQ300-Virtuel][Humidity]#
#[Devices][JQ300-Virtuel][PM2.5 ]#
#[Devices][JQ300-Virtuel][HCHO]#
#[Devices][JQ300-Virtuel][TVOC]#
#[Devices][JQ300-Virtuel][eCO2]#

Et j’ai crée un scenario avec le code du post de nordix:

// grab value from jmqtt Broker
$cmd = cmd::byString("#[Devices][DATA][Value]#");
$value = $cmd->execCmd();
//strip slashes and back slashes
$stripped = stripslashes($value);
//$scenario->setLog($stripped);
$jsonarray = json_decode($stripped, true);
if(is_array($jsonarray)){
	//récupération des données
	$temp=$jsonarray[4]['content'];
	$humidity=$jsonarray[5]['content'];
	$PM25=$jsonarray[6]['content'];
	$HCHO=$jsonarray[7]['content'];
	$TVOC=$jsonarray[8]['content'];
	$eCO2=$jsonarray[9]['content'];
	// Mise à jour des commandes du virtuel
	cmd::byString("#[Devices][JQ300-Virtuel][Temperature]#")->event($temp);
	cmd::byString("#[Devices][JQ300-Virtuel][Humidity]#")->event(($humidity));
	cmd::byString("#[Devices][JQ300-Virtuel][PM2.5 ]#")->event(($PM25));
	cmd::byString("#[Devices][JQ300-Virtuel][HCHO]#")->event(($HCHO));
	cmd::byString("#[Devices][JQ300-Virtuel][TVOC]#")->event(($TVOC));
	cmd::byString("#[Devices][JQ300-Virtuel][eCO2]#")->event(($eCO2));
}



Si je regarde, la valeur du broker est très bien prise en compte.
Alors #[Devices][DATA][Value]# est:

{« type »:« V »,« content »:« [{"content":"0","dptId":1,"seq":1,"deviceToken":"5139684CE64CF16AXXXXX"},{"content":null,"dptId":1,"seq":2,"deviceToken":""},{"content":null,"dptId":1,"seq":3,"deviceToken":""},{"content":"20","dptId":1,"seq":4,"deviceToken":""},{"content":"55","dptId":1,"seq":5,"deviceToken":""},{"content":"37","dptId":1,"seq":6,"deviceToken":""},{"content":"0.010","dptId":1,"seq":7,"deviceToken":""},{"content":"0.414","dptId":1,"seq":8,"deviceToken":""},{"content":"387","dptId":1,"seq":9,"deviceToken":""},{"content":"2700","dptId":1,"seq":10,"deviceToken":""}] »,« deviceToken »:« 5139684CE64CF16AXXXX »}


Par contre, quand j'execute le scenario, rien est enregisté dans les virtuels, qui restent tous a cero/nul.

Qqun a une idée ou peux m'aider, SVP. Je suis désespéré!!!


Merci d'avance.