LaCrosseGateway V1.x

Aus FHEMWiki
Version vom 18. Januar 2017, 19:51 Uhr von Mahowi (Diskussion | Beiträge) (→‎Unterstützte Sensoren und Aktoren: Verweis auf die Liste der vom JeeLink unterstützen Sensoren und Aktoren, so daß die Liste nicht doppelt geführt werden muß)

Diese Wiki-Seite beschreibt ausschließlich das LaCrosseGateway V1.x, das auf dem ESP8266 basiert.

Für das LaCrosseGateway32 das auf dem ESP32 basiert, wird es eine eigene Seite geben.

Info green.pngDokumentationsstand Version 1.25


Das LaCrosseGateway (hier und im Forum auch mit LGW abgekürzt) erfüllt den gleichen Zweck wie ein JeeLink USB-Stick und zwar das Empfangen, Abfragen und Steuern von funkbasierten LaCrosse Sensoren und Aktoren, die im 868 MHz FSK Sendeverfahren arbeiten (OOK-Sendeverfahren (433 Mhz) wird nicht unterstützt). Die Verarbeitung der Daten und Steuerung der Aktoren erfolgt mithilfe von FHEM, das als zentrale Steuereinheit dient. Der signifikante Unterschied zu einem JeeLink USB-Stick ist der Betrieb über Wireless LAN (WiFi). Das Herzstück des LaCrosse-Gateways besteht aus einem ESP8266-12E/F. Das LaCrosseGateway ist aufgrund des hohen Stromverbrauchs nicht für den Akkubetrieb geeignet.

Der Einsatz eines WiFi-LaCrosse-Gateways bietet folgende Vorteile:

  • Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, dafür ist nur Strom (5V/1A USB Netzteil) und WiFi Access Point erforderlich
  • Im Minimalausbau nur zwei Bauteile NodeMCU DEVKIT 1.0 + RFM69 (siehe Bauteile) nötig
  • Alternativ am USB-Port wie ein JeeLink verwendbar
  • Einsatz von on board Sensoren / Aktoren (siehe Unterstützte Sensoren und Aktoren) möglich

Hinweis: Die Anbindung in FHEM kann zwar noch mit dem JeeLink-Modul erfolgen, aber es ist sinnvoll, auf das LaCrosseGateway-Modul (36_LaCrosseGateway.pm) umzustellen, da dieses eine bessere Unterstützung für die Funktionen des LGW bietet.

Hardware

Bauteile

Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:

  • [Option 1] ESP8266 ESP-12E Modul.
    Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.
    Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an ein USB2Serial-Adapter, angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich.
  • [Option 2] NodeMCU DEVKIT 1.0 (oder 2.0)ist die Inbetriebnahme einfacher, da alles für das Aufbringen der Firmware bereits vorhanden ist und kein Löten nötig ist.
    Hinweis: Folgende Devkits werden nicht "offiziel" unterstützt, da ungetestet, können aber durchaus in bestimmten Fällen verwendet werden:
    • V0.9 (da ungetestet, bekommt man aber kaum noch zu kaufen)
    • V3.0 - passt nicht auf die Platine von PeMue, ist größer als das 2.0. Auf der Rückseite steht "Lolin".
    • Devkits mit einem CH340 USB converter (da ungetestet und teils falsche Bauform und von der USB-Anbindung her teils problematisch)
  • [Option 3] Alternativ zu einem Devkit 1.0 kann auch ein "WeMOS D1 mini" eingesetzt werden. Vorteil bei diesem Kit ist die kleine Bauform bei gleichem Funktionsumfang wie das DEVKIT 1.0.
  • [Option 4] ESP8266-07 auf einem DEVKIT 1.0. für den Betrieb mit einer externen Wifi Antenne.
    • Hinweis: Der ESP-07 hat einen 25Q80 1M flash Chip. Dieser ist für den Betrieb mit der LaCrosseGateway Firmware geeignet, für ein OTA-Update ist es jedoch zu wenig. Aus diesem Grund muss/kann dieser auf 4M flash umgebaut werden. Weitere Informationen und Details zum Umbau sind im Forenthread (Gehäuse-Variante) beschrieben.
  • [Optional] RFM69CW - Für das Senden und Emfangen funkbasierte LaCrosse Aktoren und Sensoren
  • [Optional] On board Sensoren (siehe Unterstützte Sensoren und Aktoren)
  • [Optional] SC16IS750 Zur Bereitstellung der seriellen Schnittstelle, da die GPIOs (GPIO1 / GPIO3) DEVKIT's V1.0 von FTDI verwendet werden und damit nicht genutzt werden können.
  • [Optional] OLED-Display SSD1306 I2C zur Darstellung von Daten (Bootvorgang, on board Sensoren, Inhalte aus FHEM)
  • [Optional] MCP23008 zur Bereitstellung (Konfigurierbar) von digitalen 8 Ein- Ausgängen oder Sonderfunktion (OLED)
  • Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.)) / PeMue Platine

Schaltung

Variante: Devkit 1.0

Datei:Lgw Schaltplan Devkit.png
Variante: Devkit 1.0

Variante: ESP8266-12E

Variante: Platine (PeMue)

Datei:Lgw Schaltplan Platine.png
Variante: Platine (PeMue)

Addon Schaltung

Datei:Lgw Addon-with-example.png
Die Schaltung des kompletten AddOn mit allen aktuell möglichen Optionen

Siehe Erweiterungsmöglichkeiten.

MCP2308

I2C Adresse 0x27 -> A0,A1,A2 = 3.3V

             
               |-------\/-------|
    LGW D1     |1 SCL     VDD 18|  LGW 3.3V 
    LGW D2     |2 SDA     GP7 17|  PB7   --/ --- GND  or Output
    LGW 3.3V   |3 A2      GP6 16|  PB6   --/ --- GND  or Output
    LGW 3.3V   |4 A1      GP5 15|  PB5   --/ --- GND  or Output
    LGW 3.3V   |5 A0      GP4 14|  PB4   --/ --- GND  or Output
    LGW 3.3V   |6 RES     GP3 13|  PB3   --/ --- GND  or Output
               |7 NC      GP2 12|  PB2   --/ --- GND  or Output
               |8 INT     GP1 11|  PB1   --/ --- GND  or Output
    LGW GND    |9 VSS     GP0 10|  PB0   --/ --- GND  or Output
               |----------------|

Aufbau auf einem Steckbrett

LaCrosseGateway Aufbau auf einem Steckbrett

Hinweis: Der Sender und Empfänger RFM12, der auf dem Steckbrett zu sehen ist, wird nicht mehr unterstützt.

Platine

PeMue (vielen Dank) hat hier eine Platine (7,1cm x 5,0cm) für das LaCrosseGateway entworfen (Stand 05.2016).

Oberseite

LaCrosseGateway Platine Oberseite

Unterseite

LaCrosseGateway Platine Unterseite

Devkit 1.0 bestückt Oberseite

LaCrosseGateway Platine Oberseite

Devkit 1.0 bestückt Unterseite

LaCrosseGateway Platine Unterseite

ESP8266-12E bestückt Oberseite

