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

Begonnen von HCS, 07 November 2015, 14:39:36

Vorheriges Thema - Nächstes Thema

HCS

LaCrosseGateway

Vorab: inzwischen hat amunra (vielen Dank) das Wiki für das LaCrosseGateway erstellt.
Darin findet man die nachfolgenden und viele weitere Informationen zum LGW.

Link zum Wiki: http://www.fhemwiki.de/wiki/LaCrosseGateway

Dieser Beitrag hier bietet nur einen groben Überblick und eine Schnelleinstieg.

Zweck
Empfang und Bereitstellung der von LaCrosse Sensoren empfangenen Daten im WLAN zur Verarbeitung in FHEM
Abfrage und Steuerung von PCA301 Funk Mess-/Schalt-Steckdosen
Empfang von Energy Count 3000 Funk Mess-Steckdosen
Empfang der Wetterstation WS 1600
Empfang von EMT7117
Empfang des LevelSenders
Interne Sensoren für Temperatur und Luftdruck
Optionales Display
Transparente Bereitstellung von bis zu zwei NanoCUL

Warum eigentlich
Das Ganze kann man teilweise auch mit einem JeeLink(Clone) und ser2net usw. realisieren, jedoch benötigt man dann mehrere JeeLinks
Das hier hat in Stichpunkten folgende Vorteile:
- Im Minimalausbau nur zwei Bauteile (NodeMCU DEVKIT 1.0 + RFM69)
- Alternativ am USB-Port wie ein JeeLink verwendbar oder per wifi anbindbar
- Erweiterbar
- Kann an eine Stelle platziert werden, an der alle Sensoren optimal empfangen werden, nur Strom (5V/1A USB Netzteil) und wifi erforderlich
- AllInOne, eine Firmware die die Protokolle von LaCrosse, PCA301, EMT7110, ... versteht.

Unterstützte Sensoren:
Alle Sensoren, die auch vom "LaCrosse Arduino" Sketch unterstützt werden, incl. WS 1600 und WS 1080 (Hinweis beachten)
siehe http://www.fhemwiki.de/wiki/JeeLink#LaCrosse_Sketch
On board: BME280, BMP180, LM75, DHT22
Ab Version 1.13 auch die PCA301 Funk-Mess-Steckdose
Ab Version 1.14 auch die EC3000 Funk-Mess-Steckdose

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".
Siehe auch die Hinweise im wiki.

Projekt-Status:
Release

Platine
PeMue hat hier eine Platine für das LGW entworfen: https://forum.fhem.de/index.php/topic,45594.0.html
locutus hat hier eine Platine für das LGW entworfen: https://forum.fhem.de/index.php/topic,55705.0.html

Hardware:
ESP8266 ESP-12E, am einfachsten ist es, wenn man ein NodeMCU DEVKIT 1.0 nimmt, da ist alles bis auf den RFM69 drauf, was man braucht.
Es wird aber keine NodeMCU-Firmware verwendet, wir wollen nur ein Board
Dieses hier: https://raw.githubusercontent.com/nodemcu/nodemcu-devkit-v1.0/master/Documents/NodeMCU_DEVKIT_1.0.jpg
Alternativ kann man sich das auch alles um einem puren ESP-12E drum rum bauen, aber bei fernost-Preisen von ca. 6 EUR für das DEVKIT rentiert sich das eher nicht.
RFM69 (optional ein zweiter und ein dritter)
Plus die oben genannten on board Sensoren

Features (Auszug):
- Access Point für die Konfiguration
- Konfiguration (SSID, Password) wird im EEPROM gespeichert
- Vom LaCrosseGateway Modul in FHEM über IP:Port ansprechbar
- Konfigurations-Frontend auf Port 80
- Unterstützt bis zu drei RFM69CW (keine RFM12)
- Unterstützt einen BMP180 oder BME280
- Alternativ per USB anschließbar, als ob es ein JeeLink wäre
- WebFrontend auf Port 80 mit Informationen wie MAC-Adresse, wifi, ...
- Statische IP anstatt DHCP (konfigurierbar)
- Hostname konfigurierbar
- OTA Firmware update

