!!!ABGELÖST!!! [74_XiaomiFlowerSens.pm] Xiaomi Flower Monitor

Begonnen von CoolTux, 17 November 2016, 13:25:06

Vorheriges Thema - Nächstes Thema

CoolTux

Gib mal bitte ein verbose 5 nach einem statusRequest
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Waldmensch

Ich habe grad nochmal in die Releasenotes von bluez geschaut. Gatttool war in der 5.41 noch experimental geflaggt und ich habe experimentals beim kompilieren nicht explizit eingeschaltet. Ich kompiliere grad nochmal die 5.43 und teste damit. Melde mich gleich.


Gesendet von iPhone mit Tapatalk

Waldmensch

#212
Also, wenn ich gatttool aufrufe, wie es im Modul gemacht wird (nur mit der MAC) kriege ich die "help" Ausgabe. Füge ich ein --primary an, bekomme ich einen Output

root@lemaker ~/bluez-5.43 > /usr/bin/gatttool -b C4:7C:8D:62:4C:42
Usage:
  gatttool [OPTION...]

Help Options:
  -h, --help                                Show help options
  --help-all                                Show all help options
  --help-gatt                               Show all GATT commands
  --help-params                             Show all Primary Services/Characteristics arguments
  --help-char-read-write                    Show all Characteristics Value/Descriptor Read/Write arguments

Application Options:
  -i, --adapter=hciX                        Specify local adapter interface
  -b, --device=MAC                          Specify remote Bluetooth address
  -m, --mtu=MTU                             Specify the MTU size
  -p, --psm=PSM                             Specify the PSM for GATT/ATT over BR/EDR
  -l, --sec-level=[low | medium | high]     Set security level. Default: low
  -I, --interactive                         Use interactive mode


root@lemaker ~/bluez-5.43 > /usr/bin/gatttool -b C4:7C:8D:62:4C:42 --primary
attr handle = 0x0001, end grp handle = 0x0009 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle = 0x000c, end grp handle = 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle = 0x0010, end grp handle = 0x0022 uuid: 0000fe95-0000-1000-8000-00805f9b34fb
attr handle = 0x0023, end grp handle = 0x0030 uuid: 0000fef5-0000-1000-8000-00805f9b34fb
attr handle = 0x0031, end grp handle = 0x0039 uuid: 00001204-0000-1000-8000-00805f9b34fb
attr handle = 0x003a, end grp handle = 0x0042 uuid: 00001206-0000-1000-8000-00805f9b34fb
root@lemaker ~/bluez-5.43 >


auf verbose5 kommt bei mir nicht mehr als sonst
2017-01-20 20:12:46 ESPEasy ESPEasy_sonoff_8_S_Schalter R: on
2017-01-20 20:12:53 XiaomiFlowerSens pflanze2 active
2017-01-20 20:12:53 XiaomiFlowerSens pflanze2 call data
2017-01-20 20:12:53 XiaomiFlowerSens pflanze2 unreachable
2017-01-20 20:12:53 ESPEasy ESPEasy_lichtsensor_DHT22 Humidity: 29.50
2017-01-20 20:12:53 ESPEasy ESPEasy_lichtsensor_DHT22 Temperature: 21.20
2017-01-20 20:12:53 ESPEasy ESPEasy_lichtsensor_DHT22 Hum: 29.50 Tem: 21.20
2017-01-20 20:12:56 FHT OG.fl.HZ.Thermostat actuator: 0%
2017-01-20 20:12:56 FHT OG.fl.HZ.Thermostat actuator_: 0
2017-01-20 20:12:59 XiaomiFlowerSens pflanze1 active
2017.01.20 20:12:59 4 : Sub XiaomiFlowerSens (pflanze1) - Starte Blocking Call2017-01-20 20:12:59 XiaomiFlowerSens pflanze1 call data
2017.01.20 20:12:59 5 : Sub XiaomiFlowerSens (pflanze1) - Request Timer wird aufgerufen2017-01-20 20:12:59 XiaomiFlowerSens pflanze1 unreachable
2017-01-20 20:13:00 ESPEasy ESPEasy_sonoff_5_Schalter Relay: off
2017-01-20 20:13:00 ESPEasy ESPEasy_sonoff_5_Schalter R: off

CoolTux

