LaCrosseGateway V1.x
Das WiFi-LaCrosse-Gateway 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, die als zentrale Steuereinheit dient. Der signifikante Unterschied zu einem JeeLink USB-Stick ist, der Betrieb über Wireless LAN (WiFi). Das Herzstück des LaCrosse-Gateways besteht aus einem ESP8266-12E/F. Das LaCrosseGateway ist aufgrund des hohen Stromverbrauchs nicht für den Akkubetrieb geeignet.
Der Einsatz eines WiFi-LaCrosse-Gateways bietet folgende Vorteile:
- Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, dafür ist nur Strom (5V/1A USB Netzteil) und WiFi Access Point erforderlich
- 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
- Alternativ am USB-Port wie ein JeeLink verwendbar
- Einsatz von on board Sensoren / Aktoren (siehe Unterstützte Sensoren und Aktoren) möglich
Hardware
Bauteile
Für das WiFi-LaCrosse-Gateway werden folgende Bauteile verwendet:
- [Option 1] ESP8266 ESP-12E Modul.
Diese Variante eignet sich für Projekte für die eine kleine Bauform benötigt wird.
Für die Inbetriebnahme, insbesondere für das Aufbringen der Firmware, muss das Modul an ein USB2Serial-Adapter, angeschlossen werden. Für diese Variante sind Lötkenntnisse erforderlich. - [Option 2] NodeMCU DEVKIT 1.0 (oder 2.0)ist die Inbetriebnahme einfacher, da alles für das Aufbringen der Firmware bereits vorhanden ist und kein Löten nötig ist.
Hinweis: Folgende Devkits werden nicht unterstützt:- V0.9
- V3.0 - passt nicht, ist größer als das 2.0. Auf der Rückseite steht "Lolin"!
- Devkits mit einem CH340 USB converter
- [Option 3] Alternativ zu einem Devkit 1.0 kann auch ein "WeMOS D1 mini" eingesetzt werden. Vorteil bei diesem Kit ist die kleine Bauform bei gleichem Funktionsumfang wie das DEVKIT 1.0.
- [Option 4] ESP8266-07 auf einem DEVKIT 1.0. für den Betrieb mit einer externen Wifi Antenne.
- Hinweis: Der ESP-07 hat einen 25Q80 1M flash Chip. Dieser ist für den Betrieb mit der LaCrosseGateway Firmware geeignet, für ein OTA-Update ist es jedoch zu wenig. Aus diesem Grund muss/kann dieser auf 4M flash umgebaut werden. Weitere Informationen und Details zum Umbau sind im Forenthread (Gehäuse-Variante) beschrieben.
- [Optional] RFM69CW - Für das Senden und Emfangen funkbasierte LaCrosse Aktoren und Sensoren
- [Optional] On board Sensoren (siehe Unterstützte Sensoren und Aktoren)
- [Optional] SC16IS750 Zur Bereitstellung der seriellen Schnittstelle, da die GPIOs (GPIO1 / GPIO3) DEVKIT's V1.0 von FTDI verwendet werden und damit nicht genutzt werden können.
- [Optional] OLED-Display SSD1306 I2C zur Darstellung von Daten (Bootvorgang, on board Sensoren, Inhalte aus FHEM)
- [Optional] MCP23008 zur Bereitstellung (Konfigurierbar) von digitalen 8 Ein- Ausgängen oder Sonderfunktion (OLED)
- Steckbrett (inkl. Kabel/Widerstände)/Lochrasterplatine (Lötkolben, Lötzinn, Widerstände etc.)) / PeMue Platine
Schaltung
Variante: Devkit 1.0
Variante: ESP8266-12E
Variante: Platine (PeMue)
Addon Schaltung
Siehe Erweiterungsmöglichkeiten.
MCP2308
I2C Adresse 0x27 -> A0,A1,A2 = 3.3V
|-------\/-------|
LGW D1 |1 SCL VDD 18| LGW 3.3V
LGW D2 |2 SDA GP7 17| PB7 --/ --- GND or Output
LGW 3.3V |3 A2 GP6 16| PB6 --/ --- GND or Output
LGW 3.3V |4 A1 GP5 15| PB5 --/ --- GND or Output
LGW 3.3V |5 A0 GP4 14| PB4 --/ --- GND or Output
LGW 3.3V |6 RES GP3 13| PB3 --/ --- GND or Output
|7 NC GP2 12| PB2 --/ --- GND or Output
|8 INT GP1 11| PB1 --/ --- GND or Output
LGW GND |9 VSS GP0 10| PB0 --/ --- GND or Output
|----------------|
Aufbau auf einem Steckbrett
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
Unterseite
Devkit 1.0 bestückt Oberseite
Devkit 1.0 bestückt Unterseite
ESP8266-12E bestückt Oberseite
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
Platine bestücken (Hinweise und Tipps)
- Auf der Platine (Version 1.0) ist für das RFM69CW-Modul eine Markierung (zwei Quadrate) aufgedruckt, die den Chip und den Quarz symbolisieren. Wenn man den RFM69CW so drauflötet, wie abgebildet, ist er falsch rum drauf.
Es muss darauf geachtet werden, wo auf dem RFM69CW die "Ant" Beschriftung steht, dieser Lötpunkt muss auf die Platine an den Punkt "1" ausgerichtet werden. Zur Sicherheit bitte den Schaltplan konsultieren und die genaue Position ermitteln. - Die Antennenlänge für das RFM69CW beträgt 82 mm. Dafür möglichst eindrähtigen Leiter (aus Kupfer) verwenden.
Erweiterungsmöglichkeiten
Das LaCrosseGateway kann optional mit verschiedenen Komponenten erweitert werden.
Folgende Erweiterungen sind möglich:
- es kann ein eigener Prozessor (mit eigener Firmware) angeschlossen werden, der Daten empfängt und diese dem LGW übergibt.
- es kann z.B. ein NanoCUL angeschlossen werden, dessen serielle Schnittstelle transparent auf einem Port im Web bereitgestellt wird.
- es kann ein vierter und fünfter RFM69CW angeschlossen werden, diese können alles, was die bisherigen drei auch können.
- es kann ein aktiver Piezo Summer (Piezo Buzzer) angeschlossen (an GPIO7 des SC16IS750) werden, um von FHEM aus das LaCrosseGateway einen Alarm ausgeben zu lassen. Hinweis: Falls der Strom von 10mA, den die Ausgänge liefern, nicht reicht, ist noch eine Transistor-Schaltstufe vorzusehen.
Alle diese Daten stellt das LaCrosseGateway per WiFi an FHEM zu, dort wird es von den entsprechenden Modulen (JeeLink, LaCrosse, PCA301, ...) weiterverarbeitet.
Alle Komponenten werden automatisch erkannt, sofern angeschlossen. Für die Realisierung der o.g Möglichkeiten wird ein SC16IS750 verwendet.
Der SC16IS750 wird per I2C an das LaCrosseGateway angeschlossen und bietet eine serielle Schnittstelle und 8 Digital I/Os
Auf dieser Basis sind momentan folgende Erweiterungen möglich:
SubProzessor
Der SubProzessor dient dazu, dass mit einem eigenen Sketch Daten erfasst werden können, ohne sich um die ganze Nummer, die das LGW macht (WiFi, Kommunikation mit FHEM, Frontend, OTA, ...), kümmern zu müssen. Ferner ermöglicht es die Implementierung von eigenen Projekten, dabei werden die zeitkritischen Abläufe des LGWs nicht beeinträchtig.
An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini) Entweder ein 3.3V / 8MHz oder ein 5V / 16MHz, der aber dann auch mit 3.3V betrieben wird.
Wichtig: Alle LaCrosseGateway Komponenten laufen ausschließlich mit 3.3V, aus diesem Grund dürfen keine 5V Komponenten angeschlossen werden.
Firmware flashen
Die Firmware kann über das LGW auf den SubProzessor (Voraussetzung: Arduino hat einen bootloader) geflasht werden.
Dazu wird sie auf das LGW hochgeladen (http://<LGW-IP>/ota/addon.hex).
Das LGW nimmt den Upload entgegen, wandelt das Intel-Hex in binary um und schickt es per STK500-Protokoll an den Arduino.
Falls ein OLED angeschlossen ist, wird sogar ein progress angezeigt.
Vorgehen Firmware flashen
Die Firmware kann z.B. mithilfe von "curl" mit dem nachfolgendem Befehl hochgeladen werden:
curl --http1.0 -H "Content_Type:multipart/form-data" -F "file=@/myFolder/LGW-Addon.ino.hex; filename=addon.hex" http://192.168.31.211/ota/addon.hex
Hinweis: fielname=addon.hex im Beispiel darf nicht verändert werden, nur /myFolder/LGW-Addon.ino.hex und die IP-Adresse wird entsprechend angepasst.
Der Upload dauert etwas, danach sollte bei Erfolg vom LGW ein Protokoll zurückgeschickt bekommen, der wie folgt aussieht:
Start receiving 'addon.hex'
File: /addon.hex Size: 21417
Starting flash
Sending sync
Enter program mode
Binary size is:7608
Leave Program Mode
Flash finished
Mit dem SubProzessor können die entsprechenden Daten auf zwei mögliche Arten am LGW übermittelt werden:
KeyValueProtokoll (KVP):
Format:
KV <Type> <Address> <Key>=<Value>,<Key>=<Value>,<Key>=<Value>, ...
Beispiel:
KV DHT 01 Temperature=21.5,Humidity=62
Das LGW übermittelt die Daten als KVP an FHEM und dort entsteht ein KVP Device, das die Daten darstellt.
LaCrosse:
Format:
LC <Address> T=<Temperature>,H=<Humidity>
Beispiel:
LC 9F T=21.5,H=62
LC 9F T=21.5
Das LGW setzt die Werte in das LaCrosse Protokoll um (wie z.B. ein TX29DTH) und schickt sie an FHEM. In FHEM entsteht ein LaCrosse Device (autocreate, LaCrossePairForSec ...), als ob es ein LaCrosse Sensor wäre.
Das LGW-Addon.ino ist ein einfaches Beispiel, das diese Technik veranschaulicht. Es bindet den geliebten DHT22 an und sendet ihn als LaCrosse-Sensor (über das LGW) an FHEM und es misst die Spannung und sendet sie zusammen mit der UpTime des SubProzessors als KVP
Der umrandete Bereich Schaltung - "Example" "Example" ist das zu LGW-Addon.ino passende Beispiel.
Unterstützte Sensoren und Aktoren
Alle Sensoren, die auch vom "LaCrosse Arduino" Sketch unterstützt werden, incl. WS 1600 und WS 1080 (Hinweis beachten) siehe LaCrosse Sketch
Bezeichnung | Datenrate | Sonstiges | Funktion | Link |
---|---|---|---|---|
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 | (Forenthread) | |
30.3147.IT | 17.241 kbps | extern | ||
30.3155WD | 9.579 kbps | extern | kritisch; nicht zu empfehlen; siehe Forenbeitrag | |
30.3156WD | 9.579 kbps | extern | Batterie-kritisch. Funktioniert schlecht mit Akkus! | |
30.3187.IT | 17.241 kbps | extern | ||
WT440XH | 17.241 kbps | extern | ||
WS 1600 (TX22) | 8.842 kbps | extern | (Forenbeitrag) | |
WS 1080 | 17.241 kbps | extern | Bitte Hinweise beachten! (Forenbeitrag) | |
EMT7110 | 9.579 kbps | extern | (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 | ||
DHT22 | on board | Temperatur und Feuchte. | ||
SC16IS750 | I2C Adresse: 0x90 | on board | OI Erweiterung | Kann anstatt RFM69 Radio#3 eingesetzt werden. |
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 |
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.
Sie werden in folgender Reihenfolge verwendet:
Wenn ein BME280 vorhanden ist, wird dieser verwendet und sonst nichts, da man dann bereits Temperatur, Feuchte und Druck hat.
Ist kein BME280 vorhanden, wird geschaut, ob ein BMP180 vorhanden ist. Falls ja, haben wir Druck und Temperatur.
Dann wird geschaut, ob ein DHT22 vorhanden ist. Wenn ja, wird er zusätzlich verwendet, aber vom BMP180 dann nur noch der Druck.
Temperatur und Feuchte vom DHT22, dass dieses Wertepaar von einem Sensor stammt.
Wenn kein BMP180 und kein BME180 da ist, sondern nur ein DHT22, dann hat man Temperatur und Feuchte.
Wenn nichts vorhanden ist (also keiner der bisher genannten Sensoren), wird, falls vorhanden, der LM75 verwendet.
Software
Funktionsumfang
- Access Point für die Konfiguration
- Konfiguration über WEB-Frontend (Erreichbar per http://IP-Adresse oder Hostname/setup auf Port 80 )
- SSID und Password (Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.)
- Statische IP-Adresse anstatt DHCP
- Hostname
- Vom JeeLink FHEM-Modul über IP-Adresse:Port ansprechbar. Der Port ist konfigurierbar.
- Unterstützt bis zu 5 x RFM69CW (Keine Unterstützung für RFM12)
- On board und externe Sensoren und Aktoren (Unterstützte Sensoren und Aktoren)
- Betrieb nur per USB möglich, als ob es ein JeeLink wäre
- FHEM Anbindung
- Log im Web-Frontend
- Firmware OTA-Update (Firmware-Over-the-Air-Update per FHEM)
- Erweiterungsmöglichkeiten per SC16IS750 (Für Buzzer und für weitere zwei RFM69)
- SubProzessor (An die serielle Schnittstelle des SC16IS750 kann optional ein Arduino angeschlossen werden (z.B. ein Pro Mini))
- Serial bridge (Optional kann die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitgestellt werden)
Sourcecode
Der Quellcode des LaCrosse Gateways befindet sich im FHEM SourceForge Repository (contrib).
Firmware Download
Die Firmware befindet sich auf dem FHEM SourceForge Repository und wird per FHEM Update verteilt. Neue Version der Firmware wird im FHEM Forum "LaCrosse Gateway" angekündigt und der Funktionsumfang bzw. die Änderungen beschrieben.
Nach einem FEHM-Update alternativ auch: <FHEM-Installations-Verzeichnis>/FHEM/firmware/JeeLink_LaCrosseGateway.bin
SDK: Arduino 1.6.9 / Espressiv 1.5.3 / Arduino Core Rev. 14405
Firmware aufspielen
Wie bei einem JeeLink muss auch für das LaCrosse Gateway die Firmware aufgespielt werden.
Das NodeMCU DEVKIT 1.0 hat eine CP2102 UART Bridge implementiert, dafür muss ein CP2102 Treiber installiert sein.
Bei einem ESP8266-12E Modul kann die Firmware mithilfe eines Seriell-USB-Konverters aufgespielt werden.
Windows/Mac/Linux per "esptool"
Verifiziert und getestet wurde dieses Vorgehen auf Windows (Windows 10), Mac (El Capitan):
1) Das esptool 0.4.6 für die entsprechende Plattform herunterladen.
2) Zum Aufspielen der Firmware, muss ein Befehl nach der folgenden Syntax ausgeführt werden:
esptool -vv -cp [Port] -cb 921600 -ca 0x00000 -cd nodemcu -cf [Pfad zur Firmware (bin-File)]
[Port] und [Pfad zur Firmware (bin-File)] müssen angepasst werden.
Beispiel (Mac/Linux):
esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin
Hinweis: Das esptool ist nicht sonderlich stabil. Es kommt vor, dass es manchmal den upload nicht startet oder nicht durchbekommt. In diesem Fall hilft es den Vorgang, auch mehrmals, zu wiederholen.
Windows per "nodemcu-flasher"
1) Espressif Flashtool downloaden und entpacken:
2) Firmware downloaden
3) FlashTool starten und wie folgt einstellen:
4) COM-Port auswählen und den Flashvorgang starten (Button: Flash(F)) ...
Nach dem Flashen sollte über die serielle Ausgabe des ESP der Start und das Öffen des AccessPoints zu sehen sein.
Hinweis: Die Geschwindigkeit von 921600 baud ist nicht auf jedem Rechner (besonders auf virtualisierten Systemen) machbar. In diesem Fall die Baudrate auf 57600 reduzieren.
Funktionsweise
Während des Startvorgangs versucht sich das LaCrosse Gateway 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 ESP 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 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.
Optische Darstellung der Initialisierung
Beim Start und der Initialisierung wird mit der Board-eigenen LED signalisieren, was gerade passiert:
- 5 schnelle blinks direkt nach dem Start, als Zeichen, dass ein Reset stattgefunden hat
- Blinken im Sekundentakt, während versucht wird, sich mit einem WLAN zu verbinden.
- LED aus, wenn der Connect zu einem WLAN geklappt hat und dann vereinzeltes Blinken, wenn Daten an FHEM übermittelt werden
LaCrosseGateway einrichten
Für die Ersteinrichtung des LaCrosseGateways werden die SSID und das Passwort des WLAN-Routers benötigt. Ferner wird empfohlen auf dem WLAN-Router bzw. dem DHCP-Server eine IP-Adresse für das LaCrosseGateway zu reservieren. Für die Reservierung wird die MAC-Adresse des LaCrosseGateways benötigt, diese kann über die "Home"-Page des LaCrosseGateways ermittelt, alternativ von dem NODEMCU Firmware Programmer (Reiter "Operation -> "STA MAC") entnommen werden.
Sofern diese Vorbereitungen getroffen wurden und alle Informationen vorliegen, kann das LaCrosseGateway eingerichtet werden.
Für die Konfiguration sind folgende Schritte nötig:
- Mit dem LaCrosseGateway Access Point "LaCrosseGateway_xxxxxx" verbinden (siehe Beschreibung Funktionsweise)
- Mithilfe eines Browsers die LaCrosseGateway "Setup"-Page öffnen
- SSID und das Password eintragen
- [Empfohlen] Das Frontend Passwort festlegen
- [Optional] Falls kein DHCP-Server zur Verfügung steht bzw. keine Reservierung erwünscht ist, dann muss die IP-Adresse / Netmask (Optional auch Gateway) eingetragen werden
- [Empfohlen] Hostnamen festlegen bzw. anpassen
- Alle Angaben mit dem Button "save and restart" bestätigen. Dabei werden die vorgenommen Einstellungen im EEPROM gespeichert und ein Neustart des LaCrosseGateways initiiert.
Nach dem Neustart verbindet sich das LaCrosseGateway mit dem WLAN-Router.
Anschließend kann mit der Inbetriebnahme in FHEM fortgefahren werden.
Firmware aktualisieren
Nachfolgend werden, neben der unter dem Punkt Firmware aufspielen beschriebenen Möglichkeiten, weitere Möglichkeiten zur Aktualisierung der LaCrosseGateway Firmware aufgezeigt.
Hinweis: Die Einstellungen des LaCrosseGateway werden dabei nicht gelöscht.
Per FHEM (OTA-Update)
Voraussetzungen:
- Das LGW muss auf der IP-Adresse, die im JeeLink Modul definiert ist, erreichbar sein
- Es wird kein avrdude benötigt
- Das Attribut "flashCommand" spielt keine Rolle
Die LaCrosseGateway Firmware kann von JeeLink Device (JeeLink Modul) aus mit
set myJeeLink flash
aktualisiert werden.
myJeeLink muss bei Bedarf auf den Gerätenamen in FHEM angepasst werden.
Hinweis: Das Update dauert ca. 30 Sekunden.
Per CURL
Voraussetzungen:
- curl-Tool installiert
Beispiel:
curl --http1.0 -# -o ~output.txt -H "Content_Type:multipart/form-data" -F "file=@.\JeeLink_LaCrosseGateway.bin; filename=firmware.bin" http://192.168.31.211/ota/firmware.bin
Firmwaredateiname (file=) und die IP-Adresse muss entsprechend angepasst werden.
Per WEB OTA-Update (deprecated)
deprecated
LaCrosseGateway Web-Frontend
Staus-Wert RSSI
Die WiFi Signalstärke (dBm) (-36 ist besser als -60)
Staus-Wert FramesPerMinute
Dieser gibt an, wie viele frames von Sensoren in der letzten Minute erfolgreich empfangen, dekodiert und verarbeitet wurden. Es eignet sich zur Überwachung, wenn weniger als ein Grenzwert empfangen wurde, dann kann ein Alarm (Benachrichtigung, Restart etc.) ausgelöst werden.
Staus-Wert ReceivedFrames
Dieser Wert gibt an, wie viele seit dem Start des LGW empfangen wurden.
WiFi "Startup-delay"
Mit diesen Konfigurationsprameter kann eine Verzögerung (in Sekunden) definiert werden, bis dass LGW nach einen Neuestart einen ersten Verbindungsversuch zum WiFi Access Point (Router: Fritzbox etc.) startet.
Eine Anpassung kann für den foglenden 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 15 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 der 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 (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.
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 neuen settings "Serial bridge port" und "Serial bridge baud" auf der "config"-Page des LGWs. Das LGW überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt.
Statuswerte abrufen
Mit http://<IP-des-LGW>/state können die Statuswerte, die das LGW-Frontend anzeigt, als XML zur Weiterverarbeitung abgerufen werden.
Beispiel:
<LGW>
<Info Key="UpTimeSeconds" Value="107086"/>
<Info Key="UpTimeText" Value="1Tg. 5Std. 44Min. 46Sek. "/>
<Info Key="WIFI" Value="NeverTellThem"/>
<Info Key="MacAddress" Value="18:FE:34:9A:6D:48"/>
<Info Key="ChipID" Value="10120520"/>
<Info Key="ReceivedFrames" Value="93593"/>
<Info Key="FramesPerMinute" Value="52"/>
</LGW>
Funktionsweise Log
Das Log ist als Hilfsmittel bei der Fehlersuche gedacht z.B. um bei PCA301 zu verfolgen, wann wer was wie frägt und antwortet oder um zu schauen, ob irgend welche Sensoren überhaupt empfangen werden und die Daten an FHEM geliefert werden.
Mit "Command" kann man Befehle an das LGW senden. Sie entsprechen dem, was man mit "set myJeeLink 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 JeeLink Modul benötigt. Auf einem Raspberry Pi kann die Instllation wie folgt durchgeführt werden:
sudo apt-get install libwww-perl
alternativ auch mit
sudo cpan LWP::UserAgent
FHEM Module
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_PCA301.pm (wird per FHEM Update verteilt)
36_EC3000.pm (wird per FHEM Update verteilt)
Device Definition
WLAN
Die Definition sieht dann wie folgt aus:
define <myJeeLink> JeeLink <IP-Adresse>:81
<myJeeLink> kann bei Bedarf angepasst werden.
<IP-Adresse> muss entsprechend angepasst werden.
Beispiel:
define myJeeLink JeeLink 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
Für den Betrieb via USB sieht die Definition wie folgt aus:
define <myJeeLink> JeeLink <USB-Port>@57600
<myJeeLink> kann bei Bedarf angepasst werden.
<IP-Adresse> muss entsprechend angepasst werden.
Beispiel:
define myJeeLink JeeLink /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 myJeeLink JeeLink /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.
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.
Konfigurationsempfehlung für timeout = 120 Sekunden und checkInterval = 30 Sekunden:
Der Wert kann in FHEM wie folgt gesetzt werden:
attr myJeeLink timeout 120,30
myJeeLink 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.
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.
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:
LaCrossePairForSec, flash, raw und reset
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
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/setup
<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>h Altitude
<n,f,i>i Init PCA for Radio #<n> to <m>MHz and <i>s Interval
<n>m bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #1)
<n>M bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #2)
<n>#<x>m bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #x)
<n>o set HF-parameter e.g. 50305o for RFM12 or 1,4o for RFM69
<n>p payload on the serial port (1: all, 2: only undecoded data)
<n>r use one of the possible data rates (for RFM #1)
<n>R use one of the possible data rates (for RFM #2)
<n>#<x>r use one of the possible data rates (for RFM #x)
<x,x,...>s Send to PCA301 (must be 10 byte)
<x,x,...>S Send to CustomSensor
<n>t 0=no toggle, else interval in seconds (for RFM #1)
<n>T 0=no toggle, else interval in seconds (for RFM #2)
<n>#<x>t 0=no toggle, else interval in seconds (for RFM #x)
v show version
<n>w 0=no wifi
<n>z set to 1 to display analyzed frame data instead of the normal data
LaCrosseGateway zurücksetzen
Das LaCrosseGateway kann über ein Terminalprogramm, dafür muss das LaCrosseGateway per USB angeschlossen sein, zurückgesetzt werden.
Im Terminalprogramm (Baudrate 57600) den Befehl:
8266e
senden.
Daraufhin wird wieder der Access Point aktiviert auf der die initiale Konfiguration über die "Setup" Seite vorgenommen werden kann.
Sensoren/Aktoren anlegen
Voraussetzung: FHEM autocreat ist aktiv. Die FHEM autocreate Funktion ist aktiv.
Die erkannnten Sensoren und Aktoren werden automatisch erkannt und in FHEM angelegt, sobald Daten empfangen werden.
Empfangene Sensoren werden nur hinzugefügt werden, wenn man LaCrossePairForSec auf 120 Sekunden gesetzt wird.
set myJeeLink 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 myJeeLink LaCrossePairForSec 120 ignore_battery
Dann sollte von FHEM autocreate Funktion ein LaCrosse Device mit der Sensor-ID (Default Wert: 0) angelegt werden.
Alternativ kann das FHEM Device manuell angelegt werden: Die ID, mit der das LGW die internen Sensoren sendet, entspricht der konfugurierten Sensor-ID (Default Wert: 0) Es verhält sich so, als ob es eine Wetterstation (wie z.B. WS 1600) wäre.
define <name> LaCrosse 00
Anchließend muss eine Höhenkorrektur (Grund: der Luftdruck wird immer bezogen auf NN angegeben, der Sensor liefert aber den Absolutdruck) mit dem command h in den initCommands vorgenommen werden, dies erfolgt mit dem FHEM Befehl:
Beispiel: 220h legt 220m über NN fest.
attr myJeeLink initCommands 220h
Inbetriebnahme Piezo Summer
Der Piezo Summer wird in FHEM über das JeeLink Modul angesteuert.
Beispiele:
set myJeeLink raw 1,60b -> beep ... beep ... beep 60 Sekunden lang
set myJeeLink 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 myJeeLink raw 0b -> beep stoppen
Inbetriebnahme von RFM69CW
Mit dem LaCrosseGateway ist es möglich mehrere RFM69CW einzusetzten. Nachfolgend wird die Konfiguration des Senders/Empfängers erläutert.
Die "Default Werte" (wenn keine Angaben definiert werden) für die data rate sind wie folgt definiert:
#1 (Erste) => 17241
#2 (Zweite) => 9579
#3 (Dritte) => 8842
#4 (Vierte) => 20000
#5 (Fünfte) => 17241
Hinweis: Detailinformationen sind auch auf der LaCrosseGateway "Help"-Page zu finden.
<Datenrate>#<Radio-Nummer><command> | |
m t: |
Toggle-Steuerung |
r: |
Datarate |
f: |
Frequenz |
Beispiele:
Definition | Erläuterungen |
---|---|
attr myJeeLink initCommands 0#1r v
|
DataRate des ersten RFM setzen |
attr myJeeLink initCommands 8842#3r v
|
DataRate des dritten RFM setzen |
attr myJeeLink initCommands 868300#2f v
|
Frequenz des zweiten RFM setzten |
attr myJeeLink initCommands 868295#3f v
|
Frequenz des dritten RFM setzten |
attr myJeeLink initCommands 17241#1r 8842#2r v
|
Zwei RFM69CW mit DataRate 17241 und 8842 |
attr myJeeLink initCommands 3#1m 20#1t 8842#2r v
|
Zwei RFM69CW mit 20 Sekunden DataRate 17241 toggle 9579 plus 8842 permanent |
attr myJeeLink initCommands 220h 868295#1f 868310#2f v
|
Zwei RFMs Frequenz 868295 und 868310 sowie Höhe über NN |
attr myJeeLink 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 (geht nur bei mir, ist noch nicht in der 1.11 enthalten) Radio 3 macht 8842 kbps für die WS 1600 Höhe 220m über NN Activity LED aus v am Ende ruft die neu gesetzen Daten vom LaCrosseGateway ab, damit sie in FHEM JeeLink Modul aktualisiert werden. |
Hinweis: Es ist wichtig ein "v" an das Ende eines initCommands anzuhängen. Damit wird veranlasst, dass das LaCrosseGateway seine neuen Einstellungen an FHEM zurückmeldet.
Inbetriebnahme von PCA301
PCA301 im LGW funtioniert ähnlich dem PCA301 Sketch, allerding mit einigen systembedingten Abweichungen.
Per default ist PCA301 nicht aktiviert, es muss in den initCommands aktiviert werden. Dazu gibt es das command "i".
<RadioNr>,<Frequenz>,<Poll-Intervall>i
Die Initialisierung kann auch erneut geschickt werden, um z.B. das Poll-Intervall zu ändern.
Wichtig: Es darf nur "ein" Radio für PCA301 initialisiert sein, nicht mehrere. Das PCA301 initialisierte Radio ist dediziert für PCA301 zuständig, es kann nicht zwischen anderen Protokollen (z.B. LaCrosse) toggeln.
Das Poll-Interval sollte nicht extrem heruntergesetzt (nicht unter eine Minute) werden, da PCA301 sonst LaCrosse verdrängt. PCA301 hat hörere Priorität, da es bei der Kommunikation mit den Dosen keine Antworten überhören darf.
Unter Umständen muss die Frequenz etwas angepasst werden, wenn das Radio und/oder die Dosen nicht genau auf 868950 liegen. Das ist daran zu erkennen, dass entweder gar keine Antwort von den Dosen oder verzögerte Antwort ankommt. Werte von 868960 oder 960970 haben in manchen Fällen Abhilfe gebracht.
Beispiele:
Definition | Erläuterungen |
---|---|
attr myJeeLink initCommands 2,868950,120i v
|
Initialisiert den zweiten RFM auf 868950 MHz und setzt das Poll-Intervall auf 120 Sekunden |
attr myJeeLink initCommands 1,868950,120i 3#2m 20#2t 220h 0a v
|
Initialisierung eines LaCrosseGateways mit zwei Radios für TX29, TX35, PCA301 und BMP180/BME280. Das erste Radio macht PCA301 und das zweite toggelt 17241/9579 im 20 Sekunden Takt um TX29 und TX35 zu empfangen der BMP180/BME280 liefert den Druck für 220m Meereshöhe die LED ist deaktiviert |
Ablauf:
Nachdem PCA301 initialisiert ist, lauscht das LaCrosseGateway auf der entsprechenden Frequenz. Sobald eine Dose empfangen wurde, wird sie in der Konfiguration (EEPROM) dauerhaft registriert und ab sofort gepollt.
Das Polling funtioniert so, dass für jede Dose geschaut wird, wann sie zuletzt empfangen wurde und wenn das länger als das konfigurierte Interval zurück liegt, dann wird sie abgefragt. Wenn sonst etwas (Basisstation, anderes FHEM) die Dose abgefragt hat und das LaCrosseGateway die Antwort gehört hat, dann gilt das auch als empfangen und es wird kein eigener Poll für die Dose ausgelöst. Das Zusammenspiel mit einer echten Basisstation konnte bisher nur grob simuliert werden.
Das Pairing (also die Vergabe eines Kanals) funktioniert wie im PCA301-Sketch, button an der Dose "3 Sekunden" drücken, dann vergibt das LaCrosseGateway den nächsten freien Kanal. Dosen, die bereits einen Kanal haben, können durch ein Schalten vor Ort, an das LaCrosseGateway angelernt werden. Das LaCrosseGateway erkennt sie und nimmt sie in die Konfiguration auf. Falls die Dose bereits mit einem anderen Kanal bekannt war, wird der Kanal im LaCrosseGateway aktualisisert.
Auf der Setup-Page im Web-Frontend (http://IP-Adresse oder Hostname/setup) des LaCrosseGateway kann die Liste der bekannten Dosen (ID=Kanal) eingesehen werden. Hinweis: Es sollten keine Änderungen in diesem Bereich vorgenommen werden.
Wenn ein Kommando (Schalten, Daten abfragen, ...) an eine Dose gesendet wurde und keine Antwort kam, wird bereits im Sketch drei mal versucht, eine Antwort zu bekommen.
Das PCA301 Modul in FHEM funktioniert komplett wie bisher.
Weiterführende Themen zum PCA301 sind im Wiki PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung und PCA301 FHEM Thread JeeLink / PCA301 Thread beschrieben.
Die Befehle, die der PCA301-Sketch kennt, gibt es im LaCrosseGateway nur teilweise:
Befehl (Beschreibung) | Erläuterungen |
---|---|
a "turn activity LED on or off
|
wie bisher |
l "list known devices"
|
entfallen, kann man nun im Web-Frontend sehen |
q "turn quiet mode on or off"
|
wie bisher |
r "list recordings"
|
entfallen |
s "send to plug"
|
wie bisher |
v "report version and configuration parameters"
|
wie bisher |
d, e, p "poll / turn a device on / off"
|
entfallen |
h, +, -, # "modify and display RF12 Frequency register"
|
entfallen, ersetzt durch das "i" command bzw. das bereits vorhandene "f" command |
Inbetriebnahme von Energy Count 3000 (EC3000)
Die EC3000 sendet auf 868.300 kHz mit 20.000 kbps. Dafür wurde eine neue data rate hinzugefügt. Sie kann mit 3r oder 20000r gesetzt werden. Wenn diese data rate gesetzt wird, wird auch automatisch der RFM69 auf den Empfang von EC3000 uminitialisiert.
EC3000 kann auch in einen data rate toggle mit einbezogen werden. Dazu gibt es nun das bit mit dem Wert 8 für 20.000 kbps
Um EC3000 dediziert mit einem der drei RFMs zu empfangen muss man einfach die data rate des gewünschten RFM setzen. Beispiel initCommand: 20000#2r
Um EC3000 in einen data rate toggle mit einzubeziehen muss im m command das 8-wertige bit gesetzt werden. Wenn man z.B. mit dem zweiten Radio 17k Sensoren (TX29...) und EC3000 empfangen soll (20 Sekunden toggle), wäre das initCommand:
Beispiel:
attr myJeeLink initCommands 9#2m 20#2t v
Inbetriebnahme von MCP23008
Auf der LaCrosseGateway "config"-page kann für jeden der 8 IO Pins konfiguriert werden, ob es ein Input oder Output Pin ist.
Input: Eingang, wird per KVP an FHEM übermittelt. Einsatzzweck: z.B. Anschluß von Pushbuttons.
Output: Kann von FHEM aus gesetzt werden. Einsatzzweck: z.B. Anschluß von LEDs.
Beispiel: Input => Eingang, wird per KVP an FHEM übermittelt
OK VALUES LGPB 211 GP2=0,GP3=1,GP4=0,GP5=0,GP6=0,GP7=0
Beispiel: Output => Kann von FHEM aus gesetzt werden.
set myJeeLink raw "MCP GP0=1,GP1=0"
Inbetriebnahme von OLED-Display
Wird derzeit (Stand: 07.2016) hier diskutiert und entwickelt.
Ab der Version 1.20 ist der nachfolgende Funktionsumfang implementiert:
- OLED ein- und ausschalten sowie das Senden von individuellen Texten über FHEM mithilfe des JeeLink-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
- Darstellung von bis zu drei Texten und optional ein Symbol.
- Definition des Zeitintvervalls für das Umschalten zur nächsten Seite
- Zuweisung der Modes an die Ports des MCP23008 (Die Konfiguration erfolgt auf der "Setup"-Page)
- Fortschrittsanzeige beim Flashen eines an die serielle Schnittstelle des SC16IS750 angeschlossenen Arduinos (siehe SubProzessor und Serial transparent bridge)
OLED Start Modus
Einstellungsmöglichkeit über die "Config"-Page wie sich das OLED nach einem Start verhalten soll. Mögliche Optionen: on / off / Anzahl Sekunden, nach denen es ausgeht.
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 | |
h | Humidity | |
p | Pressure | |
s | System | |
i | Info | |
w | Warning | |
e | Error |
Beispiele
Definition | Erläuterung |
---|---|
set myJeeLink raw "OLED On"
|
Schaltet ein angeschlossenes Display ein |
set myJeeLink raw "OLED Off"
|
Schaltet ein angeschlossenes Display aus |
set myJeeLink raw "OLED interval=20"
|
Legt fest, dass (je nach mode) alle 20 Sekunden die nächste Seite angezeigt wird. |
set myJeeLink raw "OLED mode=ths"
|
Zeigt nacheinander Temperatur, Feuchte und Systemdaten an |
set myJeeLink raw "OLED mode=thp"
|
Zeigt nacheinander Temperatur, Feuchte und Luftdruck an |
set myJeeLink raw "OLED mode=thps"
|
Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an |
set myJeeLink raw "OLED mode=f"
|
Zeigt ausschließlich den von FHEM festgeleget Text an |
set myJeeLink raw "OLED mode=s"
|
Zeigt ausschließlich die Systemdaten an |
set myJeeLink raw "OLED show=Soll: 20.5,Ist: 19.2,,t"
|
Zeigt die übergebenen Texte an und links das Symbol für Temperatur |
set myJeeLink 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 myJeeLink raw "OLED show=Line 1,Line 2,Line 3"
|
Zeigt drei Texte aber kein Symbol an. |
set myJeeLink initCommands "OLED mode=thps"
|
Zeigt nacheinander Temperatur, Feuchte, Luftdruck und Systemdaten an. Der Mode wird immer geschickt, wenn FHEM sich neu auf das LGW connected. |
Serial transparent bridge
Das LGW kann optional die serielle Schnittstelle des SC16IS750 transparent auf einem TCP Port bereitstellen. Dazu gibt es die neuen settings "Serial bridge port" und "Serial bridge baud" auf der "Setup"-Page" (Web-Frontend) des LaCrosseGateways. Das LaCrosseGateway überträgt transparent die Daten der seriellen Schnittstelle an FHEM und umgekehrt. Damit kann z.B. ein NanoCUL an das LaCrosseGateway angeschlossen werden und in FHEM verwenden werden.
Vorgehensweise:
- Einen NanoCUL bauen, z.B. auf Basis eines Arduino Pro Mini, flashen und testweise in Betrieb nehmen.
- Den NanoCUL an die serielle Schnittstelle des SC16IS70 anschließen
- Port und baud rate auf der "Setup"-Page des LaCrosseGateways festlegen, z.B. Port 85 und 38400 baud
- CUL in FHEM definieren (Beispiel):
define CULXYZ CUL <IP-Adresse>:85 0000
<CULXYZ> Muss nach eigenen Bedürfnissen angepasst werden.
<IP-Adresse> Muss entsprechend angepasst werden.
Sollte das CUL-Device nicht erreichbar sein (Restart, Austausch im Falle eines Deffekts etc.), empfiehlt sich einen reconnect Mechnismus in FHEM zu implementieren.
Dieser kann wie folgt aussehen:
define CULXYZ-Reconnector at +*00:00:30 {\
my $deviceName = "<CULXYZ>";;\
my $version = CommandGet("", $deviceName . " version");;\
my $gotAnswer = index($version, 'No answer') == -1;;\
\
if(!$gotAnswer) {\
fhem("set " . $deviceName . " reopen");;\
}\
\
}
<CULXYZ> Muss nach eigenen Bedürfnissen angepasst werden.
Vorgehen Firmware flashen mit LGW
Ein bereits in Betrieb genomene NanoCUL kann nach dem gleichen Vorgehen (siehe "SubProzessor - Vorgehen Firmware flashen") wie ein SubProzessor geflasht werden.
Zugriff mit mehreren FHEM Instanzen
Bis zu drei FHEM Instanzen können auf das LaCrosseGateway gleichzeitig zugreifen. Auf der "Setup"-Page des LaCrosseGateways können bis zu drei Ports (Data ports), pro Port eine FHEM Instanz, definiert werden (Reboot erforderlich). Aus Performancegründen empfiehlt sich nur die benötigten Ports zu definieren.
Hinweise: Die Portnummer 8266 wird für OTA Update verwendet, und 80 für die "Config"-page. Aus diesem Grund ist die Verwendung dieser ports nicht erlaubt.
Wenn sich mehrere FHEM Instanzen ein LaCrosseGateway teilen, dann ist darauf zu achten, dass die eine gemeinsame/gleiche initCommand Konfiguration haben. Sollten die FHEM Instanzen unterschiedliche initCommands senden, gewinnt das (zufällig) letzte und legt es für alle anderen fest.
Nano LaCrosse Gateway
Das nano LaCrosse Gateway verwendet die gleiche Firmware wie das WiFi LaCrosse Gateway, der signifikante Unterschied ist die kompakte (portable) Bauform. Aufgrund der Bauform können jeodch nicht alle Bauteile verwendet werden. Das Gateway eignet sich sehr gut als Entwicklungstick (dies ist der Entstehungsgrund) oder zum Empfangen und Steuern von LaCrosse basierten Sensoren/Aktoren an einem FHEM Server (RPI,Cubietruck, etc.).
Der Betieb über WiFi, entsprechende Stromversorgung (per USB) vorausgesetzt, ist ebenfalls möglich.
Weiterführende Informationen zum nano LaCrosse Gateway und Ideensammlung für eine Platine sind im FHEM Forum zu finden.
Bauteile
Folgende bauteile werden benötigt:
- Gehäuse schwarz oder transparent
- ESP-12E
- Auto-Flash-Reset-Schaltung mit zwei Widerständen
- CP2102 FTDI
- Breakout board mit einem AMS 1117 3.3V
- RFM69CW
- Status-LED
Schaltung
Selbstbau
Platine
nano LaCrosse Gateway
USB2TTL
nano LaCrosse Gateway inkl. USB2TTL
nano LaCrosse Gateway fertig bestückt inkl. Gehäuse
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