Refresh xiaomi LYWSD03MMC

@team18fr, une question pour ton antenne déportée, tu as jeedom dessus? mon frangin en a une et cela ne semble pas fonctionner ?

Non ce n’est pas jeedom dessus.

1 « J'aime »

Sincèrement flashé le et ensuite vous n’aurez plus de problème

je l’ai fait, mais BLE ne le reconnais pas une fois flashé (a moins que cela ai changé)

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

1 « J'aime »

L’astuce vient de @dudusse.
On en discute ici > Valeurs non remontées

1 « J'aime »

au top, @nerull77 regarde ca

Par contre décoche le refresh forcé

@nerull77, n oublie pas de recopier le fichier sur toutes tes antennes

après test du flashage, il semblerais qu’il y ai 1 degré d’écart entre le flashé et le non-flashé, quelqu’un a comparé les relevé ?

A mon niveau pas de test effectué.
Je l’ai fait pour une autre box.
Des que j ai un peu de temps, je vais en flasher un autre et le mettre sur ma box.
je vais ensuite comparer avec ma sonde Bresser

Bonjour

Pourquoi ne pas les remplacer par les capteurs rond de chez Xiaomi ?
Efficace et très jolie

Par ce que avant de changer du matériel neuf, on va tenter de le faire fonctionner :smiley:

Chez moi ils fonctionnent très bien !

attention au quiping qui ne fonctionne pas dans jeedom

Hello Tout le monde,

J’ai bien réussi à intégrer une sonde. Cependant, pas la deuxieme. Sauriez vous quelle pourrait etre la source du pb ?

image

J’ai sudo reboot, relancer le daemon et viré le refresh. voilà ce que j’ai :
image

Bien à vous :slight_smile:

les as tu bien viré de l’application ?

Hello, je ne les ai jamais intégrées à l’app. Pour la premiere, ça fonctionne niquel

tu n’as surement pas déconnecté la deuxième de là ou tu l’as connecté pour récupérer la clé :wink:

Ca m’est arrivé …

Ah oui ^^, bien joué, merci à toi :slight_smile:

Il y a une nouvelle solution très fiable qui devrait bientôt arrivé je croise les doigts, le DEV est sur le coup.

La solution sera de connecter les sondes de manière classique a L’application miHome, puis en liant l’application a Alexa via le Skill, de les récupérer dans jeedom via alexaAPI.

Il n’y aurait donc pas de bidouille a faire et rendrais les sondes compatible nativement avec les passerelles xiaomi EU :stuck_out_tongue:

DEV en cours patience !