(1) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 und DHT22
(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280
(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 inkl. Gehäuse

Hinweis: Die Platine (Bild (1)) ist mit einem LM75 Sensor bestückt. Diese Bestückung macht zusammen mit einem BME280 keinen Sinn, es handelt sich hierbei um eine Entwicklungsplatine.

ESP8266-12E bestückt Unterseite

(1) LaCrosseGateway Platine Unterseite
(2) LaCrosseGateway Platine Unterseite mit 2 x RFM69CW, BME280

Platine bestücken (Hinweise und Tipps)

  • Auf der Platine (Version 1.0) ist für das RFM69CW-Modul eine Markierung (zwei Quadrate) aufgedruckt, die den Chip und den Quarz symbolisieren. Wenn man den RFM69CW so drauflötet, wie abgebildet, ist er falsch rum drauf.
    Es muss darauf geachtet werden, wo auf dem RFM69CW die "Ant" Beschriftung steht, dieser Lötpunkt muss auf die Platine an den Punkt "1" ausgerichtet werden. Zur Sicherheit bitte den Schaltplan konsultieren und die genaue Position ermitteln.
  • Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrähtigen Leiter (aus Kupfer) verwenden.

Erweiterungsmöglichkeiten

Das LaCrosseGateway kann optional mit verschiedenen Komponenten erweitert werden.

Folgende Erweiterungen sind möglich:

  • es kann ein eigener Prozessor (mit eigener Firmware) angeschlossen werden, der Daten empfängt und diese dem LGW übergibt.
  • es kann z.B. ein NanoCUL angeschlossen werden, dessen serielle Schnittstelle transparent auf einem Port im Web bereitgestellt wird.
  • es kann ein vierter und fünfter RFM69CW angeschlossen werden, diese können alles, was die bisherigen drei auch können.
  • es kann ein aktiver Piezo Summer (Piezo Buzzer) angeschlossen (an GPIO7 des SC16IS750) werden, um von FHEM aus das LaCrosseGateway einen Alarm ausgeben zu lassen. Hinweis: Falls der Strom von 10mA, den die Ausgänge liefern, nicht reicht, ist noch eine Transistor-Schaltstufe vorzusehen.

Alle diese Daten stellt das LaCrosseGateway per WiFi an FHEM zu, dort wird es von den entsprechenden Modulen (LaCrosseGateway, LaCrosse, PCA301, ...) weiterverarbeitet.

Alle Komponenten werden automatisch erkannt, sofern angeschlossen. Für die Realisierung der o.g Möglichkeiten wird ein SC16IS750 verwendet.

Der SC16IS750 wird per I2C an das LaCrosseGateway angeschlossen und bietet eine serielle Schnittstelle und 8 Digital I/Os


Auf dieser Basis sind momentan folgende Erweiterungen möglich:

SubProzessor

Der SubProzessor dient dazu, dass mit einem eigenen Sketch Daten erfasst werden können, ohne sich um die ganze Nummer, die das LGW macht (WiFi, Kommunikation mit FHEM, Frontend, OTA, ...), kümmern zu müssen. Ferner ermöglicht es die Implementierung von eigenen Projekten, dabei werden die zeitkritischen Abläufe des LGWs nicht beeinträchtig.

An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini) Entweder ein 3.3V / 8MHz oder ein 5V / 16MHz, der aber dann auch mit 3.3V betrieben wird.

Wichtig: Alle LaCrosseGateway Komponenten laufen ausschließlich mit 3.3V, aus diesem Grund dürfen keine 5V Komponenten angeschlossen werden.

Firmware flashen

Die Firmware kann über das LGW auf den SubProzessor (Voraussetzung: Arduino hat einen bootloader) geflasht werden.

Dazu wird sie auf das LGW hochgeladen (http://<LGW-IP>/ota/addon.hex).

Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.

Falls ein OLED angeschlossen ist, wird sogar ein progress angezeigt.

Vorgehen Firmware flashen

Die Firmware kann z.B. mithilfe von "curl" mit dem nachfolgendem Befehl hochgeladen werden:

curl --http1.0 -H "Content_Type:multipart/form-data" -F "file=@/myFolder/LGW-Addon.ino.hex; filename=addon.hex" http://192.168.31.211/ota/addon.hex

Hinweis: fielname=addon.hex im Beispiel darf nicht verändert werden, nur /myFolder/LGW-Addon.ino.hex und die IP-Adresse wird entsprechend angepasst.

Der Upload dauert etwas, danach sollte bei Erfolg vom LGW ein Protokoll zurückgeschickt bekommen, der wie folgt aussieht:

Start receiving 'addon.hex'
File: /addon.hex Size: 21417
Starting flash
Sending sync
Enter program mode
Binary size is:7608
Leave Program Mode
Flash finished

Mit dem SubProzessor können die entsprechenden Daten auf zwei mögliche Arten am LGW übermittelt werden:

KeyValueProtokoll (KVP):

Format:

KV <Type> <Address> <Key>=<Value>,<Key>=<Value>,<Key>=<Value>, ...

Beispiel:

KV DHT 01 Temperature=21.5,Humidity=62

Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.

LaCrosse:

Format:

LC <Address> T=<Temperature>,H=<Humidity>

Beispiel:

LC 9F T=21.5,H=62
LC 9F T=21.5

Das LGW setzt die Werte in das LaCrosse Protokoll um (wie z.B. ein TX29DTH) und schickt sie an FHEM. In FHEM entsteht ein LaCrosse Device (autocreate, LaCrossePairForSec ...), als ob es ein LaCrosse Sensor wäre.

Das LGW-Addon.ino ist ein einfaches Beispiel, das diese Technik veranschaulicht. Es bindet den geliebten DHT22 an und sendet ihn als LaCrosse-Sensor (über das LGW) an FHEM und es misst die Spannung und sendet sie zusammen mit der UpTime des SubProzessors als KVP

Der umrandete Bereich Schaltung - "Example" "Example" ist das zu LGW-Addon.ino passende Beispiel.

Unterstützte Sensoren und Aktoren

Alle Sensoren und Aktoren, die auch vom "LaCrosse Arduino" Sketch unterstützt werden.
(siehe vom JeeLink unterstützte LaCrosse Sensoren und Aktoren)

Zusätzlich zu LaCrosse werden auch die folgenden Geräte unterstützt:

Bezeichnung Datenrate Sonstiges Funktion Hinweise
PCA301 868950 kHz (868,970 und 868,990 ) 6.631 kbps extern Energiemess-Steckdose (Unterstützt werden bis zu 50 Dosen)
EC3000 868.300 kHz mit 20.000 kbps extern Energiemess-Steckdose (funktioniert nur mit RFM69, nicht mit RFM12)
RFM69CW on board Zum Empfangen und Senden von Sensor/Aktor Daten. Hinweise DHT22 beachten.
BME280 on board Temperatur, Feuchte und Druck Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.
BMP180 on board Temperatur und Druck Falls das verwendete Breakout bereits PullUp-Widerstände für SDA und SCL enthält, sind diese nicht mehr zusätzlich nötig.
LM75 on board Temperatur
DHT22 on board Temperatur und Feuchte. Kann anstatt RFM69 Radio#3 eingesetzt werden.
SC16IS750 I2C Adresse: 0x90 on board OI Erweiterung
OLED SSD1306 I2C Adresse: 0x3C on board OLED Display
MCP23008 I2C Adresse: 0x27 on board Input/Output Port Expander
Piezo Summer on board Piezo Buzzer


Alle direkt am LGW anschließbare Sensoren werden automatisch erkannt, wenn sie vorhanden sind.

Sie werden in folgender Reihenfolge verwendet:

Wenn ein BME280 vorhanden ist, wird dieser verwendet und sonst nichts, da man dann bereits Temperatur, Feuchte und Druck hat.

Ist kein BME280 vorhanden, wird geschaut, ob ein BMP180 vorhanden ist. Falls ja, haben wir Druck und Temperatur.

Dann wird geschaut, ob ein DHT22 vorhanden ist. Wenn ja, wird er zusätzlich verwendet, aber vom BMP180 dann nur noch der Druck.

Temperatur und Feuchte vom DHT22, dass dieses Wertepaar von einem Sensor stammt.

Wenn kein BMP180 und kein BME180 da ist, sondern nur ein DHT22, dann hat man Temperatur und Feuchte.

Wenn nichts vorhanden ist (also keiner der bisher genannten Sensoren), wird, falls vorhanden, der LM75 verwendet.

Software

Funktionsumfang

  • Access Point für die Konfiguration
  • Konfiguration über WEB-Frontend (Erreichbar per http://IP-Adresse oder Hostname/setup auf Port 80 )
    • SSID und Password (Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.)
    • Statische IP-Adresse anstatt DHCP
    • Hostname
  • Vom LaCrosseGateway FHEM-Modul über IP-Adresse:Port oder Hostname:Port ansprechbar. Der Port ist konfigurierbar.
  • Unterstützt bis zu 5 x RFM69CW (Keine Unterstützung für RFM12)
  • On board und externe Sensoren und Aktoren (Unterstützte Sensoren und Aktoren)
  • Betrieb nur per USB möglich, als ob es ein JeeLink wäre
  • FHEM Anbindung
  • Log im Web-Frontend
  • Firmware OTA-Update (Firmware-Over-the-Air-Update per FHEM)
  • Erweiterungsmöglichkeiten per SC16IS750 (Für Buzzer und für weitere zwei RFM69)
  • SubProzessor (An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini))
  • Serial bridge (Optional kann die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitgestellt werden)

Sourcecode

Der Quellcode des LaCrosse Gateways befindet sich im FHEM SVN Repository (contrib).

Firmware Download

Die Firmware befindet sich im FHEM SVN Repository und wird per FHEM Update verteilt. Neue Version der Firmware wird im FHEM Forum "LaCrosse Gateway" angekündigt und der Funktionsumfang bzw. die Änderungen beschrieben.

Nach einem FEHM-Update alternativ auch: <FHEM-Installations-Verzeichnis>/FHEM/firmware/JeeLink_LaCrosseGateway.bin

Firmware aufspielen

Wie bei einem JeeLink muss auch für das LaCrosseGateway die Firmware aufgespielt werden.

Das NodeMCU DEVKIT 1.0 hat eine CP2102 UART Bridge implementiert, dafür muss ein CP2102 Treiber installiert sein.

Bei einem ESP8266-12E Modul kann die Firmware mithilfe eines Seriell-USB-Konverters aufgespielt werden.

Windows/Mac/Linux per "esptool"

Verifiziert und getestet wurde dieses Vorgehen auf Windows (Windows 10), Mac (El Capitan):

1) Das esptool 0.4.6 für die entsprechende Plattform herunterladen.

2) Zum Aufspielen der Firmware, muss ein Befehl nach der folgenden Syntax ausgeführt werden:

esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]

[Port] und [Pfad zur Firmware (bin-File)] müssen angepasst werden.

Beispiel (Mac/Linux):

esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin

Hinweis: Das esptool ist nicht sonderlich stabil. Es kommt vor, dass es manchmal den upload nicht startet oder nicht durchbekommt. In diesem Fall hilft es den Vorgang, auch mehrmals, zu wiederholen.

Windows per "nodemcu-flasher"

1) Espressif Flashtool downloaden und entpacken:

2) Firmware downloaden

3) FlashTool starten und wie folgt einstellen:

Firmware auswählen
Flash Parameter (Advanced Tab) wie abgebildet einstellen

4) COM-Port auswählen und den Flashvorgang starten (Button: Flash(F)) ...

COM Port auswählen und das "Flashen" initiieren

Nach dem Flashen sollte über die serielle Ausgabe des ESP der Start und das Öffen des AccessPoints zu sehen sein.

Hinweis: Die Geschwindigkeit von 921600 baud ist nicht auf jedem Rechner (besonders auf virtualisierten Systemen) machbar. In diesem Fall die Baudrate auf 57600 reduzieren.

Funktionsweise

Während des Startvorgangs versucht sich das LaCrosseGateway in einem WLAN anzumelden. Dazu muss es eine SSID und das entsprechende Passwort kennen.

Beim ersten Start (nach dem initialen Aufspielen der Firmware) sind diese Informationen noch unbekannt. Aus diesem Grund wird folgende Strategie verfolgt:

Wenn es sich in keinem WLAN anmelden kann, dann öffnet es einen Access Point mit der SSID "LaCrosseGateway_xxxxxx", wobei xxxxxx die eindeutige Chip-ID des ESP8266 ist.

Der Access Point wird aus Sicherheitsgründen nach 15 Minuten wieder geschlossen. Innerhalb dieser 15 Minuten kann man sich mit dem Access Point verbinden. Der Access Point vergibt (per DHCP) IP-Adressen aus dem Netzwerk 192.168.222.0. Anschließend kann über die LaCrosseGateway Konfigurationsseite http://192.168.222.1/setup die initiale Konfiguration vorgenommen werden. Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet. Die Konfigurationsseite ist auch im "Normalbetrieb" (ohne Access Point) über die Adresse http://seine aktuelle IP-Adresse/setup erreichbar.

Wenn sich das LaCrosseGateway an dem konfigurierten WLAN anmelden konnte (es wartet max. 30 Sekunden auf einen connect) und von diesem per DHCP eine IP-Adresse erhalten hat, dann stellt es auf dieser Adresse den Port 81 zur Verfügung, über den in FHEM das LaCrosseGateway Modul senden und empfangen kann.

Optische Darstellung der Initialisierung

Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisieren, was gerade passiert:

  • 5 schnelle blinks direkt nach dem Start, als Zeichen, dass ein Reset stattgefunden hat
  • Blinken im Sekundentakt, während versucht wird, sich mit einem WLAN zu verbinden.
  • LED aus, wenn der Connect zu einem WLAN geklappt hat und dann vereinzeltes Blinken, wenn Daten an FHEM übermittelt werden

LaCrosseGateway einrichten

