[Neues Modul] Xiaomi Smart Home ohne Gateway direkt an FHEM

Begonnen von neumann, 22 Februar 2018, 18:00:22

Vorheriges Thema - Nächstes Thema

venuel79

#75
Hi mark79 !
Witzig damit hab ich auch gerade experiementiert doooochh Problem ist.
er setzt auch alle datein (kann man ja auch einzeln auf datein machen) auf    rwxrwxrwx  Also Eigentümer,Benutzer,Alle  --- dürfen alles
ABER, nach einem Neustart ist auch alles so geblieben, nur nicht bei den Dateien wo es wohl wichtig ist,
also: wieder   rw-r--r-- dev.db
                      rw-r--r-- devices.db
der unterschied ist das genau diese beiden Dateien als Benutzer und Eigentümer root sind,
bei allen anderen ist es brix (und da bleibt es auch nach einem reboot rwxrwxrwx)
ist das sowas wie ein Schreibschutz?
kein plan....auf jeden fall ist da irgendeine Sperre davor!?
Streube mich davor den eigentümer zu wechseln auf brix, nicht das dann garnichts mehr geht!?

edit: hab jetzt doch mal versucht  die  devices.db und die  dev.db auf brix umzustellen, geht auch ,aber genau wie bei der rechtevergabe,
wird es nach einem reboot wieder auf root umgestellt,ohne mein dafür zu tun :(

Gruß

edit2: Hab gerade gelesen das es auch mit der Festplatte zu tun haben kann, aber andere sachen wo der Besitzer brix ist kann ich ja auch dauerhaft ändern, nur nicht alles was root ist:
evtl hild der screenshot weiter bei der Fehler analyse

mark79

#76
Du musst schauen, mit welchen User der Dienst (xiaomi-zb2mqtt) gestartet wird. Das geht mit ps aux | grep node

Wenn dort root steht und du schreibst, die Datenbank Dateien haben immer diese Berechtigungen nach einem reboot:
rw-r--r-- dev.db

Dann kann nur root diese Dateien schreiben, die Gruppe root nur lesen und alle anderen auch nur lesen.
Heißt also, Fhem hat nur Lesezugriffe und keine Schreibzugriffe... Das würde vielleicht erklären, warum das pairing nach einen reboot immer futsch ist.

Wer diese Berechtigung immer ändert, kann ich dir auch nicht sagen, weil ich das Modul selber nicht kenne.
Entweder macht das systemctl oder der node Dienst.

Ich würde ja dann erstmal versuchen, den Dienst mit den User fhem zu starten. Weil dann fhem auch Schreibrechte auf die Datei besitzt.
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

Mave

#77
Moin,

zunächst einmal vielen Dank an den Entwickler für die tolle Lösung.

Zwei Fragen habe ich im Moment:

1) Funktioniert das Ganze auch, wenn FHEM und MQTT Broker auf zwei verschiedenen RPIs laufen?

2) Wie groß ist die Reichweite des USB Sticks?

Vielen Dank.

Grüße Mave

venuel79

Zitat von: mark79 am 12 Mai 2018, 02:24:05
Du musst schauen, mit welchen User der Dienst (xiaomi-zb2mqtt) gestartet wird. Das geht mit ps aux | grep node

Wenn dort root steht und du schreibst, die Datenbank Dateien haben immer diese Berechtigungen nach einem reboot:
rw-r--r-- dev.db

Dann kann nur root diese Dateien schreiben, die Gruppe root nur lesen und alle anderen auch nur lesen.
Heißt also, Fhem hat nur Lesezugriffe und keine Schreibzugriffe... Das würde vielleicht erklären, warum das pairing nach einen reboot immer futsch ist.

Wer diese Berechtigung immer ändert, kann ich dir auch nicht sagen, weil ich das Modul selber nicht kenne.
Entweder macht das systemctl oder der node Dienst.

Ich würde ja dann erstmal versuchen, den Dienst mit den User fhem zu starten. Weil dann fhem auch Schreibrechte auf die Datei besitzt.

Das ist die Ausgabe:
brix@ubuntu-Server:~$ ps aux | grep node
root      1656  0.0  0.7 1029736 63056 ?       Ssl  02:06   0:04 /home/brix/.nvm                                                                                        /versions/node/v8.11.1/bin/node /home/brix/xiaomi-zb2mqtt/index.js
brix      6641  0.0  0.0  15796  1008 pts/0    S+   09:55   0:00 grep --color=au                                                                                        to node

also wie du vermutet hast steht auf root.

wie starte ich den Dienst mit dem User Fhem ??, bzw wie ändere ich das?

Danke dir für deine ganze Hilfe!!!!


mark79

