bonjour les SMHOSYIENS
PRÉSENTATION :
Suite a l’article sur le Xiaomi Mijia LYWSD03MMC voici la partie 2 avec un enregistrement en base de donnée SQLITE3
#!/bin/bash
#extraction du chemin
dir=$(dirname $(readlink -f $0))
# on crée un fichier pour les log
exec &>> $dir/log/mijia_com.log
# chemin de la base de donnée
sqlite_bd="$dir/bd/MIJIA.db"
# on vérifie que l'on est en Root
if [[ $EUID -ne 0 ]];
then
echo "Ce script doit être exécuté avec les privilèges administrateur"
exit 1
fi
#function de lecture des donées
add_read()
{
#reception des variable de la fonction
MACadd="$1"
LOCadd="$2"
# activation du dongle bluetooth
hciconfig hci0 down
hciconfig hci0 up
# lecture de la Notification handle
hnd38=$(timeout 15 gatttool -b $MACadd --char-write-req --handle='0x0038'\
--value="0100" --listen | grep --max-count=1 "Notification handle")
if !([ -z "$hnd38" ])
then
#extraction de la valeur de temperature
temperature=${hnd38:39:2}${hnd38:36:2}
temperature=$((16#$temperature))
if [ "$temperature" -gt "10000" ];
then
temperature=$((-65536 + $temperature))
fi
temperature=$(echo "scale=1;$temperature/100" | bc)
#extraction de la valeur de d'humidité
humidity=${hnd38:42:2}
humidity=$((16#$humidity))
#lecture et extraction du pourcentage de la batterie
hnd1b=$(gatttool --device=$MACadd --char-read -a 0x1b)
# Characteristic value/descriptor: 63
battery=${hnd1b:33:2}
battery=$((16#$battery))
#texte pour le fichier de log
echo "$(date +"%d/%m/%y %H:%M:%S") - [SUCCES] [$LOCadd]"
#insertion des données dans la table ETAT_MODULE
sqlite3 $sqlite_bd "insert into ETAT_MODULE (MAC,LOC,TH,HD,BAT,TIME)\
values (\"$MACadd\",\"$LOCadd\",\"$temperature\",\"$humidity\",\"$battery\"\
,\"$(date +%s)\")"
else
#texte pour le fichier de log
echo "$(date +"%d/%m/%y %H:%M:%S") - [ERROR] [$LOCadd]"
fi
}
# Boucle de la bd MODULE pour lire les valeur
sqlite3 $sqlite_bd "select id from MODULE" | while read prkey; do
mac=$(sqlite3 $sqlite_bd "select MAC from MODULE where ID=$prkey")
loc=$(sqlite3 $sqlite_bd "select LOC from MODULE where ID=$prkey")
#on lance la fonction de lecture
add_read $mac $loc
#On n'est pas des bourrins on laisse une petite pause-café
sleep 1
done
après extraction du git : https://github.com/davi-domo/Xiaomi-Mijia-LYWSD03MMC-.git
vous trouverez le dossier mijia_bd contenant le script ainsi que lla base de donnée et le fichier de log
vérifier la présence de sqlite3 sur votre machine
$sqlite3 -version
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1
$sudo apt-get install sqlite3
afin de modifier facilement la base de donées SQLITE3 je me sert sous UBUNTU de DB Browser for SQLite
il ne vous reste plus qu'a mettre vos mac et localisation dans la table "MODULE"
TEST :
une fois cela réalisé un petit test s'impose
$cd REPERTOIRE DE VOTRE SCRIPT
~/mijia$ sudo ./MIJIA_MULTI_BD.sh
une fois que tous fonctionne il va bien falloir automatiser tous ça sauf si votre belle mère peut lancer la commande toutes les 5 minutes mais j'en doute
on va crée une tache cron sur le mode root
$ sudo crontab -e
*/5 * * * * /home/VOTRE REPERTOIRE/mijia_bd/MIJIA_MULTI_BD.sh
Votre script sera lancée automatiquement toutes les 5 minutes
Commentaires
Enregistrer un commentaire