Für die Ersteinrichtung des LaCrosseGateways werden die SSID und das Passwort des WLAN-Routers benötigt. Ferner wird empfohlen auf dem WLAN-Router bzw. dem DHCP-Server eine IP-Adresse für das LaCrosseGateway zu reservieren. Für die Reservierung wird die MAC-Adresse des LaCrosseGateways benötigt, diese kann über die "Home"-Page des LaCrosseGateways ermittelt, alternativ von dem NODEMCU Firmware Programmer (Reiter "Operation -> "STA MAC") entnommen werden.

Sofern diese Vorbereitungen getroffen wurden und alle Informationen vorliegen, kann das LaCrosseGateway eingerichtet werden.

Für die Konfiguration sind folgende Schritte nötig:

  • Mit dem LaCrosseGateway Access Point "LaCrosseGateway_xxxxxx" verbinden (siehe Beschreibung Funktionsweise)
  • Mithilfe eines Browsers die LaCrosseGateway "Setup"-Page öffnen
  • SSID und das Password eintragen. Man kann zwei SSID/Passwort-Kombinationen mit jeweils einem Timeout konfigurieren. 120 bedeutet z.B. dass das LGW 120 Sekunden lang versucht, die SSID zu erreichen. Falls die erste SSID nach "Timeout" Sekunden nicht erreicht wurde, wird Timeout Sekunden lang versucht, die zweite SSID zu connecten.
  • [Empfohlen] Das Frontend Passwort festlegen
  • [Optional] Falls kein DHCP-Server zur Verfügung steht bzw. keine Reservierung erwünscht ist, dann muss die IP-Adresse / Netmask (Optional auch Gateway) eingetragen werden
  • [Empfohlen] Hostnamen festlegen bzw. anpassen
  • Alle Angaben mit dem Button "save and restart" bestätigen. Dabei werden die vorgenommen Einstellungen im EEPROM gespeichert und ein Neustart des LaCrosseGateways initiiert.

Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router.

Anschließend kann mit der Inbetriebnahme in FHEM fortgefahren werden.

Firmware aktualisieren

Nachfolgend werden, neben der unter dem Punkt Firmware aufspielen beschriebenen Möglichkeiten, weitere Möglichkeiten zur Aktualisierung der LaCrosseGateway Firmware aufgezeigt.

Hinweis: Die Einstellungen des LaCrosseGateway werden dabei nicht gelöscht.

Per FHEM (OTA-Update)

Voraussetzungen:

  • Das LGW muss auf der IP-Adresse, die im LaCrosseGateway Modul definiert ist, erreichbar sein
  • Es wird kein avrdude benötigt
  • Das Attribut "flashCommand" spielt keine Rolle

Die LaCrosseGateway Firmware kann von LaCrosseGateway Device (LaCrosseGateway Modul) aus mit

set myLaCrosseGateway flash

aktualisiert werden.

myLaCrosseGateway muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.

Hinweis: Das Update dauert ca. 30 Sekunden.

Per CURL

Voraussetzungen:

Beispiel:

curl --http1.0 -# -o ~output.txt -H "Content_Type:multipart/form-data" -F "file=@.\JeeLink_LaCrosseGateway.bin; filename=firmware.bin" http://192.168.31.211/ota/firmware.bin

Firmwaredateiname (file=) und die IP-Adresse muss entsprechend angepasst werden.

Per WEB OTA-Update (deprecated)

deprecated

LaCrosseGateway Web-Frontend

Staus-Wert RSSI

Die WiFi Signalstärke (dBm) (-36 ist besser als -60)

Staus-Wert FramesPerMinute

Dieser gibt an, wie viele frames von Sensoren in der letzten Minute erfolgreich empfangen, dekodiert und verarbeitet wurden. Es eignet sich zur Überwachung, wenn weniger als ein Grenzwert empfangen wurde, dann kann ein Alarm (Benachrichtigung, Restart etc.) ausgelöst werden.

Staus-Wert ReceivedFrames

Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.

WiFi "Startup-delay"

Mit diesen Konfigurationsprameter kann eine Verzögerung (in Sekunden) definiert werden, bis das LGW nach einen Neustart einen ersten Verbindungsversuch zum WiFi Access Point (Router: Fritzbox etc.) startet.

Eine Anpassung kann für den folgenden Fall sinnvoll sein:

Nach einem Stromausfall benötigt ein WiFi Access Point (Router: Fritzbox etc.) in den meisten Fällen länger zum Starten als das LGW. In der default Einstellung führt das dazu, dass der LGW nach dem Starten versucht 30 Sekunden lang eine Verbindung zum AP herzustellen. Wenn keine Verbindung innerhalb dieser Zeit zustande kommt, dann gibt das LGW auf und macht seinen eigenen AP auf. Mit einer entsprechenden Verzögerung (Dauer bis der Router gestartet ist und der WiFi-AP zur Verfügung steht) kann sichergestellt werden, dass der AP gestartet ist und sich das LGW mit dem AP verbinden kann.

Internal Sensors "Sensor-ID"

Bei Einsatz von mehr als einem LaCrosseGateway, muss die LaCrosse-ID, mit der die internen Sensoren des Gateways übermittelt werden, angepasst werden. Hierbei ist darauf zu achten, dass die LaCrosse-ID nur einmal auf einer FHEM Instanz vorkommen darf. Die ID kann entweder Dezimal (211) oder Hex (0xD3) angegeben werden.

Detailinformationen: Wenn ein LGW interne Sensoren hat (BME280, BMP180, DHT22, ...) dann sendet es die Daten des Sensors so, als ob es eine Wetterstation wäre (WS 1600 Format) an das LGW. Bisher hat es dafür die Sensor-ID 0 verwendet. Wenn man mehrere LGWs an ein FHEM angebunden hat, dann mischen sich deren Sensor-Daten auf dem LaCrosse device mit der ID 0. Um das zu vermeiden, kann man nun konfigurieren, mit welcher Sensor-ID die internen Sensoren gesendet werden sollen und die beiden LGWs unterschiedliche konfigurieren.

Die Anpassung der LaCrosse-ID hat keinerlei Einfluss auf die Daten, die von den Radios empfangen werden.

Internal Sensors "Altitude"

Mit diesen Parameter kann die Höhe über NN konfiguriert werden.

Internal Sensors "Temperature-/Humidity-correction"

Für Temperatur und Feuchte kann ein Korrekturwert angegeben werden.

Der Wert kann entweder ein Offset oder prozentual sein.

Beispiele:

Korrekturwert Gemessen Ergebnis
-5 20°C 15°C
+3 20°C 23°C
-10% 20°C 18°C
+20% 20°C 24°C

SC16IS750-Clone

Wenn aktiviert, wird die I2C clock auf 100 kHz runtergenommen und es wird an einigen Stellen etwas auf die Bremse getreten, dass ein SC16IS70-Clone, der langsamer als echte Hardware ist, mitkommt. Sollte man ohne zwingenden Grund nicht aktivieren.

Use MDNS

Legt fest, ob das LGW seine IP-Adresse per MDNS bekannt gibt. Dies ist nötig, wenn man einen Mac hat oder bei Windows einen Bonjour-Service laufen hat. Dies ist beim Entwickeln sinnvoll, kann üblicherweise ausgeschaltet bleiben.

MCP23008

Konfigurationsmöglichkeit für die 8 IO Pins (siehe auch Inbetriebnahme von MCP23008).

Serial bridge port und bridge baud

Das LGW kann nun optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen. Dazu gibt es die "Serial bridge port" und "Serial bridge baud" auf der "config"-Page des LGWs. Das LGW überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.

Statuswerte abrufen

Mit http://<IP-des-LGW>/state können die Statuswerte, die das LGW-Frontend anzeigt, als XML zur Weiterverarbeitung abgerufen werden.

Beispiel:

<LGW>
  <Info Key="UpTimeSeconds" Value="107086"/>
  <Info Key="UpTimeText" Value="1Tg. 5Std. 44Min. 46Sek. "/>
  <Info Key="WIFI" Value="NeverTellThem"/>
  <Info Key="MacAddress" Value="18:FE:34:9A:6D:48"/>
  <Info Key="ChipID" Value="10120520"/>
  <Info Key="ReceivedFrames" Value="93593"/>
  <Info Key="FramesPerMinute" Value="52"/>
</LGW>

Funktionsweise Log

Das Log ist als Hilfsmittel bei der Fehlersuche gedacht z.B. um bei PCA301 zu verfolgen, wann wer was wie frägt und antwortet oder um zu schauen, ob irgend welche Sensoren überhaupt empfangen werden und die Daten an FHEM geliefert werden.

LaCrosseGateway Log ebfrontend

Mit "Command" kann man Befehle an das LGW senden. Sie entsprechen dem, was man mit "set myLaCrosseGateway raw ..." aus FHEM schicken kann. Die obere Liste enthält die Daten, die an FHEM übermittelt werden (bzw. würden, wenn sich ein FHEM auf das LGW verbunden hat) Die untere Liste enthält debug-Informationen u.a. wird hier der letzte Systemstart aufgezeichnet. Die verwendete SDK-Version und der letzte Reset-Grund werden ebenfalls ausgegeben

Das Log kann per HTTP abgerufen werden:

http://<LGW-IP>/getLogData

Beispiel:

http://192.168.31.211/getLogData

das Ergebnis sieht wie folgt aus:

DATA:OK 22 117 196 0 58 226 102 0 58 191 86 0 0 40 172 0 105 1 101 3 0 [75 C4 E2 66 00 00 BF 56 00 00 00 02 3B FC DC 00 69 01 65 4A A4 C4 F9 F2 4F 11 A4 F6 7C 03 A0 00 00 00 00 03 A0 38 09 21 27]
DATA:OK 9 11 130 4 173 125 [92 D5 97 7D 75]
DATA:OK EMT7110 84 81 8 207 0 36 0 1 1 199 1 [25 6A 54 51 40 02 00 24 C3 41 C7 9B]
SYS: AddOn: KV ADDON 01 Voltage=3.33,UpTime=4921
DATA:OK VALUES ADDON 01 Voltage=3.33,UpTime=4921
DATA:OK 9 38 1 4 67 65 [99 84 91 41 07]
DATA:OK 22 126 67 0 65 236 34 0 65 231 116 0 0 32 103 0 48 0 134 1 0 [7E 43 EC 22 00 00 E7 74 00 00 00 01 C7 AC D7 00 30 00 86 00 57 E4 69 1E 46 8E D4 68 C7 04 10 00 00 00 00 04 10 18 0A DC F7]
DATA:OK 9 36 1 4 128 61 [99 05 52 3D 96]
DATA:OK WS 0 4 4 185 255 255 255 255 255 255 255 255 255 0 3 252

DATA: für die obere Liste

SYS: für die untere Liste


Bei jedem Aufruf werden die seit dem letzten Abruf neu aufgelaufenen Logeinträge geliefert. Intern werden maximal 40 Einträge gepuffert (aber kein Ringpuffer, weil die ersten 40 mit dem Bootlog erhalten bleiben müssen)

Hinweis: Aus Performance- und Stabilitätsgründen sollten die Daten nicht zu häufig und nicht von zwei Instanzen gleichzeitig abgerufen werden.

Hinweise zum Betrieb mit FHEM

Voraussetzungen

Es wird ein vorkonfiguriertes LaCrosseGateway vorausgesetzt.

Perl Modul: LWP::UserAgent - Dieses wird für das Firmware Update per FHEM LaCrosseGateway Modul benötigt. Auf einem Raspberry Pi kann die Installation wie folgt durchgeführt werden:

sudo apt-get install libwww-perl

alternativ auch mit

sudo cpan LWP::UserAgent

FHEM Module

Hinweis: Ursprünglich wurde für das LaCrosseGateway das FHEM-Modul 36_JeeLink.pm verwendet. Da es aber inzwischen erhebliche Unterschiede zwischen dem JeeLink-LaCrosse-Sketch und dem LaCrosseGateway gibt, existiert seit Mitte November 2016 ein für das LaCrosseGateway spezialisiertes und optimiertes FHEM-Modul, das 36_LaCrosseGateway.pm.
Dieses sollte anstatt dem 36_JeeLink.pm vorzugsweise verwendet werden.

36_LaCrosseGeateway.pm (wird per FHEM Update verteilt)

36_KeyValueProtocol.pm (wird per FHEM Update verteilt)

36_LaCrosse.pm (wird per FHEM Update verteilt)

36_PCA301.pm (wird per FHEM Update verteilt)

36_EC3000.pm (wird per FHEM Update verteilt)

36_EMT7110.pm (wird per FHEM Update verteilt)

36_Level.pm (wird per FHEM Update verteilt)

Device Definition

WLAN

Die Definition sieht dann wie folgt aus:

define <myLaCrosseGateway> LaCrosseGateway <IP-Adresse>:81

<myLaCrosseGateway> kann bei Bedarf angepasst werden.

<IP-Adresse> muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.

Beispiel:

define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81

IP-Adresse ermitteln: Das LaCrosseGateway heist per default Einstellung "LaCrosseGateway", per ping auf den Hostnamen LaCrosseGateway kann die <IP-Adresse> ermittelt werden.

USB

Wenn man das LGW über USB betreiben will, dann möchte man üblicherweise kein WiFi. Um das WiFi zu deaktivieren gibt es zwei Möglichkeiten:
1.) Man kann mit einen 10k pullup auf 3.3V an MOSI == GPIO13 == D7 "jumpern", dass man kein wifi will. Wenn voranden, wird WiFi sofort beim Start deaktiviert.
2.) Man kann WiFi auf der Setup-Page des LGW deaktivieren.

