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

Steigerbalett

Zitat von: HCS am 25 Februar 2021, 08:58:50@schmadde: anbei eine Beta LGW 1.36

Kann man nicht per OTA auf das LGW hochladen, nur per USB

Hallo @HCS,
ich möchte demnächst mein LaCrosseGateway mit der MQTT Version von @Rainerlan_2 flashen. Dabei ist mir aufgefallen, dass die Version noch auf der 1.35 basiert.
Kannst Du eine aktuelle (z.B. 1.36-Beta) Codebasis zur Verfügung stellen oder die letzten Änderungen seit 1.35 durchgeben? Dann könnte man gleich eine aktuellere Version kompilieren.

Unabhängig davon:
Danke für Deine Arbeit, das LaCrosseGateway ist bei mir schon seit Jahren zuverlässig im Dauereinsatz.

TWry

#1966
Zitat von: Rainerlan_2 am 13 August 2022, 13:37:37Hi, mittlerweile habe die den Code erweitert, so dass die wichtigsten settings, wie MQTT server, port, username, pw usw ebenso über den Browser konfiguriert werden, wie der Rest der Einstellungen des Gateways. Siehe Screenshot.

@Rainerlan_2 scheint leider nicht mehr aktiv zu sein. Kann mir jemand sagen, wie ich seine Version installiert bekomme? Das Binary ist acht oder neun MB groß und passt bei mir nicht. Oder muss ich mir dafür einen NodeMCU mit mehr Flash-Speicher organisieren?


TWry

Das Erstellen des korrekten Binaries hat jetzt doch geklappt mit dem folgenden Befehl:

elf2bin.py -a /pfad/zu/LaCrosseGateway.ino.elf -f 80 -e /pfad/zu/eboot.elf -m dio -s 4M -o LaCrosseGateway.bin -p ./xtensa-lx106-elf/bin
elf2bin stammt aus dem esp8266 Arduino Github Repo. Dann mit esptool.py geflasht.

MQTT funktioniert jetzt fein für Temperaturen, allerdings vermisse ich die EC3000 Werte. Hat jemand einen Tipp?

malutz

Update 19.09.23:
Einmal neu installieren von Python und Update der ArduinoIDE haben Wunder bewirkt, das Gateway wurde ohne Murren kompiliert und läuft auf dem Wemod D1mini. Jetzt muss ich das Ding noch zusammenlöten und dann sind meine Sensoren wieder eingebunden :)

Grüße Martin


Hallo TWry,
vielen Dank für deine Erklärung zur Erstellung des Binaries. Hast du die unter Windows oder unter Linux erstellt?
Ich will mir das Binary für einen Wemos D1Mini erstellen, aber da erhalte ich unter Windows leider eine Fehlermeldung:

elf2bin.py -a ..\..\LaCrosseGatewayMQTT-main\binaries\LaCrosseGateway.ino.elf -f 80 -e ..\bootloaders\eboot\eboot.elf -m dio -s 4M -o LaCrosseGatewayMQTT.bin -p ./xtensa-lx106-elf/bin
Creating BIN file "LaCrosseGatewayMQTT.bin" using "..\bootloaders\eboot\eboot.elf" and "..\..\LaCrosseGatewayMQTT-main\binaries\LaCrosseGateway.ino.elf"
Traceback (most recent call last):
  File "D:\Programmieren\Arduino-master\tools\elf2bin.py", line 256, in <module>
    sys.exit(main())
  File "D:\Programmieren\Arduino-master\tools\elf2bin.py", line 234, in main
    wrapper(
  File "D:\Programmieren\Arduino-master\tools\elf2bin.py", line 232, in wrapper
    write_bin(out=out, args=args, **kwargs)
  File "D:\Programmieren\Arduino-master\tools\elf2bin.py", line 107, in write_bin
    entry = int(get_elf_entry( elf, args.path ))
  File "D:\Programmieren\Arduino-master\tools\elf2bin.py", line 43, in get_elf_entry
    result = subprocess.run(
  File "C:\Users\Martin\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Users\Martin\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Martin\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden

Hab ich mit Python 3.8 eine falsche Version? Oder woran kann das sonst liegen?

Grüße Martin

Bapt. Reverend Magersuppe

Zitat von: malutz am 29 August 2023, 19:23:41D1mini. Jetzt muss ich das Ding noch zusammenlöten und dann sind meine Sensoren wieder eingebunden :)

Hat jemand mal ein .bin der MQTT-Version für mich zum flashen? Ich bekomme es mit meinen Versionen weder unter ArduinoIDE noch mit Platformio sauber durchkompiliert.

@malutz: Hast du EC3000 am Laufen?

Danke!
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

Bapt. Reverend Magersuppe

Zitat von: TWry am 26 Juli 2023, 08:58:43Das Erstellen des korrekten Binaries hat jetzt doch geklappt mit dem folgenden Befehl:

elf2bin.py -a /pfad/zu/LaCrosseGateway.ino.elf -f 80 -e /pfad/zu/eboot.elf -m dio -s 4M -o LaCrosseGateway.bin -p ./xtensa-lx106-elf/bin
elf2bin stammt aus dem esp8266 Arduino Github Repo. Dann mit esptool.py geflasht.

MQTT funktioniert jetzt fein für Temperaturen, allerdings vermisse ich die EC3000 Werte. Hat jemand einen Tipp?

@malutz @TWry

Da ich zu dusslig war das ganze selber zu kompilieren hat mit malutz freundlicherweise sein Binary zur Verfügung gestellt.
VIELEN DANK AN MALUTZ DAFÜR!


Flashen eines ESP ging dann auch problemlos!
Und dann kam der Kulturschock. Irgendwie eben sehr fhem-like, sei's drum, ein typisches WorksForMe-Ding. Das Ding hat bei mir einen AccessPoint aufgemacht, hat aber entgegen der Anleitung keine IP per DHCP an ausgegeben. Na pfeif drauf. Also habe ich mir 192.168.222.2 gegeben, konnte mich verbinden und das Ding dann in mein WLAN bringen.
Dann auf die Oberfläche um das Ding zu konfigurieren. Kulturschock, achso, sagte ich schon.
Funktionell nennt man sowas dann wohl, wenn es denn tut, ok. MQTT-Server konfiguriert.
Aber Hey! Das Modul empfängt schon ein paar Temperatursensoren, laut ID sind das nicht nur meine. Im MQTT-Explorer findet man die Temperaturwerte auch wieder.
Von EC3000 leider keine Spur.

@TWry nun zum EC3000. Meine Steckdose direkt daneben wurde irgendwie nicht erkannt. Auch nicht auf der seriellen Konsole. Auf der Wikiseite steht was von 20000r. Aber wo gibt man das ein? Dachte erst auf der seriellen Konsole, aber da tat sich gar nichts. Nee, man geht auf der Webconfig auf Log und gibt dort bei Command 20000r ein. Wenn der Empfang stimmt krümeln auch nach einiger Zeit Daten rein. Am besten gibt man bei Filter die HexAdresse der Steckdose ein.
Dann bekommt man solche Daten auf der Logconsole, aber nicht per MQTT.
19:29:51: OK 22 186 205 3 222 240 0 3 222 240 0 0 9 117 241 0 0 0 0 1 0 [BA CD F0 00 00 00 F0 00 00 00 00 05 0A 8D 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3D E0 00 00 00 08 3D E0 10 00 11 D7]

Meine Teststeckdose ist in diesem Fall die BA CD. Der Rest der Datenkrümel ist noch zu ermitteln.
Per MQTT werden diese Daten leider nicht versendet.  Wie man am Format unten sieht bringt das auch nicht richtig was.

Selbst wenn man den Sketch dazu bringt auch die EC3000-Daten per MQTT zu versenden wäre da wohl noch einiges an Skripting am auswertenden System zu machen.

Ich denke, wenn man das vernünftig machen möchte, müsste man das anders aufziehen. Aber das hat in diesem Forum wahrhaftig nichts zu suchen.
--
If I was born in 1453, Leonardo da Vinci would be jealous of me.
Reverend Paul Egon Magersuppe
Aus versicherungstechnischen Gründen sind sämtliche Beiträge von mir rein spekulativer und theoretischer Natur und sollten nicht in die Tat umgesetzt werden!
Bin hier selten DRIN. AUS GRÜNDEN!

Handfest

Ich kriege ums verr..... die Version mit MQTT für das LacrosseGW nicht kompiliert. Mir fehlt leider die Erfahrung mit Arduino...
Wäre jemand so freundlich mir für den Privatgebrauch und nicht zur Weitergabe eine flashbare Version zur Verfügung zu stellen?
Das wäre toll.

Danke im Voraus und Gruß Handfest

Steigerbalett

Hallo Bapt. Reverend Magersuppe,
Zitat von: Bapt. Reverend Magersuppe am 24 November 2023, 20:10:12MQTT funktioniert jetzt fein für Temperaturen, allerdings vermisse ich die EC3000 Werte. Hat jemand einen Tipp?
Der einzige Tipp der mir einfällt ist:
Zitat von: HCS am 07 Februar 2016, 09:18:57Ich habe gerade die Version 1.14 hochgeladen. Diese unterstützt nun auch die Energie-Mess-Steckdose "Energy Count 3000"

Wichtig: EC3000 funktioniert nur mit RFM69, nicht mit RFM12

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 will (20 Sekunden toggle), wäre das initCommand:
9#2m 20#2t v


Steigerbalett

Hallo Handfest
ich habe es damal auch weder kompiliert bekommen, auch nicht mit dem Tipp:
Zitat von: Woudu am 21 März 2022, 11:37:29Als Workaround kann man LaCrosseGateway auch via PlatformIO bauen.
In der notwendigen platform.ini Datei gibt man die zu nutzende Espressif Version an und vermeided somit ein Update auf die aktuellste Version:
[tt]
# PLATFORM:
#   !! DO NOT confuse platformio's ESP8266 development platform with Arduino core for ESP8266
#   arduino core 2.7.4 = espressif8266@2.6.3 (platform)
#   arduino core 3.0.2 = espressif8266@3.2.0 (platform_latest)

[env:nodemcu]
platform = espressif8266@2.6.3
#platform = espressif8266@3.2.0 // Does not compile!
board = nodemcu
framework = arduino
[/tt]
in VS mit PIO, in ArduinoIDE mit alten Libraries, noch mit
Zitat von: TWry am 26 Juli 2023, 08:58:43Das Erstellen des korrekten Binaries hat jetzt doch geklappt mit dem folgenden Befehl:

elf2bin.py -a /pfad/zu/LaCrosseGateway.ino.elf -f 80 -e /pfad/zu/eboot.elf -m dio -s 4M -o LaCrosseGateway.bin -p ./xtensa-lx106-elf/bin
elf2bin stammt aus dem esp8266 Arduino Github Repo. Dann mit esptool.py geflasht.

MQTT funktioniert jetzt fein für Temperaturen, allerdings vermisse ich die EC3000 Werte. Hat jemand einen Tipp?

Die LaCrosseGateway.ino.elf liegt z.B. hier: https://github.com/D3R-ST3FAN/LaCrosseGatewayMQTT/tree/main/binaries, falls es jemand selbst probieren möchte.

Warum die LaCrosseGatewayMQTT.bin nur unter der Hand gehandelt wird weiß ich nicht - hat das Lizenzrechtliche Probleme? Oder warum wird die nicht hier gepostet oder bei github hochgeladen?

Handfest

Zitat von: Handfest am 24 Juli 2024, 23:59:54Wäre jemand so freundlich mir für den Privatgebrauch und nicht zur Weitergabe eine flashbare Version zur Verfügung zu stellen?


So, nachdem ich noch 48h gebastelt habe, habe ich jetzt tatsächlich eine Version mit MQTT lauffähig.
Reproduzierbar war, dass bei fester IP des LaCrosseGW keine Netzwerkverbindung zustande kam. Vermutlich passt irgendwas mit dem Netzwerk-Gateway, nicht was durchaus an meiner Umgebung liegen kann.

Ich habe jetzt:
- Die Version von Rainerlan (https://github.com/Rainerlan/LaCrosseGatewayMQTT) in der Shell meines MacBook mittels
  elf2bin.py -a /pfad/zu/RL/LaCrosseGateway.ino.elf -f 80 -e /pfad/zu/eboot.elf -m dio -s 4M -o LaCrosseGatewayRL.bin -p ./xtensa-lx106-elf/bin
  zu einer Binärdatei gebunden
- Diese Binärdatei ebenfalls in der Shell mittels esptool -vv -cp /dev/PORT -cb 921600 -ca 0x00000 -cd nodemcu -cf LaCrosseGatewayRL.bin per USB geflachst
- an der Fritz!Box das WLAN ausgeschaltet
- Die Spannungszufuhr des LaCrosseGateways kurz unterbrochen
- Mich mit dem internen Access-Point des LaCrosseGateway verbunden
- die Adresse http://192.168.222.1 im Firefox aufgerufen und das Gerät von Grund auf neu parametriert, nachdem ich es in der Logpage mit 8266e zurück gesetzt habe. 
  Wichtig war hier (warum auch immer) das Leerlassen der IP, der NW-Maske und des Gateway, sodass das GW eine DHCP-Adresse bekommt (die man dann ja in der Fritz!Box fixieren kann)
 
  Wichtig auch, dass die Prozedur mit dem internen AccessPoint offenbar immer nötig ist, wenn man was in der Konfiguration ändert. Also immer vorher mit 8266e die Einstellungen zurücksetzen und komplett neu eingeben. Macht man ja im Normalfall glücklicherweise nicht so häufig...

Nach Restart bei eingeschaltetem Netzwerk konnte ich auf die durch DHCP vergebene Adresse zugreifen. Auch die MQTT-Verbindung funktioniert

Sicherheitshalber habe ich das ganze auf einen schnell zusammengelöteten WEMOS D1 ESP8266 mini mit RFM69HCW gemacht, um mir mein locutus-GW was hier seit Jahren treu seine Dienst verrichtet nicht kaputt zu machen.

Somit für mich solved...
Danke für die Unterstützung einzelner Mitstreiter per PM

Gruß Handfest   

Handfest

Ergänzung: Nach Downgrade auf die esp8266 V2.7.4 Bibliothek und Korrektur eines falschen Fileformats der Datei DisplayPageT.h (war UTF-8 mit BOM, muss natürlich ohne sein) lässt sich die Version von Rainerlan aus dem GitHub (https://github.com/Rainerlan/LaCrosseGatewayMQTT) jetzt tatsächlich auch fehlerfrei in der ArduinoIDE V2.3.2 kompilieren und binden.

Danke an Steigerbalett für den Tipp ;-)
Man lernt nie aus...

Gruß Handfest

sash.sc

Hallo zusammen.

Schön zu lesen, dass jetzt mqtt geht. Wenn nicht offiziell, aber nun sei es drum.

Kann jemand das fertige bin file hierzu einstellen?

Danke

Gruß Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb