Valeurs non remontées

je n’ai pas testé possible, même probable !

A un détail près, je crois qu’il y a obligation d’avoir une bind key dans la trame MI, qui sera je crois a 0000, a voir si ca permet d’être lue

try !

Attention aux bonnets rouge on est solidaires en bretagne :roll_eyes: :smiley:

rien compris :rofl:

C’était une boutade

ah ok, je pensais que tu répondais a mon commentaire juste au dessus, j’avais oublié ce message ^^

Oui je n’ai aucune coupure et pas d’info fantaisiste


Tu as relancé le daemon depuis ?

sauf erreur avec maj le démon a forcement redémarré je crois

Bonjour,
Oui après l’installation de la mise à jour du plugin. J’ai testé en firmware en 2.7 2.9 3.0.

Bonsoir,
Si je passe en valeur négative ,la température affiche 6552°C.
Il n’est pas prévu de pouvoir lire les valeurs en dessous de 0°C?
Je suis sur le dernier firmware 3.1.

Merci.

tu ne dois pas avoir mis adversering sur t1441

ca caille dans le 59 :smiley:
Attention au lcd au dessous de 0

normalement il va jusqu’à -10°C

configuration bien mise sur t1441.
Je décompte bien.
-14°C je suis environ à 6539.
j’ai donc un décompte qui se fait correctement par rapport à la température.

tu as bien fait send config et pas seulement flash erreur qu’avait commise stomm sur un autre post ?

Oui ,send config.
Je pense que le firmware n’a pas prévu les valeurs négatives.
S’il y a un volontaire pour faire l’essai, je me sentirais moins seul. :wink:

Je testerais par curiosité, mais je rappel que de base, le thermomètre est donner en plage de fonctionnement normal -10 max

Tu en fais quoi pour avoir besoin de temp en dessous de zéro, tu habites sur la banquise ?
Blague à part si je le mets au congél j’ai des doutes sur le signal ce qui expliquerais les valeurs fantaisistes.
Je me suis émis cette hypothèse en voulant tester pour te rendre service :thinking:

après test je confirme le problème de la valeur négative…

Relevé fait :

6552.8 -0.8
6552.3 -1.3
6551.8 -1.8
6550.4 -3.0
6549.8 -3.8
6548.7 -4.7
6550.8 -0.8
6552.7 -0.7

comme dans le code la valeur est divisé par 10 c’est donc un décompte a l’envers, soit :

65528 -0.8
65523 -1.3
65518 -1.8
65504 -3.0
65498 -3.8
65487 -4.7
65508 -0.8
65527 -0.7

donc 0 = 65530

J’ai donc bidouiller le code pour le prendre en compte (ma premier codage en python :stuck_out_tongue: )

en ajoutant :

                if temp > 60000 :
                	temp = 0 - ( 65530 - temp ) 

Et voici le fichier entier, comme d’hab edition avec JeeXplorer

# 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("1a18") 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])
                
                
                if temp > 60000 :
                	temp = 0 - ( 65530 - temp ) 
                
                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)

Bon je sort le mien du congélateur :grinning:
:ok_hand: