Jump to content

Recommended Posts

Posted

Guten Morgen,

da ich ja bald meinen WARP-Charger erhalte, wollte ich mich schon mal etwas mit der Software beschäftigen.
Leider lässt sich das Projekt "esp32-brick" z. Z. nicht übersetzen, da hier die letzten Änderungen in der Klasse "API" aus dem Projekt "esp32-lib" anscheinend noch nicht nachgezogen wurden:

...

Building in debug mode
Compiling .pio/build/esp32dev/src/main.cpp.o
Compiling .pio/build/esp32dev/src/modules/firmware_update/firmware_update.cpp.o
Compiling .pio/build/esp32dev/src/modules/proxy/proxy.cpp.o
Compiling .pio/build/esp32dev/src/modules/wifi/wifi.cpp.o
src/main.cpp:41:25: error: no matching function for call to 'API::API(<brace-enclosed initializer list>)'
 API api{true, true, true};
                         ^
In file included from src/main.cpp:23:0:
.pio/libdeps/esp32dev/esp32-lib/src/api.h:57:5: note: candidate: API::API()
     API() {}
     ^
.pio/libdeps/esp32dev/esp32-lib/src/api.h:57:5: note:   candidate expects 0 arguments, 3 provided
.pio/libdeps/esp32dev/esp32-lib/src/api.h:55:7: note: candidate: API::API(const API&)
 class API {
       ^
.pio/libdeps/esp32dev/esp32-lib/src/api.h:55:7: note:   candidate expects 1 argument, 3 provided
.pio/libdeps/esp32dev/esp32-lib/src/api.h:55:7: note: candidate: API::API(API&&)
.pio/libdeps/esp32dev/esp32-lib/src/api.h:55:7: note:   candidate expects 1 argument, 3 provided
src/main.cpp: In function 'void register_default_urls()':
src/main.cpp:122:26: error: no matching function for call to 'API::registerDebugUrl()'
     api.registerDebugUrl();
                          ^
In file included from src/main.cpp:23:0:
.pio/libdeps/esp32dev/esp32-lib/src/api.h:67:10: note: candidate: void API::registerDebugUrl(AsyncWebServer*)
     void registerDebugUrl(AsyncWebServer *server);
          ^
.pio/libdeps/esp32dev/esp32-lib/src/api.h:67:10: note:   candidate expects 1 argument, 0 provided
src/main.cpp: In lambda function:
src/main.cpp:187:13: error: 'class API' has no member named 'onEventConnect'
         api.onEventConnect(client);
             ^
*** [.pio/build/esp32dev/src/main.cpp.o] Error 1
================================================================= [FAILED] Took 50.93 seconds =================================================================

 

Wann wird hierzu eine Korrektur erfolgen bzw. ist diese vielleicht schon erfolgt und ich habe nur den falschen Branch?

Vielen Dank & Gruß Thomas

Posted

Moin Thomas,

Kurz als Überblick: Die WARP-Charger-Firmware ist dreigeteilt in die esp32-lib, die grundlegende Funktionen bietet (und vorkompiliert werden kann), die esp32-brick-Firmware, aus der die WARP-Charger-Firmware einige Module für das Webinterface übernimmt (die aber auch selbst eine eigene Firmware für den Brick ist) und die warp-charger-Firmware selbst, die den ganzen WARP-spezifischen Teil enthält.

Tatsächlich lässt sich die reine ESP32-Brick-Firmware gerade nicht bauen, weil ich Änderungen in esp32-lib gemacht habe, die in die WARP-Firmware mitgezogen habe, aber die ESP32-Firmware noch nicht aktualisiert habe. Das schleift etwas, weil ich die ESP32-Firmware Stand jetzt fast nie direkt baue, wir verkaufen den Brick ja noch nicht einzeln.

Wenn du dich spezifisch mit der Wallbox-Software beschäftigen willst, musst du im esp32-brick nichts kompilieren, sondern es reicht, das warp-charger-Git zu klonen, dann in dessen software-Ordner das esp32-brick-Git zu klonen (oder zu symlinken). Die esp32-lib wird von platformio automatisch runtergeladen.

Grüße,
Erik

Posted

Danke Erik,

jetzt bin ich einen Schritt weiter, erhalte aber leider immer noch einen Compile-Fehler:

Dependency Graph
|-- <ESP Async WebServer> 1.2.3+sha.0c365d8
|   |-- <AsyncTCP> 1.1.1
|   |-- <ArduinoJson> 6.17.2+sha.1360b6a
|   |-- <FS> 1.0
|   |-- <WiFi> 1.0
|-- <ArduinoJson> 6.17.2+sha.1360b6a
|-- <strict_variant> 1.0.0+sha.1112078
|-- <Pangolin MQTT Client> 1.0.0+sha.ceeeddc
|   |-- <AsyncTCP> 1.1.1
|-- <esp32-lib> 1.0.3+sha.cd031ee
|   |-- <ESP Async WebServer> 1.2.3+sha.0c365d8
|   |   |-- <AsyncTCP> 1.1.1
|   |   |-- <ArduinoJson> 6.17.2+sha.1360b6a
|   |   |-- <FS> 1.0
|   |   |-- <WiFi> 1.0
|   |-- <ArduinoJson> 6.17.2+sha.1360b6a
|   |-- <FS> 1.0
|   |-- <strict_variant> 1.0.0+sha.1112078
|   |-- <SPIFFS> 1.0
|   |   |-- <FS> 1.0
|   |-- <SPI> 1.0
|-- <SPIFFS> 1.0
|   |-- <FS> 1.0
|-- <WiFi> 1.0
|-- <Update> 1.0
|-- <ESPmDNS> 1.0
|   |-- <WiFi> 1.0
Building in release mode
Compiling .pio/build/warp/src/main.cpp.o
Compiling .pio/build/warp/src/modules/authentication/authentication.cpp.o
Compiling .pio/build/warp/src/modules/evse/evse.cpp.o
Compiling .pio/build/warp/src/modules/firmware_update/firmware_update.cpp.o
src/modules/authentication/authentication.cpp: In member function 'void Authentication::setup()':
src/modules/authentication/authentication.cpp:36:16: error: 'class AsyncWebServer' has no member named 'setAuthentication'
         server.setAuthentication(user.c_str(), pass.c_str());
                ^
*** [.pio/build/warp/src/modules/authentication/authentication.cpp.o] Error 1
================================================================= [FAILED] Took 23.18 seconds =================================================================

 

Macht euch deswegen aber bitte keinen Stress, ich kann mir vorstellen, dass ihr sowieso gerade genug mit den WARPs um die Ohren habt. Jedenfalls gibt es in den Repositories ja aktuell eine Menge Änderungen... 🙃

Gruß Thomas

Posted

Ah ja, da bist du gerade auf einem Zwischenzustand, weil ich noch lokale Änderungen rumliegen habe. Die Authentication ist ja gerade in Arbeit. Folgendes sollte immer funktionieren: Ich tagge die Repositories immer (beim esp32-brick habe ich es bei den ersten Versionen vergessen, die Tags trage ich die Tage noch nach) mit der entsprechenden Firmware-Version. D.h. wenn du im esp32-brick-Git

git checkout warp-1.1.1

und im warp-Charger git

git checkout v1.1.1

ausführst, sollte der Stand zueinander passen.

Posted

Perfekt, jetzt konnte ich die Firmware erfolgreich bauen 🙂

Vielen Dank für die schnelle Unterstützung. Ich freue mich schon auf den WARP Charger und das, was da demnächst noch alles kommt...

Gruß Thomas

  • 2 weeks later...
Posted

Hast du davor noch mehr Fehlerausgabe? Das Authentication-Modul im esp32-brick bringt eine eigene Login-Seite mit, die in genau diese Datei gepackt werden sollte. Eventuell ist das bei dir schiefgegangen.

Falls du das debuggen willst: Der Prozess ist etwas kompliziert. Ich benutze die pio_hooks.py um mich in den PlatformIO-Buildprozess reinzuhängen und die konfigurierten Module nach src/modules zu kopieren (Sowohl die aus warp_charger/software/modules als auch die aus dem esp32-brick). Wenn in einem Modul eine prepare.py liegt führe ich die davor aus, um damit z.B. die Loginseite zu erstellen.

Posted

Nachdem ich unter OS X Probleme hatte sass überhaupt mit der installierten node Version zum laufen zu bekommen, hab ich es in einem ubuntu docker container versucht.

Die vollständige Fehlerausgabe und die verwendeten Versionen:

root@67dfe5e72cd3:~/warp-charger/software# nodejs --version
v10.19.0
root@67dfe5e72cd3:~/warp-charger/software# npx --version
6.14.4
root@67dfe5e72cd3:~/warp-charger/software# platformio --version
PlatformIO Core, version 5.1.1
root@67dfe5e72cd3:~/warp-charger/software# git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   web/package-lock.json

no changes added to commit (use "git add" and/or "git commit -a")
root@67dfe5e72cd3:~/warp-charger/software# platformio run -e warp --verbose
Warning! Ignore unknown configuration option `name` in section [env:warp]
Warning! Ignore unknown configuration option `display_name` in section [env:warp]
Warning! Ignore unknown configuration option `backend_modules` in section [env:warp]
Warning! Ignore unknown configuration option `frontend_modules` in section [env:warp]
Processing warp (platform: espressif32@3.1.1; board: esp32dev; framework: arduino; platform_packages: platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3253de879235e35b48be3b9cb656680837028687; lib_deps: https://github.com/Tinkerforge/ESPAsyncWebServer.git#warp-1.2.1, https://github.com/Tinkerforge/ArduinoJson#warp-1.2.1, https://github.com/Tinkerforge/strict_variant#warp-1.2.1, https://github.com/Tinkerforge/PangolinMQTT#warp-1.2.1, https://github.com/Tinkerforge/esp32-lib#warp-1.2.1; monitor_speed: 115200; build_type: release; build_flags: -Os; extra_scripts: pre:pio_hooks.py, post:merge_firmware_hook.py; upload_port: /dev/ttyUSB0; board_build.partitions: default_16MB_coredump.csv; name: warp; display_name: WARP Charger; backend_modules: Wifi
Mqtt
Sse
Http
Firmware Update
EVSE
SDM72DM
Authentication; frontend_modules: EVSE
SDM72DM
Wifi
Mqtt
System Start
Event Log
Firmware Update
Authentication
System End)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
npx: installed 323 in 21.098s
[16:16:43] Local modules not found in ~/warp-charger/software/esp32-brick/software/modules/backend/authentication/login_page_ignored
[16:16:43] Try running: npm install
Traceback (most recent call last):
  File "prepare.py", line 22, in <module>
    shutil.copy2("login_page_ignored/dist/login.html.h", "./login.html.h")
  File "/usr/lib/python3.8/shutil.py", line 432, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.8/shutil.py", line 261, in copyfile
    with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: 'login_page_ignored/dist/login.html.h'
[16:16:45] Using gulpfile ~/warp-charger/software/web/gulpfile.js
[16:16:45] Starting 'default'...
[16:16:45] Starting 'debug'...
[16:16:45] Starting 'copy-html'...
[16:16:46] Finished 'copy-html' after 1.06 s
[16:16:46] Starting 'sass'...
[16:16:50] Finished 'sass' after 3.52 s
[16:16:50] Starting 'bundle-js'...
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/main.ts(93,21): Error TS2339: Property 'assign' does not exist on type 'ObjectConstructor'.]
  message:
   '/root/warp-charger/software/web/src/main.ts(93,21): Error TS2339: Property \'assign\' does not exist on type \'ObjectConstructor\'.',
  fileName: '/root/warp-charger/software/web/src/main.ts',
  line: 93,
  column: 21,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/main.ts(107,21): Error TS2339: Property 'assign' does not exist on type 'ObjectConstructor'.]
  message:
   '/root/warp-charger/software/web/src/main.ts(107,21): Error TS2339: Property \'assign\' does not exist on type \'ObjectConstructor\'.',
  fileName: '/root/warp-charger/software/web/src/main.ts',
  line: 107,
  column: 21,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/evse.ts(194,13): Error TS2322: Type 'string' is not assignable to type 'boolean'.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/evse.ts(194,13): Error TS2322: Type \'string\' is not assignable to type \'boolean\'.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/evse.ts',
  line: 194,
  column: 13,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/evse.ts(239,25): Error TS7006: Parameter 'content' implicitly has an 'any' type.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/evse.ts(239,25): Error TS7006: Parameter \'content\' implicitly has an \'any\' type.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/evse.ts',
  line: 239,
  column: 25,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/evse.ts(239,34): Error TS7006: Parameter 'filename' implicitly has an 'any' type.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/evse.ts(239,34): Error TS7006: Parameter \'filename\' implicitly has an \'any\' type.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/evse.ts',
  line: 239,
  column: 34,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/evse.ts(239,44): Error TS7006: Parameter 'contentType' implicitly has an 'any' type.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/evse.ts(239,44): Error TS7006: Parameter \'contentType\' implicitly has an \'any\' type.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/evse.ts',
  line: 239,
  column: 44,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/sdm72dm.ts(53,47): Error TS2339: Property 'fill' does not exist on type 'any[]'.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/sdm72dm.ts(53,47): Error TS2339: Property \'fill\' does not exist on type \'any[]\'.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/sdm72dm.ts',
  line: 53,
  column: 47,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/sdm72dm.ts(88,47): Error TS2339: Property 'fill' does not exist on type 'any[]'.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/sdm72dm.ts(88,47): Error TS2339: Property \'fill\' does not exist on type \'any[]\'.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/sdm72dm.ts',
  line: 88,
  column: 47,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/sdm72dm.ts(187,47): Error TS2339: Property 'fill' does not exist on type 'any[]'.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/sdm72dm.ts(187,47): Error TS2339: Property \'fill\' does not exist on type \'any[]\'.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/sdm72dm.ts',
  line: 187,
  column: 47,
  name: 'TypeScript error' }