Ja gute Frage wie man das ändert, mit systemctl habe ich mich auch noch nicht wirklich beschäftigt und weiß nicht wie man den User festlegen kann..

https://superuser.com/questions/1215631/how-to-run-systemctl-service-as-user
https://unix.stackexchange.com/questions/363098/running-a-systemd-service-as-a-user-other-than-root
https://wiki.ubuntu.com/SystemdForUpstartUsers

Im Grunde macht es die Datei hier:  /etc/systemd/system/xiaomi.service

Die muss vielleicht so angepasst werden:
[Service]
User=fhem
UMask=0777
und womöglich muss die auch nach  /etc/systemd/user/xiaomi.service
Dazu musst du dann noch das Verzeichniss auf den Benutzer fhem ändern: chown fhem:dialout /home/brix/xiaomi-zb2mqtt/ -R
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

venuel79

#80
:( keine chance.... hat mir jetzt alles zerschossen, fhem war auch besitzer, aber ich hatte dann 0 schreib les und ausführen rechte mehr    ------  quasi, lies sich auch nur bis zum reboot ändern ..
Hab nun alles wieder neu gemacht,alles wie am Anfang. dev.db nur mit rw-r-r .
Keine chance,
Hab aber gesehen nachdem ich alles neu gemacht habe stand die dev.db auf rw-rw--
also auch noch anders , bis ich die xiaomi.service erstellt und aktiviert habe!
Aber irgendwo gibt es die Lösung, brauch nur noch jemand der Sie hat...
Grüße

venuel79

#81
die rechte sind erledigt,
mit:
[Unit]
Description=Xiaomi

[Service]

User=brix
Group=brix
UMask=0113

ExecStart=/home/brix/.nvm/versions/node/v8.11.1/bin/node /home/brix/xiaomi-zb2mqtt/index.js
Restart=always
RestartSec=5
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=xiaomi

[Install]
WantedBy=multi-user.target

aber anscheinend wird die dev.db jedes mal neu geschrieben!!????
natürlich ist dadurch das paring wieder futsch...
kann mir nict vorstellen das das so sein soll das die dev.db immer wieder neu geschrieben wird, macht ja auch keinen sinn....

Hilfe in sicht ??
Gruss

Mave

Zitat von: Mave am 12 Mai 2018, 06:07:49
Moin,

zunächst einmal vielen Dank an den Entwickler für die tolle Lösung.

Zwei Fragen habe ich im Moment:

1) Funktioniert das Ganze auch, wenn FHEM und MQTT Broker auf zwei verschiedenen RPIs läuft?

2) Wie groß ist die Reichweite des USB Sticks?

Vielen Dank.

Grüße Mave

Zweiter Versuch  :)

mark79

Anscheinend nicht... ist mir unbegreiflich warum man das hier zur Verfügung stellt und sich dann nicht mehr meldet...  ::)

>>aber anscheinend wird die dev.db jedes mal neu geschrieben!!????
Wenn du den Dienst als User brix startest und du vorher geschrieben hast, das die Datenbank nur rw-r-r hat, dann hat fhem keine Schreibrechte drauf. Sondern nur Leserechte.
Deswegen hatte ich dir geschrieben, du sollst das Xiaomi Gedöns mit dem User "fhem" starten, dann hat dieser auch Schreibrechte. Oder herausfinden, wer immer an den Dateirechten rumpfuscht, vermutlich systemctl...

Sofern fhem überhaupt Schreibrechte benötigt.. ich kann das wie gesagt nicht beurteilen. Da ich das originale GW verwende.

Aber falls du zwei Sticks bestellt haben solltest, kannst du mir einen gegen Entgelt zuschicken und dann schaue ich mir das an.

Btw. es gibt auch eine Youtube Anleitung: https://www.youtube.com/watch?v=9AP8ayQgTsM&t=1281s
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

Mave

Wenn ich das Thema richtig verstanden habe, emuliert der USB Stick quasi das Xiaomi Gateway und stellt die Verbindung zu den Xiaomi Smart Home Komponenten her.
Der USB Stick reicht die Daten an einen MQTT Broker weiter und das FHEM Modul legt in FHEM automatisch ein neues MQTT Device an, sobald eine neue Xiaomi Komponente gepairt wurde und im MQTT Broker auftaucht.

Da meine Xiaomi Komponenten und mein FHEM Server in unterschiedlichen Stockwerken stehen, habe ich Bedenken bezüglich der Reichweite des USB Sticks.

Deshalb überlege ich, einen eigenen RPI mit USB Stick auf das Stockwerk mit den Xiaomi Komponenten zu stellen. Dieser überträgt die Daten über das Heimnetzwerk auf den RPI, wo der MQTT Broker läuft.
Der separate FHEM Server (RPI) wiederum kommuniziert dann mit dem MQTT Broker.

