Archiv der Kategorie: FHEM

XIAOMI Mi Pflanzensensor mit FHEM verbinden

Zuerst muss man den Xiaomi Flower Mate – Pflanzensensor vorsichtig öffnen und das Gerät durch entfernen der Plastiklasche zwischen Batterie und Gerät aktivieren. Da der Pflanzensensor nur mit einer chinesischen Anleitung kommt und wohl einige die Piktogramme nicht verstehen oder die englische Anleitung im Internet nicht finden (http://files.xiaomi-mi.com/files/plants_monitor/Plants_monitor-EN.pdf) ist das der häufigste Fehler für angeblich „defekte“ Sensoren. Der zweit häufigste Fehler ist, dass man eine chinesische Version und nicht die internationale Version gekauft hat. Dann muss in der Xiaomi App als Standort „China Mainland“ ausgewählt werden und zur aktivierung eine Chinesische IP -Adresse und eine chinesische GPS Position vorgegaukelt werden:

  1. Man benötigt ein Android Device
  2. Am besten alle anderen Apps schließen da später die Daten über einen chinesischen VPN laufen werden
  3. Ganz normal in der App mit dem eigenen Mi account anmelden
  4. Device in den Flugzeugmodus versetzten
  5. Das W-Lan wieder aktivieren
  6. Aus dem PlayStore die App FakeGPS App installieren (Sie kann eine falsche GPS-Position simulieren)
  7. Die App öffnen und die Position auf irgendwo auf dem Chinesischen Festland setzten und starten
  8. Aus dem PlayStore die App FlyVPN App installieren
    Die App starten und einen Chinesischen Server auswählen (keine registrierung notwendig) und das VPN starten
  9. Die Xiaomi Flower App starten und die FlowerCare Sensoren ganz normal verbinden, die Pflanzen auswählen und Firmware updaten
  10. Dann das VPN beenden, FakeGPS beenden.

Die Sensoren sind jetzt mit dem Xiaomi Account verknüpft. Diese Prozedur ist nur bei der ersten Inbetriebnahme durchzuführen. Jetzt funktionieren die Sensoren auch ohne VPN&Co.
(Dies ist nur für die Nutzung in der Xiaomi App notwendig, z.B. für Firmwareupdates. FHEM ist es egal welche Version verwendet wird. FHEM kann komplett ohne eine APP auf den Sensor zugreifen.).

Wenn man diese Hürde genommen hat ist der Sensor eigentlich bereit mit FHEM verknüpft zu werden. Allerdings bietet es sich an die Firmware auf dem Sensor auf die aktuelle Version zu updaten. Das ist entweder mit der Mi Home App (iOS), Mi Home App (Android) oder der Flower Care App (Android) (von Beijing HHCC Plant Technology Co., Ltd) über ein Bluetooth fähiges Smartphone/Tablet möglich.  Wenn man nur die Pflanzensensoren vom Mi im Einsatz hat, reicht die Flower Care App aus. Für beide Apps, die sehr viel Berechtigungen wollen, ist ein Mi Account nötig. Den Mi Account kann man eigentlich nur mit einer @gmail.com E-Mail Adresse eröffnen, alle anderen Adressen wurden mit nicht Zustellung der Betätigungsemail ohne Warnung oder Angabe von gründen nicht akzeptiert. Es kommt also einfach keine E-Mail in der Ihr das Konto bestätigen könnt. Wenn man sich dann endlich in der App eingeloggt hat kann mit + (oben rechts) nach Sensoren suchen und dann wird auch direkt das Firmwareupdate angeboten.

Dann geht es auch schon an FHEM. Auf den Raspberry einloggen und mit

sudo hcitool lescan

mal schauen ob der Sensor erkannt wird. In der Ausgabe müsste dann sowas erscheinen:

C4:7C:8D:12:34:56 Flower care
C4:C7:8D:65:43:21 Flower mate

Wenn irgendwo Flower Care oder Flower mate  hinter den Adressen steht, dann ist der Pflanzensensor erreichbar. Die Mac-Adresse muss kopiert werden, um sie später in FHEM zu benutzen. Also hier z.B.: C4:7C:8D:12:34:56 aufschreiben.

Dann im Browser FHEM öffnen und wie immer erstmal updaten. Dazu einfach in das (Command-) Feld oben update eintippen gefolgt von druck auf die – Taste. Wenn das Update fertig ist einmal mit shutdown restart + FHEM neu starten.

Dann den Pflanzensensor mit FHEM koppeln:
In das Commandfeld

define "NAME" XiaomiFlowerSens "MAC-ADRESSE"

und mit den eigenen Werten ersetzen. Also z.B.:

define Pflanze1 XiaomiFlowerSens C4:7C:8D:12:34:56

Diese Anweisung erstellt ein XiaomiFlowerSens Device mit dem Namen Pflanze1 und der Bluetooth MAC-Adresse C4:7C:8D:12:34:56.

Um später die Daten auch werten zu können muss aktuell noch das anlegen eines Logfiles „von Hand“ erfolgen. Dazu einfach noch mit

define FileLog_pflanze1 FileLog ./log/pflanze1-%Y.log pflanze1

das Logfile erstellen. Dann kann man später aus den dort eingetragenen Werten eine Grafik erstellen lassen. Dann noch mit

attr Pflanze1 event-min-interval state:3600,battery:3600,batteryLevel:3600,temperature:600,moisture:600,fertility:600,lux:300

attr Pflanze1 event-on-change-reading state

attr Pflanze1 event-on-update-reading .*

das Zumüllen des Logfiles verhindern.

 

 

Der XIAOMI Mi Pflanzensensor wird übrigens in Wirklichkeit von Huahuacaocao hergestellt.

Quellen:

https://blog.moneybag.de/fhem-xiaomi-pflanzensensor-feuchtigkeit-helligkeit-temperatur-per-bluetooth-messen/

http://files.xiaomi-mi.com/files/plants_monitor/Plants_monitor-EN.pdf

Advertisements

Mehrere USB Devices am RaspberryPi richtig in FHEM zuordnen

Falls man mehr als ein USB Device am RaspberryPi betreibt ist es wichtig, dass dieses in FHEM immer richtig erkannt wird. Da die Zuordnung auf

/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2

sehr ungenau ist und sich die USB Ports je nach Timing auch einmal ändern können, sollten die Devices mit dem Namen mit dem sie sich selbst am USB Port anmelden verknüpft werden. Den Namen findet man heraus, indem man sich mit Kitty auf den RaspberryPi einloggt und mit dem Befehl

ls -l /dev/serial/by-id

sich die USB-Devices auflisten lässt. Nun kann man sehen welchem USB-Port welches Device zugeordnet wurde und wie es heisst. Die Ausgabe sieht so aus:

lrwxrwxrwx 1 root root 15 Mai 24 14:31 usb-FTDI_FT232R_USB_UART_A8H4EBA3-if00-port0 -> ../../ttyUSB0

Jetzt kann statt  /dev/ttyUSB0 in FHEM die Zuordnung mit /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A8H4EBA3-if00-port0 gemacht werden:

define JLLaCrosse JeeLink /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A8H4EBA3-if00-port0@57600

Nun wird das Device immer richtig erkannt und zugeordnet, egal auf welchem USB-Port es eingesteckt wurde.




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

Ende der Seite, ab hier nicht mehr in meiner Verantwortung 😦

LaCrosse (Proficell/TFA-Dostmann/TechnoLine) Temperatursensoren an FHEM anlernen

Zusammenfassung (der langen Version weiter unten):

Den JeeLink mit der richtigen Firmware in den RaspberryPi stecken.

In der FHEM-Kommandozeile FHEM vorbereiten und den JeeLink anlernen (Jeweils die einzelnen Zeilen mit [ENTER] bestätigen):

attr global autoload_undefined_devices 1

define autocreate autocreate

attr autocreate autosave 1

attr autocreate filelog ./log/%NAME-%Y.log

define JLLaCrosse JeeLink /dev/ttyUSB0@57600

attr JLLaCrosse flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]

