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

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

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: christiang am 05 Mai 2018, 14:54:03

P.S. Configgenerierer mit templates  :P

Kenn ich. Die fressen kleene Kinder oder Nachbars Katze.
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

CoolTux

Zitat von: christiang am 05 Mai 2018, 10:12:52
Hallo CoolTux,

erstmal vielen Dank für das tolle Modul! Funktioniert bisher einwandfrei mit mittlerweile 10 Sensoren.

Ich habe jedoch das Problem, dass nach einem rereadCfg die Devices im Zustand "initialized" sind und auch bleiben. Nach einem restart von Fhem werden die Messwerte jedoch einwandfrei gelesen.
Ist das ein Problem an meinem Setup oder tritt das bei anderen auch auf?

Viele Grüße,
Christian

Hier ein list von einem Device im Zustand initialized:

Internals:
   BTMAC      C4:7C:8D:65:D8:64
   CFGFN      ./FHEM/plants.cfg
   DEF        C4:7C:8D:65:D8:64
   INTERVAL   300
   NAME       plants_xiaomi_schnittlauch
   NOTIFYDEV  global,plants_xiaomi_schnittlauch
   NR         692
   NTFY_ORDER 50-plants_xiaomi_schnittlauch
   STATE      initialized
   TYPE       XiaomiBTLESens
   VERSION    2.0.12
   loglevel   4
   READINGS:
     2018-05-05 10:06:27   battery         ok
     2018-05-05 10:06:27   batteryLevel    83
     2018-05-05 10:06:27   fertility       1434
     2018-05-05 10:06:27   firmware        2.7.0
     2018-05-04 19:06:03   lastGattError   charWrite faild
     2018-05-05 10:06:27   lux             8447
     2018-05-05 10:06:27   moisture        69
     2018-05-05 10:09:01   state           initialized
     2018-05-05 10:06:27   temperature     16.3
   helper:
     CallBattery 0
     CallSensDataCounter 0
Attributes:
   alias      Schnittlauch
   event-min-interval moisture:1800
   event-on-change-reading .*
   group      Pflanzen
   interval   300
   model      flowerSens
   room       7.3_Plants
   stateFormat Feuchtigkeit: moisture Licht: lux lm Temperatur: temperature°C Nährstoffe: fertility Batterie: batteryLevel%


Hallo Christian,

Kannst Du bitte einmal die aktuelle Git Version testen?
https://github.com/LeonGaultier/fhem-XiaomiBTLESens/archive/master.zip

Danke Dir

Leon
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

christiang

Hi Leon,

sorry ich bin erst jetzt zum ausprobieren gekommen, war beruflich unterwegs.

Leider bleiben die Devices noch im initialized state hängen.

Viele Grüße,
Christian

Internals:
   BTMAC      C4:7C:8D:65:D8:64
   CFGFN      ./FHEM/plants.cfg
   DEF        C4:7C:8D:65:D8:64
   INTERVAL   300
   NAME       plants_xiaomi_schnittlauch
   NOTIFYDEV  global,plants_xiaomi_schnittlauch
   NR         700
   NTFY_ORDER 50-plants_xiaomi_schnittlauch
   STATE      initialized
   TYPE       XiaomiBTLESens
   VERSION    2.0.13
   loglevel   4
   READINGS:
     2018-05-07 10:06:11   battery         ok
     2018-05-07 10:06:11   batteryLevel    83
     2018-05-07 23:57:42   fertility       1628
     2018-05-07 10:06:11   firmware        2.7.0
     2018-05-08 00:03:24   lastGattError   charWrite faild
     2018-05-07 23:57:42   lux             150
     2018-05-07 23:57:42   moisture        68
     2018-05-08 00:06:28   state           initialized
     2018-05-07 23:57:42   temperature     16.8
   helper:
     CallBattery 0
     CallSensDataCounter 0
Attributes:
   alias      Schnittlauch
   event-min-interval moisture:1800
   event-on-change-reading .*
   group      Pflanzen
   interval   300
   model      flowerSens
   room       7.3_Plants
   stateFormat Feuchtigkeit: moisture Licht: lux lm Temperatur: temperature°C Nährstoffe: fertility Batterie: batteryLevel%

CoolTux

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

christiang

Hi Leon,

Super jetzt funktioniert es !

Vielen Dank und beste Grüße,
Christian

ih-sqeezer

Hallo zusammen,