Schaltung:
siehe Anhang:
Schaltplan: LaCrosseGateway-CircuitDiagram ...
Minimalversion auf breadboard: LaCrosseGateway Minimum 1.png und LaCrosseGateway Minimum 2.png

Funktionsweise:
Das LaCrosse Gateway versucht sich in einem WLAN anzumelden. Dazu muss es eine ssid und ein Passwort kennen.
Beim ersten Start ist das natürlich noch unbekannt. Darum fährt es folgende Strategie:
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.
Dieser wird aus Sicherheitsgründen nach 15 Minuten wieder geschlossen.
Innerhalb dieser 15 Minuten kann man sich auf ihn verbinden (http://192.168.222.1/setup) und die Konfiguration durchführen.
Er vergibt (DHCP) IP-Adressen aus dem Netzwerk 192.168.222.0
Die Konfiguration wird im EEPROM gespeichert und bei zukünftigen Neustarts verwendet.
Die Konfigurationsseite ist auch erreichbar, wenn das LaCrosse Gateway im "Normalbetrieb" ohne Access Point läuft, über http://'seine aktuelle IP-Adresse'/setup

Wenn das LaCrosse Gateway sich 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 angebunden wird.
Hinweis: den Port 81 nicht mit einem Browser öffnen, das killt aktuell die gespeicherten Settings im ESP.
Die Definition sieht dann z.B. so aus: define myLGW LaCrosseGateway 192.168.22.33:81 (natürlich mit der passenden IP-Adresse)
IP-Adresse ermitteln: das WebFrontend zeigt die MAC Adresse des ESP an. Mit der kann man dann auf dem DHCP-Server nach der IP schauen.
Oder man pingt ihn einfach. Der Hostname ist LaCrosseGateway.
Um einen erneuten connect zu bekommen, falls das LaCrosse Gateway mal wegstirbt (Stecker gezogen, wlan weg, ...) kann man das timeout Attribut des LaCrosseGateway device in FHEM verwenden.
Die initCommands im LaCrosseGateway device können wie gewohnt verwendet werden.

Da hier wifi-Verbindungen usw. aufgebaut werden, das LaCrosseGateway Modul je nach Konfiguration einige Zeit braucht, bis es einen neuen Connect auf den Datenport des LaCrosseGateway versucht, mus man beim experimentieren etwas Geduld haben, es kann auch schon mal ein, zwei Minuten Dauern, bis die ersten Daten in FHEM einlaufen.

Firmware flashen:
Wie bei einem JeeLink muss auch für das LaCrosse Gateway die Firmware erst mal auf das DEVKIT drauf.
Das DEVKIT hat eine CP2102 UART Bridge drauf, das bedeutet, man muss einen CP2102 Treiber installiert haben.

Damit sollte es auf Windows, Mac und Linux gehen (getestet habe ich es nur auf Windows 10 und El Capitan):
esptool 0.4.6 beschaffen: https://github.com/igrr/esptool-ck/releases (für die entsprechende Platform)
flashen mit:
esptool -vv -cp /dev/tty.SLAB_USBtoUART -cb 921600 -ca 0x00000 -cd nodemcu -cf JeeLink_LaCrosseGateway.bin
Port und Pfade sind natürlich anzupassen.
Hinweis: das esptool ist nicht fürchterlich stabil. Es kommt vor, dass es manchmal den upload nicht startet oder nicht durchbekommt.
Einfach dann nochmal anwerfen, bis es klappt.

Alternative für Windows: https://github.com/nodemcu/nodemcu-flasher
Einstellungen (Advanced Tab): 921600 Baud, 4MByte Flash size, 80 MHz Flash speed, SPI Mode: DIO
Auf dem Tab "Config" das JeeLink_LaCrosseGateway.bin auswählen, Ziel-Adresse 0x00000
Hinweis: die Geschwindigkeit von 921600 baud ist wohl nicht auf jedem Rechner (besonders auf virtualisierten Systemen) machbar.
In diesem Fall die baud rate auf 57600 runternehmen, besser langsam flashen als gar nicht.

Ab V1.15 kann man die Firmware auch ganz einfach vom LaCroseGateway-Modul aus mit "set myLaCrosseGateway flash" aktualisieren.

Die Firmware befindet sich hier: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/36_LaCrosseGateway.zip
Nach einem FEHM-Update alternativ auch hier: <FHEM-Installations-Verzeichnis>/FHEM/firmware/JeeLink_LaCrosseGateway.bin

ChangeLog:

V1.03
- Debug Ausgaben entfernt

V1.04
- Test-Version mit debug messages auf der seriellen Schnittstelle (57600 Baud)

V1.05
- Konfiguration: Sonderzeichen funktionieren jetzt
- Command 0e um das EEPROM zu leeren (von einem Terminaprogramm aus absetzen)
- Hostname, und statische IP konfigurierbar

V1.06
- Port 81 im Browser öffnen killt die gespeicherten Settings nicht mehr
- Optische Darstellung der Initialisierung
- Status-Werte als XML abrufbar
- WebFrontend: UpTime in Tage, Stunden, ...
- WebFrontend: MessagesPerSecond
- WebFrontend: Navigation
- OTA-Firmware-Update (erste noch zu verbessernde Version)
siehe auch hier: http://forum.fhem.de/index.php/topic,43672.msg366148.html#msg366148

V1.07
- Quellcode verfügbar
- Fix OTA-Update bei Browsern (Mac-Chrome), die ein ? an die url anhängen
- Neues Setting KV-Identity
- Neuer Staus-Wert "RSSI" (wifi Signalstärke)
- Bis zu drei Clients (FHEMs) möglich
- Dritter RFM möglich
- Commands Logik für drei RFMs erweitert
siehe auch hier: http://forum.fhem.de/index.php/topic,43672.msg370146.html#msg370146

V1.08
- Unterstützte Sensoren: BME280, BMP180, LM75
siehe auch hier: http://forum.fhem.de/index.php/topic,43672.msg373652.html#msg373652

V1.09
- Möglicher Crash beim Booten verhindert
- DHT22 vorübergehend stillgelegt, wegen Problemen mit GPIO9 auf manchen Boards

V1.11
- Das Problem mit Leerzeichen in der SSID ist behoben

V1.13
- Erase EEPROM: Ist jetzt 8266e
- Erkennung der Radios verbessert, speziell, wenn man das 1er nicht drauf hat
- Nach einem Reset mit Taster oder einem WDT-Reset funktioniert wifi jetzt
- PCA301 implementiert
- KVP: Die Versionsnummer des Sketch hinzugefügt
- PCA301: es werden bis zu 50 Dosen unterstützt
- KVP: Daten wie z.B. MacAddress, ChipID usw., die sich nicht ändern, werden nur am Anfang und dann all 30 Minuten gesendet
siehe auch hier: http://forum.fhem.de/index.php/topic,43672.msg397296.html#msg397296

V1.14
- Energy Count 3000 implementiert
siehe auch hier: http://forum.fhem.de/index.php/topic,43672.msg405444.html#msg405444

V1.15
- neue Firmware-Update-Methode "set myJeeLik flash"
siehe auch hier: http://forum.fhem.de/index.php/topic,43672.msg409619.html#msg409619

V1.16
- RFM12 entfallen
- Bugfixes
- Log im frontend
- Erweiterungsmöglichkeiten
siehe auch hier: https://forum.fhem.de/index.php/topic,43672.msg427404/topicseen.html#msg427404

V1.17
- DHT22 wiederbelebt
- Help page
- Konfiguration erweitert
- Transparent serial bridge (z.B. für NanoCUL)
siehe auch hier: https://forum.fhem.de/index.php/topic,43672.msg441446.html#msg441446

V1.18
- Frontend Passwort
- Zugriffsprobleme auf den AP beseitigt
siehe auch hier: https://forum.fhem.de/index.php/topic,43672.msg446348.html#msg446348

V1.19
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg455540.html#msg455540

V1.20
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg471910.html#msg471910

V1.21
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg481690.html#msg481690

V1.22
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg490438.html#msg490438

V1.23
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg512376.html#msg512376

V1.24
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg546877.html#msg546877

V1.25
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg553960.html#msg553960

V1.26
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg583437.html#msg583437

V1.27
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg584320.html#msg584320

V1.28
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg594398.html#msg594398

V1.29
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg603449.html#msg603449

V1.30
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg634935.html#msg634935

V1.31
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg748764.html#msg748764

V1.32
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg820228.html#msg820228

V1.33
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg958380.html#msg958380

V1.34
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg972729.html#msg972729

V1.35
Siehe hier: https://forum.fhem.de/index.php/topic,43672.msg974602.html#msg974602

fh168

#1
Hallo HCS,

bin begeistert! Über das Thema werde ich ausführlich in meinem Blog berichten!
Vor allem mit der Anmeldung an das lokale WLAN gefällt mir.
Ich werde das mal sofort nachbauen.
Wo ist denn das LUA-File?

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Zitat von: fh168 am 07 November 2015, 15:51:18
Wo ist denn das LUA-File?

Es gibt kein LUA-File und es wird auch keins benötigt. Das angehängte bin-File ist nativer Code für den ESP8266. NodeMCU wird nicht verwendet.
Wenn das angehängte bin drauf geflasht ist, dann gibt es auf dem Board kein NodeMCU mehr, zumindest solange man keins wieder drauf flasht.

fh168

#3
hm.. mal "eben" geht das wieder nicht.
Ich habe windows 10 angeworfen, er scheint zu flashen, aber es wird kein accesspoint aufgemacht.

esptool v0.4.6 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de>
setting port from COM1 to COM3
setting baudrate from 115200 to 921600
setting address from 0x00000000 to 0x00000000
setting board to nodemcu
espcomm_upload_file
stat c:\users\robin\Downloads\esptool-0.4.6-win32\esptool-0.4.6-win32\LaCrosseGateway.bin success
setting serial port timeouts to 1000 ms
opening bootloader
resetting board
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
read 0, requested 1
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
read 0, requested 1
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
read 0, requested 1
resetting board
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
read 0, requested 1
trying to connect
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_send_command: receiving 2 bytes of data
espcomm_open
Uploading 378768 bytes from c:\users\robin\Downloads\esptool-0.4.6-win32\esptool-0.4.6-win32\LaCrosseGateway.bin to flash at 0x00000000
erasing flash
size: 05c790 address: 000000
first_sector_index: 0
total_sector_count: 93
head_sector_count: 16
adjusted_sector_count: 77
adjusted_size: 04d000
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
setting serial port timeouts to 10000 ms
setting serial port timeouts to 1000 ms
espcomm_send_command: receiving 2 bytes of data
writing flash
...
starting app without reboot
espcomm_send_command: sending command header
espcomm_send_command: sending command payload
espcomm_send_command: receiving 2 bytes of data
closing bootloader
flush start
setting serial port timeouts to 1 ms
setting serial port timeouts to 1000 ms
flush complete


Ein kurzer Blick in dem Serial monitor unter 115200 Baud offenbart folgendes:

ets Jan  8 2013,rst cause:4, boot mode:(3,4)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
怘€æ€˜€


irgend ne idee?
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Das esptool braucht bei mir auch manchmal mehrere Anläufe. Ist auch aus der Entwicklungsumgebung heraus so.
Wenn man die baud rate drastisch runter nimmt, geht es zuverlässiger, aber dann dauert es halt auch ewig.
Ich vermerke das gleich mal im ersten Beitrag oben.

Du hast ein DEVBOARD v1.0?

Häng es mal an den Serial-Monitor mit 57600 Baud und schaue, was da kommt.
Ich sollte wohl erst mal mal eine Version mit mehr Debug-Ausgaben beim Start auf der Seriellen machen, dass man sieht, was da so passiert.
Hatte sei nur rausgenommen, weil es das FHEM-Log zuspamt, wenn man es als JeeLink-Ersatz per USB verwendet.

fh168

#5
Das Board sieht so aus, wie bei dir auf dem Foto. auf der Rückseite steht NodeMCU Amica. Ich glaube es ist ein V 2. Ich probiere mal mit geringeren Baudraten. Am Serial Board /arduino gui sieht es dann so aus:

Œ8øíÈîö,,½¬HnZªJ*¨­Xj+È
ÄŸÖˆ˜œþ
ÊKŒýÊK ¯


!�
J­J!!ˆH½
1Œ8øíÈ÷û̽ֈK¥SˆˆkH
ÊX ÌŸÖˆ˜œ!Hn:˜!Hn:ø¯


œ
HHZ*Þ!÷S ÊÛp[›Xi88øíÈ÷û̽ֈK¥Sˆˆ[°j+È
ÄŸ¬H Œ) Š˜þ
ÊK


mit 57600 geflashed, gleiche Fehlermeldung.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Das flashen hat aber lt. Log funktioniert.

Nachtrag: oder doch nicht, das sind zu wenig ...
Sieht so aus, als ob der upload zwar angelaufen, aber dann abgebrochen ist.

fh168

#7
nene.. ich hab das log in einer datei reinlaufen lassen. wenn ich das nicht mache sind dann über 4 zeilen ... drin
ich habe mal mit einem zweiten nodemcu probiert... gleiches problem, gleiche ausgabe.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS


fh168

#9
Was zeigt denn bei dir der Serial monitor an?
Ich müsste ja nach Deiner Doku einen AP haben mit LaCrosse... ist aber nicht
.
Andere Frage: Kann man das ganze Parameter-Gedöns nicht abkürzen und gleich den ESP8266-Flasher nehmen?
Datei auswählen -> Flashen gut is. Ist einfacher zu bedienen.
Zumindest bei mir kommt aber leider das gleiche Ergebnis (Serial Monitor) heraus.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

#10
Man kann mit allem, was geeignet ist (also ein "bin" File draufladen kann), flashen. Der ESP8266-Flasher sollte eigentlich auch gehen, habe es aber nicht getestet damit.

Ich habe oben einen neue Version angehängt. Probier mal bitte mit der.

Nachtrag: immer dran denken, der AccesPoint kann frühesten nach 30 Sekunden da sein.

fh168

das sieht schon mal besser aus!

..............................................WiFi: NO CONNECT

Access point opened: LaCrosseGateway_372603

[LaCrosseITPlusReader.Gateway.1.01 wifi=on]
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Gut.
Jetzt sollte der AP da sein. Drauf verbinden und auf die Setup-Page gehen.
ssid und passowrt eintragen, wo er sich anmelden soll und speichern.
Danach macht der ESP einen Reset (meistens  :) )
Dann sollte er im netz sein.
Einfach mal mit einem browser aufmachen und posten, was da kommt.

fh168

hab ich gemacht, hat auch wohl sich kurz ins netz gehangen..

aber eine Website kommt nicht, auch auf Port 81 nicht
und mein serial monitor spuckt das aus
ets Jan  8 2013,rst cause:4, boot mode:(3,4)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
怘€æ€˜€


Kann aber sein, weil ich noch kein rfm angeschlossen habe.
Kann ich auch ein rfm 12B nehmen?
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Ja, ein RFM12B geht auch.
Auf Port 81 ist keine Seite, nur auf Port 80. Der 81 ist nur ein Datenport.