attr JLLaCrosse initCommands 7m 30t v

attr JLLaCrosse icon cul

attr JLLaCrosse verbose 2

das ganze mit klick auf „Save config“ abschliessen. FHEM mit „shutdown restart“ neu starten und dann noch

set JLLaCrosse LaCrossePairForSec 120 ignore_battery

abgeben um alle verfügbaren Sensoren zu finden. Links im Menü taucht dann ein neuer Menüpunkt LaCrosse auf. Dort den Namen der Sensoren herausfinden und mit:

attr LaCrosseSensorName event-min-interval state:600,battery:3600,temperature:300,humidity:300

attr LaCrosseSensorName event-on-change-reading state

attr LaCrosseSensorName event-on-update-reading .*

das zumüllen des Log verhindern. LaCrosse (Proficell/TFA-Dostmann/TechnoLine) Temperatursensoren an FHEM anlernen weiterlesen

FHEM auf dem RaspberryPi installieren

Voraussetzung: Der RaspberryPi ist wie im Artikel RaspberryPi einrichten beschrieben betriebsbereit gemacht.

Per SSH-Client (z.B. Kitty) auf dem RaspberyPi einloggen und folgende Befehle ausführen:

sudo apt-get update
sudo apt-get -y install perl-base libdevice-serialport-perl libwww-perl libio-socket-ssl-perl libcgi-pm-perl libjson-perl sqlite3 libdbd-sqlite3-perl libtext-diff-perl libtimedate-perl libmail-imapclient-perl libgd-graph-perl libtext-csv-perl libxml-simple-perl liblist-moreutils-perl ttf-liberation libimage-librsvg-perl libgd-text-perl libsocket6-perl libio-socket-inet6-perl libmime-base64-perl libimage-info-perl libusb-1.0-0-dev libnet-server-perl
sudo apt-get -y install apt-transport-https ntpdate socat libnet-telnet-perl libcrypt-rijndael-perl libdatetime-format-strptime-perl libsoap-lite-perl libjson-xs-perl libxml-simple-perl libdigest-md5-perl libdigest-md5-file-perl liblwp-protocol-https-perl liblwp-protocol-http-socketunix-perl libio-socket-multicast-perl libcrypt-cbc-perl libcrypt-ecb-perl 
sudo ntpdate -u de.pool.ntp.org 
sudo cpan Crypt::Cipher::AES
sudo cpan Crypt::ECB
sudo wget http://fhem.de/fhem-5.8.deb && sudo dpkg -i fhem-5.8.deb