Man kann also wahlweise alles (FHEM, MQTT und USB Stick) auf einem RPI laufen lassen oder auf 3 separaten RPIs, richtig?

Vielen Dank.

venuel79

#85
Zitat von: mark79 am 14 Mai 2018, 20:15:55
Anscheinend nicht... ist mir unbegreiflich warum man das hier zur Verfügung stellt und sich dann nicht mehr meldet...  ::)

>>aber anscheinend wird die dev.db jedes mal neu geschrieben!!????
Wenn du den Dienst als User brix startest und du vorher geschrieben hast, das die Datenbank nur rw-r-r hat, dann hat fhem keine Schreibrechte drauf. Sondern nur Leserechte.
Deswegen hatte ich dir geschrieben, du sollst das Xiaomi Gedöns mit dem User "fhem" starten, dann hat dieser auch Schreibrechte. Oder herausfinden, wer immer an den Dateirechten rumpfuscht, vermutlich systemctl...

Sofern fhem überhaupt Schreibrechte benötigt.. ich kann das wie gesagt nicht beurteilen. Da ich das originale GW verwende.

Aber falls du zwei Sticks bestellt haben solltest, kannst du mir einen gegen Entgelt zuschicken und dann schaue ich mir das an.

Btw. es gibt auch eine Youtube Anleitung: https://www.youtube.com/watch?v=9AP8ayQgTsM&t=1281s

HI mark79, hatte ja bereits geschrieben, so wie ich dachte, das die rechte sein müssen, sind sie nun auch (dank eines reinen Linux Forums) trotzdem wird nach jedem reboot die dev.db (anscheinend nur das "Luder" für die devices.db)neu geschrieben, irgendwas hackt da.... Keine Ahnung... Die dev.db soll wohl die aktuellen Parings dann in die devices.db schreiben, und da sollen Sie wohl auch bleiben (bei mir leider nicht) also liegt der Fehler wohl woanders, und nicht bei den Rechten. Habe leider nur einen Stick, aber wenn du magst, kauf einen, schick ihn zu mir(hab den debugger, kann ich flashen) und ich schick ihn dann zu dir!? Bin noch in Spanien, darum kann ich gerade nicht so viel am system machen. Ich bin unteranderem nach deiner genannten youtube Anleitung vorgegangen ;), also nix neues für mich.
Gruß

Mave

Sehr schade, dass hier so wenig los ist und der Oskar nicht mehr antwortet.... :-[

majestro84

Ja wirklich schade das Modul hat Potenzial läuft es den bei jemanden ohne Probleme?

Gesendet von meinem Redmi Note 4 mit Tapatalk

Server: Fujitsu ESPRIMO Q920 - aktuellen FHEM-Docker Image:Z-Wave (RollerShutter,DoorWindow,Socket,PIR,....) | ENIGMA2 | EGPM2LAN | BLE-Tag(PRESENCE) | HUE | alexa-fhem | Shelly | MQTT2
1.Pi-Zero:Viessmann(optolink) mit 89_VCONTROL300.pm
2.Pi3 Dongle Server: Zigbee2MQTT(CC1352P-2), Z-Wave(UZB1), BT

Animatrix1986

Muss der stick unbedingt im Gerät (Rpi3) stecken damit die "xBridge" auf online geht? Hab den Stick noch nicht bzw warte noch auf den usb debugger, aber dachte ich richte es Schonmal ein, nur xBridge geht nicht online. MQTT bzw. Mosquito läuft erfolgreich bei mir und node js wird mit systemctl gestartet.

terrymaxx

#89
Hallo Oskar, danke für deine Arbeit,habe deine Xiaomi Variante jetzt endlich umsetzen können, musste mich erst noch mit mqtt auseinander setzen. Hatte bisher alle Komponenten an der Bridge. Soweit läuft auch alles mit dem Stick. Habe aber noch ein paar Fragen, da ich eigentlich null Ahnung habe von der Materie. Habe mich auch schon versucht zu belesen. Habe aber nur die Motion ohne no-Motion Sache für den Bewegungsmelder gefunden. Meine Fragen: Der "wleak.aq1" zeigt nur den Batteriestatus, wie bekomme ich den Rest hin? Wasser? Wie bekomme ich die schaltbare ZigBee Steckdose eingebunden? Unter mqttFX bekomme ich 1 und 0 beim Schalten angezeigt, aber einbinden lässt sie sich nicht...
Anfängerdokumentation gelesen, ok.... Also wenn ich einen 1.Hilfe Schein mache, muss ich dann auch am offenen Herzen operieren können??