Closed ahinrichs closed 6 years ago
Ich denke nicht.
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.
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.
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.
Ich werde mir das Problem heute ansehen und mit dem Basecamp-Entwickler eine Lösung finden.
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.
Sollte das BASECAMP_NOMQTT nicht vor dem #include stehen?