[16:16:56] { [TypeScript error: /root/warp-charger/software/web/src/ts/modules/wifi.ts(91,113): Error TS2345: Argument of type 'string | boolean' is not assignable to parameter of type 'boolean'.
  Type 'string' is not assignable to type 'boolean'.]
  message:
   '/root/warp-charger/software/web/src/ts/modules/wifi.ts(91,113): Error TS2345: Argument of type \'string | boolean\' is not assignable to parameter of type \'boolean\'.\n  Type \'string\' is not assignable to type \'boolean\'.',
  fileName: '/root/warp-charger/software/web/src/ts/modules/wifi.ts',
  line: 91,
  column: 113,
  name: 'TypeScript error' }
[16:17:07] Finished 'bundle-js' after 17 s
[16:17:07] Finished 'debug' after 22 s
[16:17:07] Starting 'embed'...
[16:17:07] 'embed' errored after 49 ms
[16:17:07] Error: spawn python ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:240:19)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
[16:17:07] 'default' errored after 22 s
FileNotFoundError: [Errno 2] No such file or directory: 'web/dist/index.html.h':
  File "/usr/local/lib/python3.8/dist-packages/platformio/builder/main.py", line 175:
    env.SConscript(item, exports="env")
  File "/root/.platformio/packages/tool-scons/scons-local-4.1.0/SCons/Script/SConscript.py", line 591:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/root/.platformio/packages/tool-scons/scons-local-4.1.0/SCons/Script/SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/root/warp-charger/software/pio_hooks.py", line 246:
    main()
  File "/root/warp-charger/software/pio_hooks.py", line 244:
    shutil.copy2("web/dist/index.html.h", "src/index.html.h")
  File "/usr/lib/python3.8/shutil.py", line 432:
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.8/shutil.py", line 261:
    with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
