Autor Thema: [74_XiaomiBTLESens.pm] Xiaomi Bluetooth Sensoren FlowerSens/Thermometer  (Gelesen 59910 mal)

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22936

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://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22936
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://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline christiang

  • New Member
  • *
  • Beiträge: 35
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%

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22936
bitte noch einmal testen. selber link zum download
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://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline christiang

  • New Member
  • *
  • Beiträge: 35
Hi Leon,

Super jetzt funktioniert es !

Vielen Dank und beste Grüße,
Christian
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline ih-sqeezer

  • Full Member
  • ***
  • Beiträge: 134
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

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3737
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

FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamps, RPi für BLE Bodenfeuchtesenoren, Text2Speech.
Maintainer der Module: Text2Speech, TrashCal, MediaList

Meine Projekte auf https://github.com/tobiasfaust
u.a. PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM

Offline Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
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

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3737
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

FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamps, RPi für BLE Bodenfeuchtesenoren, Text2Speech.
Maintainer der Module: Text2Speech, TrashCal, MediaList

Meine Projekte auf https://github.com/tobiasfaust
u.a. PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22936
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://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 6393
  • NIVEAu ist keine Creme...
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 5.9 PI3: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 3x EnOcean, HUE, CO2, ESP-Multisensor, FireTV, KODI, alexa-fhem, ...
FHEM 5.9 PI2: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM 5.9 PI3 (Test): HM-MOD-PCB, Snips, Google Home, ...

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3737
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
« Letzte Änderung: 24 Mai 2018, 14:29:58 von Tobias »
FHEM auf ASRock J3455-ITX im 19" Rack mit Homematic, MAX, PCA301, Panstamps, RPi für BLE Bodenfeuchtesenoren, Text2Speech.
Maintainer der Module: Text2Speech, TrashCal, MediaList

Meine Projekte auf https://github.com/tobiasfaust
u.a. PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
Informativ Informativ x 1 Liste anzeigen

Offline Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
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

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22936
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://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline jorge

  • Full Member
  • ***
  • Beiträge: 169
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
« Letzte Änderung: 29 Mai 2018, 14:03:20 von 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