Robins Blog – Technik und Multimedia

Fhem: Flashen von Jeelinks unter fhem

Update 30.12.2015: Es sind noch einige Jeelinks (komplett zusammengelötet und getestet) verfügbar! Beitrag über Jeelink für Temperatursensoren lesen!

Viele von Euch nutzen mittlerweile den Jeelink-Transceiver. Der Jeelink ist das Bindeglied zwischen einem Sensor / Aktor und der Hausautomations-Software Fhem. Die Firmware – also die Software für diesen Transceiver – wird fortlaufend von der Open-Source-Gemeinde erweitert. Mit erweitert versteht man hier die Möglichkeit, das der Jeelink mit noch mehr Sensoren in Kontakt kommen kann. Ebenfalls werden mit einem Flash-Update Fehler gefixt. Meinen Jeelink-Clone (-> siehe Blogbeitrag) benutze ich für die Messung von Temperaturen im ganzen Haus. In einem weiteren Blog-Beitrag zeige ich Euch auch, wie man ihn auch als Transceiver für Füllstandsmessungen, Distanzmessungen usw. benutzen kann.

Bei der Aktualisierung der Software für den Jeelink-(Clone) kann unter verschiedenen Möglichkeiten wählen. Entweder mit dem Arduino-Entwicklungsumgebung mit einem PC oder Mac oder auch unter Fhem.

Da in letzter Zeit Probleme mit den Jeelinks-Clones (genauer dem USART-Chip FTDI) aufgetreten sind, zeige ich Euch hier mal die Möglichkeit, neue Software direkt am Herzen – also bei Fhem selber – direkt zu flashen.

Die Zutaten:

Los gehts:

Zunächst sollte mein mit Update Fhem auf dem neuesten Stand bringen. Die Flash-Funktionalität existiert erst seit einigen Monaten. Nicht jeder aktualisiert die Fhem-Software ständig, frei nach dem Motto: Never touch a running System. Bei der Gelegenheit sollte man, wenn man viel bastelt, doch lieber eine Testumgebung mit einem zweiten Raspberry Pi aufbauen. Das ist nicht teuer, schont die Nerven und gibt ein sicheres Gefühl. Backups sollten zumindest einmal im Monat durchgeführt werden. Damit meine ich auch ein Backup des SD-Images.

Nach dem Update geht man auf die Konsole und installiert mit

apt-get install avrdude

die benötigte Software zum Flashen. Nach einer gefühlten halben Stunde (unter Raspberry Pi) kann man sie benutzen.

Die avrdude-Software ist die Flashing-Software für den Arduino Nano.

Anschließend geht man in die Eigenschaften des Jeelink-Moduls.

 

Um nun die neueste Software für Lacrosse-Temperatursensoren zu flashen, wählt man oben das Dropdown-Menü flash an und tippt in dem nebenstehenden Textfeld LaCrosse (siehe Foto) ein. Hier ist auf Groß-und Kleinschreibung zu achten. Anschließend auf Set klicken. Es erfolgt bei angeschlossenem Jeelink der Flashvorgang. Standardmäßig würde ich alle anderen am USB-Port vorhandenen Transceiver und Devices vorher entfernen um ein unkontrolliertes Flashen eines falschen Bausteins zu vermeiden. Für ein Update bei PCA 301 Steckdosen (derzeitig nur für die original Jeelinks möglich, Steckdosen gibt es unter anderem bei amazon.de: PCA301 Steckdosen) gibt man PCA301 ein. Um es nochmal klarzustellen: Wer beide Sensoren  / Aktoren besitzt, also Lacrosse-Temperatur-Sensoren und PCA301 Steckdosen muss sich zwei Jeelinks-Clones besorgen!

Im Logfile unter Fhem sieht man nun das Ergebnis des Flash-Vorgangs.

flashing JeeLink jeelinkcross
detected Firmware: LaCrosse
hex file: ./FHEM/firmware/JeeLink_LaCrosse.hex
port: /dev/ttyUSB0
log file: ./log/JeeLinkFlash.log
jeelinkcross closed
command: avrdude -p atmega328P -c arduino -b 57600 -P /dev/ttyUSB0 -D -U flash:w:./FHEM/firmware/JeeLink_LaCrosse.hex 2>./log/JeeLinkFlash.log

--- AVRDUDE ---------------------------------------------------------------------------------

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f
avrdude: reading input file „./FHEM/firmware/JeeLink_LaCrosse.hex“
avrdude: input file ./FHEM/firmware/JeeLink_LaCrosse.hex auto detected as Intel Hex
avrdude: writing flash (16676 bytes):

Writing | ################################################## | 100% 5.42s

avrdude: 16676 bytes of flash written
avrdude: verifying flash memory against ./FHEM/firmware/JeeLink_LaCrosse.hex:
avrdude: load data flash data from input file ./FHEM/firmware/JeeLink_LaCrosse.hex:
avrdude: input file ./FHEM/firmware/JeeLink_LaCrosse.hex auto detected as Intel Hex
avrdude: input file ./FHEM/firmware/JeeLink_LaCrosse.hex contains 16676 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 4.23s

avrdude: verifying …
avrdude: 16676 bytes of flash verified

avrdude done. Thank you.

— AVRDUDE ———————————————————————————

jeelinkcross opened

Blog-Leser berichteten mir aber, das bei den Standard-Einstellungen der Flash Vorgang nicht funktioniert.

Die Fehlermeldung sieht dann so aus:

avrdude: stk500_getsync(): not in sync: resp=0xfe

Hier dann die Attribut-Zeile mit folgende Parameter bearbeiten,

avrdude -p atmega328P -c arduino -b 57600 -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]

auf attr klicken, dann oben in dem Textfeld save eintippen und nochmals versuchen.
Nach erfolgtem Flash-Vorgang ist der Jeelink sofort wieder betriebsbereit. Mit der Methode hat man immer eine aktuelle Jeelink-Version und man braucht sich nicht um irgendwelche Treiberinstallation von FTDI, CH240 etc zu kümmern. Wenn man einen CH240 auf seinem kompatiblen Arduino-Nano hat, kann sich vielleicht diesen Beitrag über die Installation von CH240 für den Mac mal von mir durchlesen.

Wer noch einen Jeelink-Clone benötigt oder einen Arduino Nano kann mich kurz anschreiben (->Impressum).

Wer kein Fhem zur Verfügung hat, kann natürlich auch von der Konsole flashen, über Putty einloggen und folgendes eingeben:

sudo avrdude -p atmega328P -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:/opt/fhem/FHEM/firmware/JeeLink_LaCrosse.hex 2>/opt/fehm/log/JeeLinkFlash.log

Die Quellen zu den Dateien stehen hier: http://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/

 

Die mobile Version verlassen