=========================================================================================== [FAILED] Took 46.18 seconds ===========================================================================================
root@67dfe5e72cd3:~/warp-charger/software#

 

Posted
17 hours ago, bs. said:

[16:16:43] Local modules not found in ~/warp-charger/software/esp32-brick/software/modules/backend/authentication/login_page_ignored
[16:16:43] Try running: npm install

Ah das ist das Problem. Geh mal in den Ordner ~/warp-charger/software/esp32-brick/software/modules/backend/authentication/login_page_ignored und führe npm install aus. Da die Login-Seite separat vom Rest gebaut wird, braucht sie auch eine eigene Installation des ganzen Javascript-Haufens. Ich teste hier mal, ob es eine gute Idee ist den Befehl über das prepare-Script immer auszuführen oder ob das den Build-Prozess unnötig verlangsamt.

Die anderen Typescript-Fehler kannst du ignorieren, da ist die Typprüfung nicht ganz zufrieden, das funktioniert aber.

Posted

Gemergt. Ich biege die Partitionstabelle noch etwas um, das große SPIFFS brauchen wir Stand jetzt nicht und bei ESPs die man zur Entwicklung nutzt ist es kein Problem die Partitionstabelle noch umzuändern. Andere Frage: Wenn du bei dir die upload_port-Zeilen beide auskommentierst, funktioniert dann die Auto-Detection? Dann würde ich das so in die ini packen, damit man nicht seine seriellen Ports jedes Mal anpassen muss.

