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

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3737
Genauso, fast hab ich es auch. Allerdings kann man über das mqtt_device auch befehle per mqtt schicken welches zb. Der espeasy auswerten kann

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 CoolTux

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

Komme auch aus der Nähe von Potsdam. Sau Hitze aktuell.  ;D
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
Wollte mich nicht "auf-/ bzw. dazwischendrängen" aber habe das per ssh und ebenfalls PI ZeroW gelöst... ;)

Gruß, Joachim

Hallo!

Habe mir aus diesem grund auch ein Zero geholt und habe den Pi nun im Netzwerk, auf dem PiZero ist auch Bluez in der Version 5.4.

Wenn ich jetzt von meinem Haupt-Fhem Server das attr sshHost einfüge mit der Ip von Zero dann bekomme ich diese Fehlermeldung:
no gatttool binary found. Please check if bluez-package is properly installed

kann mir jemand dazu vielleicht einen rat geben?!?

Mfg Steffen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22939
Design bedingt schummelt das Modul da ein bisschen. Bitte installiere auf dem aufrufenden pi ebenfalls das bluez-package
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
Design bedingt schummelt das Modul da ein bisschen. Bitte installiere auf dem aufrufenden pi ebenfalls das bluez-package
Danke für die schnelle Antwort aber das war schon installiert, den von diesem hatte ich vorher schon das Modul genutzt. Aber die Reichweite
war zu schlecht, deswegen wollte ich mit dem Pi zero verlängern.

Muss ich sonst noch was auf dem Pi zero machen außer bluez installieren??

Mfg Steffen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22939
Du musst natürlich ssh für passwortlosen Zugang einrichten. Sprich mit Keyfile
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
Du musst natürlich ssh für passwortlosen Zugang einrichten. Sprich mit Keyfile

Ok das habe ich gerade erledigt, aber kommt immer noch diese Fehlermeldung?!?

Was könnte es noch sein?!?

Mfg Steffen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22939
Naja nun Mal langsam. Was genau hast du denn wie gemacht dafür.

Der User fhem hat jetzt also unter /opt/fhem/ ein Ordner .ssh und darin den privaten Schlüssel? Der User den du auf der anderen Seite aufrufst pi@server z.b. hat auf der anderen Seite einen Ordner .ssh in seinem Homeverzeichnis mit dem öffentlichen Schlüssel?
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
Oh Sorry...

Das habe ich dann wohl falsch verstanden, ich habe nur einen ssh zugang gemacht ohne Passwort aufforderung auf
den PiZero.

Sehe ich das richtig, das ich die erstellt "id_rsa.pub" jetzt nach /opt/fhem/.ssh kopiere?

Mfg Steffen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22939
Mit welchem User machst du denn eine ssh Verbindung auf der anderen Seite?
fhem@server?
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
ich hatte es so eingerichtet:
root@happyfamilyserver:~# ssh pi@192.168.178.137
Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu May 31 17:34:44 2018 from 91.64.217.22
pi@raspberrypi:~ $


Mfg Steffen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22939
OK du willst also auf der anderen Seite den User pi verwenden. Den Aufruf für ssh macht der User fhem

Du hast also lokal fhem und remote pi.

Dann bekommt lokal der User fhem den privat Key und remote der User pi den Public Key.

Wenn du als ein anderer User das Schlüsselpaar erstellt musst du lokal den privat Key nach /opt/fhem/.ssh kopieren und die rechte richtig setzen. Besitzer fhem Gruppe dialout.
Remote bekommt der User pi in seinem Homeverzeichnis unter.ssh den Public Key.