Für den Betrieb via USB sieht die Definition wie folgt aus:

define <myLaCrosseGateway> LaCrosseGateway <USB-Port>@57600

<myLaCrosseGateway> kann bei Bedarf angepasst werden.

<USB-Port> muss entsprechend angepasst werden.

Beispiel: define myLaCrosseGateway LaCrosseGateway /dev/ttyUSB0@57600 /dev/ttyUSB0 Falls bereits mehrere USB Geräte angeschlossen sind muss der USB Port angepasst werden.


Hinweis: Sind mehrere USB Devices am FHEM Server (z.B. RPI, Cubietruck etc.) in Betrieb, dann ist die Zuordnung über den USB-Port nicht zuverlässig. Die Ports werden u.a. in der Reihenfolge vergeben, in der die Geräte angeschlossen werden. Zuverlässiger und eindeutiger ist die Zuordnung über die Serial-ID.

Dieser Befehl zeigt die Serial-ID der angeschlossenen USB-Devices an: ls -l /dev/serial/by-id

Beispiel für die Ausgabe:

lrwxrwxrwx 1 root root 13 Mai 14 10:37 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Mai 30 11:27 usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB2
lrwxrwxrwx 1 root root 13 Apr 16 14:52 usb-Silicon_Labs_ELV_USB-Modul_UM2102_EVFSRFF8COEXIKOT-if00-port0 -> ../../ttyUSB0

In diesem Fall ist u.a. ein DEVKIT 1.0 mit der Serial-ID usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0 -> ../../ttyUSB2 angeschlossen.

Auf Basis dieser Informationen lässt sich folgende Definition erstellen:

define myLaCrosseGateway LaCrosseGateway /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@57600
Wichtig ist es, die Übertragungsrate von 57600 bit/s anzugeben.

Wenn man das LGW ohne WiFi betreibt, dann muss man natürlich auf die Annehmlichkeiten des Web-Frontends verzichten.
In diesem Fall kann man die Konfiguration, die man über das Web-Frontend machen würde, über die serielle Schnittstelle machen.

set myLaCrosseGateway raw "SETUP ..."
Das ... sind die gewünschten Einstellungen. Es müssen nicht alle Einstellungen gesendet werden sondern nur die, die man setzen will.
Es werden nur die Einstellungen gesetzt und im EEPROM gespeichert, es wird aber kein Reboot ausgelöst
Einen Reboot kann man mit "set myLaCrosseGateway raw 8377e" auslösen.
Mehrere Einstellungen können durch Semikolon getrennt angegeben werden.
Beispiel: set myJeeLink213 raw "SETUP UseWiFi false; IO0 OLED mode=thp; IO1 OLED Off; CorrT -2.5; ISID 213"

Man kann auf der seriellen Schnittstelle die aktuellen Einstellungen abrufen. Das command ist 1g
set myLaCrosseGateway raw 1g
Man bekommt dann so etwas zurück:

SETUP ctSSID esesidee; ctPASS PasstWort; staticIP 192.168.31.211; staticMask 255.255.255.0; staticGW 192.168.31.1;
HostName LGW211; StartupDelay 1; ISID 0xD3; Altitude 220; CorrT 0; CorrH 0; DataPort1 81; DataPort2 82; SerialBridgePort 85; 
SerialBridgeBaud 38400; UseMDNS true; IO0 OLED mode=s; IO1 OLED mode=thp; IO2 OLED On; IO3 OLED Off; oledStart 120; KVInterval 10; 
KVIdentity 211; PCA301Plugs 036180=3,03A094=1,035FF1=6;

Reconnect

Falls das LaCrosseGateway nicht erreichbar ist (Kein Strom/Stromausfall, WLAN Verbingung unterbrochen etc.), bricht das LaCrosseGateway Device die Kommunikation ab. Über das entsprechende timeout Attribut kann das LaCrosseGateway device so konfigurert werden, dass es in regelmässigen Abständen erneut versucht eine Verbindung mit dem LaCrosseGateway herzustellen.

Konfigurationsempfehlung für timeout = 120 Sekunden und checkInterval = 30 Sekunden:

Der Wert kann in FHEM wie folgt gesetzt werden:

attr myLaCrosseGateway timeout 120,30

myLaCrosseGateway muss auf den Gerätenamen in FHEM angepasst werden.

Während das LaCrosseGateway eine WiFi-Verbindung aufbaut, benötigt das LaCrosseGateway-Modul je nach Konfiguration einige Zeit bis es einen neuen Connect auf den Datenport des LaCrosseGateway versucht. Das Finden der optimalen Werte erfordert etwas Geduld, es kann auch schon mal ein, zwei Minuten Dauern, bis die ersten Daten in FHEM übertragen werden.


