[Script Raspberry] Thermomètre / Hygromètre Xiaomi Mijia

Discussion et échanges de scripts pour la box eedomus

[Script Raspberry] Thermomètre / Hygromètre Xiaomi Mijia

Messagepar P@t » 17 Sep 2018 21:59

Bonjour à tous,

Voici un petit script à installer sur un Raspberry Pi 3 qui permet grâce au bluetooth intégré du Raspberry de communiquer avec le thermomètre connecté Xiaomi. Le script renvoit au format xml la température et l'humidité.

Commencez par créer un fichier xiaomi_temp_sensor.php sur le serveur web de votre raspberry et copiez ce code:
Code : Tout sélectionner
<?php

$device = $_GET['device'];
$adapter = 'hci0';
$output_file = realpath(dirname(__FILE__)).'/xiaomi_temp_sensor.cache'; // chemin du fichier cache
$cache_time = 480; // 8 minutes

if (empty($device))
{
   die('device argument is missing...');
}

if (!file_exists($output_file) or time() - filemtime($output_file) > $cache_time)
{
   $command = "gatttool --device=$device --adapter=$adapter --char-write-req -a 0x10 -n 0100 --listen > $output_file 2>&1 & echo $!";
   exec($command, $op);
   $pid = (int)$op[0];

   if(empty($pid)) die;

   sleep(10);
   exec("kill -9 $pid", $op);
}

$result = file_get_contents($output_file);

$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>';
$xml .= '<xiaomi>';

preg_match_all('/value: (.*?)\n/', $result, $matches);

if (!empty($matches))
{
   $hex = str_replace(' ', '', $matches[1][0]);
   $str = '';
    for($i=0;$i<strlen($hex);$i+=2)
   {
      $str .= chr(hexdec(substr($hex,$i,2)));
   }

   if (preg_match('/T=([0-9\.]+)/', $str, $match))
   {
      $xml .= '<temperature>'.$match[1].'</temperature>';
   }

   if (preg_match('/H=([0-9\.]+)/', $str, $match))
   {
      $xml .= '<humidity>'.$match[1].'</humidity>';
   }
}

$xml .= '</xiaomi>';

header("Content-type: text/xml");
echo $xml;

?>


Ensuite, créez un capteur HTTP sur votre box eedomus et renseignez les paramètres suivants:
xiaomi1.png
xiaomi1.png (24.21 Kio) Consulté 2397 fois

Modifiez les paramètres VAR ainsi:
- VAR1 : adresse IP du raspberry
- VAR2 : addresse bluetooth de votre capteur xiaomi

Vous pourrez trouver l’adresse du capteur à l'aide de la recherche bluetooth de votre téléphone par exemple, ou en installant une application prévue à cette effet. Vous pouvez également lancer la commande suivante sur votre rapberry:
Code : Tout sélectionner
sudo hcitool lescan

Le capteur ne nomme normalement MJ_HT_V1 et l'adresse commence par 4C:65:A8....

Il ne vous reste plus qu'à créer un deuxième capteur HTTP pour l'hygrométrie, en changeant simplement le type de capteur, l'unité et le chemin xpath:
xiaomi2.png
xiaomi2.png (24.03 Kio) Consulté 2393 fois


Bons tests!

PS: je vais voir avec la team s'il n'y aurait pas moyen d'utiliser ce script directement sur la box eedomus avec un dongle bluetooth dans ce genre...
P@t
 
Messages : 223
Inscription : 04 Déc 2017

Re: [Script Raspberry] Thermomètre / Hygromètre Xiaomi Mijia

Messagepar anne-marie » 18 Sep 2018 07:38

P@t a écrit:PS: je vais voir avec la team s'il n'y aurait pas moyen d'utiliser ce script directement sur la box eedomus avec un dongle bluetooth dans ce genre...

Ce serait top! :D
Netatmo - Nabaztag2 - Karotz - Mirror - caméras IP - Zwave - RFXCOM - zigate - ecodevice - Enocean - orvibo - connexoon- google Home - Echo - yeelight etc....
anne-marie
 
Messages : 2456
Inscription : 19 Fév 2014
Localisation : 77

Re: [Script Raspberry] Thermomètre / Hygromètre Xiaomi Mijia

Messagepar galaksy2001 » 19 Sep 2018 07:30

Merci pour le partage. L'intégration du bluetooth à la box serait un grand +.
galaksy2001
 
Messages : 727
Inscription : 06 Jan 2014


Retour vers Scripts & Périphériques du store

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 55 invité(s)