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

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

Vorheriges Thema - Nächstes Thema

ext23

Ja wer lesen kann, ich habe von SSH gesprochen, wie gesagt von FHEM war keine Rede oO

Kann man da eventuell Timeouts erhöhen? Ich hab in der Firewall jetzt schon 15 parallele SSH sessions freigeschaltet, das sollte eigentlich passen sofern er alte sauber schließt. Davon gehe ich aber mal aus.
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

CoolTux

Was stört dich daran das die SSH Session etwas länger offen bleibt? Es werden eh nicht alle 10 Sensoren zeitgleich abgefragt.
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

ext23

Das wird nur schlecht wenn er eine neue Session öffnet und die alte nicht beendet hat. Dann wird das geblockt in der FW wenn es zu viel wird.

Was hängt denn dann hier so lange, ist das nur das gattool?

Kann es sein, dass sich das mit meinem G-Tags nicht verträgt die auch über diesen RPi abgefragt werden?

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

ext23

Mhh liegt wirklich an den G-Tags. Das ist wohl zu viel des Guten. Ich schau mir mal die Sache mit dem ESP32 an, dann ist das etwas getrennt.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

mark79

Zitat von: ext23 am 25 Juni 2018, 16:47:12
Mhh liegt wirklich an den G-Tags. Das ist wohl zu viel des Guten. Ich schau mir mal die Sache mit dem ESP32 an, dann ist das etwas getrennt.

/Daniel
Ich habe auch die G-Tags und für lepresence und den Xiaomi Flower Sensoren bisher zwei BT Sticks verwendet.
Seit dem ich die G-Tags habe, wird das kernel.log vollgespammt... "Bluetooth: hci0 advertising data length corrected"
Aber das kann man ja blockieren...

Bzgl. Abruf via ESP32 (openmqttgateway), das funktioniert bei mir gut, was nur fehlt ist das Battery Reading.
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

ext23

Zitat von: mark79 am 25 Juni 2018, 22:15:17
Bzgl. Abruf via ESP32 (openmqttgateway), das funktioniert bei mir gut, was nur fehlt ist das Battery Reading.

Hast du mal ein Binary für mich, oder gibt es die irgendwo? (Sofern die WLAN Daten nicht hardcoded sind.) Battery Reading, naja, unwichtig, merkt man ja wenn die tot sind.
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

mark79

Zitat von: ext23 am 25 Juni 2018, 22:32:49
Hast du mal ein Binary für mich, oder gibt es die irgendwo? (Sofern die WLAN Daten nicht hardcoded sind.) Battery Reading, naja, unwichtig, merkt man ja wenn die tot sind.
Hast eine PN :)
Rock64 4GB mit Debian Strech, FHEM im LXC, Sonoff Switches/Touch, HM Thermostate, HMUART/Zigbee2MQTT@MapleCUN, ESP RGBWW Wifi Controller, ESP8266 Door Sensor/Briefkastenwächter, BT CSL Stick, BT iTags, Alexa, FireTV, RPi2 mit Kodi, Xiaomi Vacuum v1/Smarthome Komponenten

ext23

Danke,

(Ich hab den ESP32 noch nicht in meiner Arduino IDE drin, daher reicht mir das erst mal zu probieren!)

Danke.
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

CoolTux

Zitat von: ext23 am 25 Juni 2018, 23:02:26
Danke,

(Ich hab den ESP32 noch nicht in meiner Arduino IDE drin, daher reicht mir das erst mal zu probieren!)

Danke.

Was mir noch eingefallen ist. Installiere Dir mal hcidump und starte lepresenced neu. Danach sollte lepresenced nicht mehr den Abruf der Sensoren stören. Kann man dann parallel betreiben.


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

ext23

HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

hjjk

Bei mir gibt es immer noch Probleme mit der ssh Abfrage. ssh ist richtig aufgesetzt da ich von der Kommandozeile den Aufruf ausführen kann.


ssh 192.168.XX.XX 'gatttool -b C4:7C:8D:66:XX:XX --char-write-req -a 0x33 --value=A01F 2>&1 >/dev/null && gatttool -b C4:7C:8D:66:XX:XX --char-read --handle=0x35'


Ausgeführt als user fhem
Ich habe den loglevel auf 5 erhört und sehe in log folgende Information


2018.06.27 10:15:12.066 4: XiaomiBTLESens (Rosen) - Run CreateParamGatttool with mod: read
2018.06.27 10:15:12.066 1: PERL WARNING: Use of uninitialized value $handle in concatenation (.) or string at ./FHEM/74_XiaomiBTLESens.pm line 427.
...
2018.06.27 10:15:12.085 1: PERL WARNING: Use of uninitialized value $handle in concatenation (.) or string at ./FHEM/74_XiaomiBTLESens.pm line 431.
2018.06.27 10:15:12.086 5: XiaomiBTLESens (Rosen) - Read XiaomiBTLESens_ExecGatttool_Run Rosen|C4:7C:8D:66:2B:51|read|

...
2018.06.27 11:31:54.046 5: XiaomiBTLESens (Rosen) - ExecGatttool_Run: call gatttool with command: gatttool -i hci0 -b C4:7C:8D:66:XX:XX --char-read -a  2>&1 /dev/null and loop 0
2018.06.27 11:31:54.046 5: XiaomiBTLESens (Oleander) - ExecGatttool_Run: call gatttool with command: gatttool -i hci0 -b C4:7C:8D:66:XX:XX --char-read -a  2>&1 /dev/null and loop 0
2018.06.27 11:31:54.060 5: XiaomiBTLESens (Rosen) - ExecGatttool_Run: gatttool loop result Cannot parse integer value '/dev/null' for -a
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

