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.


Lange Version:

Zuerst muss ein JeeLink oder ein selbstgebauter JeeLink Clone wie hier beschrieben mit der entsprechenden Firmware geflasht werden.

JeeLink in den RaspberryPi stecken

Mit Kitty auf den RaspberryPi gehen und mit dem Befehl

ls -l /dev/serial/by-id

herausfinden ob der JeeLink erkannt wurde, welchem USB-Port er zugeordnet wurde und wie er heisst. Die Ausgabe sieht so aus:

lrwxrwxrwx 1 root root 13 Mai 23 13:26 usb-FTDI_FT232R_USB_UART_A8H4EBA3-if00-port0 -> ../../ttyUSB0

Falls der JeeLink nicht erkannt wurde, kann es sein, dass man mit dem Befehl

sudo mknod /dev/ttyUSB0 c 188 0

erst den USB-Port am RaspberryPi im Linux noch aktivieren muss.

Dann per Weboberfläche/Browser in FHEM einloggen und evtl. FHEM erst einmal updaten. Dies macht man, indem man oben in die FHEM-Kommandozeile oben direkt neben dem FHEM Logo

FHEM-Kommandozeile

update

eintippt und mit der [ ENTER ] – Taste bestätigt. FHEM startet daraufhin seine Updateprozedur. Nach einer Gedenkpause (kann schon mal etwas länger dauern) nach der Zeile

Global global Calling /usr/bin/perl ./contrib/commandref_join.pl, this may take a while

ist das Update fertig und meldet:

Global global update finished, „shutdown restart“ is needed to activate the changes.

und man muss FHEM mit dem Befehl

shutdown restart

gefolgt von der [ ENTER ] – Taste in der FHEM-Kommandozeile neu starten.

Dann sollte für automatische Einträge in FHEM Autocreate eingeschaltet werden. Autocreate wird per Befehl in der FHEM-Kommandozeile aktiviert:

attr global autoload_undefined_devices 1

define autocreate autocreate

attr autocreate autosave 1

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

jeweils mit  [ ENTER ] bestätigen. und mit klick auf „Save config“ links im Menü wird die Konfigurationsänderung dauerhaft gespeichert. Der JeeLink wird nun mit

define JLLaCrosse JeeLink /dev/ttyUSB0@57600

in der FHEM-Kommandozeile angelegt. Die Zahl in ttyUSB0 ist abhängig davon, was vorher bei der Abfrage mit ls -l /dev/serial/by-id (s.o.) angezeigt wurde. Je Nachdem kann es auch sein, das man den JeeLink mit ttyUSB1@57600 oder ttyUSB2@… definieren muss. „JLLaCrosse“ ist der eindeutige Name für Euren JeeLink in FHEM und kann frei gewählt werden.

Wie man den JeeLink eleganter und ausfallsicherer in FHEM einbindet wird hier beschrieben.

Jetzt den JeeLink im FHEM noch mit ein paar wichtigen Attributen für die Zukunft versorgen:

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 erste ist für zukünftige Firmware Flash Vorgänge direkt aus FHEM heraus (Vorher muss man noch mit sudo apt-get install avrdude die benötigten librarys in Linux installieren).
Das zweite Attribut stellt den JeeLink ein. Hier kann man mit Steuerungskommandos zwischen dem initCommands und dem v verschiedene Sachen einstellen:

(7m)
Kommando m: bestimmt, welche data rates der toggle mode verwendet.
m ist bit codiert so kann durch Addition der Wert eingestellt werden:
1: 17.241 kbps, 2: 9.579 kbps, 4: 8.842 kbps
Beispiele:
3m -> wechselt zwischen 17.241 kbps und 9.579 kbps
5m -> wechselt zwischen 17.241 kbps und 8.842 kbps
7m -> wechselt zwischen allen drei data rates

(30t)
Kommando t: bestimmt die Zeit zwischen denen die BaudRate von Kommando m gewechselt wird.
Beispiele:
15t -> wechselt alle 15 Sekunden die data rate
30t -> wechselt alle 30 Sekunden die data rate
120t -> wechselt alle 2 Minuten die data rate

(0a)
Kommando a: bestimmt ob die LEDs auf dem JeeLink an oder ausgeschaltet sein sollen. Mit 0 werden Sie ausgeschaltet.

Das dritte Attribut stellt ein Logo vor den JeeLink in FHEM

Das vierte Attribut legt das Log Level fest. Wenn man später Probleme beim Anlernen neuer Sensoren hat, kann zur Fehlersuche das Log Level auf 5 herauf gesetzt werden. Dann wird die komplette Ausgabe angezeigt.
Weitere Attribute kann man dem FHEM Forum entnehmen.