Erklärung der Timeout Werte: 120,30 prüft alle 30 Sekunden, ob seit mindestens 120 Sekunden keine Daten mehr übermittelt wurden und falls dem so ist, macht es einen Reset auf der Schnittstelle, was die Verbindung zum LaCrosseGateway neu aufbaut. Das bedeutet, in so einem Fall ist die Verbindung nach spätestens 150 Sekunden wieder hergestellt.

Hinweis: Mit diesem Attribut wird lediglich eine neue Verbindung aufgebaut, dabei wird das LaCrosseGateway nicht resetet.

Liste aller initCommands

Eine aktuelle Liste der initCommands, die man von FHEM, Terminalprogramm oder Web-Frontend aus senden kann, sind auf dem Web-Frontend "Help"-Page" des LaCrosseGateways (ab V1.17) aufgeführt.

http://IP-Adresse oder Hostname/help

<n>a       set to 0 if the blue LED bothers
<n>c       use one of the possible data rates (for transmit on RFM #1)
<n>d       set to 1 to see debug messages
<8266>e    Clear EEPROM
<n>f       initial frequency in kHz (5 kHz steps, 860480 ... 879515)
<n>g       get information (1g: get current settings)
<n>h       Altitude
<n,f,i>i   Init PCA for Radio #<n> to <m>MHz and <i>s Interval
<n>m       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #1)
<n>M       bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #2)
<n>#<x>m   bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #x)
<n>o       set HF-parameter e.g. 50305o for RFM12 or 1,4o for RFM69
<n>p       payload on the serial port (1: all, 2: only undecoded data)
<n>r       use one of the possible data rates (for RFM #1)
<n>R       use one of the possible data rates (for RFM #2)
<n>#<x>r   use one of the possible data rates (for RFM #x)
<x,x,...>s Send to PCA301 (must be 10 byte)
<x,x,...>S Send to CustomSensor
<n>t       0=no toggle, else interval in seconds (for RFM #1)
<n>T       0=no toggle, else interval in seconds (for RFM #2)
<n>#<x>t   0=no toggle, else interval in seconds (for RFM #x)
v          show version
<n>w       0=no wifi
<n>z       set to 1 to display analyzed frame data instead of the normal data

LaCrosseGateway zurücksetzen

Das LaCrosseGateway kann auf die "Werkseinstellungen" zurückgesetzt werden.
Dadurch werden alle auf der Setup-Page gemachten und im EEPROM gespeicherten Einstellungen verworfen.

Der Befehl dazu lautet:

8266e

Er kann mit einem Terminalprogramm, von FHEM aus mit

set <myLaCrosseGateway> raw 8266e

oder von der Log-Page des LGW gesendet werden.

Danach startet das LGW wieder als Access Point initiale Konfiguration und die Konfiguration kann über die "Setup-Page" neu vorgenommen werden kann.

Sensoren/Aktoren anlegen

Voraussetzung: FHEM autocreat ist aktiv. Die FHEM autocreate Funktion ist aktiv.

Die erkannnten Sensoren und Aktoren werden automatisch erkannt und in FHEM angelegt, sobald Daten empfangen werden.

Empfangene Sensoren werden nur hinzugefügt werden, wenn LaCrossePairForSec auf 120 Sekunden gesetzt wird.

set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery

Inbetriebnahme von BMP180 / BME280

Damit die Daten der o.g. Sensoren in FHEM zur Verfügung stehen, muss zunächst das FHEM-Device angelegt werden.

Das Anlegen kann automatisch erfolgen, dafür muss der folgende FHEM Befehl ausgeführt werden:

set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery

Dann sollte von FHEM autocreate Funktion ein LaCrosse Device mit der Sensor-ID (Default Wert: 0) angelegt werden.

Alternativ kann das FHEM Device manuell angelegt werden: Die ID, mit der das LGW die internen Sensoren sendet, entspricht der konfugurierten Sensor-ID (Default Wert: 0) Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.

define <name> LaCrosse 00

Anchließend muss eine Höhenkorrektur (Grund: der Luftdruck wird immer bezogen auf NN angegeben, der Sensor liefert aber den Absolutdruck) mit dem command h in den initCommands vorgenommen werden, dies erfolgt mit dem FHEM Befehl:

Beispiel: 220h legt 220m über NN fest.

attr myLaCrosseGateway initCommands 220h

Besser: Alternativ kann die Höhe über NN auch auf der Setup-Page des LGW gesetzt werden.
Das hat den Vorteil, dass sofort vom Start an der normalisierte Luftdruck an FHEM gesendet wird und nicht erst, wenn die initCommands von FHEM geschickt wurden.

Inbetriebnahme Piezo Summer

Der Piezo Summer wird in FHEM über das LaCrosseGateway Modul angesteuert.

Beispiele:

set myLaCrosseGateway raw 1,60b   -> beep ... beep ... beep                      60 Sekunden lang
set myLaCrosseGateway raw 2,300b  -> beep beep ... beep beep ... beep beep      300 Sekunden lang
set myLaCrosseGateway raw 3,120b  -> beep beep beep ... beep beep beep ...      120 Sekunden lang
set myLaCrosseGateway raw 0b      -> beep stoppen

Inbetriebnahme von RFM69CW

Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzten. Nachfolgend wird die Konfiguration des Senders/Empfängers erläutert.

Die "Default Werte" (wenn keine Angaben definiert werden) für die data rate sind wie folgt definiert:

#1 (Erste)  => 17241
#2 (Zweite) => 9579
#3 (Dritte) => 8842
#4 (Vierte) => 20000
#5 (Fünfte) => 17241

Hinweis: Detailinformationen sind auch auf der LaCrosseGateway "Help"-Page zu finden.

<Datenrate>#<Radio-Nummer><command>
m t: Toggle-Steuerung
r: Datarate
f: Frequenz


Beispiele:

Definition Erläuterungen
attr myLaCrosseGateway initCommands 0#1r v
DataRate des ersten RFM setzen
attr myLaCrosseGateway initCommands 8842#3r v
DataRate des dritten RFM setzen
attr myLaCrosseGateway initCommands 868300#2f v
Frequenz des zweiten RFM setzten
attr myLaCrosseGateway initCommands 868295#3f v
Frequenz des dritten RFM setzten
attr myLaCrosseGateway initCommands 17241#1r 8842#2r v
Zwei RFM69CW mit DataRate 17241 und 8842
attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v
Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent
attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v
Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN
attr myLaCrosseGateway initCommands 868295#1f 3#1m 20#1t 2,868950,60i 8842#3r 220h 0a v
Drei RFMs Frequenz 868295 / PCA301 / WS1600 sowie Höhe über NN
Radio 1 auf 868295 MHz und Toggle 9K/17K mit 20 Sekunden
Radio 2 für PCA301 initialisiert
Radio 3 macht 8842 kbps für die WS 1600
Höhe 220m über NN
Activity LED aus
v am Ende ruft die neu gesetzen Daten vom LaCrosseGateway ab, damit sie in FHEM LaCrosseGateway Modul aktualisiert werden.

Hinweis: Es ist wichtig ein "v" an das Ende eines initCommands anzuhängen. Damit wird veranlasst, dass das LaCrosseGateway seine neuen Einstellungen an FHEM zurückmeldet.

Inbetriebnahme von PCA301

PCA301 im LGW funtioniert ähnlich dem PCA301 Sketch, allerding mit einigen systembedingten Abweichungen.

Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command "i".

<RadioNr>,<Frequenz>,<Poll-Intervall>i

Die Initialisierung kann auch erneut geschickt werden, um z.B. das Poll-Intervall zu ändern.


Wichtig: Es darf nur "ein" Radio für PCA301 initialisiert sein, nicht mehrere. Das PCA301 initialisierte Radio ist dediziert für PCA301 zuständig, es kann nicht zwischen anderen Protokollen (z.B. LaCrosse) toggeln.

Das Poll-Interval sollte nicht extrem heruntergesetzt (nicht unter eine Minute) werden, da PCA301 sonst LaCrosse verdrängt. PCA301 hat hörere Priorität, da es bei der Kommunikation mit den Dosen keine Antworten überhören darf.

Unter Umständen muss die Frequenz etwas angepasst werden, wenn das Radio und/oder die Dosen nicht genau auf 868950 liegen. Das ist daran zu erkennen, dass entweder gar keine Antwort von den Dosen oder verzögerte Antwort ankommt. Werte von 868960 oder 960970 haben in manchen Fällen Abhilfe gebracht.

Beispiele:

Definition Erläuterungen
attr myLaCrosseGateway initCommands 2,868950,120i v Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden
attr myLaCrosseGateway initCommands 1,868950,120i 3#2m 20#2t 220h 0a v Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280.
Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen
der BMP180/BME280 liefert den Druck für 220m Meereshöhe
die LED ist deaktiviert

Ablauf:

Nachdem PCA301 initialisiert ist, lauscht das LaCrosseGateway auf der entsprechenden Frequenz. Sobald eine Dose empfangen wurde, wird sie in der Konfiguration (EEPROM) dauerhaft registriert und ab sofort gepollt.

Das Polling funtioniert so, dass für jede Dose geschaut wird, wann sie zuletzt empfangen wurde und wenn das länger als das konfigurierte Interval zurück liegt, dann wird sie abgefragt. Wenn sonst etwas (Basisstation, anderes FHEM) die Dose abgefragt hat und das LaCrosseGateway die Antwort gehört hat, dann gilt das auch als empfangen und es wird kein eigener Poll für die Dose ausgelöst. Das Zusammenspiel mit einer echten Basisstation konnte bisher nur grob simuliert werden.

Das Pairing (also die Vergabe eines Kanals) funktioniert wie im PCA301-Sketch, button an der Dose "3 Sekunden" drücken, dann vergibt das LaCrosseGateway den nächsten freien Kanal. Dosen, die bereits einen Kanal haben, können durch ein Schalten vor Ort, an das LaCrosseGateway angelernt werden. Das LaCrosseGateway erkennt sie und nimmt sie in die Konfiguration auf. Falls die Dose bereits mit einem anderen Kanal bekannt war, wird der Kanal im LaCrosseGateway aktualisisert.

Auf der Setup-Page im Web-Frontend (http://IP-Adresse oder Hostname/setup) des LaCrosseGateway kann die Liste der bekannten Dosen (ID=Kanal) eingesehen werden. Hinweis: Es sollten keine Änderungen in diesem Bereich vorgenommen werden.

Wenn ein Kommando (Schalten, Daten abfragen, ...) an eine Dose gesendet wurde und keine Antwort kam, wird bereits im Sketch drei mal versucht, eine Antwort zu bekommen.

Das PCA301 Modul in FHEM funktioniert komplett wie bisher.

Weiterführende Themen zum PCA301 sind im Wiki PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung und PCA301 FHEM Thread JeeLink / PCA301 Thread beschrieben.

Die Befehle, die der PCA301-Sketch kennt, gibt es im LaCrosseGateway nur teilweise:

Befehl (Beschreibung) Erläuterungen
a "turn activity LED on or off wie bisher
l "list known devices" entfallen, kann man nun im Web-Frontend sehen
q "turn quiet mode on or off" wie bisher
r "list recordings" entfallen
s "send to plug" wie bisher
v "report version and configuration parameters" wie bisher
d, e, p "poll / turn a device on / off" entfallen
h, +, -, # "modify and display RF12 Frequency register" entfallen, ersetzt durch das "i" command bzw. das bereits vorhandene "f" command

Inbetriebnahme von Energy Count 3000 (EC3000)

Die EC3000 sendet auf 868.300 kHz mit 20.000 kbps. Dafür wurde eine neue data rate hinzugefügt. Sie kann mit 3r oder 20000r gesetzt werden. Wenn diese data rate gesetzt wird, wird auch automatisch der RFM69 auf den Empfang von EC3000 uminitialisiert.

EC3000 kann auch in einen data rate toggle mit einbezogen werden. Dazu gibt es nun das bit mit dem Wert 8 für 20.000 kbps

Um EC3000 dediziert mit einem der drei RFMs zu empfangen muss man einfach die data rate des gewünschten RFM setzen. Beispiel initCommand: 20000#2r

Um EC3000 in einen data rate toggle mit einzubeziehen muss im m command das 8-wertige bit gesetzt werden. Wenn man z.B. mit dem zweiten Radio 17k Sensoren (TX29...) und EC3000 empfangen soll (20 Sekunden toggle), wäre das initCommand:

Beispiel:

attr myLaCrosseGateway initCommands 9#2m 20#2t v

Inbetriebnahme von MCP23008

Auf der LaCrosseGateway "config"-page kann für jeden der 8 IO Pins konfiguriert werden, ob es ein Input oder Output Pin ist.

Input: Eingang, wird per KVP an FHEM übermittelt. Einsatzzweck: z.B. Anschluß von Pushbuttons.

Output: Kann von FHEM aus gesetzt werden. Einsatzzweck: z.B. Anschluß von LEDs.


Beispiel: Input => Eingang, wird per KVP an FHEM übermittelt

OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0

Beispiel: Output => Kann von FHEM aus gesetzt werden.

set myLaCrosseGateway raw "MCP GP0=1,GP1=0"

Inbetriebnahme Analogport

Der Analogport A0 des ESP8266 wird als Reading im LaCrosseGatewayModul aufgeführt. Um das zu aktivieren, muss man auf der Setup-page des LGW die Option "Send analog values" ankreuzen. Der Eingangsspannungsbereich von A0 ist 0V ... 1.0V, was zu einem Reading von 0 ... 1023 führt.

Inbetriebnahme von OLED-Display

Es wird das 128x64 pixel 0.96" I2C Display mit dem SSD1306 controller und das 128x64 pixel 1.3" mit dem SH1106 controller unterstützt. Um auf dem 1.3" Display eine korrekte Darstellung zu erhalten, muss man die Checkbox 1.3" ankreuzen.

Hinweis: das 0.96" Display bekommt man auch in einer Varianten, die SPI unterstützt. Diese Variante kann nur nach einem Umbau verwendet werden.

Der nachfolgende Funktionsumfang ist implementiert:

  • OLED ein- und ausschalten sowie das Senden von individuellen Texten über FHEM mithilfe des LaCrosseGateway-Moduls
  • OLED Startverhalten konfigurierbar
  • Übermittlung des Display Status im KVP
  • Anzeige von Statusinformationen in der obersten Zeile mithilfe von Symbolen (siehe Abbildung - von links nach rechts)
    • WiFI connect erfolgreich
    • Ein FHEM hat sich auf einen DataPort connected
    • Ein FHEM hat sich auf den Prozessor an der uart bridge connected
    • WiFi Signalstärke (dBm). Hinweis: -36 ist besser als -60
OLED Anzeige von Statusinformationen
  • Darstellung von bis zu drei Texten und optional ein Symbol.
  • Definition des Zeitintvervalls für das Umschalten zur nächsten Seite
  • Zuweisung der Modes an die Ports des MCP23008 (Die Konfiguration erfolgt auf der "Setup"-Page)
  • Fortschrittsanzeige beim Flashen eines an die serielle Schnittstelle des SC16IS750 angeschlossenen Arduinos (siehe SubProzessor und Serial transparent bridge)

OLED Start Modus

Einstellungsmöglichkeit über die "Config"-Page wie sich das OLED nach einem Start verhalten soll. Mögliche Optionen: on / off / Anzahl Sekunden, nach denen es ausgeht. Zusätzlich kann der initiale Mode festgelegt werden (z.B. thp)

Modes

Prefix Parameter Erläuterung
OLED mode= t Temperatur des internen Sensors
OLED mode= h Feuchte des internen Sensors
OLED mode= p Druck des internen Sensors
OLED mode= s Statuswerte des LGW
OLED mode= f von FHEM gesetzter Text

Mögliche Symbole

Parameter Erläuterung OLED Darstellung
t Temperature
Lgw sym t.jpg
h Humidity
Lgw sym h.jpg
p Pressure
Lgw sym p.jpg
s System
Lgw sym s.jpg
i Info
Lgw sym i.jpg
w Warning
Lgw sym w.jpg
e Error
Lgw sym e.jpg

Beispiele

Definition Erläuterung
set myLaCrosseGateway raw "OLED On"
Schaltet ein angeschlossenes Display ein
set myLaCrosseGateway raw "OLED Off"
Schaltet ein angeschlossenes Display aus
set myLaCrosseGateway raw "OLED interval=20"
Legt fest, dass (je nach mode) alle 20 Sekunden die nächste Seite angezeigt wird.
set myLaCrosseGateway raw "OLED mode=ths"
Zeigt nacheinander Temperatur, Feuchte und Systemdaten an
set myLaCrosseGateway raw "OLED mode=thp"
Zeigt nacheinander Temperatur, Feuchte und Luftdruck an
set myLaCrosseGateway raw "OLED mode=thps"
Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an
set myLaCrosseGateway raw "OLED mode=f"
Zeigt ausschließlich den von FHEM festgeleget Text an
set myLaCrosseGateway raw "OLED mode=s"
Zeigt ausschließlich die Systemdaten an
set myLaCrosseGateway raw "OLED show=Soll: 20.5,Ist: 19.2,,t"
Zeigt die übergebenen Texte an und links das Symbol für Temperatur
set myLaCrosseGateway raw "OLED show=55%,,,h"
Zeigt nur den Text "55%" und das Symbol für Feuchte an. Da es nur ein Text ist, wird er größer dargestellt
set myLaCrosseGateway raw "OLED show=Line 1,Line 2,Line 3"
Zeigt drei Texte aber kein Symbol an.
attr myLaCrosseGateway initCommands "OLED mode=thps"
Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an. Der Mode wird immer geschickt, wenn FHEM sich neu auf das LGW connected.

Serial transparent bridge

Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen. Dazu gibt es die settings "Serial bridge port" und "Serial bridge baud" auf der "Setup"-Page" (Web-Frontend) des LaCrosseGateways. Das LaCrosseGateway überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt. Damit kann z.B. ein NanoCUL an das LaCrosseGateway angeschlossen werden und in FHEM verwenden werden.


Vorgehensweise:

  • Einen NanoCUL bauen, z.B. auf Basis eines Arduino Pro Mini, flashen und testweise in Betrieb nehmen.
  • Den NanoCUL an die serielle Schnittstelle des SC16IS70 anschließen
  • Port und baud rate auf der "Setup"-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud
  • CUL in FHEM definieren (Beispiel):
define CULXYZ CUL <IP-Adresse>:85 0000

<CULXYZ> Muss nach eigenen Bedürfnissen angepasst werden.

<IP-Adresse> Muss entsprechend angepasst werden.

Sollte das CUL-Device nicht erreichbar sein (Restart, Austausch im Falle eines Deffekts etc.), empfiehlt sich einen reconnect Mechnismus in FHEM zu implementieren.

Dieser kann wie folgt aussehen:

define CULXYZ-Reconnector at +*00:00:30 {\
my $deviceName = "<CULXYZ>";;\
my $version = CommandGet("", $deviceName . " version");;\
my $gotAnswer = index($version, 'No answer') == -1;;\
\
if(!$gotAnswer) {\
  fhem("set " . $deviceName . " reopen");;\
}\
\
}

<CULXYZ> Muss nach eigenen Bedürfnissen angepasst werden.

Vorgehen Firmware flashen mit LGW

Ein bereits in Betrieb genomene NanoCUL kann nach dem gleichen Vorgehen (siehe "SubProzessor - Vorgehen Firmware flashen") wie ein SubProzessor geflasht werden.

Zugriff mit mehreren FHEM Instanzen

Bis zu drei FHEM Instanzen können auf das LaCrosseGateway gleichzeitig zugreifen. Auf der "Setup"-Page des LaCrosseGateways können bis zu drei Ports (Data ports), pro Port eine FHEM Instanz, definiert werden (Reboot erforderlich). Aus Performancegründen empfiehlt sich nur die benötigten Ports zu definieren.

Hinweise: Die Portnummer 8266 wird für OTA Update verwendet, und 80 für die "Config"-page. Aus diesem Grund ist die Verwendung dieser ports nicht erlaubt.

Wenn sich mehrere FHEM Instanzen ein LaCrosseGateway teilen, dann ist darauf zu achten, dass die eine gemeinsame/gleiche initCommand Konfiguration haben. Sollten die FHEM Instanzen unterschiedliche initCommands senden, gewinnt das (zufällig) letzte und legt es für alle anderen fest.

Nano LaCrosse Gateway

Das nano LaCrosse Gateway verwendet die gleiche Firmware wie das WiFi LaCrosse Gateway, der signifikante Unterschied ist die kompakte (portable) Bauform. Aufgrund der Bauform können jeodch nicht alle Bauteile verwendet werden. Das Gateway eignet sich sehr gut als Entwicklungstick (dies ist der Ent­ste­hungs­grund) oder zum Empfangen und Steuern von LaCrosse basierten Sensoren/Aktoren an einem FHEM Server (RPI,Cubietruck, etc.).

Der Betieb über WiFi, entsprechende Stromversorgung (per USB) vorausgesetzt, ist ebenfalls möglich.

Weiterführende Informationen zum nano LaCrosse Gateway und Ideensammlung für eine Platine sind im FHEM Forum zu finden.

Bauteile

Folgende Bauteile werden benötigt:

Schaltung

Schaltplan NanoLGW

Selbstbau

Selbstbau nano LaCrosse Gateway 1
Selbstbau nano LaCrosse Gateway 2
Selbstbau nano LaCrosse Gateway 3

Platine

nano LaCrosse Gateway

nano LaCrosse Gateway Platine Oberseite
nano LaCrosse Gateway Platine Unterseite

USB2TTL

USB2TTL Platine Oberseite
USB2TTL Platine Unterseite

nano LaCrosse Gateway inkl. USB2TTL

nano LaCrosse Gateway inkl. USB2TTL Oberseite
nano LaCrosse Gateway inkl. USB2TTL Oberseite
nano LaCrosse Gateway inkl. USB2TTL Unterseite
nano LaCrosse Gateway inkl. USB2TTL Seitenansicht

nano LaCrosse Gateway fertig bestückt inkl. Gehäuse

nano LGW fertig bestückt inkl. Gehäuse Oberseite
nano LGW fertig bestückt inkl. Gehäuse Unterseite

Platine bestücken (Hinweise und Tipps)

  • Die Beschriftung SJ4 und SJ3 ist auf dem USB2TTL Wandler vertauscht, dies beeinträchtigt aber die Funktion nicht.
  • Beim nanoLGW hängt C1 etwas über dem FTDI232RL vom USB2TTL Wandler, daher braucht diese Platine noch eine "Schönheitskorrektur".

Tipps & Tricks

Löschen des kompletten Flash des ESP8266 mit dem esptool

Aufgrund eines aktuell im espressif SDK vorhandenen Bugs, kann es passieren, dass das LaCrosseGateway nach dem Aufspielen der Firmware, mit einer Exception den Bootvorgang (nach "Start WIFI_STA") abbricht und nicht mehr ordnungsgemäß starten kann. In diesem Fall hilft nur noch das Löschen des kompletten Speichers des ESP8266 und das erneute Aufspielen der Firmware.

Mit dem nachfolgenden Befehl kann der Speicher des ESP8266 komplett gelöscht werden.

Achtung: Dabei werden alle Einstellungen unwiderruflich gelöscht

./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce

</dev/tty.SLAB_USBtoUART> Muss entsprechend angepasst werden.

Weiterführende Links

Diskussionsthread aus dem Forum:

LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino

Platine für LaCrosseGateway: Platinenbestellung

Platine für nanoLGW (LaCrosse Gateway): Layout

Display für LaCrosseGateway

SC16IS750-Software-Clone