jamct / DoorsignEPD

Doorsign with E-Paper-Display with ESP32. Loading images from webserver.
GNU General Public License v3.0
100 stars 36 forks source link

move BASECAMP_NOMQTT define before include basecamp #10

Closed ahinrichs closed 6 years ago

ahinrichs commented 6 years ago

Sollte das BASECAMP_NOMQTT nicht vor dem #include stehen?

ghost commented 6 years ago

Ich denke nicht.

ahinrichs commented 6 years ago

Aber das wird im Basecamp.hpp schon benutzt:

#ifndef BASECAMP_NOMQTT
#include <AsyncMqttClient.h>
#endif

Wenn das define erst danach kommt, wird der MQTT Code trotzdem mit compiliert. Es gibt MQTT Felder in der Config und iot.mqtt ist vorhanden.

ghost commented 6 years ago

Das stimmt. Sieht man ja beim Reset wenn der Hotspot auf 192.168.4.1 aufpoppt. Hatte es nur gestern getestet und konnte zwar kompilieren aber auf dem ESP lief es nicht mehr.

ahinrichs commented 6 years ago

Das ist ein Argument gegen die Änderung. Aber das müsste dann ein Bug im Basecamp sein, dass das nicht läuft, wenn man MQTT vollständig abschaltet. Habe ich zugegebenermaßen nicht getestet, da ich MQTT nutze. Mache ich bei Gelegenheit wenn nicht jemand anders schneller ist. Mal Basecamp "Hello World" pur ganz ohne Display und mit dem MQTT Abschalten ganz am Anfang. Und im Fehlerfalle ein Bugreport dort.

jamct commented 6 years ago

Ich werde mir das Problem heute ansehen und mit dem Basecamp-Entwickler eine Lösung finden.

ahinrichs commented 6 years ago

Das ist ein Design-"Problem". Die Libraries werden komplett unabhängig kompliert. In diesem Fall wird beim Sketch Basecamp.hpp ohne MQTT Code kompiliert. Danach Basecamp aber mit. Da dort BASECAMP_NOMQTT nicht definiert ist. Und zusammengelinkt gibt das eine Exception.

Wer MQTT ganz abschalten will, sollte das am besten in Basecamp.hpp ganz am Anfang machen.

Heißt aber auch, dass die ganzen NOWAB, NOOTA und NOMQTT von Basecamp gar nicht vom Sketch aus genutzt werden können.