ct-Open-Source / Basecamp

An Arduino library to ease the use of the ESP32 in IoT projects
GNU General Public License v3.0
254 stars 48 forks source link

0.1.8 broken? #50

Open pvdh opened 6 years ago

pvdh commented 6 years ago

Ich scheitere gerade nachhaltig beim Versuch, basecamp zu nutzen. Eigentlich bin ich ganz naiv: Basecamp und die Abhängigkeiten eingebunden und das Beispiel kompiliert.

`#include Basecamp iot;

void setup() { iot.begin(); //The mqtt object is an instance of Async MQTT Client. See it's documentation for details. iot.mqtt.subscribe("test/lol",2);

//Use the web object to add elements to the interface
iot.web.addInterfaceElement("color", "input", "", "#configform", "LampColor");
iot.web.setInterfaceElementAttribute("color", "type", "text");

}

void loop() { //your code }`

Leider liefert das Fehlermeldungen, los geht es mit "undefined reference to Basecamp::begin(String)", wobei das Beispiel mit iot.begin() ja gar nichts übergibt.

sketch/sketch_apr16a.ino.cpp.o:(.literal._Z5setupv+0x2c): undefined reference toBasecamp::begin(String)' sketch/sketch_apr16a.ino.cpp.o:(.literal._Z5setupv+0x30): undefined reference to WebServer::addInterfaceElement(String const&, String, String, String, String)' sketch/sketch_apr16a.ino.cpp.o:(.literal._Z5setupv+0x34): undefined reference toWebServer::setInterfaceElementAttribute(String const&, String const&, String)' sketch/sketch_apr16a.ino.cpp.o:(.literal.startup._GLOBAL__sub_I_iot+0x4): undefined reference to Basecamp::Basecamp(Basecamp::SetupModeWifiEncryption, Basecamp::ConfigurationUI)' sketch/sketch_apr16a.ino.cpp.o: In functionsetup()': /home/patrick/Arduino/sketch_apr16a/sketch_apr16a.ino:5: undefined reference to Basecamp::begin(String)'

Vor zwei Monaten hat das alles besser funktioniert, da war ich aber bei den Abhängigkeiten sicherlich auf älteren Versionsständen. Mit welchen Versionen ganz konkret ist die Bibliothek getestet?

Viele Grüße Patrick

merlinschumacher commented 6 years ago

Hallo Patrick,

hast Du die Master-Version genommen oder die Release-Fassung aus dem Arduino-Bibliotheksmanager?

pvdh commented 6 years ago

Hallo Merlin,

gestern habe ich viel nacheinander probiert, unterschiedliche Versionen der unterschiedlichen Bibliotheken, in der Regel aus dem Arduino-Bibliotheksmanager.

Ich habe jetzt in einem neuen Konto unter Ubunut frisch angefangen. Installiert sind: a95fa15b88b8dc4ddb79ac28665f763b arduino-1.8.5-linux64.tar.xz db7cbc5cd273a16b27d46f4d7aa1e07a arduino-esp32-master.zip 286078d192b22cf3779b04cc59f408aa ArduinoJson-master.zip b226b77f9c0c32cd3424f4dadd54423b async-mqtt-client-master.zip 9e84dd3f45c78978fdc4be5a46a330e4 AsyncTCP-master.zip 1b995326fcdc9dcc24e34d950abc72b2 Basecamp-0.1.8.zip 094b3753f48348dfd81c9cc30e2d6874 ESPAsyncWebServer-master.zip Die aktuelle Ausgabe lautet