Wenn es bereits eine neuere Version von FHEM gibt, kann der Befehl verändert werden. Die Versionsnummer 5.8 muss dann jeweils mit der aktuellen Versionsnummer ersetzt werden. Die aktuelle Version steht unter http://fhem.de/fhem_DE.html

sudo apt-get install -f
sudo cp /opt/fhem/contrib/init-scripts/fhem.3 /etc/init.d/fhem && sudo chmod a+x /etc/init.d/fhem && sudo update-rc.d fhem defaults

Dann den RaspberryPi einmal neustarten:

sudo shutdown -r now

Dann bei FHEM das erste Mal einloggen:
Einfach im Browser (Firefox &Co.) in die Adresszeile die IP-Adresse des RaspberryPi und den Port 8083 durch einen Doppelpunkt getrennt eingeben. Dies sieht dann z.B. so aus:

http://192.168.178.35:8083

Dann öffnet sich die Weboberfläche des FHEM.

Als erstes sollte FHEM auf den aktuellen stand gebracht werden. Dies geschieht, indem man in die Befehlszeile (leeres Feld oben)  den Befehl

update

eingibt und mit |ENTER| bestätigt (dann warten). FHEM aktualisiert sich und wird danach mit dem Befehl

shutdown restart

neu gestartet.

FHEM auf dem RaspberryPi installieren weiterlesen

RaspberryPi einrichten

Da ich bei meinem ersten RaspberryPi auch erstmal vor dem Problem stand: „Wie geht das nun? Wie nehme ich das RaspberryPi in Betrieb?“

Ich habe für mein FHEM Projekt das Betriebsystem Raspbian ausgewählt, und dann die Grafische Oberfläche entfernt, da ich diese nicht benötige.

