LaCrosseGateway V1.x: Unterschied zwischen den Versionen

Aus FHEMWiki
K (kleine Korrekturen)
K (Infobox Modul eingefügt; kleinere Änderungen bis einschließlich Abschnitt 1.1)
 
(76 dazwischenliegende Versionen von 11 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Das WiFi-LaCrosse-Gateway erfüllt den gleichen Zweck wie ein [[JeeLink|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, die als zentrale Steuereinheit dient.  
{{Infobox Modul
Der signifikante Unterschied zu einem JeeLink USB-Stick ist, der Betrieb über Wireless LAN ([https://de.wikipedia.org/wiki/Wi-Fi WiFi]).  
|ModPurpose=Einbindung des LaCrosse Gateways (Hardware)
|ModType=d
|ModCmdRef=LaCrosseGateway
|ModForumArea=Sonstige Systeme
|ModFTopic=43672
|ModTechName=36_LaCrosseGateway.pm
|ModOwner=HCS ({{Link2FU|6609|Forum}}/[[Benutzer Diskussion:HCS|Wiki]])
}}
Diese Seite beschreibt ausschließlich das LaCrosseGateway V1.x, das auf dem [[ESP8266]] basiert.
Für das LaCrosseGateway32 ({{Link2Forum|Topic=70338|LinkText=Thema dazu im Forum}}), das auf dem ESP32 basiert, wird es eine eigene Seite geben.
{{Randnotiz|RNText=Status:
* Dokumentationsstand dieser Seite: {{Link2Forum|Topic=43672|Message=584320|LinkText=Version 1.27}}
* Neueste Version (09/2019): {{Link2Forum|Topic=43672|Message=974602|LinkText=Version 1.35}}
* LaCrosseGateway32 wird (Stand 10/2022) seit April 2018 wegen Zeitmangels nicht aktiv weiterentwickelt
}}
Das LaCrosseGateway (hier und im Forum auch mit LGW abgekürzt) erfüllt den gleichen Zweck wie ein [[JeeLink|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 ([https://de.wikipedia.org/wiki/Wi-Fi 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.
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:
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 [https://de.wikipedia.org/wiki/Wi-Fi WiFi] Access Point erforderlich
* Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, dafür sind nur Strom (5V/1A USB Netzteil) und ein [https://de.wikipedia.org/wiki/Wi-Fi WiFi] Access Point erforderlich
*Erweiterbar (Derzeit (Stand: 05.2016) ist ca. 30 % Programmspeicher des ESP8266 belegt, im Gegensatz zu 99% bei einem ATMega328, damit steht deutlich mehr Rechenleistung zur Verfügung)
* Im Minimalausbau nur zwei Bauteile NodeMCU DEVKIT 1.0 + RFM69 (siehe Bauteile) nötig
*Im Minimalausbau nur zwei Bauteile NodeMCU DEVKIT 1.0 + RFM69 (siehe Bauteile) nötig  
* Alternativ am USB-Port wie ein JeeLink verwendbar
*Alternativ am USB-Port wie ein JeeLink verwendbar
* Einsatz von onboard Sensoren / Aktoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]]) möglich
*Einsatz von on board Sensoren / Aktoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]]) möglich


{{Randnotiz|RNText=Projektstatus: Release mit einigen Beta-Anteilen.}}
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.


{{Randnotiz|RNTyp=y|RNText=Dokumentationsstand Version 1.19}}
=Hardware=
=Hardware=
==Bauteile==
==Bauteile==
Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:
Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:
*[Option 1] [http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-12-e_q ESP8266 ESP-12E Modul].<br />Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.<br />Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an ein [[Medium:Lgw USB2Serial Adapter.jpg|USB2Serial-Adapter]], angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich.  
* [Option 1] [http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-12-e_q ESP8266 ESP-12E Modul].
*[Option 2] [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg 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.<br />[https://forum.fhem.de/index.php/topic,45594.msg430183.html#msg430183 Hinweis:] Folgende Devkits werden nicht unterstützt:
: Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.
** V0.9
: Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an einen [[Medium:Lgw USB2Serial Adapter.jpg|USB2Serial-Adapter]] angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich.  
** V3.0 - passt nicht, ist größer als das 2.0. Auf der Rückseite steht "Lolin"!
*[Option 2] [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg 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.<br />{{Link2Forum|Topic=45594|Message=430183|LinkText=Hinweis:}} Folgende Devkits werden nicht "offiziell" unterstützt, da ungetestet, können aber durchaus in bestimmten Fällen verwendet werden:
** Devkits mit einem CH340 USB converter
** V0.9 (da ungetestet, bekommt man aber kaum noch zu kaufen)
*[Option 3] Alternativ zu einem Devkit 1.0 kann auch ein [http://www.wemos.cc/Products/d1_mini.html "WeMOS D1 mini"] eingesetzt werden. Vorteil bei diesem Kit ist die kleine Bauform bei gleichem Funktionsumfang wie das DEVKIT 1.0.
** 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 [http://www.wemos.cc/Products/d1_mini.html "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.
*[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 {{Link2Forum|Topic=45594|Message=448307|LinkText=Forenthread (Gehäuse-Variante)}} beschrieben.
**''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 {{Link2Forum|Topic=45594|Message=448307|LinkText=Forenthread (Gehäuse-Variante)}} beschrieben.
*[Optional] RFM69CW - Für das Senden und Emfangen funkbasierte LaCrosse Aktoren und Sensoren
*[Optional] RFM69CW - Für das Senden und Empfangen funkbasierter LaCrosse Aktoren und Sensoren
*[Optional] On board Sensoren (siehe [[#Unterstützte Sensoren und Aktoren | Unterstützte Sensoren und Aktoren]])
*[Optional] On board Sensoren (siehe [[#Unterstützte Sensoren und Aktoren | 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] 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] OLED-Display SSD1306 I2C zur Darstellung von Daten (Bootvorgang, on board Sensoren, Inhalte aus FHEM)
*[Optional] [[#MCP23008|MCP23008]] zur Bereitstellung (Konfigurierbar) von digitalen 8 Ein- Ausgängen oder Sonderfunktion (OLED)
*[Optional] [[#MCP23008|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.)) / [[#Platine|PeMue Platine]]
*[Optional] Nextion Touch Display zur Darstellung von verschiedenen Informationen oder zum Schalten von Aktoren.
*Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.) / [[#Platine|PeMue Platine]]


==Schaltung==
==Schaltung==
===Variante: Devkit 1.0===
===Variante: DEVKIT 1.0 Minimum===
[[Datei:lgw_Schaltplan_Devkit.png|400px|thumb|left|Variante: Devkit 1.0]]
[[Datei:lgw_Schaltplan_Devkit_minimum.png|400px|thumb|left|Variante: DEVKIT 1.0]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>
===Variante: ESP8266-12E===
===Variante: DEVKIT 1.0 Maximalausbau===
[[Datei:lgw_Schaltplan_FTDI.png|400px|thumb|left|Variante: FTDI]]
[[Datei:lgw_Schaltplan_Devkit_full.png|400px|thumb|left|Variante: FTDI]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>
===Variante: Platine (PeMue)===
===Variante: Platine (PeMue)===
[[Datei:lgw_Schaltplan_Platine.png|400px|thumb|left|Variante: Platine (PeMue)]]
siehe hier: {{Link2Forum|Topic=45594|LinkText=Thread}}
<div style="clear:both;"></div>
===Addon Schaltung===  
[[Datei:lgw_Addon-with-example.png|400px|thumb|left|Die Schaltung des kompletten AddOn mit allen aktuell möglichen Optionen]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>
Siehe [[#Erweiterungsmöglichkeiten | Erweiterungsmöglichkeiten]].
Siehe [[#Erweiterungsmöglichkeiten | Erweiterungsmöglichkeiten]].
===MCP2308===  
 
===MCP23008===  
I2C Adresse 0x27 -> A0,A1,A2 = 3.3V
I2C Adresse 0x27 -> A0,A1,A2 = 3.3V
<source lang="php">             
<syntaxhighlight lang="php">             
               |-------\/-------|
               |-------\/-------|
     LGW D1    |1 SCL    VDD 18|  LGW 3.3V  
     LGW D1    |1 SCL    VDD 18|  LGW 3.3V  
Zeile 58: Zeile 73:
               |8 INT    GP1 11|  PB1  --/ --- GND  or Output
               |8 INT    GP1 11|  PB1  --/ --- GND  or Output
     LGW GND    |9 VSS    GP0 10|  PB0  --/ --- GND  or Output
     LGW GND    |9 VSS    GP0 10|  PB0  --/ --- GND  or Output
               |----------------|</source>
               |----------------|</syntaxhighlight>
 
===Nextion Display===
Angeschlossen wird das Display wie folgt:
GPIO0: TXD -> Nextion RXD
GPIO2: RXD -> Nextion TXD
 
Das Display benötigt eine 5V Spannungsversorgung, diese kann vom VIN des DEVKIT's abgegriffen werden. Vom Betrieb mit 3.3V wird abgeraten.
Ein level shifter für RXD/TXD ist nicht nötig.


==Aufbau auf einem Steckbrett==
==Aufbau auf einem Steckbrett==
Zeile 76: Zeile 99:
<div style="clear:both;"></div>
<div style="clear:both;"></div>


===Devkit 1.0 bestückt Oberseite===
===DEVKIT 1.0 bestückt Oberseite===
[[Datei:Lgw_Platine_Devkit_oberseite.png|400px|thumb|left|LaCrosseGateway Platine Oberseite]]
[[Datei:Lgw_Platine_Devkit_oberseite.png|400px|thumb|left|LaCrosseGateway Platine Oberseite]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>


===Devkit 1.0 bestückt Unterseite===
===DEVKIT 1.0 bestückt Unterseite===
[[Datei:lgw_Platine_Devkit_unterseite.png|400px|thumb|left|LaCrosseGateway Platine Unterseite]]
[[Datei:lgw_Platine_Devkit_unterseite.png|400px|thumb|left|LaCrosseGateway Platine Unterseite]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>
Zeile 91: Zeile 114:
| [[Datei:lgw_Platine_ESP-12E_oberseite_2_inkl_GE.jpg.jpg|325px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 inkl. Gehäuse]]
| [[Datei:lgw_Platine_ESP-12E_oberseite_2_inkl_GE.jpg.jpg|325px|thumb|left|(2) LaCrosseGateway Platine Oberseite mit 2 x RFM69CW, BME280 inkl. Gehäuse]]
|}
|}
'''''Hinweis:''' Die Platine (Bild (1)) ist mit einem LM75 Sensor bestück. Diese Bestückung macht zusammen mit einem BME280 keinen Sinn, es handelt sich hierbei, um eine Entwicklungsplatine.''
'''''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===
===ESP8266-12E bestückt Unterseite===
Zeile 101: Zeile 124:


===Platine bestücken (Hinweise und Tipps)===
===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.<br />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 [[#Variante: Platine (PeMue)|Schaltplan]] konsultieren und die genaue Position ermitteln.
*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.<br />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 [[#Variante: Platine (PeMue)|Schaltplan]] konsultieren und die genaue Position ermitteln.<br>'''Für die Platine V1.1 wurde das korrigiert.'''
*Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrähtigen Leiter (aus Kupfer) verwenden.
*Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrahtigen Leiter (aus Kupfer) verwenden.


==Erweiterungsmöglichkeiten==
==Erweiterungsmöglichkeiten==
Zeile 113: Zeile 136:
*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.
*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 (JeeLink, LaCrosse, PCA301, ...) weiterverarbeitet.
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.
Alle Komponenten werden automatisch erkannt, sofern angeschlossen.
Für die Realisierung der o.g Möglichkeiten wird ein [http://www.aliexpress.com/item/1x-Breakout-Board-for-SC16IS750-I2C-SPI-to-UART-IC/1327351219.html?spm=2114.30010308.3.38.HxdznQ&ws_ab_test=searchweb201556_9,searchweb201602_2_10034_507_10020_10001_10002_10017_10010_10005_10011_10006_10021_10003_10004_10022_10009_10008_10018_10019,searchweb201603_6&btsid=97b30f2b-e937-426b-8202-de585dd7ee97 SC16IS750] verwendet.
Für die Realisierung der o.g. Möglichkeiten wird ein [http://www.aliexpress.com/item/1x-Breakout-Board-for-SC16IS750-I2C-SPI-to-UART-IC/1327351219.html?spm=2114.30010308.3.38.HxdznQ&ws_ab_test=searchweb201556_9,searchweb201602_2_10034_507_10020_10001_10002_10017_10010_10005_10011_10006_10021_10003_10004_10022_10009_10008_10018_10019,searchweb201603_6&btsid=97b30f2b-e937-426b-8202-de585dd7ee97 SC16IS750] verwendet.


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


'''''Wichtig:''' Alle LaCrosseGateway Komponenten laufen ausschließlich mit '''3.3V''', aus diesem Grund dürfen keine '''5V''' Komponenten angeschlossen werden.''
'''''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.
Die Firmware kann über das LGW auf den SubProzessor (Voraussetzung: Arduino hat einen bootloader) geflasht werden.
Zeile 138: Zeile 163:
Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.
Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.


Die Firmware kann z.B. mithilfe von "curl" mit dem nachfolgendem Befehl hochgeladen werden:
Falls ein OLED angeschlossen ist, wird sogar ein progress angezeigt.
<source lang="php">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</source>
 
'''Vorgehen Firmware flashen'''
 
Die Firmware kann z.B. mithilfe von "curl" mit dem nachfolgenden Befehl hochgeladen werden:
<syntaxhighlight lang="php">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</syntaxhighlight>


'''''Hinweis:''' fielname=addon.hex im Beispiel darf nicht verändert werden, nur /myFolder/LGW-Addon.ino.hex und die IP-Adresse wird entsprechend angepasst.''
'''''Hinweis:''' filename=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:
Der Upload dauert etwas, danach sollte bei Erfolg vom LGW ein Protokoll zurückgeschickt kommen, das wie folgt aussieht:
<source lang="php">Start receiving 'addon.hex'
<syntaxhighlight lang="php">Start receiving 'addon.hex'
File: /addon.hex Size: 21417
File: /addon.hex Size: 21417
Starting flash
Starting flash
Zeile 151: Zeile 180:
Binary size is:7608
Binary size is:7608
Leave Program Mode
Leave Program Mode
Flash finished</source>
Flash finished</syntaxhighlight>


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


'''KeyValueProtokoll (KVP):'''
'''KeyValueProtokoll (KVP):'''
Format:<source lang="php">KV <Type> <Address> <Key>=<Value>,<Key>=<Value>,<Key>=<Value>, ...</source>
Format:<syntaxhighlight lang="php">KV <Type> <Address> <Key>=<Value>,<Key>=<Value>,<Key>=<Value>, ...</syntaxhighlight>
Beispiel:<source lang="php">KV DHT 01 Temperature=21.5,Humidity=62</source>
Beispiel:<syntaxhighlight lang="php">KV DHT 01 Temperature=21.5,Humidity=62</syntaxhighlight>


Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.
Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.
Zeile 163: Zeile 192:
'''LaCrosse:'''
'''LaCrosse:'''


Format:<source lang="php">LC <Address> T=<Temperature>,H=<Humidity></source>
Format:<syntaxhighlight lang="php">LC <Address> T=<Temperature>,H=<Humidity></syntaxhighlight>
Beispiel:
Beispiel:
<source lang="php">LC 9F T=21.5,H=62</source>
<syntaxhighlight lang="php">LC 9F T=21.5,H=62</syntaxhighlight>
<source lang="php">LC 9F T=21.5</source>
<syntaxhighlight lang="php">LC 9F T=21.5</syntaxhighlight>
Das LGW setzt die Werte in das LaCrosse Protokoll um (wie z.B. ein TX29DTH) und schickt sie an FHEM.
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.
In FHEM entsteht ein LaCrosse Device (autocreate, LaCrossePairForSec ...), als ob es ein LaCrosse Sensor wäre.
Zeile 176: Zeile 205:


==Unterstützte Sensoren und Aktoren==
==Unterstützte Sensoren und Aktoren==
Alle Sensoren, die auch vom "LaCrosse Arduino" Sketch unterstützt werden, incl. WS 1600 und WS 1080 (Hinweis beachten)
Alle Sensoren und Aktoren, die auch vom "LaCrosse Arduino" Sketch unterstützt werden.<br />
siehe [[JeeLink#LaCrosse_Sketch |LaCrosse Sketch]]
(siehe [[JeeLink#Unterst.C3.BCtzte_Sensoren_und_Aktoren_incl._Wetterstation_WS_1600JeeLink|vom JeeLink unterstützte LaCrosse Sensoren und Aktoren]])


Zusätzlich zu LaCrosse werden auch die folgenden Geräte unterstützt:
{| class="wikitable"
{| class="wikitable"
!Bezeichnung !! Datenrate !! Sonstiges !!Funktion !!Link
!Bezeichnung !! Datenrate !! Sonstiges !! Funktion !! Hinweise
|-
| TX21IT    || 17.241 kbps ||extern||||
|-
| TX25-IT    || 17.241 kbps ||extern||||
|-
| TX27-IT    || 17.241 kbps ||extern||||
|-
| TX29-IT    || 17.241 kbps ||extern||||
|-
| TX29DTH-IT || 17.241 kbps ||extern||||
|-
| TX37      || 17.241 kbps ||extern||||
|-
| TX35TH-IT  ||  9.579 kbps ||extern||||
|-
| TX35DTH-IT ||  9.579 kbps ||extern||||
|-
| 30.3143.IT || 17.241 kbps ||extern||||
|-
| 30.3144.IT || 17.241 kbps ||extern|||| ({{Link2Forum|Topic=17662|LinkText=Forenthread}})
|-
|-
| 30.3147.IT || 17.241 kbps ||extern||||
| PCA301 ||868950 kHz (868,970 und 868,990 ) 6.631 kbps || extern || Energiemess-Steckdose (Unterstützt werden bis zu 50 Dosen) ||  
|-
|-
| 30.3155WD  || 9.579 kbps ||extern|||| kritisch; nicht zu empfehlen; siehe {{Link2Forum|Topic=14786|Message=352550|LinkText=Forenbeitrag}}
| EC3000 ||868.300 kHz mit 20.000 kbps|| extern || Energiemess-Steckdose ||  
|-
|-
| 30.3156WD  || 9.579 kbps ||extern|||| Batterie-kritisch. Funktioniert schlecht mit Akkus!
| RFM69CW || || on board || Zum Empfangen und Senden von Sensor/Aktor Daten || Hinweise DHT22 beachten.
|-
|-
| 30.3187.IT || 17.241 kbps ||extern||||
| 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.
|-
|-
| WT440XH || 17.241 kbps ||extern||||
| 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.
|-
| WS 1600 (TX22) ||  8.842 kbps || extern |||| ({{Link2Forum|Topic=14786|Message=297293|LinkText=Forenbeitrag}})
|-
| WS 1080  || 17.241 kbps || extern |||| Bitte Hinweise beachten! ({{Link2Forum|Topic=14786|Message=363766|LinkText=Forenbeitrag}})
|-
| [[EMT7110]]  ||  9.579 kbps || extern |||| ({{Link2Forum|Topic=26494|LinkText=Forenthread}})
|-
| LevelSender || 17.241 kbps || extern ||||
|-
| PCA301 ||868950 kHz (868,970 und 868,990 ) 6.631 kbps || extern || Energiemess-Steckdose (Unterstützung 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 || Bei Einsatz von Breakout (GY-68) kein PullUp mit 4,7k Widerständen nötig. Verifizieren!
|-
| BMP180 || || on board || Temperatur und Druck || Bei Einsatz von Breakout (GY-68) kein PullUp mit 4,7k Widerständen nötig. Verifizieren!
|-
|-
| LM75 || || on board|| Temperatur ||  
| LM75 || || on board|| Temperatur ||  
|-
|-
| DHT22 || ||on board|| Temperatur und Feuchte. ||
| DHT22 || ||on board|| Temperatur und Feuchte || Kann anstatt RFM69 Radio#3 eingesetzt werden.
|-
|-
| SC16IS750 || I2C Adresse: 0x90 ||on board|| OI Erweiterung || Kann anstatt RFM69 Radio#3 eingesetzt werden.
| SC16IS750 || I2C Adresse: 0x90 ||on board || OI Erweiterung ||  
|-
|-
| OLED SSD1306|| I2C Adresse: 0x3C || on board || OLED Display||
| OLED SSD1306|| I2C Adresse: 0x3C || on board || OLED Display||
Zeile 241: Zeile 233:
|-
|-
| Piezo Summer |||| on board ||Piezo Buzzer||
| Piezo Summer |||| on board ||Piezo Buzzer||
|-
| Nextion Display ||(Max.) 57600 baud || on board ||Touch Display||


|}
|}
Hinweis zur WS 1080: Die WS 1080 gibt es (unter gleichem Namen) in einer OOK- und in einer FSK-Version
Der LaCrosse Sketch und das LaCrosseGateway können nur die FSK-Version empfangen, die OOK-Version nicht.
Die FSK-Version erkennt man an dem grünen Aufkleber im Batteriefach der Station mit dem Aufdruck "PASS 7". Nur diese Version kann empfangen werden.
Die OOK-Version erkennt man an dem grünen Aufkleber im Batteriefach der Station mit dem Aufdruck "PASS A14C".




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


<u>Sie werden in folgender Reihenfolge verwendet:</u>
<u>Sie werden in folgender Reihenfolge verwendet:</u>
Zeile 267: Zeile 256:


=Software=
=Software=
== Release Notes ==
*[https://forum.fhem.de/index.php/topic,43672.0.html LaCrosseGateway Release Notes im Forum]
==Funktionsumfang==
==Funktionsumfang==
*Access Point für die Konfiguration
*Access Point für die Konfiguration
Zeile 273: Zeile 266:
**Statische IP-Adresse anstatt DHCP
**Statische IP-Adresse anstatt DHCP
**Hostname
**Hostname
*Vom JeeLink FHEM-Modul über IP-Adresse:Port ansprechbar. Der Port ist konfigurierbar.
*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)  
*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 |Unterstützte Sensoren und Aktoren]])
*On board und externe Sensoren und Aktoren ([[#Unterstützte Sensoren und Aktoren |Unterstützte Sensoren und Aktoren]])
Zeile 283: Zeile 276:
*SubProzessor (An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini))
*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)
*Serial bridge (Optional kann die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitgestellt werden)
*Software Serial Bridge - Stellt die Soft Serial Schnittstelle transparent auf einem TCP Port bereit.


==Sourcecode==
==Sourcecode==
Der Quellcode des LaCrosse Gateways befindet sich [https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/contrib/arduino/36_LaCrosseGateway.zip?format=raw im FHEM SourceForge Repository (contrib)].
Der Quellcode des LaCrosse Gateways befindet sich [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/contrib/arduino/36_LaCrosseGateway.zip im FHEM SVN Repository (contrib)].


==Firmware Download==
==Firmware Download==
Die [https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin?format=raw Firmware] befindet sich auf dem [https://sourceforge.net/projects/fhem/ FHEM SourceForge Repository] und wird per FHEM Update verteilt. Neue Version der [https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin?format=raw Firmware] wird im {{Link2Forum|Topic=43672|LinkText=FHEM Forum "LaCrosse Gateway"}} angekündigt und der Funktionsumfang bzw. die Änderungen beschrieben.
Die [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] befindet sich im [https://svn.fhem.de/trac/browser/trunk/fhem FHEM SVN Repository] und wird per FHEM Update verteilt. Neue Version der [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wird im {{Link2Forum|Topic=43672|LinkText=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''


'''SDK:'''
Nach einem FHEM-Update alternativ auch: ''<FHEM-Installations-Verzeichnis>/FHEM/firmware/JeeLink_LaCrosseGateway.bin''
Arduino 1.6.9 / Espressiv 1.5.3 / Arduino Core Rev. 14405


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


Das [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg NodeMCU DEVKIT 1.0] hat eine CP2102 UART Bridge implementiert, dafür muss ein CP2102 Treiber installiert sein.
Das [https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg 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.
Bei einem ESP8266-12E Modul kann die Firmware mithilfe eines Seriell-USB-Konverters aufgespielt werden.


===Windows/Mac/Linux per "esptool"===
===Windows/Mac/Linux per "esptool"===
Zeile 307: Zeile 298:
1) Das [https://github.com/igrr/esptool-ck/releases esptool 0.4.6] für die entsprechende Plattform herunterladen.
1) Das [https://github.com/igrr/esptool-ck/releases 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:
2) Zum Aufspielen der Firmware muss ein Befehl mit der folgenden Syntax ausgeführt werden:
<source lang="php">
<syntaxhighlight lang="php">
esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]</source>
esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]</syntaxhighlight>
'''[Port]''' und '''[Pfad zur Firmware (bin-File)]''' müssen angepasst werden.
'''[Port]''' und '''[Pfad zur Firmware (bin-File)]''' müssen angepasst werden.


''Beispiel (Mac/Linux):''
''Beispiel (Mac/Linux):''


<source lang="php">esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin</source>
<syntaxhighlight lang="php">esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin</syntaxhighlight>
 
'''''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.''
 
=== Linux/Debian/Ubuntu "esptool v2.1"===
 
Installieren:
<syntaxhighlight lang="bash">
sudo apt-get esptool
</syntaxhighlight>
 
''Beispiel mit neuer Syntax bei esptool v2.1:''
<syntaxhighlight lang="bash"> sudo esptool --port /dev/ttyUSB0 write_flash 0x00000 JeeLink_LaCrosseGateway.bin</syntaxhighlight>


'''''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"===
===Windows per "nodemcu-flasher"===


1) [http://bbs.espressif.com/download/file.php?id=315&sid=a9040f05a6bf12258fe8b73a52de3a42 Espressif Flashtool] downloaden und entpacken:
1) [https://github.com/nodemcu/nodemcu-flasher/raw/master/Win32/Release/ESP8266Flasher.exe Espressif Flashtool] downloaden und entpacken:


2) [https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin?format=raw Firmware] downloaden
2) [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] downloaden


3) FlashTool starten und wie folgt einstellen:
3) FlashTool starten und wie folgt einstellen:
Zeile 336: Zeile 338:
<div style="clear:both;"></div>
<div style="clear:both;"></div>


Nach dem Flashen sollte über die serielle Ausgabe des ESP der Start und das Öffen des AccessPoints zu sehen sein.
Nach dem Flashen sollte über die serielle Ausgabe (57600 Baud) des ESP der Start und das Öffnen 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.''
'''''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==
==Funktionsweise==
Während des Startvorgangs versucht sich das LaCrosse Gateway in einem WLAN anzumelden. Dazu muss es eine SSID und das entsprechende Passwort kennen.
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:
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 ESP ist.
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.
Der Access Point wird aus Sicherheitsgründen nach 15 Minuten wieder geschlossen.
Zeile 352: Zeile 354:
Die Konfigurationsseite ist auch im "Normalbetrieb" (ohne Access Point) über die Adresse http://''seine aktuelle IP-Adresse''/setup erreichbar.
Die Konfigurationsseite ist auch im "Normalbetrieb" (ohne Access Point) über die Adresse http://''seine aktuelle IP-Adresse''/setup erreichbar.


Wenn sich das LaCrosse Gateway 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 JeeLink Modul senden und empfangen kann - als wenn es ein JeeLink wäre.
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'''
'''Optische Darstellung der Initialisierung'''


Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisieren, was gerade passiert:
Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisiert, was gerade passiert:
*5 schnelle blinks direkt nach dem Start, als Zeichen, dass ein Reset stattgefunden hat
*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.
*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
*LED aus, wenn der Connect zu einem WLAN geklappt hat und dann vereinzeltes Blinken, wenn Daten an FHEM übermittelt werden


Zeile 369: Zeile 371:
*Mit dem LaCrosseGateway Access Point "LaCrosseGateway_xxxxxx" verbinden (siehe [[#Funktionsweise |Beschreibung Funktionsweise]])
*Mit dem LaCrosseGateway Access Point "LaCrosseGateway_xxxxxx" verbinden (siehe [[#Funktionsweise |Beschreibung Funktionsweise]])
*Mithilfe eines Browsers die [http://192.168.222.1/setup LaCrosseGateway "Setup"-Page] öffnen
*Mithilfe eines Browsers die [http://192.168.222.1/setup LaCrosseGateway "Setup"-Page] öffnen
*SSID und das Password eintragen
*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
*''[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
*''[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
*''[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.
*Alle Angaben mit dem Button "save and restart" bestätigen. Dabei werden die vorgenommenen Einstellungen im EEPROM gespeichert und ein Neustart des LaCrosseGateways initiiert.


Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router.  
Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router.  
Zeile 388: Zeile 390:
Voraussetzungen:
Voraussetzungen:


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


Die LaCrosseGateway Firmware kann von JeeLink Device (JeeLink Modul) aus mit  
Die LaCrosseGateway Firmware kann vom LaCrosseGateway Device (LaCrosseGateway Modul) aus mit  
<source lang="php">set myJeeLik flash</source> aktualisiert werden.
<syntaxhighlight lang="php">set myLaCrosseGateway flash</syntaxhighlight> aktualisiert werden.
'''''myJeeLik''' muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.''
'''''myLaCrosseGateway''' muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.''


'''''Hinweis:''' Das Update dauert ca. 30 Sekunden.''
'''''Hinweis:''' Das Update dauert ca. 30 Sekunden.''
=== Per FHEM (USB)===
Voraussetzungen:
Auf dem FHEM-Server muss Python und pyserial installiert sein. Die Installation kann z.B. so erfolgen:
*apt-get install python
*wget https://bootstrap.pypa.io/get-pip.py
*python get-pip.py
*pip install pyserial
Das Attribut "mode" muss auf USB gesetzt sein: attr myLaCrosseGateway mode USB
Der flash-Vorgang wird gestartet mit: set myLaCrosseGateway flash


=== Per CURL ===
=== Per CURL ===
Zeile 403: Zeile 417:


'''''Beispiel:'''''
'''''Beispiel:'''''
<source lang="php">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</source>
<syntaxhighlight lang="php">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</syntaxhighlight>


'''Firmwaredateiname (file=)''' und die '''IP-Adresse''' muss entsprechend angepasst werden.
'''Firmwaredateiname (file=)''' und die '''IP-Adresse''' muss entsprechend angepasst werden.
Zeile 412: Zeile 426:


==LaCrosseGateway Web-Frontend==
==LaCrosseGateway Web-Frontend==
===Staus-Wert RSSI===
===Status-Wert RSSI===
Die WiFi Signalstärke (dBm) (-36 ist besser als -60)
Die WiFi Signalstärke (dBm) (-36 ist besser als -60)


===Staus-Wert FramesPerMinute===
===Status-Wert FramesPerMinute===
Dieser gibt an, wie viele frames von Sensoren in der letzten Minute erfolgreich empfangen, dekodiert und verarbeitet wurden.
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.
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===
===Status-Wert ReceivedFrames===
Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.
Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.


===Sensor-ID===
===WiFi "Startup-delay"===
 
Mit diesem Konfigurationsparameter kann eine Verzögerung (in Sekunden) definiert werden, bis das LGW nach einem 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.  
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.
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 (BMP280, 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.
'''''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 einem 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 unterschiedlich konfigurieren.


Die Anpassung der LaCrosse-ID hat keinerlei Einfluss auf die Daten, die von den Radios empfangen werden.
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:'''
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
! 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===
===SC16IS750-Clone===
Zeile 437: Zeile 489:


===Use MDNS===  
===Use MDNS===  
Legt fest, ob das LGW seine IP-Adresse per MDSN bekannt gibt. Dies ist nötig, wenn man einen Mac hat oder bei Windows einen Bonjour-Service laufen hat.
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.
Dies ist beim Entwickeln sinnvoll, kann üblicherweise ausgeschaltet bleiben.


Zeile 445: Zeile 497:
===Serial bridge port und bridge baud===
===Serial bridge port und bridge baud===
Das LGW kann nun optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.
Das LGW kann nun optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.
Dazu gibt es die neuen settings "Serial bridge port" und "Serial bridge baud" auf der "config"-Page des LGWs.
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.
Das LGW überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.
===Soft Serial Bridge===
Das LGW kann optional eine Soft serial bridge (zuverlässig nur mit bis zu 57600 Baud) transparent auf einem TCP Port bereitstellen.
Folgende Parameter können auf der LGW Setup-Page angepasst/konfiguriert werden:
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
! Parameter !! Beschreibung
|-
| Port
| Der Port, auf dem es angesprochen werden kann
|-
| Baud
| Die Baudrate für die Kommunikation
|-
| Nextion display
| Für den Betrieb eines Nextion Display muss diese Option aktiviert sein.
|-
| Add units
| Fügt an die Werte (Temp,Hum,Pres), die das LGW an das Display schickt, Einheiten an.
|}
Mithilfe des Soft serial bridge können verschiedene Geräte (nanoCUL, Nextion Display, etc.), welche per serieller Schnittstelle kommunizieren können, in Betrieb genommen werden.


===Statuswerte abrufen===
===Statuswerte abrufen===
Zeile 452: Zeile 526:


Beispiel:
Beispiel:
<source lang="php"><LGW>
<syntaxhighlight lang="php"><LGW>
   <Info Key="UpTimeSeconds" Value="107086"/>
   <Info Key="UpTimeSeconds" Value="107086"/>
   <Info Key="UpTimeText" Value="1Tg. 5Std. 44Min. 46Sek. "/>
   <Info Key="UpTimeText" Value="1Tg. 5Std. 44Min. 46Sek. "/>
Zeile 460: Zeile 534:
   <Info Key="ReceivedFrames" Value="93593"/>
   <Info Key="ReceivedFrames" Value="93593"/>
   <Info Key="FramesPerMinute" Value="52"/>
   <Info Key="FramesPerMinute" Value="52"/>
</LGW></source>
</LGW></syntaxhighlight>


===Funktionsweise Log===
===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.
Das Log ist als Hilfsmittel bei der Fehlersuche gedacht z.B. um bei PCA301 zu verfolgen, wann wer was wie fragt und antwortet oder um zu schauen, ob irgendwelche Sensoren überhaupt empfangen werden und die Daten an FHEM geliefert werden.


[[Datei:lgw_LogPage.png|600px|thumb|left|LaCrosseGateway Log ebfrontend]]
[[Datei:lgw_LogPage.png|600px|thumb|left|LaCrosseGateway Log ebfrontend]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>
Mit "Command" kann man Befehle an das LGW senden. Sie entsprechen dem, was man mit "set myJeeLink raw ..." aus FHEM schicken kann.
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 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 untere Liste enthält debug-Informationen u.a. wird hier der letzte Systemstart aufgezeichnet.
Zeile 473: Zeile 547:


Das Log kann per HTTP abgerufen werden:
Das Log kann per HTTP abgerufen werden:
<source lang="php">http://<LGW-IP>/getLogData</source>
<syntaxhighlight lang="php">http://<LGW-IP>/getLogData</syntaxhighlight>


'''''Beispiel:'''''
'''''Beispiel:'''''
<source lang="php">http://192.168.31.211/getLogData</source>
<syntaxhighlight lang="php">http://192.168.31.211/getLogData</syntaxhighlight>


das Ergebnis sieht wie folgt aus:
das Ergebnis sieht wie folgt aus:
<source lang="php">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]
<syntaxhighlight lang="php">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 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]
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]
Zeile 487: Zeile 561:
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 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 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</source>
DATA:OK WS 0 4 4 185 255 255 255 255 255 255 255 255 255 0 3 252</syntaxhighlight>


'''''DATA:''''' für die obere Liste
'''''DATA:''''' für die obere Liste
Zeile 505: Zeile 579:
Es wird ein [[#LaCrosseGateway einrichten |vorkonfiguriertes]] LaCrosseGateway vorausgesetzt.
Es wird ein [[#LaCrosseGateway einrichten |vorkonfiguriertes]] LaCrosseGateway vorausgesetzt.


Perl Modul: ''LWP::UserAgent'' - Dieses wird für das Firmware Update per FHEM JeeLink Modul benötigt.
Perl Modul: ''LWP::UserAgent'' - Dieses wird für das Firmware Update per FHEM LaCrosseGateway Modul benötigt.
Auf einem Raspberry Pi kann die Instllation wie folgt durchgeführt werden:
Auf einem Raspberry Pi kann die Installation wie folgt durchgeführt werden:
<source lang="php">sudo apt-get install libwww-perl</source>
<syntaxhighlight lang="php">sudo apt-get install libwww-perl</syntaxhighlight>
alternativ auch mit
alternativ auch mit
<source lang="php">sudo cpan LWP::UserAgent</source>
<syntaxhighlight lang="php">sudo cpan LWP::UserAgent</syntaxhighlight>


'''FHEM Module'''
'''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.<br>
Dieses sollte anstatt dem 36_JeeLink.pm vorzugsweise verwendet werden.
''36_LaCrosseGateway.pm'' (wird per FHEM Update verteilt)


''36_KeyValueProtocol.pm'' (wird per FHEM Update verteilt)
''36_KeyValueProtocol.pm'' (wird per FHEM Update verteilt)
''36_JeeLink.pm'' (wird per FHEM Update verteilt)


''36_LaCrosse.pm'' (wird per FHEM Update verteilt)
''36_LaCrosse.pm'' (wird per FHEM Update verteilt)
Zeile 522: Zeile 599:


''36_EC3000.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)
''42_Nextion.pm'' (wird per FHEM Update verteilt)


==Device Definition==
==Device Definition==
===WLAN===
===WLAN===
Die Definition sieht dann wie folgt aus:
Die Definition sieht dann wie folgt aus:
''define myJeeLink JeeLink <IP-Adresse>:81''
 
Der name "myJeeLink" kann bei Bedarf angepasst werden.
<code>define <myLaCrosseGateway> LaCrosseGateway <IP-Adresse>:81</code>
<IP-Adresse> muss entsprechend angepasst werden.
 
Beispiel:
''<myLaCrosseGateway>'' kann bei Bedarf angepasst werden.
<source lang="php">define myJeeLink JeeLink 192.168.22.33:81</source>
 
IP-Adresse ermitteln: Das LaCrosseGateway heist per default Einstellung "''LaCrosseGateway''" per ping auf den Hostnamen ''LaCrosseGateway'' kann die IP-Adresse ermittelt werden.
''<IP-Adresse>'' muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.
 
'''Beispiel:'''
<syntaxhighlight lang="php">define myLaCrosseGateway LaCrosseGateway 192.168.22.33:81</syntaxhighlight>
<u>IP-Adresse ermitteln:</u> Das LaCrosseGateway heist per default Einstellung "''LaCrosseGateway''", per ping auf den Hostnamen ''LaCrosseGateway'' kann die <IP-Adresse> ermittelt werden.
 
===USB===
===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:<br>
1.) Man kann mit einem 10k pullup auf 3.3V an MOSI == GPIO13 == D7 "jumpern", dass man kein WiFi will. Wenn vorhanden, wird WiFi sofort beim Start deaktiviert.<br>
2.) Man kann WiFi auf der Setup-Page des LGW deaktivieren.<br>
Für den Betrieb via USB sieht die Definition wie folgt aus:
Für den Betrieb via USB sieht die Definition wie folgt aus:
''define myJeeLink JeeLink <USB-Port>@57600''


Der name "myJeeLink" kann bei Bedarf angepasst werden.
<code>define <myLaCrosseGateway> LaCrosseGateway <USB-Port>@57600</code>
<IP-Adresse> muss entsprechend angepasst werden.
 
''<myLaCrosseGateway>'' kann bei Bedarf angepasst werden.
 
''<USB-Port>'' muss entsprechend angepasst werden.


Beispiel:
Beispiel: <code>define myLaCrosseGateway LaCrosseGateway /dev/ttyUSB0@57600</code>
<source lang="php">define myJeeLink JeeLink /dev/ttyUSB0@57600</source>
''/dev/ttyUSB0'' Falls bereits mehrere USB Geräte angeschlossen sind muss der USB Port angepasst werden.
*'''/dev/ttyUSB0''' Falls bereits mehrere USB Geräte angeschlossen sind muss der USB Port angepasst werden.




Zeile 547: Zeile 641:


Dieser Befehl zeigt die Serial-ID der angeschlossenen USB-Devices an:  
Dieser Befehl zeigt die Serial-ID der angeschlossenen USB-Devices an:  
<source lang="php">ls -l /dev/serial/by-id</source>
<code>ls -l /dev/serial/by-id</code>


Beispiel für die Ausgabe:
Beispiel für die Ausgabe:
<source lang="php">lrwxrwxrwx 1 root root 13 Mai 14 10:37 usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 -> ../../ttyUSB1
<syntaxhighlight lang="text">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 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</source>
lrwxrwxrwx 1 root root 13 Apr 16 14:52 usb-Silicon_Labs_ELV_USB-Modul_UM2102_EVFSRFF8COEXIKOT-if00-port0 -> ../../ttyUSB0</syntaxhighlight>
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.
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:
Auf Basis dieser Informationen lässt sich folgende Definition erstellen:


<source lang="php">define myJeeLink JeeLink /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@57600</source>
<code>define myLaCrosseGateway LaCrosseGateway /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@57600</code><br>
Wichtig ist es, die Übertragungsrate von 57600 bit/s anzugeben.
Wichtig ist es, die Übertragungsrate von 57600 bit/s anzugeben.<br><br>
 
Wenn man das LGW ohne WiFi betreibt, dann muss man natürlich auf die Annehmlichkeiten des Web-Frontends verzichten.<br>
In diesem Fall kann man die Konfiguration, die man über das Web-Frontend machen würde, über die serielle Schnittstelle machen.<br>
 
<code>set myLaCrosseGateway raw "SETUP ..."</code><br>
Das ... sind die gewünschten Einstellungen. Es müssen nicht alle Einstellungen gesendet werden sondern nur die, die man setzen will.<br>
Es werden nur die Einstellungen gesetzt und im EEPROM gespeichert, es wird aber kein Reboot ausgelöst<br>
Einen Reboot kann man mit "set myLaCrosseGateway raw 8377e" auslösen.<br>
Mehrere Einstellungen können durch Semikolon getrennt angegeben werden.<br>
Beispiel:
<code>set myJeeLink213 raw "SETUP UseWiFi false; IO0 OLED mode=thp; IO1 OLED Off; CorrT -2.5; ISID 213"</code>
 
Man kann auf der seriellen Schnittstelle die aktuellen Einstellungen abrufen.
Das command ist 1g<br>
<code>set myLaCrosseGateway raw 1g</code><br>
Man bekommt dann so etwas zurück:
<syntaxhighlight lang="text">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;</syntaxhighlight>


==Reconnect==
==Reconnect==
Falls das LaCrosse Gateway nicht erreichbar ist (Kein Strom/Stromausfall, WLAN Verbingung unterbrochen etc.), bricht das JeeLink Device die Kommunikation ab. Über das entsprechende ''timeout'' Attribut kann das JeeLink device so konfigurert werden, dass es in regelmässigen Abständen erneut versucht eine Verbindung mit dem LaCrosseGateway herzustellen.
Falls das LaCrosseGateway nicht erreichbar ist (Kein Strom/Stromausfall, WLAN Verbindung 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:
Konfigurationsempfehlung für ''timeout'' = 120 Sekunden und ''checkInterval'' = 30 Sekunden:


Der Wert kann in FHEM wie folgt gesetzt werden:
Der Wert kann in FHEM wie folgt gesetzt werden:
<source lang="php">attr myJeeLik timeout 120,30</source>
<syntaxhighlight lang="php">attr myLaCrosseGateway timeout 120,30</syntaxhighlight>
'''''myJeeLik''' muss auf den Gerätenamen in FHEM angepasst werden.''
'''''myLaCrosseGateway''' muss auf den Gerätenamen in FHEM angepasst werden.''


Während das LaCrosseGateway eine WiFi-Verbindungen aufbaut, benötigt das JeeLink-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.
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:'''''
'''''Erklärung der Timeout Werte:'''''
120,30 prüft alle 30 Sekunden, ob seit mindestens 120 Sekunden keine Daten mehr übermittelt wurden (myJeeLink_TIME) 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.
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.''
'''''Hinweis:''' Mit diesem Attribut wird lediglich eine neue Verbindung aufgebaut, dabei wird das LaCrosseGateway nicht resetet.''
==JeeLink Set/Get-Befehle==
Mit dem LaCrosseGateway Skatch funktionieren nur die foldenden JeeLink ''"Set"''-Befehle:
<source lang="php">LaCrossePairForSec, flash, raw und reset</source>
'''''Achtung:''' Die Verwendung von hier nicht aufgeführten Befehlen kann zu inkonsistenten Einstellungen des LaCrosseGateway führen.''
Bisher existieren keine funktionierenden JeeLink ''"Get"'' Befehle.


==Liste aller initCommands==
==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.
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/setup http://IP-Adresse oder Hostname/setup]
[http://IP-Adresse/setup http://IP-Adresse oder Hostname/help]


<source lang="php">
<syntaxhighlight lang="php">
<n>a      set to 0 if the blue LED bothers
<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>c      use one of the possible data rates (for transmit on RFM #1)
Zeile 595: Zeile 702:
<8266>e    Clear EEPROM
<8266>e    Clear EEPROM
<n>f      initial frequency in kHz (5 kHz steps, 860480 ... 879515)
<n>f      initial frequency in kHz (5 kHz steps, 860480 ... 879515)
<n>g      get information (1g: get current settings)
<n>h      Altitude
<n>h      Altitude
<n,f,i>i  Init PCA for Radio #<n> to <m>MHz and <i>s Interval
<n,f,i>i  Init PCA for Radio #<n> to <m>MHz and <i>s Interval
Zeile 600: Zeile 708:
<n>M      bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #2)
<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>#<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>o      set HF-parameter e.g. 1,4o for RFM69
<n>p      payload on the serial port (1: all, 2: only undecoded data)
<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 #1)
Zeile 613: Zeile 721:
<n>w      0=no wifi
<n>w      0=no wifi
<n>z      set to 1 to display analyzed frame data instead of the normal data
<n>z      set to 1 to display analyzed frame data instead of the normal data
</source>
</syntaxhighlight>


==LaCrosseGateway zurücksetzen==
==LaCrosseGateway zurücksetzen==
Das LaCrosseGateway kann über ein Terminalprogramm, dafür muss das LaCrosseGateway per USB angeschlossen sein, zurückgesetzt werden.
Das LaCrosseGateway kann auf die "Werkseinstellungen" zurückgesetzt werden.<br>
Im Terminalprogramm (Baudrate 57600) den Befehl: <source lang="php">8266e</source> senden.
Dadurch werden alle auf der Setup-Page gemachten und im EEPROM gespeicherten Einstellungen verworfen.
Der Befehl dazu lautet: <syntaxhighlight lang="php">8266e</syntaxhighlight>
Er kann mit einem Terminalprogramm, von FHEM aus mit <syntaxhighlight lang="php">set <myLaCrosseGateway> raw 8266e</syntaxhighlight> oder von der Log-Page des LGW gesendet werden.


Daraufhin wird wieder der Access Point aktiviert auf der die [[#LaCrosseGateway einrichten|initiale Konfiguration]] über die [http://192.168.222.1/setup "Setup"] Seite vorgenommen werden kann.
Danach startet das LGW wieder als Access Point [[#LaCrosseGateway einrichten|initiale Konfiguration]] und die Konfiguration kann über die "Setup-Page" neu vorgenommen werden kann.


==Sensoren/Aktoren anlegen==
==Sensoren/Aktoren anlegen==


Voraussetzung: FHEM autocreat ist aktiv.
Voraussetzung: die [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ist aktiv.
Die [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ist aktiv.


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


Empfangene Sensoren werden nur hinzugefügt werden, wenn man LaCrossePairForSec auf 120 Sekunden gesetzt wird.
Empfangene Sensoren werden nur hinzugefügt werden, wenn LaCrossePairForSec auf 120 Sekunden gesetzt wird.
<source lang="php">set myJeeLink LaCrossePairForSec 120 ignore_battery</source>
<syntaxhighlight lang="php">set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery</syntaxhighlight>


==Inbetriebnahme von BMP180 / BME280==
==Inbetriebnahme von BMP180 / BME280==
Zeile 635: Zeile 744:


Das Anlegen kann automatisch erfolgen, dafür muss der folgende FHEM Befehl ausgeführt werden:
Das Anlegen kann automatisch erfolgen, dafür muss der folgende FHEM Befehl ausgeführt werden:
<source lang="php">set myJeeLink LaCrossePairForSec 120 ignore_battery</source>
<syntaxhighlight lang="php">set myLaCrosseGateway LaCrossePairForSec 120 ignore_battery</syntaxhighlight>


Dann sollte von [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ein LaCrosse Device mit der [[#Sensor-ID | Sensor-ID]] (Default Wert: 0) angelegt werden.
Dann sollte von [http://fhem.de/commandref.html#autocreate FHEM autocreate Funktion] ein LaCrosse Device mit der [[#Sensor-ID | Sensor-ID]] (Default Wert: 0) angelegt werden.


Alternativ kann das FHEM Device manuell 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 | Sensor-ID]] (Default Wert: 0)
Die '''''ID''''', mit der das LGW die internen Sensoren sendet, entspricht der konfigurierten [[#Sensor-ID | Sensor-ID]] (Default Wert: 0)
Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.
Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.
<source lang="php">define <name> LaCrosse 00</source>
<syntaxhighlight lang="php">define <name> LaCrosse 00</syntaxhighlight>
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:
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.''
Beispiel: 220h legt 220m über NN fest.''
<source lang="php">attr myJeeLik initCommands 220h</source>
<syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 220h</syntaxhighlight>
 
'''Besser:''' Alternativ kann die Höhe über NN auch auf der Setup-Page des LGW gesetzt werden.<br>
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==
==Inbetriebnahme Piezo Summer==


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


'''Beispiele:'''  
'''Beispiele:'''  
<source lang="php">
<syntaxhighlight lang="php">
set myJeeLink raw 1,60b  -> beep ... beep ... beep                      60 Sekunden lang
set myLaCrosseGateway raw 1,60b  -> beep ... beep ... beep                      60 Sekunden lang
set myJeeLink raw 2,300b  -> beep beep ... beep beep ... beep beep      300 Sekunden lang
set myLaCrosseGateway raw 2,300b  -> beep beep ... beep beep ... beep beep      300 Sekunden lang
set myJeeLink raw 3,120b  -> beep beep beep ... beep beep beep ...      120 Sekunden lang
set myLaCrosseGateway raw 3,120b  -> beep beep beep ... beep beep beep ...      120 Sekunden lang
set myJeeLink raw 0b      -> beep stoppen
set myLaCrosseGateway raw 0b      -> beep stoppen
</source>
</syntaxhighlight>


==Inbetriebnahme von RFM69CW==
==Inbetriebnahme von RFM69CW==
Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzten. Nachfolgend wird die Konfiguration des Senders/Empfängers erläutert.
Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzen. 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:
Die "Default Werte" (wenn keine Angaben definiert werden) für die data rate sind wie folgt definiert:
<source lang="php">
<syntaxhighlight lang="php">
#1 (Erste)  => 17241
#1 (Erste)  => 17241
#2 (Zweite) => 9579
#2 (Zweite) => 9579
Zeile 670: Zeile 782:
#4 (Vierte) => 20000
#4 (Vierte) => 20000
#5 (Fünfte) => 17241
#5 (Fünfte) => 17241
</source>
</syntaxhighlight>


'''''Hinweis:''' Detailinformationen sind auch auf der LaCrosseGateway "Help"-Page zu finden.''
'''''Hinweis:''' Detailinformationen sind auch auf der LaCrosseGateway "Help"-Page zu finden.''
Zeile 680: Zeile 792:
| <code>m t:</code>    || ''Toggle-Steuerung''  
| <code>m t:</code>    || ''Toggle-Steuerung''  
|-
|-
| <code>r:</code>    || ''Datarate''  
| <code>r:</code>    || ''DataRate''  
|-
|-
| <code>f:</code>    || ''Frequenz''  
| <code>f:</code>    || ''Frequenz''  
Zeile 692: Zeile 804:
!Definition !! Erläuterungen  
!Definition !! Erläuterungen  
|-
|-
| <source lang="php">attr myJeeLink initCommands 0#1r v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 0#1r v</syntaxhighlight>
| DataRate des ersten RFM setzen
| DataRate des ersten RFM setzen
|-
|-
| <source lang="php">attr myJeeLink initCommands 8842#3r v </source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 8842#3r v </syntaxhighlight>
| DataRate des dritten RFM setzen
| DataRate des dritten RFM setzen
|-
|-
| <source lang="php">attr myJeeLink initCommands 868300#2f v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 868300#2f v</syntaxhighlight>
| Frequenz des zweiten RFM setzten
| Frequenz des zweiten RFM setzten
|-
|-
| <source lang="php">attr myJeeLink initCommands 868295#3f v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 868295#3f v</syntaxhighlight>
| Frequenz des dritten RFM setzten
| Frequenz des dritten RFM setzten
|-
|-
| <source lang="php">attr myJeeLink initCommands 17241#1r 8842#2r v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 17241#1r 8842#2r v</syntaxhighlight>
| Zwei RFM69CW mit DataRate 17241 und 8842
| Zwei RFM69CW mit DataRate 17241 und 8842
|-
|-
| <source lang="php">attr myJeeLink initCommands 3#1m 20#1t 8842#2r v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 3#1m 20#1t 8842#2r v</syntaxhighlight>
| Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent
| Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent
|-
|-
| <source lang="php">attr myJeeLink initCommands 220h 868295#1f 868310#2f v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 220h 868295#1f 868310#2f v</syntaxhighlight>
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN
| Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN
|-
|-
| <source lang="php">attr myJeeLink initCommands 868295#1f 3#1m 20#1t 2,868950,60i 8842#3r 220h 0a v</source>
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 868295#1f 3#1m 20#1t 2,868950,60i 8842#3r 220h 0a v</syntaxhighlight>
| Drei RFMs Frequenz 868295 / PCA301 / WS1600 sowie Höhe über NN <br>Radio 1 auf 868295 MHz und Toggle 9K/17K mit 20 Sekunden<br>Radio 2 für PCA301 initialisiert (geht nur bei mir, ist noch nicht in der 1.11 enthalten)<br>Radio 3 macht 8842 kbps für die WS 1600<br>Höhe 220m über NN<br>Activity LED aus<br>v am Ende ruft die neu gesetzen Daten vom LaCrosseGateway ab, damit sie in FHEM JeeLink Modul aktualisiert werden.
| Drei RFMs Frequenz 868295 / PCA301 / WS1600 sowie Höhe über NN <br>Radio 1 auf 868295 MHz und Toggle 9K/17K mit 20 Sekunden<br>Radio 2 für PCA301 initialisiert<br>Radio 3 macht 8842 kbps für die WS 1600<br>Höhe 220m über NN<br>Activity LED aus<br>v am Ende ruft die neu gesetzten 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.
'''''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==
==Inbetriebnahme von PCA301==
PCA301 im LGW funtioniert ähnlich dem PCA301 Sketch, allerding mit einigen systembedingten Abweichungen.
PCA301 im LGW funktioniert ähnlich dem PCA301 Sketch, allerdings mit einigen systembedingten Abweichungen.


Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command "'''''i'''''".
Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command "'''''i'''''".
Zeile 730: Zeile 842:
'''''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.''
'''''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
Das ''Poll-Interval'' sollte nicht extrem heruntergesetzt (nicht unter eine Minute) werden, da PCA301 sonst LaCrosse verdrängt. PCA301 hat höhere Priorität, da es bei der Kommunikation
mit den Dosen keine Antworten überhören darf.
mit den Dosen keine Antworten überhören darf.


Zeile 742: Zeile 854:
! Definition !! Erläuterungen  
! Definition !! Erläuterungen  
|-
|-
| style="width:40%" | <code>attr myJeeLink initCommands 2,868950,120i v</code>
| style="width:40%" | <code>attr myLaCrosseGateway initCommands 2,868950,120i v</code>
| Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden
| Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden
|-
|-
| <code>attr myJeeLink initCommands 1,868950,120 3#2m 20#2t 220h 0a v</code>
| <code>attr myLaCrosseGateway initCommands 1,868950,120i 3#2m 20#2t 220h 0a v</code>
| Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280.<br>Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen<br>der BMP180/BME280 liefert den Druck für 220m Meereshöhe<br>die LED ist deaktiviert
| Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280.<br>Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen<br>der BMP180/BME280 liefert den Druck für 220m Meereshöhe<br>die LED ist deaktiviert
|}
|}
Zeile 754: Zeile 866:
Sobald eine Dose empfangen wurde, wird sie in der Konfiguration (EEPROM) dauerhaft registriert und ab sofort gepollt.
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,
Das ''Polling'' funktioniert 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
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.''
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.
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 anlernt werden. Das LaCrosseGateway erkennt sie und nimmt sie in die
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.
Konfiguration auf. Falls die Dose bereits mit einem anderen Kanal bekannt war, wird der Kanal im LaCrosseGateway aktualisisert.


Zeile 812: Zeile 924:


'''Beispiel:'''
'''Beispiel:'''
<source lang="php">attr myJeeLink initCommands 9#2m 20#2t v</source>
<syntaxhighlight lang="php">attr myLaCrosseGateway initCommands 9#2m 20#2t v</syntaxhighlight>


==Inbetriebnahme von MCP23008==
==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.
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.
'''Input''': Eingang, wird per KVP an FHEM übermittelt. Einsatzzweck: z.B. Anschluss von Pushbuttons.


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




Beispiel: ''Input => Eingang, wird per KVP an FHEM übermittelt''
Beispiel: ''Input => Eingang, wird per KVP an FHEM übermittelt''
<source lang="php">OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0</source>
<syntaxhighlight lang="php">OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0</syntaxhighlight>


Beispiel: ''Output => Kann von FHEM aus gesetzt werden.''
Beispiel: ''Output => Kann von FHEM aus gesetzt werden.''
<source lang="php">set myJeeLink raw "MCP GP0=1,GP1=0"</source>
<syntaxhighlight lang="php">set myLaCrosseGateway raw "MCP GP0=1,GP1=0"</syntaxhighlight>
 
==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==
==Inbetriebnahme von OLED-Display==
Wird derzeit (Stand: 05.2016) {{Link2Forum|Topic=52921|LinkText=hier}} diskutiert und entwickelt.
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.
 
Für die korrekte Darstellung auf dem 1.3" Display, muss die Checkbox 1.3" auf der Setup-Page aktiviert werden
 
Hinweis: das 0.96" Display bekommt man auch in einer Variante, die SPI unterstützt. Diese Variante kann nur nach einem Umbau verwendet werden.  


Ab der Version 1.19 ist der nachfolgende Funktionsumfang implementiert:
Der nachfolgende Funktionsumfang ist implementiert:


*OLED ein- und auschalten über FHEM, mithilfe des JeeLink-Moduls
*OLED ein- und ausschalten sowie das Senden von individuellen Texten über FHEM mithilfe des LaCrosseGateway-Moduls
* Anzeige von Statusinformationen in der obersten Zeile mithilfe von Symbolen (siehe Abbildung - von links nach rechts)
*OLED Startverhalten konfigurierbar
**WiFI connect erfolgreich
*Ü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 einen DataPort connected
**Ein FHEM hat sich auf den Prozessor an der [[#Serial_transparent_bridge|uart bridge]] connected
**Ein FHEM hat sich auf den Prozessor an der [[#Serial_transparent_bridge|UART bridge]] connected
**Rechts oben wird die WiFi Signalstärke (dBm) angezeigt. Hinweis: -36 ist besser als -60  
**WiFi Signalstärke (dBm). Hinweis: -36 ist besser als -60
[[Datei:lgw_oled_statuszeile.png|400px|thumb|left|OLED Anzeige von Statusinformationen]]
<div style="clear:both;"></div>
*Darstellung von bis zu drei Texten und optional eines Symbols
*Definition des Zeitintervalls 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===
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
! 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
|}


[[Datei:lgw_oled_statuszeile.png|400px|thumb|left|OLED Anzeige von Statusinformationen]]
===Mögliche Symbole===
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
! Parameter !! Erläuterung !! OLED Darstellung
|-
| t
| Temperature
| [[Datei:lgw_sym_t.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
|-
| h
| Humidity
|[[Datei:lgw_sym_h.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
|-
| p
| Pressure
|[[Datei:lgw_sym_p.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
|-
| s
| System
|[[Datei:lgw_sym_s.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
|-
| i
| Info
|[[Datei:lgw_sym_i.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
|-
| w
| Warning
|[[Datei:lgw_sym_w.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
|-
| e
| Error
|[[Datei:lgw_sym_e.jpg|150px|thumb|left|]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>
|}
===Beispiele===


'''''Beispiele:'''''
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
! Definition !! Erläuterung
|-
| style="width:30%" | <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED On"</syntaxhighlight>
| Schaltet ein angeschlossenes Display ein
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED Off"</syntaxhighlight>
| Schaltet ein angeschlossenes Display aus
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED interval=20"</syntaxhighlight>
| Legt fest, dass (je nach mode) alle 20 Sekunden die nächste Seite angezeigt wird.
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED mode=ths"</syntaxhighlight>
| Zeigt nacheinander Temperatur, Feuchte und Systemdaten an
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED mode=thp"</syntaxhighlight>
| Zeigt nacheinander Temperatur, Feuchte und Luftdruck an
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED mode=thps"</syntaxhighlight>
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED mode=f"</syntaxhighlight>
| Zeigt ausschließlich den von FHEM festgelegten Text an
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED mode=s"</syntaxhighlight>
| Zeigt ausschließlich die Systemdaten an
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED show=Soll: 20.5,Ist: 19.2,,t"</syntaxhighlight>
| Zeigt die übergebenen Texte an und links das Symbol für Temperatur
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED show=55%,,,h"</syntaxhighlight>
| Zeigt nur den Text "55%" und das Symbol für Feuchte an. Da es nur ein Text ist, wird er größer dargestellt
|-
| <syntaxhighlight lang="php">set myLaCrosseGateway raw "OLED show=Line 1,Line 2,Line 3"</syntaxhighlight>
| Zeigt drei Texte aber kein Symbol an.
|-
| <syntaxhighlight lang="php">attr myLaCrosseGateway initCommands "OLED mode=thps"</syntaxhighlight>
| Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an. Der Mode wird immer geschickt, wenn FHEM sich neu auf das LGW connected.
|}
 
==Inbetriebnahme eines Nextion Displays==
 
Mithilfe der Seriellen Schnittstelle [[#Soft_serial_bridge|(Soft serial bridge]]), kann ein Nextion Display in Betrieb genommen werden. Das Besondere dabei ist, dass das LGW zusätzlich seine Status Informationen (AP-Verbindungsstatus, RSSI, IP, Version, FHEM Verbindungsstatus, etc.) an das Display schickt.
Die Anbindung an FHEM erfolgt mithilfe des Nextion Moduls (42_Nextion.pm), welches per FHEM Update verteilt wird.
 
Ein Diskussionsthread zum Thema „LaCrosseGateway mit Nextion Display“ findet man {{Link2Forum|Topic=63443|LinkText=hier}}.
 
===Voraussetzungen===
Vor der Inbetriebnahme in FHEM, müssen folgende Voraussetzungen erfüllt sein:
*Das Display ist wie [[#Nextion_Display|hier]] beschrieben an das LGW angeschlossen.
*Die [[#Soft_serial_bridge|Soft serial bridge]] auf der LGW Setup-page ist konfiguriert.
*Das LaCrosse Gateway Device ist wie [[#Device_Definition|hier]] beschrieben angelegt.
 
===Funktionsumfang===
 
Der nachfolgende Funktionsumfang ist implementiert:


*OTA Firmware (.tft File) Übertragung an das Display
*Automatische Anpassung der Baudrate auf dem Nextion
*Das LGW schickt (periodisch) Werte an folgende Controls:
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
{| class="wikitable" style="margin-left: auto; margin-left: 0px;"
! Definition !! Erläuterungen
! Control!! Beschreibung/Anmerkung
|-
| LGW#temp.txt
| Nur wenn ein entsprechender on board sensor vorhanden ist.
|-
| LGW#hum.txt
| Nur wenn ein entsprechender on board sensor vorhanden ist.
|-
| LGW#pres.txt
| Nur wenn ein entsprechender on board sensor vorhanden ist.
|-
| LGW#rssi.txt
| WLAN RSSI Signalstärke
|-
| LGW#ip.txt
| IP-Adresse des LGW's
|-
| LGW#fpm.txt
| Frames Per Minute
|-
| LGW#heap.txt
| Free Heap
|-
| LGW#up.txt
| Uptime
|-
| LGW#ver.txt
| Version
|-
| LGW#wifi (vis)
| Setzt die visibility
|-
| LGW#fhem
| Setzt die visibility
|-
| LGW#cpu1
| Setzt die visibility
|-
| LGW#cpu2
| Setzt die visibility
|-
| LGW#main
| Sendet, nachdem es sich initialisiert hat, ein "page LGW#main" an das Nextion.
|-
| LGW#info
| Sendet die Info an die LGW#prog page
|-
| LGW#ptext
| Sendet die Info an die LGW#prog page
|-
| LGW#pbar
| Sendet die Info an die LGW#prog page
|}
 
*Fortschrittsanzeige beim flashen der Nextion Firmware
 
===Device Definition Nextion Modul===
 
Die Definition für die Nextion Bridge sieht dann wie folgt aus:
 
<code>define <nextion> Nextion <IP-Adresse>:<Port></code>
 
''<nextion>'' kann bei Bedarf angepasst werden.
 
''<IP-Adresse>'' muss entsprechend angepasst werden. Anstatt der IP-Adresse kann auch der Hostname vom LaCrosseGateway verwendet werden.
 
''<Port>'' Ist der auf der Setup-page definierte Port
 
'''Beispiel:'''
<syntaxhighlight lang="php">define nextion Nextion 192.168.22.33:86</syntaxhighlight> IP-Adresse ermitteln: Das LaCrosseGateway heisst per default Einstellung "LaCrosseGateway", per ping auf den Hostnamen LaCrosseGateway kann die <IP-Adresse> ermittelt werden.
 
===Firmware erstellen und flashen ===
Ein UI für das Nextion Display wird mit dem Nextion Editor erstellt. Mithilfe des Editors kann die entsprechende Firmware (tft Datei – siehe „File -> Open build folder“) kompiliert (Button: Compile) werden.
 
Das LGW kann die Firmware (.tft Datei) zum Display übertragen. Dazu gibt es zwei Varianten:
 
'''curl'''
 
Syntax lautet:
 
<code>curl --http1.0 -# -o ~output.txt -H "Content_Type:multipart/form-data" -F "file=@<tftFileName>; filename=nextion.tft" http://<LGW-IP>/ota/nextion</code>
 
Beispiel:
 
<code>curl --http1.0 -# -o ~output.txt -H "Content_Type:multipart/form-data" -F "file=@D:\MyNextionFiles\lgw.tft; filename=nextion.tft" http://192.168.31.213/ota/nextion</code>
 
'''Das LaCrosseGateway Modul in FHEM'''
 
Syntax lautet:
 
<syntaxhighlight lang="php">set <myLaCrosseGateway> nextionUpload</syntaxhighlight>
 
Wenn das Attribut "tftFile" gesetzt ist, wird die darin angegebene Datei hochgeladen, ansonsten wird versucht, das File „FHEM/firmware/nextion.tft“ hochzuladen.
 
===Anwendungsbeispiel===
In {{Link2Forum|Topic=63443|LinkText=diesem FHEM Forum Thread}} wurde ein LGW Nextion UI erarbeitet (Stand 01.08.2017 {{Link2Forum|Topic=63443|Message=582453|LinkText=Version 0.7}}), um die Funktionsweise zu demonstrieren.
Das Nextion UI besteht aus folgenden Pages:
{| class="wikitable"
!ID !! Name !! Page !! Beispiel !! Hinweise/Funktion/Bechreibung !! Nextion Debug commands
|-
| 0 ||Boot || Boot || [[Datei:lgw_nextion_boot.png|200px|thumb|left|]]<div style="clear:both;"></div> || Das ist die Startseite nach Einschalten des Nextion Displays. ||
|-
| 1 ||Progress||LGW#prog ||[[Datei:lgw_nextion_prog.png|200px|thumb|left|]]<div style="clear:both;"></div>|| Auf dieser Seite wird der WiFi Verbindungsfortschritt angezeigt. Alle Werte werden vom LGW befüllt. ||page LGW#prog
vis LGW#pbar,1
 
vis LGW#ptext,1
 
LGW#pbar.val=50
 
LGW#ptext.txt="Connect WiFi (1)"
|-
| 2 ||Main|| LGW#main ||  [[Datei:lgw_nextion_main.png|200px|thumb|left|]]<div style="clear:both;"></div> ||Dies ist die Hauptseite, welche vom LGW aufgerufen wird, sobald der Bootvorgang abgeschlossen ist.<br>Hinweise zur Funktionsweise findet man {{Link2Forum|Topic=63443|Message=546896|LinkText=hier}}|| page LGW#main
vis LGW#wifi,1
 
vis LGW#fhem,1
 
vis LGW#cpu1,1
 
vis LGW#cpu2,1
 
LGW#rssi.txt="-68"
 
tTime.txt="23:45"
 
tDate.txt="01.08.2017"
 
vis iTemp,1
 
LGW#temp.txt="25.7"
 
vis iHum,1
 
LGW#hum.txt="68%"
 
vis iPres,1
 
LGW#pres.txt="1024hPa"
 
vis iWind,1
 
tout_ws.txt="23km/h"
 
vis iOutT,1
 
tout_t.txt="28°C"
|-
| 3 ||Info Page||  Info || [[Datei:lgw_nextion_info.png|200px|thumb|left|]]<div style="clear:both;"></div> || Alle Informationen auf dieser Seite werden von LGW automatisch befüllt. || page Info
vis LGW#ip,1
 
LGW#ip.txt="192.168.222.1"
 
vis LGW#fpm,1
 
LGW#fpm.txt="5"
 
vis LGW#heap,1
 
LGW#heap.txt="16280"
 
vis LGW#ver,1
 
LGW#ver.txt="1.30"
 
vis LGW#up,1
 
LGW#up.txt="1Tg.4Std.34Min."
|-
| 4 || Info Page 2 ||  Info2 ||  [[Datei:lgw_nextion_info2.png|200px|thumb|left|]]<div style="clear:both;"></div> || tInfo50 und tInfo51 sind für Nextion UI Version reserviert. tInfo60 bis tInfo91 sind nicht belegt und können verwendet werden, um z.B. die FHEM Verison anzuzeigen. || page Info2
tInfo60.txt="tInfo60:"
 
tInfo61.txt="tInfo61"
 
tInfo70.txt="tInfo70:"
 
tInfo71.txt="tInfo71"
 
tInfo80.txt="tInfo80:"
 
tInfo81.txt="tInfo81"
 
tInfo90.txt="tInfo90:"
 
tInfo91.txt="tInfo91"
|-
| 5 || Settings || Settings || [[Datei:Lgw_nextion_Settings.png|200px|thumb|left|]]<div style="clear:both;"></div> || Einstellungsmöglichkeit von Helligkeit (Wertebereich von 10% bis 100%) des Displays und des PowerOff Timeouts (Wertebereich: off und 1-120 Sek.)||page Settings
h1.val=25
 
h0.val=60
|-
|-
| style="width:50%" | <source lang="php">set myJeeLink raw "OLED On"</source>
| 6 || Control Center||CoCe||[[Datei:lgw_nextion_CoCe.png|200px|thumb|left|]]<div style="clear:both;"></div> ||Zum Schalten von Aktoren und Status Anzeige.<br>Weitere Hinweise zur Funktionsweise sind {{Link2Forum|Topic=63443|Message=576902|LinkText=hier}} zu finden. || page CoCe
| Schaltet ein angeschlossenes Display ein
lblT1.txt="lbT1"
 
lblS1.txt="aus"
 
lblT2.txt="lbT2"
 
lblS2.txt="an"
 
lblT3.txt="lbT4"
 
lblS3.txt="zu"
 
lblT4.txt="lbT3"
 
lblS4.txt="auf"
 
lblT5.txt="lbT5"
 
lblS5.txt="n.a."
|-
|-
| <source lang="php">set myJeeLink raw "OLED Off"</source>
| 7 || Weather ||Weather||[[Datei:lgw_nextion_Weather.png|200px|thumb|left|]]<div style="clear:both;"></div>||Zur Anzeige einer Wettervorhersage. Diese Seite wird durch ein touch auf den "Temp-Wert" in der Main#Page aufgerufen. <br>Implementierungshinweise sind {{Link2Forum|Topic=63443|Message=582453|LinkText=hier}} zu finden. ||page Weather
| Schaltet ein angeschlossenes Display aus
p0.pic=12
 
t0.txt="Mo 01 Aug 2017\rmin:15 max:18"
 
p1.pic=16
 
t1.txt="Di 02 Aug 2017\rmin:15 max:18"
 
p2.pic=17
 
t2.txt="Mi 03 Aug 2017\rmin:15 max:18"
 
p3.pic=12
 
t3.txt="Do 04 Aug 2017\rmin:25 max:28"
 
p4.pic=15
 
t4.txt="Fr 05 Aug 2017\rmin:28 max:32"
|}
|}


==Serial transparent bridge==
Hinweis: Alle Controls die mit dem Namen "LGW#" beginnen sind für das LGW reserviert und werden entsprechend vom Gateway befüllt.
 
===Nextion Tipps & Tricks===
====Nextion Commandreferenz====
Sehr hilfreich ist die Nextion instruction Page, welche hier: https://www.itead.cc/wiki/Nextion_Instruction_Set zu finden ist.
 
==Serial Transparent Bridge==
Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.
Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen.
Dazu gibt es die neuen settings ''"Serial bridge port"'' und ''"Serial bridge baud"'' auf der "Setup"-Page" (Web-Frontend) des LaCrosseGateways.
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.
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.
Damit kann z.B. ein NanoCUL an das LaCrosseGateway angeschlossen werden und in FHEM verwendet werden.




Zeile 867: Zeile 1.352:
*Port und baud rate auf der "Setup"-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud
*Port und baud rate auf der "Setup"-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud
*CUL in FHEM definieren (Beispiel):  
*CUL in FHEM definieren (Beispiel):  
<source lang="php">define CULXYZ CUL <IP-Adresse>:85 0000</source>
<syntaxhighlight lang="php">define CULXYZ CUL <IP-Adresse>:85 0000</syntaxhighlight>
'''''<CULXYZ>''''' Muss nach eigenen Bedürfnissen angepasst werden.
'''''<CULXYZ>''''' Muss nach eigenen Bedürfnissen angepasst werden.


'''''<IP-Adresse>''''' Muss entsprechend 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.
Sollte das CUL-Device nicht erreichbar sein (Restart, Austausch im Falle eines Defekts etc.), empfiehlt es sich einen reconnect Mechanismus in FHEM zu implementieren.


Dieser kann wie folgt aussehen:  
Dieser kann wie folgt aussehen:  


<source lang="php">define CULXYZ-Reconnector at +*00:00:30 {\
<syntaxhighlight lang="php">define CULXYZ-Reconnector at +*00:00:30 {\
my $deviceName = "<CULXYZ>";;\
my $deviceName = "<CULXYZ>";;\
my $version = CommandGet("", $deviceName . " version");;\
my $version = CommandGet("", $deviceName . " version");;\
Zeile 885: Zeile 1.370:
}\
}\
\
\
}  </source>
}  </syntaxhighlight>
'''''<CULXYZ>''''' Muss nach eigenen Bedürfnissen angepasst werden.
'''''<CULXYZ>''''' Muss nach eigenen Bedürfnissen angepasst werden.
'''''Vorgehen Firmware flashen mit LGW'''''
Ein bereits in Betrieb genommener NanoCUL kann nach dem gleichen Vorgehen (siehe [[#SubProzessor|"SubProzessor - Vorgehen Firmware flashen"]]) wie ein SubProzessor geflasht werden.


==Zugriff mit mehreren FHEM Instanzen==
==Zugriff mit mehreren FHEM Instanzen==
Zeile 897: Zeile 1.386:


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.
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=
=Nano LaCrosse Gateway=
Das nano LaCrosse Gateway verwendet die gleiche [https://sourceforge.net/p/fhem/code/HEAD/tree/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin?format=raw 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 nano LaCrosse Gateway verwendet die gleiche [https://svn.fhem.de/trac/export/HEAD/trunk/fhem/FHEM/firmware/JeeLink_LaCrosseGateway.bin Firmware] wie das WiFi LaCrosse Gateway, der signifikante Unterschied ist die kompakte (portable) Bauform. Aufgrund der Bauform können jedoch 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.).
Das Gateway eignet sich sehr gut als Entwicklungsstick (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.
Der Betrieb ü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 {{Link2Forum|Topic=51329|LinkText=FHEM Forum}} zu finden.
Weiterführende Informationen zum nano LaCrosse Gateway und Ideensammlung für eine Platine sind im {{Link2Forum|Topic=51329|LinkText=FHEM Forum}} zu finden.


==Bauteile==
==Bauteile==
Folgende bauteile werden benötigt:
Folgende Bauteile werden benötigt:
*[http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=36507 Gehäuse]
*Gehäuse [http://www.elv.de/output/controller.aspx?cid=74&detail=10&detail2=36507 schwarz] oder [http://www.voelkner.de/products/164819/USB-Gehaeuse-USB-1kl-Transparent.html transparent]
*ESP-12E
*ESP-12E
*Auto-Flash-Reset-Schaltung mit zwei Widerständen
*Auto-Flash-Reset-Schaltung
*[http://www.aliexpress.com/item/6Pin-USB-2-0-to-TTL-UART-Module-Serial-Converter-CP2102-STC-Replace-Ft232/32364013343.html?spm=2114.13010208.99999999.261.mWmpl5 CP2102 FTDI]
*[http://www.aliexpress.com/item/6Pin-USB-2-0-to-TTL-UART-Module-Serial-Converter-CP2102-STC-Replace-Ft232/32364013343.html?spm=2114.13010208.99999999.261.mWmpl5 CP2102 FTDI]
*Breakout board mit einem AMS 1117 3.3V
*RFM69CW
*RFM69CW
*Status-LED
*Status-LED


==Schaltung==
==Schaltung==
[[Datei:lgw_nano_Schaltplan.png|600px|thumb|left|LaCrosseGateway Platine Oberseite]]
[[Datei:lgw_nano_Schaltplan.png|600px|thumb|left|Schaltplan NanoLGW]]
<div style="clear:both;"></div>
<div style="clear:both;"></div>


==Selbstbau nano LaCrosse Gateway==
==Selbstbau==
{| class="galleryTable noFloat"
{| class="galleryTable noFloat"
|-
|-
Zeile 928: Zeile 1.415:
| [[Datei:lgw_nano_Selbstbau3.png|475px|thumb|left|Selbstbau nano LaCrosse Gateway 3]]
| [[Datei:lgw_nano_Selbstbau3.png|475px|thumb|left|Selbstbau nano LaCrosse Gateway 3]]
|}
|}
 
==Platine==
==Platine nano LaCrosse Gateway==
===nano LaCrosse Gateway===
Stand 05.2016 noch nicht fertig gestellt.  
{| class="galleryTable noFloat"
Der aktuelle Entwicklungsstand ist im {{Link2Forum|Topic=51329|LinkText=FHEM Forum}} zu finden.
|-
 
|[[Datei:Nanolgw_bestueckt_oberseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Oberseite]]
[[Datei:lgw_nano_Platine_Prototyp.jpg|600px|thumb|left|Ein Protoyp der Platine für das nano LaCrosse Gateway]]
|[[Datei:Nanolgw_bestueckt_unterseite.jpg|400px|thumb|left|nano LaCrosse Gateway Platine Unterseite]]
<div style="clear:both;"></div>
|}
===USB2TTL===
{| class="galleryTable noFloat"
|-
|[[Datei:Nanolgw_USB2TTL_1.jpg|400px|thumb|left|USB2TTL Platine Oberseite]]
|[[Datei:Nanolgw_USB2TTL_2.jpg|400px|thumb|left|USB2TTL Platine Unterseite]]
|}
===nano LaCrosse Gateway inkl. USB2TTL===
{| class="galleryTable noFloat"
|-
|[[Datei:Nanolgw_oberseite_USB2TTL_1.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]
|[[Datei:Nanolgw_oberseite_USB2TTL_2.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Oberseite]]
|}
{| class="galleryTable noFloat"
|-
|[[Datei:Nanolgw_unterseite_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Unterseite]]
|[[Datei:Nanolgw_seitenansicht_USB2TTL.jpg|400px|thumb|left|nano LaCrosse Gateway inkl. USB2TTL Seitenansicht]]
|}
===nano LaCrosse Gateway fertig bestückt inkl. Gehäuse===
{| class="galleryTable noFloat"
|-
|[[Datei:Nanolgw_USB2TTL_fertig_oberseite.jpg|400px|thumb|left|nano LGW fertig bestückt inkl. Gehäuse Oberseite]]
|[[Datei:nanolgw_USB2TTL_fertig_unterseite.jpg|400px|thumb|left|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 =
= Tipps & Tricks =
Zeile 944: Zeile 1.457:


'''''Achtung:''' Dabei werden alle Einstellungen unwiderruflich gelöscht''
'''''Achtung:''' Dabei werden alle Einstellungen unwiderruflich gelöscht''
<source lang="php">./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce</source>
<syntaxhighlight lang="php">./esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 115200 -ca 0x00000 -cd nodemcu -ce</syntaxhighlight>


'''''</dev/tty.SLAB_USBtoUART>''' Muss entsprechend angepasst werden.''
'''''</dev/tty.SLAB_USBtoUART>''' Muss entsprechend angepasst werden.''
Zeile 951: Zeile 1.464:
Diskussionsthread aus dem Forum:
Diskussionsthread aus dem Forum:


[https://forum.fhem.de/index.php/topic,43672.0.html LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino]
{{Link2Forum|Topic=43672|LinkText=LaCrosseGateway - LaCrosse, PCA301 und EC3000 über wifi mit ESP8266 ohne Arduino}}


[https://forum.fhem.de/index.php/topic,45594.0.html Platine für LaCrosseGateway: Platinenbestellung]
{{Link2Forum|Topic=45594|LinkText=Platine für LaCrosseGateway: Platinenbestellung}}


[https://forum.fhem.de/index.php/topic,51329.30.html Platine für nanoLGW (LaCrosse Gateway): Layout]
{{Link2Forum|Topic=51329|LinkText=Platine für nanoLGW (LaCrosse Gateway): Layout}}


[https://forum.fhem.de/index.php/topic,52921.0.html Display für LaCrosseGateway]
{{Link2Forum|Topic=52921|LinkText=Display für LaCrosseGateway}}


[https://forum.fhem.de/index.php/topic,52895.0.html SC16IS750-Software-Clone]
{{Link2Forum|Topic=63443|LinkText=LaCrosseGateway mit Nextion Display}}


[[Kategorie:Interfaces]]
[[Kategorie:Interfaces]]
[[Kategorie:ESP8266]]
[[Kategorie:IP Components]]
[[Kategorie:IP Components]]
[[Kategorie:Other Components]]
[[Kategorie:Other Components]]
Zeile 967: Zeile 1.481:
[[Kategorie:Feuchtesensoren]]
[[Kategorie:Feuchtesensoren]]
[[Kategorie:Wetterstationen]]
[[Kategorie:Wetterstationen]]
[[Kategorie:868MHz]]

Aktuelle Version vom 14. Oktober 2022, 09:01 Uhr

LaCrosseGateway
Zweck / Funktion
Einbindung des LaCrosse Gateways (Hardware)
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Thema
Support (Forum) Sonstige Systeme
Modulname 36_LaCrosseGateway.pm
Ersteller HCS (Forum /Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Diese Seite beschreibt ausschließlich das LaCrosseGateway V1.x, das auf dem ESP8266 basiert. Für das LaCrosseGateway32 (Thema dazu im Forum), das auf dem ESP32 basiert, wird es eine eigene Seite geben.

Info green.pngStatus:
  • Dokumentationsstand dieser Seite: Version 1.27
  • Neueste Version (09/2019): Version 1.35
  • LaCrosseGateway32 wird (Stand 10/2022) seit April 2018 wegen Zeitmangels nicht aktiv weiterentwickelt

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 sind nur Strom (5V/1A USB Netzteil) und ein 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 onboard 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:

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 einen 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 "offiziell" 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 Empfangen funkbasierter 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)
  • [Optional] Nextion Touch Display zur Darstellung von verschiedenen Informationen oder zum Schalten von Aktoren.
  • Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.) / PeMue Platine

Schaltung

Variante: DEVKIT 1.0 Minimum

Variante: DEVKIT 1.0

Variante: DEVKIT 1.0 Maximalausbau

Variante: FTDI

Variante: Platine (PeMue)

siehe hier: Thread

Siehe Erweiterungsmöglichkeiten.

MCP23008

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

Nextion Display

Angeschlossen wird das Display wie folgt: GPIO0: TXD -> Nextion RXD GPIO2: RXD -> Nextion TXD

Das Display benötigt eine 5V Spannungsversorgung, diese kann vom VIN des DEVKIT's abgegriffen werden. Vom Betrieb mit 3.3V wird abgeraten. Ein level shifter für RXD/TXD ist nicht nötig.

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.
    Für die Platine V1.1 wurde das korrigiert.
  • Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrahtigen 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 nachfolgenden 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: filename=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 kommen, das 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
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
Nextion Display (Max.) 57600 baud on board Touch Display


Alle direkt am LGW anschließbaren 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

Release Notes

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)
  • Software Serial Bridge - Stellt die Soft Serial Schnittstelle transparent auf einem TCP Port bereit.

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 FHEM-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 mit 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.

Linux/Debian/Ubuntu "esptool v2.1"

Installieren:

sudo apt-get esptool

Beispiel mit neuer Syntax bei esptool v2.1:

 sudo esptool --port /dev/ttyUSB0 write_flash 0x00000 JeeLink_LaCrosseGateway.bin


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 (57600 Baud) des ESP der Start und das Öffnen 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 signalisiert, 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 vorgenommenen 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 vom 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 FHEM (USB)

Voraussetzungen: Auf dem FHEM-Server muss Python und pyserial installiert sein. Die Installation kann z.B. so erfolgen:

Das Attribut "mode" muss auf USB gesetzt sein: attr myLaCrosseGateway mode USB

Der flash-Vorgang wird gestartet mit: set myLaCrosseGateway flash

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

Status-Wert RSSI

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

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

Status-Wert ReceivedFrames

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

WiFi "Startup-delay"

Mit diesem Konfigurationsparameter kann eine Verzögerung (in Sekunden) definiert werden, bis das LGW nach einem 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 einem 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 unterschiedlich 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.

Soft Serial Bridge

Das LGW kann optional eine Soft serial bridge (zuverlässig nur mit bis zu 57600 Baud) transparent auf einem TCP Port bereitstellen. Folgende Parameter können auf der LGW Setup-Page angepasst/konfiguriert werden:

Parameter Beschreibung
Port Der Port, auf dem es angesprochen werden kann
Baud Die Baudrate für die Kommunikation
Nextion display Für den Betrieb eines Nextion Display muss diese Option aktiviert sein.
Add units Fügt an die Werte (Temp,Hum,Pres), die das LGW an das Display schickt, Einheiten an.

Mithilfe des Soft serial bridge können verschiedene Geräte (nanoCUL, Nextion Display, etc.), welche per serieller Schnittstelle kommunizieren können, in Betrieb genommen werden.

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 fragt und antwortet oder um zu schauen, ob irgendwelche 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_LaCrosseGateway.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)

42_Nextion.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 einem 10k pullup auf 3.3V an MOSI == GPIO13 == D7 "jumpern", dass man kein WiFi will. Wenn vorhanden, 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 Verbindung 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. 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: die FHEM autocreate Funktion ist aktiv.

Die erkannten 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 konfigurierten 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 einzusetzen. 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 gesetzten 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 funktioniert ähnlich dem PCA301 Sketch, allerdings 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öhere 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 funktioniert 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. Anschluss von Pushbuttons.

Output: Kann von FHEM aus gesetzt werden. Einsatzzweck: z.B. Anschluss 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.

Für die korrekte Darstellung auf dem 1.3" Display, muss die Checkbox 1.3" auf der Setup-Page aktiviert werden

Hinweis: das 0.96" Display bekommt man auch in einer Variante, 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 eines Symbols
  • Definition des Zeitintervalls 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 festgelegten 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.

Inbetriebnahme eines Nextion Displays

Mithilfe der Seriellen Schnittstelle (Soft serial bridge), kann ein Nextion Display in Betrieb genommen werden. Das Besondere dabei ist, dass das LGW zusätzlich seine Status Informationen (AP-Verbindungsstatus, RSSI, IP, Version, FHEM Verbindungsstatus, etc.) an das Display schickt. Die Anbindung an FHEM erfolgt mithilfe des Nextion Moduls (42_Nextion.pm), welches per FHEM Update verteilt wird.

Ein Diskussionsthread zum Thema „LaCrosseGateway mit Nextion Display“ findet man hier.

Voraussetzungen

Vor der Inbetriebnahme in FHEM, müssen folgende Voraussetzungen erfüllt sein:

  • Das Display ist wie hier beschrieben an das LGW angeschlossen.
  • Die Soft serial bridge auf der LGW Setup-page ist konfiguriert.
  • Das LaCrosse Gateway Device ist wie hier beschrieben angelegt.

Funktionsumfang

Der nachfolgende Funktionsumfang ist implementiert:

  • OTA Firmware (.tft File) Übertragung an das Display
  • Automatische Anpassung der Baudrate auf dem Nextion
  • Das LGW schickt (periodisch) Werte an folgende Controls:
Control Beschreibung/Anmerkung
LGW#temp.txt Nur wenn ein entsprechender on board sensor vorhanden ist.
LGW#hum.txt Nur wenn ein entsprechender on board sensor vorhanden ist.
LGW#pres.txt Nur wenn ein entsprechender on board sensor vorhanden ist.
LGW#rssi.txt WLAN RSSI Signalstärke
LGW#ip.txt IP-Adresse des LGW's
LGW#fpm.txt Frames Per Minute
LGW#heap.txt Free Heap
LGW#up.txt Uptime
LGW#ver.txt Version
LGW#wifi (vis) Setzt die visibility
LGW#fhem Setzt die visibility
LGW#cpu1 Setzt die visibility
LGW#cpu2 Setzt die visibility
LGW#main Sendet, nachdem es sich initialisiert hat, ein "page LGW#main" an das Nextion.
LGW#info Sendet die Info an die LGW#prog page
LGW#ptext Sendet die Info an die LGW#prog page
LGW#pbar Sendet die Info an die LGW#prog page
  • Fortschrittsanzeige beim flashen der Nextion Firmware

Device Definition Nextion Modul

Die Definition für die Nextion Bridge sieht dann wie folgt aus:

define <nextion> Nextion <IP-Adresse>:<Port>

<nextion> kann bei Bedarf angepasst werden.

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

<Port> Ist der auf der Setup-page definierte Port

Beispiel:

define nextion Nextion 192.168.22.33:86

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

Firmware erstellen und flashen

Ein UI für das Nextion Display wird mit dem Nextion Editor erstellt. Mithilfe des Editors kann die entsprechende Firmware (tft Datei – siehe „File -> Open build folder“) kompiliert (Button: Compile) werden.

Das LGW kann die Firmware (.tft Datei) zum Display übertragen. Dazu gibt es zwei Varianten:

curl

Syntax lautet:

curl --http1.0 -# -o ~output.txt -H "Content_Type:multipart/form-data" -F "file=@<tftFileName>; filename=nextion.tft" http://<LGW-IP>/ota/nextion

Beispiel:

curl --http1.0 -# -o ~output.txt -H "Content_Type:multipart/form-data" -F "file=@D:\MyNextionFiles\lgw.tft; filename=nextion.tft" http://192.168.31.213/ota/nextion

Das LaCrosseGateway Modul in FHEM

Syntax lautet:

set <myLaCrosseGateway> nextionUpload

Wenn das Attribut "tftFile" gesetzt ist, wird die darin angegebene Datei hochgeladen, ansonsten wird versucht, das File „FHEM/firmware/nextion.tft“ hochzuladen.

Anwendungsbeispiel

In diesem FHEM Forum Thread wurde ein LGW Nextion UI erarbeitet (Stand 01.08.2017 Version 0.7), um die Funktionsweise zu demonstrieren. Das Nextion UI besteht aus folgenden Pages:

ID Name Page Beispiel Hinweise/Funktion/Bechreibung Nextion Debug commands
0 Boot Boot
Lgw nextion boot.png
Das ist die Startseite nach Einschalten des Nextion Displays.
1 Progress LGW#prog
Lgw nextion prog.png
Auf dieser Seite wird der WiFi Verbindungsfortschritt angezeigt. Alle Werte werden vom LGW befüllt. page LGW#prog

vis LGW#pbar,1

vis LGW#ptext,1

LGW#pbar.val=50

LGW#ptext.txt="Connect WiFi (1)"

2 Main LGW#main
Lgw nextion main.png
Dies ist die Hauptseite, welche vom LGW aufgerufen wird, sobald der Bootvorgang abgeschlossen ist.
Hinweise zur Funktionsweise findet man hier
page LGW#main

vis LGW#wifi,1

vis LGW#fhem,1

vis LGW#cpu1,1

vis LGW#cpu2,1

LGW#rssi.txt="-68"

tTime.txt="23:45"

tDate.txt="01.08.2017"

vis iTemp,1

LGW#temp.txt="25.7"

vis iHum,1

LGW#hum.txt="68%"

vis iPres,1

LGW#pres.txt="1024hPa"

vis iWind,1

tout_ws.txt="23km/h"

vis iOutT,1

tout_t.txt="28°C"

3 Info Page Info
Lgw nextion info.png
Alle Informationen auf dieser Seite werden von LGW automatisch befüllt. page Info

vis LGW#ip,1

LGW#ip.txt="192.168.222.1"

vis LGW#fpm,1

LGW#fpm.txt="5"

vis LGW#heap,1

LGW#heap.txt="16280"

vis LGW#ver,1

LGW#ver.txt="1.30"

vis LGW#up,1

LGW#up.txt="1Tg.4Std.34Min."

4 Info Page 2 Info2
Lgw nextion info2.png
tInfo50 und tInfo51 sind für Nextion UI Version reserviert. tInfo60 bis tInfo91 sind nicht belegt und können verwendet werden, um z.B. die FHEM Verison anzuzeigen. page Info2

tInfo60.txt="tInfo60:"

tInfo61.txt="tInfo61"

tInfo70.txt="tInfo70:"

tInfo71.txt="tInfo71"

tInfo80.txt="tInfo80:"

tInfo81.txt="tInfo81"

tInfo90.txt="tInfo90:"

tInfo91.txt="tInfo91"

5 Settings Settings
Lgw nextion Settings.png
Einstellungsmöglichkeit von Helligkeit (Wertebereich von 10% bis 100%) des Displays und des PowerOff Timeouts (Wertebereich: off und 1-120 Sek.) page Settings

h1.val=25

h0.val=60

6 Control Center CoCe
Lgw nextion CoCe.png
Zum Schalten von Aktoren und Status Anzeige.
Weitere Hinweise zur Funktionsweise sind hier zu finden.
page CoCe

lblT1.txt="lbT1"

lblS1.txt="aus"

lblT2.txt="lbT2"

lblS2.txt="an"

lblT3.txt="lbT4"

lblS3.txt="zu"

lblT4.txt="lbT3"

lblS4.txt="auf"

lblT5.txt="lbT5"

lblS5.txt="n.a."

7 Weather Weather
Lgw nextion Weather.png
Zur Anzeige einer Wettervorhersage. Diese Seite wird durch ein touch auf den "Temp-Wert" in der Main#Page aufgerufen.
Implementierungshinweise sind hier zu finden.
page Weather

p0.pic=12

t0.txt="Mo 01 Aug 2017\rmin:15 max:18"

p1.pic=16

t1.txt="Di 02 Aug 2017\rmin:15 max:18"

p2.pic=17

t2.txt="Mi 03 Aug 2017\rmin:15 max:18"

p3.pic=12

t3.txt="Do 04 Aug 2017\rmin:25 max:28"

p4.pic=15

t4.txt="Fr 05 Aug 2017\rmin:28 max:32"

Hinweis: Alle Controls die mit dem Namen "LGW#" beginnen sind für das LGW reserviert und werden entsprechend vom Gateway befüllt.

Nextion Tipps & Tricks

Nextion Commandreferenz

Sehr hilfreich ist die Nextion instruction Page, welche hier: https://www.itead.cc/wiki/Nextion_Instruction_Set zu finden ist.

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 verwendet 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 Defekts etc.), empfiehlt es sich einen reconnect Mechanismus 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 genommener 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 jedoch nicht alle Bauteile verwendet werden. Das Gateway eignet sich sehr gut als Entwicklungsstick (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 Betrieb ü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

LaCrosseGateway mit Nextion Display