Posted

Ich hab bisher im Docker container gebaut und dann mit

esptool.py --baud 921600 --port /dev/cu.usbserial-01A13E71 --before default_reset --after hard_reset write_flash --flash_freq 40m -z --flash_mode dout --flash_size detect 0x1000 bootloader_dio_40m.bin 0x8000 .pio/build/warp4mb/partitions.bin 0xe000 boot_app0.bin 0x10000 .pio/build/warp4mb/firmware.bin  && screen /dev/cu.usbserial-01A13E71 115200

direkt geflasht weil ich es noch nicht geschafft hab unter OS X 11.2 node und sass zum laufen zu bringen.

Daher kann ich die Frage nach der Auto-Detection nicht beantworten weil ich nicht so weit komme auf der box wo ich flashen will.

Posted

Aber, ich hab eben den --port parameter beim esptool mal weggelassen und er hat selbst den richtigen port gefunden. Daher denke ich mal ohne upload_port= in der platformio.ini gehts bestimmt auch.

  • 6 months later...
Posted (edited)
Am 22.3.2021 um 09:39 schrieb rtrbt:

Ah das ist das Problem. Geh mal in den Ordner ~/warp-charger/software/esp32-brick/software/modules/backend/authentication/login_page_ignored und führe npm install aus. Da die Login-Seite separat vom Rest gebaut wird, braucht sie auch eine eigene Installation des ganzen Javascript-Haufens. Ich teste hier mal, ob es eine gute Idee ist den Befehl über das prepare-Script immer auszuführen oder ob das den Build-Prozess unnötig verlangsamt.