ich nutze seit einigen Monaten zwei Pflanzensensoren von Xiaomi. Bisher liefen die beiden Sensoren mit einem RPI3 ohne weitere Probleme.
Seitdem ich jedoch auf einen neuen RPI3+ gewechselt habe, scheint das BLE bzw allgemein das BT nicht stabil zu laufen. Ich bekomme immer ein "The BlockingCall Process terminated unexpectedly. Timedout" im Status von beiden Pflanzensensoren. Dazu habe ich schon hier das ganze Thema durchgelesen und diverse Dinge herausgefunden. An der Reichweite kann es hier nicht liegen, da sich ein Sensor so ca. 2m vom RPI3+ befindet. Der andere ist auf dem Balkon, aber dennoch voll in Reichweite. Wenn ich in der Konsole vom RPI ein "sudo hcitool lescan" durchführe, erscheint ab und zu mal ein "Disable scan failed: input/output error". Das würde auch zum Fehler in FHEM passen. Sofern ich jedoch einen Sensor direkt via Konsole anspreche "sudo gatttool -i hci0 -b MAC --char-read -a 0x38", erhalte ich nur ein "connect error: Invalid argument (22)" für den weiter weg Sensor. Diesen Fehler bekomme ich auch ziemlich oft im state vom Sensor in FHEM. Für den sehr nahen Sensor erhalte ich dafür in der Konsole ein "connect error: connection refused (111)". Wenn ich im Fehlerfall das BT device mit "sudo hciconfig hci0 down" und "sudo hciconfig hci0 up" neustarte, kann zu jedem Sensor wieder Verbindung aufgebaut werden. Ich bekomme dann auch gleich in der Konsole wieder Daten (Characteristic value/descriptor: 63 27 33 2e 31 2e 38). Auch in FHEM bekomme ich dann mit dem "get Pflanzen sensorData" wieder aktuelle Werte vom Sensor.

Woran könnte das liegen? Ich habe auch schon diverse andere Foren nach dieser BT Schwäche für den RPI3+ gesucht und nichts passendes gefunden. Weiterhin habe ich schon die gesamte BT Soft-/Firmware vom RPI auf Updates geprüft - läuft jedoch schon auf der neusten Version seit dem Upgrade von Jessie (RPI3 => RPI3+).

Hat jemand von euch einen Rat oder vlt das gleiche Problem und konnte es schon lösen? Ich wäre für jede Hilfe dankbar!

Grüße,
Ingo

Tobias

Hi,
Ich möchte euch ganz kurz meine Erfahrungen mitteilen.
Der raspi zero w passt perfekt in das Box -Sens Gehäuse, die bohrungen passen exakt zur Befestigung der Platine.
Die Reichweite ist verblüffend, ich bekomme wirklich einen 10m Radius sauber abgedeckt.
Der raspi fragt 6 pflanzensensoren ab und verteilt die Messwerte per mqtt.
So läuft er völlig autark :)

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Steffen

Zitat von: Tobias am 22 Mai 2018, 17:33:45
Hi,
Ich möchte euch ganz kurz meine Erfahrungen mitteilen.
Der raspi zero w passt perfekt in das Box -Sens Gehäuse, die bohrungen passen exakt zur Befestigung der Platine.
Die Reichweite ist verblüffend, ich bekomme wirklich einen 10m Radius sauber abgedeckt.
Der raspi fragt 6 pflanzensensoren ab und verteilt die Messwerte per mqtt.
So läuft er völlig autark :)

Gesendet von meinem Leap mit Tapatalk

Hallo!

Das würde mich sehr interessieren, da ich zur Zeit sehr große Empfangsprobleme mit meinen Pflanzensensoren habe,
könntest du mir vielleicht erklären wie du wie Werte per mqtt verteilst?

Ein mqtt server läuft schon bei mir durch Sonoff, aber hätten kein Plan wie man das per mqtt verteilen könnte?!

Mfg Steffen

Tobias

Auf dem raspi läuft fhem. Dort sind die Sensoren als BTLESens Modul definiert und die Werte per MQTT_Bridge ins mqtt geschoben.
In meiner Haupt fhem Installation sind die Sensoren per mqtt_Device definiert

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

CoolTux

Zitat von: Tobias am 24 Mai 2018, 08:47:20
Auf dem raspi läuft fhem. Dort sind die Sensoren als BTLESens Modul definiert und die Werte per MQTT_Bridge ins mqtt geschoben.
In meiner Haupt fhem Installation sind die Sensoren per mqtt_Device definiert

Gesendet von meinem Leap mit Tapatalk

Wäre das mit dem SSH Support nicht einfacher gewesen? So musstest Du ja noch ein FHEM installieren was auch gepflegt werden will.
Ansonsten hätte man auch FHEM2FHEM machen können und im Master FHEM einfach nur einen gleichnamigen Dummy anlegen.
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

MadMax-FHEM

Zitat von: CoolTux am 24 Mai 2018, 09:01:26
Wäre das mit dem SSH Support nicht einfacher gewesen? So musstest Du ja noch ein FHEM installieren was auch gepflegt werden will.
Ansonsten hätte man auch FHEM2FHEM machen können und im Master FHEM einfach nur einen gleichnamigen Dummy anlegen.