/home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp: In lambda function: /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:72:69: warning: 'typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type ArduinoJson::JsonBuffer::strdup(const TString&) [with TString = String; typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type = const char*]' is deprecated: char* are duplicated, you don't need strdup() anymore [-Wdeprecated-declarations] element["element"] = _jsonBuffer.strdup(interfaceElement.element); ^ In file included from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/JsonParser.hpp:7:0, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/JsonBufferBase.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/DynamicJsonBuffer.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.h:9, from /home/esp32/Arduino/libraries/ESPAsyncWebServer-master/src/AsyncJson.h:23, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.hpp:16, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:7: /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:46:52: note: declared here const char *>::type strdup(const TString &src) { ^ /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:73:59: warning: 'typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type ArduinoJson::JsonBuffer::strdup(const TString&) [with TString = String; typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type = const char*]' is deprecated: char* are duplicated, you don't need strdup() anymore [-Wdeprecated-declarations] element["id"] = _jsonBuffer.strdup(interfaceElement.id); ^ In file included from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/JsonParser.hpp:7:0, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/JsonBufferBase.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/DynamicJsonBuffer.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.h:9, from /home/esp32/Arduino/libraries/ESPAsyncWebServer-master/src/AsyncJson.h:23, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.hpp:16, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:7: /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:46:52: note: declared here const char *>::type strdup(const TString &src) { ^ /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:74:69: warning: 'typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type ArduinoJson::JsonBuffer::strdup(const TString&) [with TString = String; typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type = const char*]' is deprecated: char* are duplicated, you don't need strdup() anymore [-Wdeprecated-declarations] element["content"] = _jsonBuffer.strdup(interfaceElement.content); ^ In file included from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/JsonParser.hpp:7:0, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/JsonBufferBase.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/DynamicJsonBuffer.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.h:9, from /home/esp32/Arduino/libraries/ESPAsyncWebServer-master/src/AsyncJson.h:23, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.hpp:16, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:7: /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:46:52: note: declared here const char *>::type strdup(const TString &src) { ^ /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:75:67: warning: 'typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type ArduinoJson::JsonBuffer::strdup(const TString&) [with TString = String; typename ArduinoJson::Internals::EnableIf<(! ArduinoJson::Internals::IsArray<T>::value), const char*>::type = const char*]' is deprecated: char* are duplicated, you don't need strdup() anymore [-Wdeprecated-declarations] element["parent"] = _jsonBuffer.strdup(interfaceElement.parent); ^ In file included from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/JsonParser.hpp:7:0, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/JsonBufferBase.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/DynamicJsonBuffer.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.hpp:7, from /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson.h:9, from /home/esp32/Arduino/libraries/ESPAsyncWebServer-master/src/AsyncJson.h:23, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.hpp:16, from /home/esp32/Arduino/libraries/Basecamp-0.1.8/WebServer.cpp:7: /home/esp32/Arduino/libraries/ArduinoJson-master/src/ArduinoJson/Deserialization/../JsonBuffer.hpp:46:52: note: declared here const char *>::type strdup(const TString &src) { ^ Sketch uses 930946 bytes (71%) of program storage space. Maximum is 1310720 bytes. Global variables use 47876 bytes (16%) of dynamic memory, leaving 247036 bytes for local variables. Maximum is 294912 bytes. Das hat zwar kompiliert, war aber für mich gestern der Anlass, die unterschiedlichen Versionen über den Bibliotheksmanager durchzupermutieren, um einen stabilen Stand ohne Fehlermeldungen und Warnungen zu erreichen. Das hat vor ein paar Wochen auf einem anderen Rechner ja sauber funktioniert.... Daran bin ich tatsächlich gescheitert und würde sehr interessieren, welche Versionen der benötigten Bibliotheken ordentlich harmonieren.

Viele Grüße Patrick

Narsskrarc commented 6 years ago

Wie ist da der Stand? Ich versuche das Minimal-Programm zu übersetzen: void setup() { iot.begin(); }

Mit BaseCamp master bekomme ich /home/hab/Arduino/libraries/Basecamp/mqttGuardInterface.cpp:1:34: fatal error: MqttGuardInterface.hpp: No such file or directory

Mit BaseCamp 0.1.8 kommen obige Warnungen. Die anderen Abhängigkeiten sind auf dem jeweiligen master.

Mein C++ ist leider nicht gut genug, um da durchzusteigen...

Narsskrarc commented 6 years ago

Hrmpf. Jetzt hab ich nochmal einen git checkout 0.1.8 gemacht, und jetzt funktioniert das Übersetzen klaglos. Nicht, dass ich das nicht vorher schon mal gemacht hätte... EDV = Experimentelle Daten-Verarbeitung :-)