Älteres Elektor Projekt lässt sich nicht flashen / compellieren

Ich bin mit mein Latein am Ende , alle Libs installiert und auch noch
mit der IDE 1.8.18 probiert - nur Fehlermeldungen.
Kann ein netter User das mal auf seinen Rechner testen und eventuell
die bin Datei hier einstellen ?
Oder sogar eine ESP 32 flashen und schauen ob das "läuft" ?

Der Sinn besteht darin, einen unabhängigen NTP Zeitserver zu haben -
Internet ist bei mir nicht stabil und DCF77 ist auch nicht so gut.
Daher mein Versuch mit GPS und Außenantenne das Problem zu lösen.
Besten Dank und schönes Wochenende !

Wenn du uns die mitlieferst, kann man evtl. schon etwas erkennen, wo der Fehler steckt.

Als Fehlermeldung bekomme ich diese :

/Users/homer/Documents/Arduino/libraries/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp:28:7: error: attributes are not allowed on a function-definition
ARDUINOJSON_NO_SANITIZE("float-cast-overflow") {
^~~~~~~~~~~~~~~~~~~~~~~

ArduinoJson Ver. 6.10.0 ist installiert.
Soll ich eine ältere Version versuchen ?
Schon komisch dass Elektor so etwas veröffendlicht :frowning:

Typisch Elektor... Genau so eine Schlamperei wie bei so manchen Büchern bei denen.

In webfunctions.cpp die folgende Zeile von

 if(0 != deserializeJson(doc, server->arg("JSON" ) ) ){

in

 if(DeserializationError::Ok != deserializeJson(doc, server->arg("JSON" ) ) ){

ändern.

Sollte zum Kompilieren wirklich PlatformIO verwendet werden, muss die platformio.ini auch angepasst werden und der Eintrag "board=pico32" in das entsprechende ESP32 board geändert werden.

Bei dem Github-Projekt wird übrigens ArduinoJson >= 6.18.2 (Aber nur 6er Release nicht 7.x !) verwendet. Die obige Änderung sollte aber auch bei der Version 6.10.0 funktionieren.

Nun ja, ich verwende die Arduino IDE nicht. Mit der von mir beschriebenen Änderung lässt sich die Software kompilieren. Zumindest bei PlatformIO.

PACKAGES:
 - framework-arduinoespressif32 @ 3.20017.241212+sha.dcc1105b
 - tool-esptoolpy @ 1.40501.0 (4.5.1)
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
Converting Firmware.ino
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 40 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ArduinoJson @ 6.21.5
|-- Time @ 1.6.1
|-- CRC32 @ 2.0.0
|-- TinyGPSPlus @ 1.1.0
|-- RTClib @ 1.14.2
|-- U8g2 @ 2.36.7
|-- FS @ 2.0.0
|-- SPIFFS @ 2.0.0
|-- Ticker @ 2.0.0
|-- WiFi @ 2.0.0
|-- Wire @ 2.0.0
|-- EEPROM @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- WebServer @ 2.0.0
|-- ESP32 Async UDP @ 2.0.0
Building in release mode
[...]
Compiling .pio\build\ESP32\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\ESP32\libFrameworkArduino.a
Indexing .pio\build\ESP32\libFrameworkArduino.a
Linking .pio\build\ESP32\firmware.elf
Retrieving maximum program size .pio\build\ESP32\firmware.elf
Checking size .pio\build\ESP32\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]   9.5% (used 50620 bytes from 532480 bytes)
Flash: [========  ]  75.7% (used 992157 bytes from 1310720 bytes)
Building .pio\build\ESP32\firmware.bin
esptool.py v4.5.1
Creating esp32 image...
Merged 27 ELF sections
Successfully created esp32 image.

Dann probiere es doch mal mit der ArduinoJson Version 6.21.5.

Unsere Beiträge habe sich überschnitten - daher habe ich meine alte
Antwort gelöscht.
Folgendes Ergebnis :

Nach Änderung auf ArduinoJson 6.18.2 und der o.g. Korrektur von Dir läuft
der Sketch durch !
Hast Du eine Erklährung ?
Man muss ja "Angst" haben, das nach einen Update der Librarys garnichts
mehr geht.
Bei einen fertigen Projekt ist es daher wohl besser die bin Datei mit abzuspeichern.

Angst muss man nicht haben, nur alles richtig dokumentieren.
Wenn man dann noch mit einer portablen 1.8.19 IDE arbeitet, dann kann man vielen Problemen aus dem Weg gehen.
Und es liegt nicht immer am Autor (hier Elektor). Dafür ist die Technik zu schnelllebig.

Sehe ich anders. Wenn sich die Software mit der Version 6.10.0 nicht kompilieren lässt, dann sollte der Autor wenigstens die Doku auf der Github Seite anpassen.

Wenn es jetzt funktioniert, kannst Du ja meinen Beitrag #4 als Lösung markieren. Dann sieht man schon am Topic, dass der Thread eine Lösung enthält.

habe ich gemacht !
Montag bin ich wieder an der Hardware und werde weiter an den Projekt arbeiten
und wenn erforderlich weiter berichten.
Schönes, heißes (Rest) Wochenende !

Ja, ok.
Was die Version 6.10.0 betrifft, gebe ich dir Recht.
Die steht zumindest so auf GitHub.

Trotzdem alles schlampig dokumentiert und getestet.
Andrere Projekte auf Github bieten auch eine bin Datei an die dann direkt flashbar ist.
Der ganze Mist / Ärger mir dem Arduino Gedöns wird damit umgangen.
Wer will kann alternativ aber immer den Sourcecode nutzen.
Viele User beschweren sich ständig dass nach Updates nichts mehr geht ...

Und es war einmal....

Aber Hallo....das ist jetzt mal ein echter Rundumschlag.
Da habe ich kein Verständnis für.

Da kann ich dir nur einen Tipp geben.
Selbst lernen und besser machen.
Dann ist die Kritik auch passend.

kleine Anmerkung Elektor ist m.M. nach für Anfänger bzw. Bastler gedacht.
Daher sollte eine Dokumentation etwas ausführlichen ausfallen.
Aber ich möchte nicht weiter über Elektor Kritik üben, wichtig ist dass eine Lösung gefunden wurde.

Naja … Das geht schon von Anfänger bis Profi…

Ich habe einige Bücher von Elektor. Unter anderem „ Mikrocontroller-Technik. Vom Einsteiger zum Aufsteiger mit dem AVR-Playground-Board“ .
Dass ist mein absolutes Negativbeispiel, weil u.a. die Doku zu diesem Playgroundboard sehr fehlerhaft ist. Das ist dann für Einsteiger nichts mehr…

Einfach schlecht redigiert.

Das kannst du doch auch tun. Erstelle eine universelle bin, die alle Controller abdeckt und biete sie auf Github an. Wo ist das Problem? Alle würden davon profitieren.

Viele Menschen machen dumme Dinge.
Eigentlich alle, zumindest manchmal.

GPS brauchst Du eine Außenantenne, für DCF77 nicht.
Du brauchst keinen ständigen Empfang des DCF77 signals. Bei der sehr guten RTC, die Du verwendest, genügt eine Synchronisation alle paar Tage um eine sekundengenaue Zeit zu haben.

grüße Uwe