Ich will schon seit Ewigkeiten dafür ne Anleitung schreiben. Komme nur nicht dazu  :-[
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
Ok ich dachte es wäre einfacher, aber würde das gerne das irgendwie lösen, was ich aber selber komisch finde das ich anscheinend gar kein user fhem habe...
root@happyfamilyserver:~# su - fhem
root@happyfamilyserver:~#

die remote ssh habe ich auch als "root" aufgerufen oder sehe ich das Falsch?!

root@happyfamilyserver:~# ls -la /root/.ssh
total 16
drwx------ 1 root root   84 May 31 18:46 .
drwx------ 1 root root  654 May 31 20:18 ..
-rw------- 1 root root 1675 May 31 18:39 id_rsa
-rw-r--r-- 1 root root  404 May 31 18:39 id_rsa.pub
-rw------- 1 root root  222 May 31 18:40 known_hosts
-rw------- 1 root root  222 May 31 18:38 known_hosts.old
root@happyfamilyserver:~#

root@happyfamilyserver:~# ssh pi@192.168.178.137
Linux raspberrypi 4.14.34+ #1110 Mon Apr 16 14:51:42 BST 2018 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu May 31 18:14:03 2018 from 192.168.178.102
pi@raspberrypi:~ $ ls -la
total 28
drwxr-xr-x 3 pi   pi   4096 May 31 16:46 .
drwxr-xr-x 3 root root 4096 Apr 18 00:16 ..
-rw------- 1 pi   pi    526 May 31 17:57 .bash_history
-rw-r--r-- 1 pi   pi    220 Apr 18 00:16 .bash_logout
-rw-r--r-- 1 pi   pi   3523 Apr 18 00:16 .bashrc
-rw-r--r-- 1 pi   pi    675 Apr 18 00:16 .profile
drwx------ 2 pi   pi   4096 May 31 18:13 .ssh
pi@raspberrypi:~ $ cd .ssh
pi@raspberrypi:~/.ssh $ ls -la
total 28
drwx------ 2 pi pi 4096 May 31 18:13 .
drwxr-xr-x 3 pi pi 4096 May 31 16:46 ..
-rw------- 1 pi pi  404 May 31 16:46 authorized_keys
-rwxrwxrwx 1 pi pi 1675 May 31 17:59 id_rsa
-rwxrwxrwx 1 pi pi  404 May 31 17:59 id_rsa.pub
-rw-r--r-- 1 pi pi  222 May 31 17:59 known_hosts
-rw-r--r-- 1 pi pi  222 May 31 17:59 known_hosts.old
pi@raspberrypi:~/.ssh $

aber bis jetzt immer noch der gleiche Fehler...

Mfg Steffen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 22939
Als root geht schon mal.
Nun kopierst du den .ssh von root nach /opt/fhem/ und gibst mit chown -R ./opt/fhem/.ssh dem User fhem und der Gruppe dialout die Rechte des Verzeichnisses und allem darunter.
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 Steffen

  • Sr. Member
  • ****
  • Beiträge: 834
Als root geht schon mal.
Nun kopierst du den .ssh von root nach /opt/fhem/ und gibst mit chown -R ./opt/fhem/.ssh dem User fhem und der Gruppe dialout die Rechte des Verzeichnisses und allem darunter.

Das hatte ich schon gemacht, aber bleibt immer noch bei der Fehlermeldung:
root@happyfamilyserver:~/.ssh# ls -la /opt/fhem/.ssh
total 16
drwxrwxrwx 1 fhem dialout   84 May 31 19:59 .
drwxr-xr-x 1 fhem dialout  470 May 31 12:53 ..
-rwxrwxrwx 1 fhem dialout 1675 May 31 19:59 id_rsa
-rwxrwxrwx 1 fhem dialout  404 May 31 19:59 id_rsa.pub
-rwxrwxrwx 1 fhem dialout  222 May 31 19:59 known_hosts
-rwxrwxrwx 1 fhem dialout  222 May 31 19:59 known_hosts.old
root@happyfamilyserver:~/.ssh#

kann man den befehl den das Modul nutzt vielleicht auf der Shell ausführen um vielleicht zu sehen wo es nicht klappt?!?

Mfg Steffe