Hallo, über das Problem bin ich gerade auch etwas länger gestrauchelt, bis ich dann die obigen Post gefunden habe.

Vorschlag: Eine zusätzliche Zeile mit diesem Hinweis in der Reame.txt in warp-charger/software wäre enorm hilfreich. Denn an die habe ich mich beim Aufsetzen der Build-Toolchain gehalten.

Zuvor hatte ich mit dem Setup-Skript für die Build-Umgebung meine Probleme. Unter Ubuntu 21.04 (VirtualBox Image von osboxes.org) kam es immer zu einem "Authentication error", während und nachdem das Skript lief bzw. gelaufen war. Eine Anmeldung am System war nicht mehr möglich, irgendwas war so gründlich zerschossen, dass ich die VM komplett zurücksetzen musste. Gefixt bekam ich das schlussendlich, indem ich nach dem

 nach dem

sudo apt-get update

ein

sudo apt-get -y dist-upgrade

zugefügt habe (Zeile 14/15).
 

Edited by mattsches
Posted

Moin,

Ich habe das mal sinnvoller gelöst: Die pio_hooks installieren die Javascript-Abhängigkeiten jetzt automatisch, falls sie fehlen, das Authentication-Modul macht das jetzt genauso.

11 hours ago, mattsches said:

Zuvor hatte ich mit dem Setup-Skript für die Build-Umgebung meine Probleme.

Damit meinst du die für Bricklet-Firmwares? Die brauchst du für die Wallbox-Firmware selbst nicht. (Es sei denn du willst am Ladecontroller selbst Änderungen vornehmen) Edit: Vergiss das, habe gerade den anderen Thread gesehen ;)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...