Zitat von: Waldmensch am 20 Januar 2017, 20:07:06
Also, wenn ich gatttool aufrufe, wie es im Modul gemacht wird (nur mit der MAC) kriege ich die "help" Ausgabe. Füge ich ein --primary an, bekomme ich einen Output

root@lemaker ~/bluez-5.43 > /usr/bin/gatttool -b C4:7C:8D:62:4C:42
Usage:
  gatttool [OPTION...]

Help Options:
  -h, --help                                Show help options
  --help-all                                Show all help options
  --help-gatt                               Show all GATT commands
  --help-params                             Show all Primary Services/Characteristics arguments
  --help-char-read-write                    Show all Characteristics Value/Descriptor Read/Write arguments

Application Options:
  -i, --adapter=hciX                        Specify local adapter interface
  -b, --device=MAC                          Specify remote Bluetooth address
  -m, --mtu=MTU                             Specify the MTU size
  -p, --psm=PSM                             Specify the PSM for GATT/ATT over BR/EDR
  -l, --sec-level=[low | medium | high]     Set security level. Default: low
  -I, --interactive                         Use interactive mode


root@lemaker ~/bluez-5.43 > /usr/bin/gatttool -b C4:7C:8D:62:4C:42 --primary
attr handle = 0x0001, end grp handle = 0x0009 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle = 0x000c, end grp handle = 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle = 0x0010, end grp handle = 0x0022 uuid: 0000fe95-0000-1000-8000-00805f9b34fb
attr handle = 0x0023, end grp handle = 0x0030 uuid: 0000fef5-0000-1000-8000-00805f9b34fb
attr handle = 0x0031, end grp handle = 0x0039 uuid: 00001204-0000-1000-8000-00805f9b34fb
attr handle = 0x003a, end grp handle = 0x0042 uuid: 00001206-0000-1000-8000-00805f9b34fb
root@lemaker ~/bluez-5.43 >


auf verbose5 kommt bei mir nicht mehr als sonst
2017-01-20 20:12:46 ESPEasy ESPEasy_sonoff_8_S_Schalter R: on
2017-01-20 20:12:53 XiaomiFlowerSens pflanze2 active
2017-01-20 20:12:53 XiaomiFlowerSens pflanze2 call data
2017-01-20 20:12:53 XiaomiFlowerSens pflanze2 unreachable
2017-01-20 20:12:53 ESPEasy ESPEasy_lichtsensor_DHT22 Humidity: 29.50
2017-01-20 20:12:53 ESPEasy ESPEasy_lichtsensor_DHT22 Temperature: 21.20
2017-01-20 20:12:53 ESPEasy ESPEasy_lichtsensor_DHT22 Hum: 29.50 Tem: 21.20
2017-01-20 20:12:56 FHT OG.fl.HZ.Thermostat actuator: 0%
2017-01-20 20:12:56 FHT OG.fl.HZ.Thermostat actuator_: 0
2017-01-20 20:12:59 XiaomiFlowerSens pflanze1 active
2017.01.20 20:12:59 4 : Sub XiaomiFlowerSens (pflanze1) - Starte Blocking Call2017-01-20 20:12:59 XiaomiFlowerSens pflanze1 call data
2017.01.20 20:12:59 5 : Sub XiaomiFlowerSens (pflanze1) - Request Timer wird aufgerufen2017-01-20 20:12:59 XiaomiFlowerSens pflanze1 unreachable
2017-01-20 20:13:00 ESPEasy ESPEasy_sonoff_5_Schalter Relay: off
2017-01-20 20:13:00 ESPEasy ESPEasy_sonoff_5_Schalter R: off


Es wird ja auch nicht einfach gatttool aufgerufen.


gatttool -b $mac --char-read -a 0x35


Bitte einmal diesen Befehl ausführen. $mac ist durch die MAC zu ersetzen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Waldmensch

#214
Scheinbar legt sich der Bluetooth Stick schlafen. Beim ersten mal kommt nichts. Kurz lescan gestartet und danach nochmal Deinen Befehl. Die Ausgabe ist aber glaube nicht was wir brauchen?