Der handle Parameter fehlt !!! Warum ?
Ich nutze fhem 5.8 mit dem aktuellsten Update auf einem PI 3 und möchte remote die Daten von einem andern PI nahe eines Xiaomi Flower Monitors auslesen.

Hier ist die Definition für den Sensor

define Rosen XiaomiBTLESens C4:7C:8D:66:XX:XX
attr Rosen model flowerSense
attr Rosen interval 1800
attr Rosen room Pflanzen
attr sshHost 192.168.X.XX
attr Rosen stateFormat Temp: temperature °C, Dünger: fertility µS/cm, Feuchtigkeit: moisture %, Licht: lux Lux, Batterie: batteryLevel %
define FileLog_Rosen FileLog ./log/Rosen-%Y-%m.log Rosen:batteryLevel:.*|Rosen:fertility:.*|Rosen:lux:.*|Rosen:moisture:.*|Rosen:temperature:.*


Ich bin für jeden Hinweis dankbar


CoolTux


call gatttool with command: gatttool -i hci0 -b C4:7C:8D:66:XX:XX --char-read -a  2>&1 /dev/null and loop 0


Ich sehe da kein ssh. Mach mal bitte 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

hjjk

OK, "list Rosen" bringt


nternals:
   BTMAC      C4:7C:8D:66:2B:51
   CFGFN      include/xiaomi-plant-monitor.cfg
   CHANGED   
   DEF        C4:7C:8D:66:2B:51
   INTERVAL   1800
   NAME       Rosen
   NOTIFYDEV  global,Rosen
   NR         107
   NTFY_ORDER 50-Rosen
   STATE      Temp: 16.0 °C, Dünger: 147 µS/cm, Feuchtigkeit: 26 %, Licht: 839 Lux, Batterie: 99 %
   TYPE       XiaomiBTLESens
   VERSION    2.0.14
   loglevel   4
   READINGS:
     2018-06-28 17:08:42   batteryLevel    99
     2018-06-28 17:08:41   fertility       147
     2018-06-28 17:08:42   firmware        3.1.8
     2018-06-28 17:08:41   lux             839
     2018-06-28 17:08:41   moisture        26
     2018-06-28 18:24:43   state           read sensor data
     2018-06-28 17:08:40   temperature     16.0
   helper:
     CallBattery 0
     CallSensDataCounter 0
     updateTimeCallBattery 0
Attributes:
   interval   1800
   model      flowerSense
   room       Pflanzen
   stateFormat Temp: temperature °C, Dünger: fertility µS/cm, Feuchtigkeit: moisture %, Licht: lux Lux, Batterie: batteryLevel %


Die Readings werden momentan durch ein externes Skript geschrieben (ähnlich perl /opt/fhem/fhem.pl 7072 "setreading Rosen temperature 21.6).

CoolTux

Ich sehe da jetzt kein ssh Attribut. Was genau machst das externe Script? Funktionen es beim gatttool Aufruf dazwischen?
Setze das Devices bitte auf verbose 5 und setze das ssh Attribut mit REMOTEUSER@REMOTESERVER
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

hjjk

Danke für den Hinweise. War ein Typo bei attr Device ssh. Nun wird ein ssh Aufruf gestartet. Aber es fehlt nach wie vor der Parameter für "--char-read -a   "


2018.06.28 19:43:01.671 5: XiaomiBTLESens (Rosen) - ExecGatttool_Run: call gatttool with command: ssh pi@192.168.3.61 'gatttool -i hci0 -b C4:7C:8D:66:2B:51 --char-read -a  2>&1 /dev/null' and loop 0
2018.06.28 19:43:01.754 4: Connection accepted from WEB_192.168.3.41_48804
2018.06.28 19:43:01.906 4: WEB_192.168.3.41_48804 GET /fhem?XHR=1&inform=type=status;filter=Rosen;since=1530207621.236;fmt=JSON&fw_id=119&timestamp=1530207781746; BUFLEN:0
2018.06.28 19:43:02.097 5: XiaomiBTLESens (Rosen) - ExecGatttool_Run: gatttool loop result Cannot parse integer value '/dev/null' for -a
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
  -t, --addr-type=[public | random]         Set LE address type. Default,public
  -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


Hier ist der Output von "list Rosen"


Internals:
   BTMAC      C4:7C:8D:66:2B:51
   CFGFN      include/xiaomi-plant-monitor.cfg
   CHANGED
   DEF        C4:7C:8D:66:2B:51
   INTERVAL   1800
   NAME       Rosen
   NOTIFYDEV  global,Rosen
   NR         107
   NTFY_ORDER 50-Rosen
   STATE      Temp: 15.6 °C, Dünger: 151 µS/cm, Feuchtigkeit: 26 %, Licht: 584 Lux, Batterie: 99 %
   TYPE       XiaomiBTLESens
   VERSION    2.0.14
   loglevel   4
   READINGS:
     2018-06-28 19:22:54   batteryLevel    99
     2018-06-28 19:22:54   fertility       151
     2018-06-28 19:22:55   firmware        3.1.8
     2018-06-28 19:22:53   lux             584
     2018-06-28 19:22:54   moisture        26
     2018-06-28 19:42:58   state           read sensor data
     2018-06-28 19:22:53   temperature     15.6
   helper:
     CallBattery 0
     CallSensDataCounter 0
     updateTimeCallBattery 0
Attributes:
   interval   1800
   model      flowerSense
   room       Pflanzen
   sshHost    pi@192.168.3.61
   stateFormat Temp: temperature °C, Dünger: fertility µS/cm, Feuchtigkeit: moisture %, Licht: lux Lux, Batterie: batteryLevel %


Mein Skript zum Schreiben der Readings wir manuell gestartet, nur um mal ein paar Daten zum Darstellen zu haben. Sollte eigentlich kein Problem für fhem sein.