Wollte mich nicht "auf-/ bzw. dazwischendrängen" aber habe das per ssh und ebenfalls PI ZeroW gelöst... ;)

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)

Tobias

Genau DAS wollte ich nicht haben. Ich wollte explizit eine Entkopplung haben. Sensor und Server (fhen) sollen unabhängig laufen.
Das fhem auf dem raspi muss auch nicht gepflegt werden. Einmal angelegt und es läuft durch.
Ausserdem wollte ich erreichen das ein Sensor si h selbst kümmert die Daten Korrekt zu erhalten und die fertig aufbereiteten Werte für alle Abnehmer zur Verfügung zu stellen.
Neben fhem hab ich auch ein esp der meine Bewässerung steuert, mit pumpenkontrolle, wassertank und automatischer umschaltung nach Frischwasser wenn regentonne leer.
Dieser soll später die bodenfeuchtewerte auch auswerten und die Ventile selbstständig steuern. Mein Haupt fhem monitored nur noch oder aktiviert/deaktiviert die Bewässerungsstränge

Gesendet von meinem Leap mit Tapatalk
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Steffen

Hallo!

Verstehe ich das Richtig, ihr fragt die Werte von einem Pi zero per SSH ab und wertet sie dann in Fhem aus?

Mfg Steffen

CoolTux

JEIN.

Tobias macht das nicht. Die anderen machen es so.
Das Modul wurde extra so entwickelt das es möglich ist per ssh den gatttool Befehl auf einem entfernten Pi aus zu führen und die Daten zu erhalten.
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

jorge

Erstmal Danke für das tolle Modul. Bei dem Wetter in Potsdam sehr hilfreich bei der Bewässerungssteuerung...
Ich setze auch auf 'verteilte Intelligenz' bei meiner Home-Automation, schon aufgrund der BT-Reichweite. Also habe ich ein RPiZeroW (Remote) mit einer FHEM-Instanz versehen und XiaomiBTLESens eingebunden:

define XiaomiBTLESens XiaomiBTLESens XX:XX:XX:XX:XX:XX
attr XiaomiBTLESens model flowerSens
attr XiaomiBTLESens room Sensors



Da ich für andere Sensoren (ESPEasy, sonoff) auch MQTT installiert ist, habe ich die Anbindung folgendermaßen realisiert:

(Weitere) Prerequisites:
- MQTT server irgendwo im Heimnetz installiert
- MQTT Client auf dem Remote
- s.a.https://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung

In FHEM auf dem zentralen Rechner:


define XiaomiBTLESens.MQTT MQTT_DEVICE
attr XiaomiBTLESens.MQTT IODev Mosquitto
attr XiaomiBTLESens.MQTT event-on-change-reading .*
attr XiaomiBTLESens.MQTT room MQTT
attr XiaomiBTLESens.MQTT stateFormat transmission-state
attr XiaomiBTLESens.MQTT subscribeReading_battery /XiaomiBTLESens/battery
attr XiaomiBTLESens.MQTT subscribeReading_fertility /XiaomiBTLESens/fertility
attr XiaomiBTLESens.MQTT subscribeReading_lux /XiaomiBTLESens/lux
attr XiaomiBTLESens.MQTT subscribeReading_moisture /XiaomiBTLESens/moisture
attr XiaomiBTLESens.MQTT subscribeReading_temperature /XiaomiBTLESens/temperature


Auf dem Remote in FHEM ein notify definieren:



define XiaomiBTLESens.notify notify XiaomiBTLESens:(lux|temperature|battery|moisture|fertility).* {$EVTPART0=~ s/\://g;;;; WriteMQTT("192.168.XXX.XXX","",$NAME,$EVTPART0,$EVTPART1);;;;}
attr XiaomiBTLESens.notify room Sensors


...und in 99_myutils eine neue Funktion definieren



sub
WriteMQTT($$$$$)
{
my ($ip, $port, $topic, $name, $event) = @_;
my $cmd='mosquitto_pub -h '.$ip.' -t /'.$topic.'/'.$name.'  -m "'.$event.'"';
system $cmd;
}


Läuft bis jetzt stabil.

LG

Jorge
FHEM.RaspberryPi 2 (HM, 1Wire, Callmonitor.FB 7490, GPIO, I2C, MQTT-Server, MCP23018)
FHEM.RaspberryPi  (FHEM2FHEM, CUL, FS20)
FHEM.RPiZeroW (I2C, 1Wire, python.api, XiaomiBTLESens.MQTT)
FHEM.Win7 (FHEM2FHEM,DBLOG.MySql)
ESPEasy (WEMOSD1, I2C, Analog, 1Wire), Sonoff_T1_3ch, Mobotix QM25, robonect