root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x35
connect: No route to host (113)
root@lemaker ~/bluez-5.43 > hcitool lescan
LE Scan ...
C4:7C:8D:62:4C:66 (unknown)
C4:7C:8D:62:4C:66 Flower care
C4:7C:8D:62:4C:42 (unknown)
C4:7C:8D:62:4C:42 Flower care
C4:7C:8D:62:4C:66 (unknown)
C4:7C:8D:62:4C:66 Flower care
C4:7C:8D:62:4C:42 (unknown)
C4:7C:8D:62:4C:42 Flower care
^Croot@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x35
Characteristic value/descriptor: aa bb cc dd ee ff 99 88 77 66 00 00 00 00 00 00
root@lemaker ~/bluez-5.43 >


Nach einer Minute muss man wieder einen lescan machen. Man muss bei einem lescan sogar warten, bis die MAC gefunden wurde. Ich habe dann mal die Adressen aus dem augabeblock mit Deinem Befehl ausgelesen.

root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x01
Characteristic value/descriptor: 00 18
root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x0c
Characteristic value/descriptor: 01 18
root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x10
Characteristic value/descriptor: 95 fe
root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x23
Characteristic value/descriptor: f5 fe
root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x31
Characteristic value/descriptor: fb 34 9b 5f 80 00 00 80 00 10 00 00 04 12 00 00
root@lemaker ~/bluez-5.43 > gatttool -b C4:7C:8D:62:4C:42 --char-read -a 0x3a
Characteristic value/descriptor: fb 34 9b 5f 80 00 00 80 00 10 00 00 06 12 00 00
root@lemaker ~/bluez-5.43 >


Der zweite Sensor (andere MAC) bringt übrigens exakt dieselben Ausgaben, aufs Bit genau

CoolTux

Das mit der Ausgabe ist ok. Wollte nur schauen ob es geht.  Kannst ja einfach ein lescan machen und dann ein statusRequest beim fhem Device und schauen was kommt.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Waldmensch

Wenn ich einen lescan auf der Konsole laufen lasse und dann einen Statusrequest anfordere, kommt das gleiche Ergebnis "unreachable" und der lescan auf der Konsole stoppt. Das ganze ist reproduzierbar mit beiden Sensoren. Der lescan stoppt ebenfalls, wenn der Sensor im eingestellten Intervall abgefragt wird


Gesendet von iPhone mit Tapatalk

CoolTux

Nein. Du möchtest es bitte genau so machen wie du es gemacht hast als es mit gatttool funktioniert hat. Da hast du lescan ja auch nicht laufen lassen.

Wenn ich dich richtig verstanden habe hast du
lescan
Ausgeführt dann lescan beendet und dann
gatttool
Aufgerufen.

Jetzt also lescan
Dann stoppt lescan
Dann
statusRequest fhem Device
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Waldmensch

#218
okay, nun lescan laufen lassen, mit ctrl+c beendet nachdem beide sensoren durchgelaufen waren, sofort statusrequest geklickt

2017-01-21 07:57:10 XiaomiFlowerSens pflanze2 active
2017.01.21 07:57:10 4 : Sub XiaomiFlowerSens (pflanze2) - Starte Blocking Call2017-01-21 07:57:10 XiaomiFlowerSens pflanze2 call data
2017-01-21 07:57:11 ESPEasy ESPEasy_sonoff_9_S_Schalter Relay: off
2017-01-21 07:57:11 ESPEasy ESPEasy_sonoff_9_S_Schalter R: -66.00 R: off
2017-01-21 07:57:12 FHT OG.ku.HZ.Thermostat measured-temp: 22.3
2017-01-21 07:57:17 XiaomiFlowerSens pflanze2 unreachable
2017-01-21 07:57:19 CUL_WS OG.te.WE.Temperatur T: -1.0  H: 73.9
2017-01-21 07:57:19 CUL_WS OG.te.WE.Temperatur temperature: -1.0


Internals:
   BTMAC      C4:7C:8D:62:4C:66
   DEF        C4:7C:8D:62:4C:66
   INTERVAL   300
   NAME       pflanze2
   NR         287
   STATE      unreachable
   TYPE       XiaomiFlowerSens
   VERSION    0.2.11
   Helper:
     Dblog:
       State:
         Logdb:
           TIME       1484981982.18738
           VALUE      unreachable
   Readings:
     2017-01-21 07:59:42   state           unreachable
   Helper:
Attributes:
   interval   300
   room       FlowerSens
   verbose    5


wenn ich das Ganze mit 2 Konsolen nachstelle kann ich auf der einen Konsole lescan laufen lassen und auf der anderen Konsole gatttool abfeuern. Auf der ersten Konsole stoppt lescan sobald gatttool das ergebnis auf Konsole 2 liefert

root@lemaker ~ > gatttool -b C4:7C:8D:62:4C:66 --char-read -a 0x35
Characteristic value/descriptor: aa bb cc dd ee ff 99 88 77 66 00 00 00 00 00 00
root@lemaker ~ >

CoolTux

Ich habe ein wenig am Code geschraubt. Es wird auch die anderen interessieren. Ich lasse gatttool nun insgesamt 10 mal aufrufen so lange kein Ergebnis kommt. Nach dem 10 mal bricht er dann ab und liefert dann erst eine Fehlermeldung. Ich denke mal so werden die Ergebnisse besser. Gerade für die Leute welche hier mit Graphen und so arbeiten.
Ich werde die Version heute im laufe des Tages ins FHEM SVN einchecken.
Bis dahin liegt es in meinem Git bereit.


@Waldmensch
Gib mir mal bitte ein paar Stunden zum überlegen. Da muß ich erstmal drüber meditieren und dann starten wir beide eine vernünftige Versuchsreihe um den Fehler zu finden.
Du kannst ja Spaßenshalber die neue Version mal testen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Waldmensch

Kein Problem und kein PanicMode - die Blumen sind frisch gegossen. Für Tests stehe ich immer zur Verfügung.
Ich weiß ja nicht ob das normal ist, dass nach einem lescan die MACs nur ca 1 Minute lang mit gatttool abgefragt werden können. Das hieße ja, das immer erst ein lescan ausgeführt werden muss


Gesendet von iPhone mit Tapatalk

CoolTux

Nee normal ist das nicht. Es darf auch gar kein lescan laufen oder besser es ist nicht zu empfehlen.
Machst Du noch was anderes damit. Eventuell presence mit lepresenced????
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dominik

Hi CoolTux,

bei mir geht dein Modul irgendwann immer in den unreachable Zustand. Sobald das der Fall ist, bekomme ich es nicht mehr active.
Was für ein Timeout hast du für den BlockingCall hinterlegt? Auf der Console kann ich nämlich den Sensor auslesen:
pi@raspberrypi ~ $ gatttool -b C4:7C:8D:60:D6:6B --char-write-req -a 0x33 -n A01F
Characteristic value was written successfully
pi@raspberrypi ~ $ gatttool -b C4:7C:8D:60:D6:6B --char-read -a 0x35
Characteristic value/descriptor: aa bb cc dd ee ff 99 88 77 66 00 00 00 00 00 00

Die Befehle dauern so 2-5s bis die ausgeführt sind.

Mach ich im Modul den statusRequest, bekomme ich innerhalb von weniger als 1s die Rückmeldung das es unreachable ist. Im Log erhalte ich die
connect: Connection refused (111) Fehlermeldung. Btw, du kannst diese auch im Modul sauber verarbeiten wenn du am Ende das gatttool Aufruf noch " 2>&1" dranhängst (stderr=>stdout).

Mich wundert echt, dass ich so schnell die unreachable bekomme obwohl es in der Konsole funktioniert. Eine Idee?

//Edit: Letzte Version (11:50 Update gemacht) aus github ist installiert.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

CoolTux

Hallo Dominik,

Wenn Du die GitHub Version hast, dann sind es 30 Sekunden. Ich lasse aktuell eine for while Schleife laufen wenn der Abruf nicht klappt. Das macht er 10 Mal. Das mit dem err schaue ich mir an. Danke für den Tip.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Waldmensch

Zitat von: CoolTux am 21 Januar 2017, 11:34:45
Nee normal ist das nicht. Es darf auch gar kein lescan laufen oder besser es ist nicht zu empfehlen.
Machst Du noch was anderes damit. Eventuell presence mit lepresenced????
Nö, ich habe mir den BLE Stick nur für die Blumensensoren zugelegt. Für die Präsenz Geschichte will ich mir was aus HM-10 + ESP pro Raum basteln.


Gesendet von iPhone mit Tapatalk