So setzt man den RasPi auf:

  1. Raspbian lite Image herunterladen https://www.raspberrypi.org/downloads/raspbian/ das Raspbian lite Image  herunterladen und entpacken.
    (Wer einen Desktop benötigt kann auch die „normale“ Version herunterladen, aber das wird bei den meisten Projekten eher nicht benötigt)
  2. Win32DiskImager herunterladen http://sourceforge.net/projects/win32diskimager/files/latest/download und installieren.
  3. Kitty (ein SSH-Client für das Remoten des RaspberryPi ) herunterladen (z.B. von http://filehippo.com/download_kitty/ ) und installieren.
    Homepage: http://www.9bis.net/kitty/?page=Welcome&zone=en)
  4. SD-Karte in den PC einstecken und den Win32DiskImager starten. Raspbianimage (.img) und SD-Karte auswählen (z.B. F:/ wird automatisch ausgewählt, wenn keine anderen Wechseldatenträger angeschlossen sind. Wenn man sich nicht sicher ist, einfach im Explorer den Laufwerksbuchstaben überprüfen!) Den Write-Button drücken und warten.
  5. Die so erstellte SD-Karte in den RaspberryPi schieben, das Netzwerkkabel anschließen und dann die Stromversorgung anschließen – dann kurz warten.
  6. Seit 2016 muss man sich nun per Tastatur & Monitor auf dem Raspberry einloggen. Dann kann dort SSH eingeschaltet werden.
  7.  Die IP-Adresse des RaspberryPi herausfinden. Entweder man schaut einfach auf eurem Router nach welche Adresse der RaspberryPi bekommen hat, oder in der Commandline eintippen:
    hostname -I
  8. Per Kitty auf dem RaspberryPi einloggen:
    Benutzername: pi
    Passwort: Raspberry
    (Wenn es beim Login Probleme geben sollte, könnte es am Englischen Tastaturlayout liegen. Einfach bei Login y und z mal vertauschen.)
  9. Die Raspberry Grundkonfiguration vornehmen:
    sudo raspi-config

    eingeben und mit der [Enter]-Taste bestätigen. Folgende Aktionen durchführen:

    + Expand Filesystem
    + Password ändern (auf ein beliebiges, aber gut merken ;-))
    + Internationalisation Options
    – Change Locale (de_DE.UTF-8) (2x ändern)
    – Change Timezone (-> Europe -> Berlin)
    – Change Keyboard Layout
    + Overclock (Modest)
    + Advanced Options/Hostname /Memory Split (z.B. 16MB Grafik für FHEM oder 320MB für KODI & RetroPi )

    und mit EXIT das ganze verlassen. Man kann mit den Pfeiltasten durch das Menü navigieren.

  10. SSH Host Schlüssel neu generieren
    sudo rm /etc/ssh/ssh_host_*
    sudo dpkg-reconfigure openssh-server
  11. Reboot
    sudo reboot

    eingeben und den RaspberryPi neu starten lassen. Kurz warten und dann wieder per Kitty auf dem RaspberryPi einloggen.

  12. Raspbian aktualisieren:
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt -y autoclean

Optional:  RaspberryPi Firmware auf testingkernel aktualisieren:

sudo apt install rpi-update
sudo rpi-update

14. Reboot

sudo shutdown -r now

eingeben und den RaspberryPi neu starten lassen.

Das war es schon, der RaspberryPi ist für den ersten Einsatz bereit. Nun kann es weiter gehen mit der Installation von Software.


Quellen:

 

 


Tipps & Hinweise:

Den RaspberryPi kann man mit dem Befehl:

sudo shutdown -h now

herunterfahren und ausschalten. Einen Neustart kann man mit

sudo shutdown -r now

auslösen. Den Raspi kann man mit den Befehlen

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update

(immer gefolgt von den entsprechenden <ENTER> und <Y> oder <J> eingaben) aktualisieren.

Und mit

sudo rpi-update
die Firmware aktualisieren

Die maximale Stromstärke die die USB-Ports am Raspberry Pi liefern kann man mit dem Eintrag:

max_usb_current=1

am Ende der config.txt Datei von 600mA auf 1200mA verdoppeln. Das ganze bringt natürlich nur etwas, wenn das Netzteil des RaspberryPi auch stark genug ist.

Den Regenbogen-Splashscreen beim booten kann man mit dem Eintrag

disable_splash=1

in der config.txt deaktivieren.

Um die SD-Karte zu schonen können die Logdateien von Linux in den RAM ausgelagert werden (Dann sind Sie nach einem Neustart aber weg!):

sudo nano /etc/fstab

den fstab öffnen und die Zeilen:

none /var/run tmpfs size=5M,noatime 00

none /var/log tmpfs size=5M,noatime 00
hinzufügen

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ende