Jetzt die Konfiguration mit klick auf „Save config“ speichern und FHEM mit dem Befehl „shutdown restart“ in der FHEM Kommandozeile neu starten.

Jetzt können die Temperatursensoren durch einlegen der Batterien aktiviert werden. Die Sensoren sollten nach kurzer Zeit links im Menü unter dem neuen Menüpunkt LaCrosse auftauchen. Der Menüpunkt wird von FHEM automatisch angelegt, wenn der JeeLink Sensoren erkannt hat.

Falls sich nichts tut, kann der Anlernvorgang auch mit

set JLLaCrosse LaCrossePairForSec 120

manuell gestartet werden.

Wenn man die schon Sensoren betreibt und sie nicht automatisch gefunden werden und man die Batterien gerade nicht herausnehmen kann oder will, wird mit dem Befehl

set JLLaCrosse LaCrossePairForSec 120 ignore_battery

der BatterieNew Flag ignoriert und alle gefundenen Sensoren angelegt.

Da die LaCrosse Sensoren alle 4 Sekunden ihre Werte senden wird das Logfile sehr schnell sehr groß. Um dies zu verhindern sollte man das Loggen der Temperaturen ändern:

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 .*

Falls man später die Batterien wechseln muss und möchte, dass die Anzeige in FHEM und das LogFile weiter funktionieren wird vor dem Batterietausch der Befehl

set LaCrosseSensorName ReplaceBatterieForSec 60

abgesetzt. Dadurch wird die neue ID des Sensors automatisch in FHEM eingetragen und mit dem Sensor verknüpft. Der Hintergrund ist, dass die LaCrosse Sensoren nach jedem Batteriewechsel eine neue Zufalls-ID generieren unter der sie dann senden. um die richtige Zuordnung wieder herzustellen muss also FHEM wissen unter welcher ID der Sensor die Daten schickt. Mit dem Befehl sucht FHEM nach 60 Sekunden nach einer bisher unbekannten ID und ordnet diese dem Sensor zu, für den man den Befehl abgegeben hat.

 

Falls sich Fremd Sensoren vom Nachbar einschleichen und man diese nicht angezeigt bekommen möchte, können die Fremd-Sensoren mit dem Befehl

attr FremdSensorName ignore 1

ausgeblendet werden.

 

Um den Sensoren einen leichter zu merkenden Namen zu geben, können die erkannten Sensoren umbenannt werden. Dazu mit dem Befehl

rename LaCrosse_AlterSensorName NeuerSensorName

den Sensor umbenennen.

Und wie immer: Im Zweifel das ganze mit klick auf „Save config“ speichern.

 

 

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

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

Advertisements

12 Kommentare zu „LaCrosse (Proficell/TFA-Dostmann/TechnoLine) Temperatursensoren an FHEM anlernen“

  1. Habe einen kleinen Fehler gefunden. Bei Definieren des JeeLink fehlt ein E. Das führt dazu, dass er erst nochmal umgenannt werden muss, bevor die Attribute angelegt werden können bzw. die Attribut Definierung angepasst werden muss 😉

    Gefällt mir

  2. Weiterhin sollte noch erwähnt werden, dass wenn die Sensoren nicht gefunden werden der Befehle
    set JLLaCrosse LaCrossePairForSec 30
    helfen kann sie doch zu finden. So war es bei mir, ohne den Befehl wollte er sie nicht finden, wobei ich autocreate etc. nach Anleitung eingestellt habe.

    Gefällt mir

    1. Das sollte eigentlich mit dem im Text angegebenen Befehl:

      set JLLaCrosse LaCrossePairForSec 120 ignore_battery

      funktionieren. Dabei sucht FHEM auch nach Sensoren, die schon länger laufen und nicht das „Hallo ich bin neu hier“ (new Battery Flag) mitsenden.
      Aber der Tipp kann evtl. helfen, wenn es mit dem beschriebenen Befehl nicht funktioniert hat. Ich hab den Text entsprechend ergänzt.

      Gefällt mir

  3. Erst mal: sehr gute Anleitung!
    Mein FHEM habe ich neu aufgesetzt (5.8) u. den JeeLink mit 10.1q geflascht, jetzt werden mein TX29-IT und ein weiterer Temperatursensor (von meiner Wetterstation) nicht mehr erkannt.
    Schließe ich den JeeLink an meinem PC an und öffne in der Arduino Entwicklungsumgebung einen seriellen Monitor erhalte ich folgendes:
    OK 9 17 129 4 246 106
    OK 9 8 1 4 173 106
    Da werden doch die Daten von zwei Sensoren eingelesen!?!
    Hast Du eine Idee was ich machen / einstellen muss, damit FHEM die Sensoren wieder erkennt?

    Gruß
    Carpy

    Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s