En reprenant le MAC address de chacune de tes sondes associé avec le bindkey que tu obtiens via cette page. Attention, si tu fais « do activation » une seconde fois sur le même module, le bind key change !
Par ailleurs, tant que la page est ouverte et que tu es connecté à un module, celui-ci n’est pas détecté par Blea, il faut juste rafraichir la page ou la fermer quand tu as terminé.
Et moi j’ai gardé les majuscules pour les MAC, ça fonctionne « très bien » avec.
Ajouter la dépendance sur la librairie de décryptage : sudo pip3 install pycryptodomex sur ton local via SSH
Ensuite sur tes antennes :
Tu installes les dépendances etc… si c’est pas déjà fait.
Tu lances le daemon de tes antennes et tu vérifies qu’elles ont bien repris le bon fichier .py en regardant le contenu de /blead/resources/blead/devices/lywsd03.py et en constatant que tu y retrouves bien tes MAC + bindkey comme sur ton local.
Maintenant tu dois également ajouter la dépendance sur la librairie de décryptage : sudo pip3 install pycryptodomex sur ton antenne, via SSH.
Je me suis aperçu qu’il me manquait cette dépendance car j’avais un message dans le log disant qu’il ne trouvait pas le cryptodome, mais c’était même pas une erreur.
Au final tu auras donc :
La librairie de décryptage installée sur ton local et sur ton antenne
Le fichier de config paramétré avec tes MAC et tes bindkeys sur ton local. Il sera ensuite automatiquement recopié sur tes antennes quand tu lancera le daemon.
Si ça ne fonctionne toujours pas, mets-toi en mode debug, relance le daemon et envoie nous une partie du fichier de log de l’antenne.
Voici un exemple de trame qui remonte la température sur mon antenne :
[2021-01-07 22:14:51.592][DEBUG] : No name in data but i know it is : lywsd03
[2021-01-07 22:14:51.597][DEBUG] : LYWSD03------isvalid data=95fe58585b05360542d138c1a491a1370e8c0100006bdf3d54, mac=a4:c1:38:d1:XX:XX, name=lywsd03, manuf=
[2021-01-07 22:14:51.599][DEBUG] : SCANNER------This is a lywsd03 device a4:c1:38:d1:XX:XX
[2021-01-07 22:14:51.601][INFO] : LYWSD03------adv data=95fe58585b05360542d138c1a491a1370e8c0100006bdf3d54, mac=a4:c1:38:d1:XX:XX, name=lywsd03, manuf=
[2021-01-07 22:14:51.603][INFO] : LYWSD03------Encrypted
[2021-01-07 22:14:51.615][DEBUG] : {'present': 1, 'temperature': 19.6, 'id': 'A4:C1:38:D1:XX:XX', 'type': 'lywsd03', 'name': 'lywsd03', 'rssi': -73, 'source': 'RaspberryPi 0'}
Merci à vous deux pour votre aide, je ne vais pas crier victoire trop vite, mais les infos sont remonté et j’oubliais bien quelque chose.
Je n’avais pas compris qu’il fallait mettre les antennes à jour en cliquant sur « mettre à jour tous les fichiers » je faisais que redémarrer les antennes. Je vous tiens au courant.
Bon cela fait 1 jour que j’ai des remontée donc ça c’est niquel mais je vois que la température et l’humidité ne remontent pas en même temps et surtout aléatoirement.
Donc si je regarde mes températures sur Jeedom et sur le capteur elles ne sont jamais pareilles.
Pour le refresh, il faut le cocher ou pas ?
Surtout pas de refresh forcé, car il fait planté le thermomètre, il faut alors le démonter pour enlever la pile ou au mieux il ne plantera mais bouffera ta pile en 1 mois.
Quand tu dis que les valeurs ne sont pas pareil, c’est de beaucoup ?
Car le refresh auto d’après ce que j’ai compris se fait sous condition tel que si une valeur est différente de plus de X degrés/humidité.
Exemple si le dernier envoi il faisais 20° et qu’il fait maintenant 20.2 et que le X degré de différence est ±0.5° alors pas de refresh, et si pas de variation depuis plus de X minutes alors j’envoi quand même (les valeur cité ne sont pas les bonnes mais le principe l’est je crois).
Si les valeurs sont vraiment différentes, vérifie que tu n’as pas inversé des thermomètres.
Nb: mes remontées sont bien régulières depuis mes derniers tests, j’ai basculé mes compteur Mijia comme capteur de mon thermostat, et recyclé mes Aquara Zigbee dans mon frigo/congel.
En vrai mes remonté se font toutes les 10 min environs mais rien entre 2.
Si je mets le capteur dans mes mains la température augmente mais pas sur jeedom.
10 minutes c’est pas mal, très bien même. pense que tu est sur un protocole bluetooth BLE (Low Energie) il ne faut pas envoyer en temps reel sinon adieu les piles. Avec des vraies variations de températures 10 minutes c’est plus que correcte
Il faut changer le fichier lywsd03.py et le remplacer par
# coding: utf-8
from bluepy import btle
import time
import logging
import globals
import struct
from multiconnect import Connector
from notification import Notification
class Lywsd03():
def __init__(self):
self.name = 'lywsd03'
self.ignoreRepeat = False
def isvalid(self,name,manuf='',data='',mac=''):
logging.debug('LYWSD03------isvalid data=%s, mac=%s, name=%s, manuf=%s' % (data, mac, name, manuf))
if name.lower() in [self.name]:
return True
if data.lower().startswith("95fe") and (mac.lower().startswith("a4:c1:38")):
#broadcasted advertising data
return True
def parse(self,data,mac,name,manuf):
logging.info('LYWSD03------adv data=%s, mac=%s, name=%s, manuf=%s' % (data, mac, name, manuf))
action={}
action['present'] = 1
bd = bytes.fromhex(data)
(temp,) = struct.unpack('>H', bd[8:10])
temp = temp / 10
humi = bd[10]
batt = bd[11]
action["temperature"] = temp
action["moisture"] = humi
action["battery"] = batt
logging.info('LYWSD03------mac=%s, temp=%s, humi=%s, batt=%s' % (mac, temp,humi,batt))
return action
def read(self,mac):
result={}
try:
conn = Connector(mac)
conn.connect()
if not conn.isconnected:
conn.connect()
if not conn.isconnected:
return
batt = bytearray(conn.readCharacteristic('0x3a'))
battery = batt[0]
notification = Notification(conn,Lywsd03)
notification.subscribe(10)
result['battery'] = battery
result['id'] = mac
logging.debug('LYWSD03------'+str(result))
return result
except Exception as e:
logging.error(str(e))
return result
def handlenotification(self,conn,handle,data,action={}):
result={}
if hex(handle) == '0x36':
received = bytearray(data)
temperature = float(received[1] * 256 + received[0]) / 100
moisture = received[2]
result['moisture'] = moisture
result['temperature'] = temperature
result['id'] = conn.mac
result['source'] = globals.daemonname
globals.JEEDOM_COM.add_changes('devices::'+conn.mac,result)
globals.COMPATIBILITY.append(Lywsd03)
puis
-Activation de « Autoriser l’inclusion de devices inconnus » dans le plugin BLEA
-Relance des dépendances
-Relance du démon
-Scan pour inclure les modules en laissant l’option « tous »
-Remplacement du type des modules, par lywsd03, une fois qu’ils ont été inclus