logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 Scripts, programmes et robots » Raspberry PI & Prises connectée MEROSS » 30-01-2020 10:19:22

Françoué
Réponses : 0
Bonjour à tous !
Je reviens par ici pour solliciter votre aide !
Après avoir réussi ça avec succès: https://debian-facile.org/viewtopic.php?id=16480
J'ai une autre idée en tête !

Grâce à vous, je suis capable de récupérer via mon Rasp la température via bluetooth de ma station météo Hector.
J'ai fais l'acquisition récemment de prises connectée "Meross" modèle MSS310fr. Celle-ci se pilote grâce à l'appli Meross. Avec ça, vous l'aurez deviner, je pilote les prises pour éteindre ou allumer à ma guise depuis mon mobile divers appareils. Lumières, etc...
Début de semaine, je me suis dis pourquoi pas aller plus loin. J'ai donc connecté mes 2 prises connecté directement à mes radiateurs électrique. Je peux donc les allumer et éteindre comme je le souhaite.

Sauf que, je souhaiterais ne plus intervenir (du genre termostat).
En gros, puisque je suis capable d'avoir la température grâce à ma station météo, je souhaite déclencher dune action en fonction de la température. J'aimerais pouvoir allumer/éteindre les radiateurs en fonction de la température ambiante. Du genre si la température est inférieur, allumé les radiateurs. Sinon les éteindre.
Je vous épargne pour le moment la parti script via un shell;

J'ai besoin de vous pour commander mes prises via mon raspPi. J'ai trouvé ça; https://pypi.org/project/meross-iot/0.1.3.0/
Je sais que c'est possible en cherchant un peu mais j'aurais besoin d'aide smile
J'ai vu quelques projets via github etc mais tout est en anglais et je ne comprends pas certaines chose. par exemple, je suis bloqué dès le début sur cette commande !
@root> pip install meross-iot==0.1.3.0
Mais je pensais à passer par du CURL -X pour dire à la prise ON ou OFF.

Par avance, merci de votre aide smile
Cordialement,
François

#2 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 13-01-2017 20:56:45

Françoué
Sinon j'ai mis les photos sur 800mon serveur, elle sont dispo ici -> http://176.129.173.15/BLE/

Il y a le rasp, les interrupteur relais, l'historique, l'app hector avec l'humidité, la photo du vivarium en général et 2 photos de phasme.

Il est beau ce phasme

Edit à bendia : une photo, mais elles sont balèzes tongue N'héistes pas à éditer pour voir comment on utilise la balise img wink

#4 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 13-01-2017 18:26:02

Françoué
Bon bah c'est terminé ! voilà le script final >


