[74_XiaomiBTLESens.pm] Xiaomi Bluetooth Sensoren FlowerSens/Thermometer

Begonnen von CoolTux, 11 Januar 2018, 15:42:45

Vorheriges Thema - Nächstes Thema

Tobseb

Hallo zusammen, ich versuche momentan einen Xiaomi Temperatur/Humidity Sensor in FHEM zu integrieren. Leider wird mir ein Error bzgl. Batterie-Status geworfen. Ich bekomme es bisher leider noch nicht hin Sensordaten ausgelesen zu bekommen.


2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}
2022.08.16 19:54:18 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/74_XiaomiBTLESens.pm line 1115.
2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}
2022.08.16 19:54:18 1: PERL WARNING: Integer overflow in hexadecimal number at ./FHEM/74_XiaomiBTLESens.pm line 1116.
2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}
2022.08.16 19:54:18 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/74_XiaomiBTLESens.pm line 1116.
2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}


Ich habe schon geschaut ob ich am Code etwas zur möglichen Fehlerbehebung finden kann, aber ich verstehe davon nichts:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/74_XiaomiBTLESens.pm#L1115

Das Gerät ist neu, testweise hab ich es kurz mit meinem Handy gekoppelt um an die MAC zu kommen - danach wieder entkoppelt. Hat in der App schon sinnvolle Werte angezeigt. Raspberry steht in der direkten Nähe, via commandline kann ich mich erfolgreich verbinden.

Irgendwelche Anhaltspunkte was ich weiter probieren kann sind sehr gerne gesehen.  :'(

CoolTux

Zitat von: Tobseb am 16 August 2022, 20:08:48
Hallo zusammen, ich versuche momentan einen Xiaomi Temperatur/Humidity Sensor in FHEM zu integrieren. Leider wird mir ein Error bzgl. Batterie-Status geworfen. Ich bekomme es bisher leider noch nicht hin Sensordaten ausgelesen zu bekommen.


2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}
2022.08.16 19:54:18 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/74_XiaomiBTLESens.pm line 1115.
2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}
2022.08.16 19:54:18 1: PERL WARNING: Integer overflow in hexadecimal number at ./FHEM/74_XiaomiBTLESens.pm line 1116.
2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}
2022.08.16 19:54:18 1: PERL WARNING: Hexadecimal number > 0xffffffff non-portable at ./FHEM/74_XiaomiBTLESens.pm line 1116.
2022.08.16 19:54:18 3: eval: {FHEM::XiaomiBTLESens::ExecGatttool_Done('TempHumXiaomiBLE|A4:C1:38:C2:CC:B9|ok|read|0x18|{"gtResult":"6d 69 61 6f 6d 69 61 6f 63 65 2e 63 6f 6d 00 "}')}


Ich habe schon geschaut ob ich am Code etwas zur möglichen Fehlerbehebung finden kann, aber ich verstehe davon nichts:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/74_XiaomiBTLESens.pm#L1115

Das Gerät ist neu, testweise hab ich es kurz mit meinem Handy gekoppelt um an die MAC zu kommen - danach wieder entkoppelt. Hat in der App schon sinnvolle Werte angezeigt. Raspberry steht in der direkten Nähe, via commandline kann ich mich erfolgreich verbinden.

Irgendwelche Anhaltspunkte was ich weiter probieren kann sind sehr gerne gesehen.  :'(

Hast Du den korrekten Typ des Devices als Attribut stehen? Gib bitte einmal ein list vom 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

Tobseb

Natürlich war das der Fehler, vielen Dank, hab die korrekte Auswahl übersehen, weil ich dachte "temperature + humidity" => passt!

Mit der Auswahl "mijiaLYWSD03MMC" passt alles. :)

Holger S

Zitat von: marboj am 20 Januar 2022, 11:12:21
Hallo zusammen,

habe seit einem Jahr 10 dieser Thermometer mijiaLYWSD03MMC im Einsatz. Grundsätzlich funktionieren sie.

Folgende Probleme habe ich allerdings:

- batteryPercent steht immer auf 63, egal wie neu die Batterie ist.
- Hin und wieder muss das BT neu gestartet werden, damit die Verbindung wieder funktioniert
- die im Thread schon angesprochenen Reichweitenprobleme

Habe im Thread noch keine finale Lösung für das Verbindungsproblem gefunden. Das Batterieproblem habe ich gar nicht gefunden.

Jemand eine Idee?

exemplarisch mal ein Device:

attr AZ.Thermo userattr K2.Thermo K2.Thermo_map room_map structexclude
attr AZ.Thermo alias Arbeitszimmer Thermo-/Hygrometer
attr AZ.Thermo appOptions { "template": "thermometer" }
attr AZ.Thermo group Sensoren
attr AZ.Thermo hciDevice hci0
attr AZ.Thermo icon temperature_humidity
attr AZ.Thermo interval 7200
attr AZ.Thermo model mijiaLYWSD03MMC
attr AZ.Thermo room 12_Arbeitszimmer,XiaomiBTLESens
attr AZ.Thermo userReadings temp {sprintf("%.1f °C",ReadingsNum($name,"temperature",0))}

setstate AZ.Thermo T: 22.94 H: 53 D: 12.8
setstate AZ.Thermo 2022-01-20 10:10:26 batteryPercent 63
setstate AZ.Thermo 2022-01-20 10:10:26 batteryState ok
setstate AZ.Thermo 2022-01-20 10:10:37 dewpoint 12.8
setstate AZ.Thermo 2021-03-17 14:19:30 firmware 1.0.0_0109


Vielen Dank
Gruß
Marco

Hallo,
ich glaube der gibt nur die Spannung der Batterie aus. Habe jedenfalls damals nichts gefunden.

habe die Zeile mit "voltage" in die sub routine eingearbeitet:

sub mijiaLYWSD03MMC_Handle0x38 {
    ### mijiaLYWSD03MMC - Read Sensor Data
    my ( $hash, $notification ) = @_;

    my $name = $hash->{NAME};
    my %readings;

    Log3( $name, 4, "XiaomiBTLESens ($name) - mijiaLYWSD03MMC Handle0x38" );

    return stateRequest($hash)
      unless ( $notification =~ /^([0-9a-f]{2}(\s?))*$/x );

    my @splitVal = split /\s/x, $notification;

    $notification =~ s/\s+//xg;

    $readings{'temperature'} =
      hex( "0x" . $splitVal[1] . $splitVal[0] ) > 20000
      ? ( -65536 + hex( "0x" . $splitVal[1] . $splitVal[0] ) ) / 100
      : hex( "0x" . $splitVal[1] . $splitVal[0] ) / 100;

    $readings{'humidity'} = hex( "0x" . $splitVal[2] );
    $readings{'voltage'}  = hex( "0x" . $splitVal[4] . $splitVal[3] ) / 1000;

    $hash->{helper}{CallBattery} = 0;

    return \%readings;
}


Daraus kann man sich dann was mit Low Battery oder Percent was bauen...
Bei mir funktioniert es. Bitte testen, dann kann es übernommen werden?!

grüße

marboj

meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

MadMax-FHEM

#1130
Zitat von: marboj am 11 Oktober 2022, 08:12:38
Wo genau muss ich da wie einbauen zum testen?

Gruß
Marco

So ich das lese geht es um diese Zeile:

$readings{'voltage'}  = hex( "0x" . $splitVal[4] . $splitVal[3] ) / 1000;

unterhalb von dieser Zeile:

$readings{'humidity'} = hex( "0x" . $splitVal[2] );


In der 74_XiaomiBTLESens.pm Datei (/opt/fhem/FHEM) in der sub mijiaLYWSD03MMC_Handle0x38.

Wenn du das änderst, nicht vergessen:

attr global exclude_from_update 74_XiaomiBTLESens.pm

...sonst wird das beim nächsten fhem-Update wieder überschrieben.

Und wenn es nicht funktionieren sollte, dann kommst du so (fhem update) auch wieder zurück auf Original (dann nat. ohne exclude_from_update), falls du sie dir nicht anderweitig "aufgehoben" hast.
(oder löschst die Zeile einfach wieder ;)  )

Wenn es ins Modul übernommen wurde, dann nat. das exclude_from_update  wieder entfernen... 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

DasQ

Zitat von: Beta-User am 27 Februar 2022, 09:54:29
Man kann BT-LE übrigens auch mit Tasmota-ESP32 empfangen; vermutlich ginge das auch damit, ist nur noch nicht groß getestet, was die Auswertung der Daten in FHEM angeht (die JSON sind gefühlt etwas "komisch"). Will sagen: Dann geht ggf. auch ein irgendwo verbauter "normaler WLAN-Aktor" als IO-Gerät... (es gibt in der english-corner einen, der seine ewuiva-Thermostate so steuert!).

genau da bin ich gerade dran und tasmota macht das erstaunlich gut. mit hilfe deines templates hab ich jede menge fast identische readings.

jetzt würd ich die gern zerpflügen, wenn du da mal bitte ein blick drauf wirfst?
meine frage bei den anfängern
Fhem on MacMini/Ubuntu.
Absoluter Befürworter der Konsequenten-Kleinschreibung https://de.wikipedia.org/wiki/Kleinschreibung
Infos zu Klimawandel http://www.globalcarbonatlas.org