#!/bin/bash
date >> histo.txt # je garde un historique et je le balance dans /var/www/ pour garder un oeil même si je suis pas chez moi
humax="85" #Comme je vous le disais c'est une espèce particulière donc en humidité max je dois pas trop monté au dessus de 85%
humini="75" # pas en dessous de 75%
hum=$(gatttool -t random -b E0:E5:CF:DE:F8:3B --char-read --handle 0x003c | cut -c34-35,37-38) # ça vous connaissez !
hum=$((16#$hum))
hum=$(python -c "print $hum/10.0")
echo $hum % "d'humidité">> histo.txt # Je check l'humidité toujours dans l'historique
if [[ "$humini" > "$hum" ]] # Si l'humidité de l'air est inférieur à 75% je rentre dans la condition
then
        while [[ "$hum" < "$humax" ]] #un petit tant que -> l'humidité est inférieur à 85% je boucle
        do
                gpio write 0 1 #Déclenchement de l'humidificateur, je dis à la GPIO 0 de passer à 1. L'interrupteur relais passe à 1 donc ferme le circuit sur lequel le brumisateur est plugé
                echo "Déclenchement de l'humidificateur">>histo.txt #un petit coup dans l'historique pour surveiller !
                sleep 15 # Je fais une pause de 15s pour laisser le brumisateur tourner un peu
                hum=$(gatttool -t random -b E0:E5:CF:DE:F8:3B --char-read --handle 0x003c | cut -c34-35,37-38) #Je mesure à nouveau l'humidité et la redéfinie dans $hum
                hum=$((16#$hum))
                hum=$(python -c "print $hum/10.0")
                echo $hum % "d'humidité">> histo.txt
        done # Et si l'humidité est remonté au delà de 85% je quitte la boucle
else #Si l'humidité est supérieur à 75% il n'est pas nécessaire d'humidifier d'avantage
        echo "l'humidité est supérieur à 75%, fin du programme">>histo.txt
        exit
fi
gpio write 0 0 # Je coupe le circuit, le brumisateur s'éteint
echo "fin d'humidification, fin du programme">>histo.txt
exit



Et voilà, niveau historique ça donne ->

vendredi 13 janvier 2017, 18:06:42 (UTC+0100)
75.9 % d'humidité
l'humidité est supérieur à 75%, fin du programme
vendredi 13 janvier 2017, 18:07:36 (UTC+0100)
74.8 % d'humidité
Déclenchement de l'humidificateur
75.7 % d'humidité
Déclenchement de l'humidificateur
79.2 % d'humidité
Déclenchement de l'humidificateur
82.7 % d'humidité
Déclenchement de l'humidificateur
85.6 % d'humidité
fin d'humidification, fin du programme

Du coup je vois exactement ce qui se passe !

Et pour finir, il faut que le script bosse tout seul sans que j'ai besoin de l'actionner, j'ajoute une ligne au fichier /etc/crontab ->

*/5 *    * * *    root    /root/hum.sh

Je lui demande de se déclencher toutes les 5 minutes tous les jours.
Enfin le script est "intelligent" car je dois vaporiser les ronces histoire que les phasme puise boire un peu. C'est une "simulation" de la rosé du soir et du matin.
Donc l'humidité est relativement importante. Du coup bah le script ne se déclenche pas !

#6 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 13-01-2017 16:04:32

Françoué
Hello,
Voilà le script, merci du coup de pouce ->

#!/bin/bash
var=$(gatttool -t random -b E0:E5:CF:DE:F8:3B --char-read --handle 0x003c | cut -c34-35,37-38) #Je "découpe le résultat pour obtenir une chaine de type xxxx sans espace
echo $var #vérification de la valeur hexa au cas ou !
var=$((16#$var)) #Je converti en décimal
var=$(($var/10)) #Division /10
echo $var # Je vérifie une dernière fois c'est le bon résultat !

Par contre pas de virgule après la division !

Je vous enverrai une photo plus rendu du script final à venir smile

#7 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 13-01-2017 03:09:35

Françoué
Trouvé !:

root@raspberrypi:~#

gatttool -t random -b E0:E5:CF:DE:F8:3B --char-read --handle 0x003c


Characteristic value/descriptor: 02 f6





Donc là j'ai Characteristic value/descriptor: 02 f6 en retour de la commande. Maintenant il me faudrait un coup de pouce pour récupérer dans la variable uniquement 02f6 pour que ça donne:

$hum=02f6


Sans l'espace afin que je puisse traduire cette variable en décimal et la diviser par 10.. je pensais à truc du genre:

$var=02f6



à titre d'info ça donne -> 758 en décimal et je divise par 10. J'obtiens 75,8% d'humidité !

Je pensais à un truc comme ça:

var=$(gatttool -t random -b E0:E5:CF:DE:F8:3B --char-read --handle 0x0034 | cut -cxx)



Merci d'avance pour vos retours !

Edit à toto :
Mis les balises du forum, etc...

#8 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 13-01-2017 02:27:59

Françoué
Sinon ça marche aussi comme ça:

root@raspberrypi:~#

hcitool lecc --random E0:E5:CF:DE:F8:3B


Connection handle 64    
root@raspberrypi:~# bluetoothctl
[NEW] Device E0:E5:CF:DE:F8:3B hector          
[hector          ]# info
Device E0:E5:CF:DE:F8:3B
  Name: hector          
  Alias: hector          
  Paired: no
  Trusted: no
  Blocked: no
  Connected: yes
  LegacyPairing: no
[hector          ]

#

En gros je suis connecté mais je gratte encore pour trouver mes valeurs !

Edit à toto :
Mis la commande en Commande root du forum.

#9 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 12-01-2017 22:58:34

Françoué
Et en faisant un bypass de l'option I, il n'en veut pas non plus et il me balance la page "help" hmm

#10 Re : Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 12-01-2017 22:56:43

Françoué
Hello !

Oui c'est bien ça, j'initialise la connexion sur la station météo via le Bluetooth LE et je dois taper à la main pour checker les infos que je veux.
PS: Bluez, j'ai essayé et c'est mort hmm
J'ai déjà check le "help"... et non la commande #

gatttool -b @mac hector  -t random --char-read-uuid -a af51


me redirige vers la page help -_-

Edit à toto :
Mis la commande root sous la balise Commande root de la fenêtre d'édition du forum pour que ce soit plus lisible par tous.

#11 Scripts, programmes et robots » Utilisation de Gatttool (bluetooth LE) dans un script shell » 12-01-2017 18:11:47

Françoué
Réponses : 18
Bonjour à tous,

Je suis équipé d'un raspberry pi qui tourne sous jessie, celui ci à le bluetooth. J'ai aussi une station météo (hector) qui fonctionne en bluetooth.

A ce jour je suis capable via gatttool de récupéré les info d'hector via le bluetooth LE:

root@raspberrypi:~#

gatttool -b @mac hector -I -t random


[@mac hector][LE]> connect
Attempting to connect to @mac hector
Connection successful
[@mac hector][LE]> char-read-uuid af51 # récupération du taux d'humidité dans l'air -> Valeur en hexadécimal, conversion en décimal puis divisé par 10 et ça me donne l'humidité
handle: 0x003c   value: 03 3a
[@mac hector][LE]> char-read-uuid 3c81 # récupération de la température en °C -> Idem que l'humidité
handle: 0x0034   value: 00 fa




En gros, j'ai un vivarium avec une espèce de phasme tropical que j'élève et qui nécessite un micro climat particulier.
Le RASP est équipé d'une carte interrupteur relais 8 canaux 5V -> 230V que je pilote grâce aux GPIO du RASP. Je suis donc en mesure de contrôler des résistances chauffante pour la température et aussi un brumisateur pour l'humidité de l'air.

Ma question; J'aimerais via un script SH qui se déclenchera via crontab, automatiser la récupération des valeurs température et humidité et les injecter dans des variables.
Après c'est relativement simple de traiter les variables et de déclencher ou non les résistances et brumisateur selon les mesures récupérées. Mais je suis complètement bloqué pour automatiser la connexion, la récupération des valeurs et les injecter dans les variable.
J'aimerais que ça soit automatique sans mon intervention.

En vous remerciant par avance pour votre aide !

Françoué

Edit à bendia : séparation commande et retour comme indiqué là Voir le tuto : Le code, ça pique moins les yeux en couleur wink

Pied de page des forums

Propulsé par FluxBB