Hallo.
Wollte das Programm was ich für den ESP32 geschrieben habe in den NodeMcu spielen,
aber es gibt Fehlermeldung beim kompilieren.
Warum ist das so, hat das etwas mit den Befehlen zu tun?
Stehe da gerade auf dem Schlauch.
Hallo.
Wollte das Programm was ich für den ESP32 geschrieben habe in den NodeMcu spielen,
aber es gibt Fehlermeldung beim kompilieren.
Warum ist das so, hat das etwas mit den Befehlen zu tun?
Stehe da gerade auf dem Schlauch.
Und nun sollen wir die Fehlermeldungen und das Programm erraten?
Gruß Tommy
Hi
Laut Google:
NodeMcu=ESP8266
Laut meinem Kopf:
ESP8266!=ESP32
Vll. liegt's einfach daran, daß ein Fahrrad kein 40-Tonner ist - man also mit ein/zwei Kleinigkeiten rechnen muß, Die anders sind.
Auch wären sowohl die Fehlermeldung wie der verursachende Sketch wohl eine Nennung wert.
MfG
War tanken, jetzt will mein Auto nicht mehr anspringen!
Warum ist das so?
Sollte ich deshalb extra die Betriebsanleitung (Dokumentation) lesen, oder pflegeleicht auf eure Antworten warten?
Jede Hilfe ist Willkommen.
Gruß Fips
Hallo,
Derfips:
War tanken, jetzt will mein Auto nicht mehr anspringen!Warum ist das so?
Sollte ich deshalb extra die Betriebsanleitung (Dokumentation) lesen, oder pflegeleicht auf eure Antworten warten?
Jede Hilfe ist Willkommen.
Gruß Fips
kein Problem, Du tauscht den jetzt falschen Motortyp für den getankten Krafftstoff gegen den jetzt richtigen aus und fährst weiter...
Gruß aus Berlin
Michael
Mein Frage sollte eigentlich allgemein sein.
Habe das Programm jetzt mal beigefügt.
Fehlermeldung:
C:\Users\VM001\Desktop\ESP32_MultiSensorV002\ESP32_MultiSensorV002.ino: In function 'void setup_wifi()':
ESP32_MultiSensorV002:372:23: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
WiFi.begin(SSID, PSK);
^
In file included from C:\Users\VM001\Desktop\ESP32_MultiSensorV002\ESP32_MultiSensorV002.ino:22:0:
C:\Program Files (x86)\Arduino\libraries\WiFi\src/WiFi.h:79:9: error: initializing argument 1 of 'int WiFiClass::begin(char*, const char*)' [-fpermissive]
int begin(char* ssid, const char *passphrase);
^
C:\Users\VM001\Desktop\ESP32_MultiSensorV002\ESP32_MultiSensorV002.ino: In function 'void LocalTimeDate()':
ESP32_MultiSensorV002:418:29: error: 'getLocalTime' was not declared in this scope
if(!getLocalTime(&timeinfo))
^
Mehrere Bibliotheken wurden für "Wire.h" gefunden
Benutzt: C:\Users\VM001\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.2\libraries\Wire
Mehrere Bibliotheken wurden für "U8g2lib.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\U8g2
Mehrere Bibliotheken wurden für "Bounce2.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Bounce2
Mehrere Bibliotheken wurden für "SPI.h" gefunden
Benutzt: C:\Users\VM001\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.2\libraries\SPI
Mehrere Bibliotheken wurden für "OneWire.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\OneWire
Mehrere Bibliotheken wurden für "Adafruit_BME280.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_BME280_Library
Mehrere Bibliotheken wurden für "Adafruit_Sensor.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_Unified_Sensor
Mehrere Bibliotheken wurden für "Adafruit_MLX90614.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_MLX90614_Library
Mehrere Bibliotheken wurden für "ErriezBH1750.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\ErriezBH1750-master
Mehrere Bibliotheken wurden für "DallasTemperature.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\DallasTemperature
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: C:\Program
Mehrere Bibliotheken wurden für "PubSubClient.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\PubSubClient
Nicht benutzt: C:\Users\VM001\Documents\Arduino\libraries\Antares_ESP8266_MQTT
exit status 1
invalid conversion from 'const char*' to 'char*' [-fpermissive]
Danke!
ESP32_MultiSensorV002.ino (26.9 KB)
Hallo,
ich habe den Kram mal in meine TestIDE geworfen, IDE 1.8.10, ESP32 1.04 Boardmangerversion.
Du solltest bei solchen Anfragen auch eine Liste der benutzten Libs, möglichst gleich mit Link zu github, schreiben. Es ist mühsam für einen Helfenden, sich das zusammenzusuchen, wenn er das nicht alles auf dem Rechner hat.
Ohne ist es auch nicht sicher, daß ich jetzt die Lib-Versionen installiert hzabe, die Du bei Dir hast.
Es wird hier zwar meist empfohlen, alle Ausgaben und Warnungen einzuschalten, ich bin da aber wegen der Übersicht kein Freund von. Ich compiliere auch meine Sachen generell erstmal mit Standard-Ausgaben. Wenn das phne Abbruch durchläuft, hat man hohe Chancen, ein lauffähiges Programm zu haben.
Dann schalte ich die Compilerausgaben schrittweise hoch und compiliere neu.
Etwas Vorsicht ist mit "Alle" nötig: dem Compiler wird da gesagt, daß er Warnunges als Error interpretieren soll, er bricht also auch dann ab, wenn man sich das zwar anschauen sollten, aber machnmal auch garnichts direkt dagegen machen kann.
So, nun mein Ergebnis: der Sketch läuft fehlerfrei durch...
Es gibt beim Formatieren mit sprintf() in Zeile 425 und eine ungenutzte Variable in Zeile 176. sollte man beheben, stört die Funktion im Moment aber nicht generell.
Gruß aus Berlin
Michael
Hallo und vielen Dank.
Die Variablen brauche ich evtl. später, werde die dann entfernen.
Die Verlinkung werden dann einfügen, hätte man auch selber drauf kommen können ![]()
Mit welchen Programm arbeitest Du?
Ich bekomme bei dieser Zeile:
WiFi.begin(SSID, PSK);
C:\Users\VM001\Desktop\ESP32_MultiSensorV003\ESP32_MultiSensorV003.ino: In function 'void setup_wifi()':
ESP32_MultiSensorV003:372:23: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
WiFi.begin(SSID, PSK):
^
In file included from C:\Users\VM001\Desktop\ESP32_MultiSensorV003\ESP32_MultiSensorV003.ino:22:0:
C:\Program Files (x86)\Arduino\libraries\WiFi\src/WiFi.h:79:9: error: initializing argument 1 of 'int WiFiClass::begin(char*, const char*)' [-fpermissive]
int begin(char* ssid, const char *passphrase);
^
Mehrere Bibliotheken wurden für "Bounce2.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Bounce2
Mehrere Bibliotheken wurden für "Adafruit_BME280.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_BME280_Library
Mehrere Bibliotheken wurden für "Adafruit_Sensor.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_Unified_Sensor
Mehrere Bibliotheken wurden für "ErriezBH1750.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\ErriezBH1750-master
Mehrere Bibliotheken wurden für "OneWire.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\OneWire
Mehrere Bibliotheken wurden für "Wire.h" gefunden
Benutzt: C:\Users\VM001\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.2\libraries\Wire
Mehrere Bibliotheken wurden für "U8g2lib.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\U8g2
Mehrere Bibliotheken wurden für "SPI.h" gefunden
Benutzt: C:\Users\VM001\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.2\libraries\SPI
Mehrere Bibliotheken wurden für "Adafruit_MLX90614.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_MLX90614_Library
Mehrere Bibliotheken wurden für "DallasTemperature.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\DallasTemperature
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: C:\Program
Mehrere Bibliotheken wurden für "PubSubClient.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\PubSubClient
Nicht benutzt: C:\Users\VM001\Documents\Arduino\libraries\Antares_ESP8266_MQTT
exit status 1
invalid conversion from 'const char*' to 'char*' [-fpermissive]
Hier bekomme ich auch einen Fehler:
if(!getLocalTime(&timeinfo))
C:\Users\VM001\Desktop\ESP32_MultiSensorV003\ESP32_MultiSensorV003.ino: In function 'void LocalTimeDate()':
ESP32_MultiSensorV003:418:29: error: 'getLocalTime' was not declared in this scope
if(!getLocalTime(&timeinfo))
^
Mehrere Bibliotheken wurden für "Adafruit_MLX90614.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_MLX90614_Library
Mehrere Bibliotheken wurden für "DallasTemperature.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\DallasTemperature
Mehrere Bibliotheken wurden für "Wire.h" gefunden
Benutzt: C:\Users\VM001\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.2\libraries\Wire
Mehrere Bibliotheken wurden für "U8g2lib.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\U8g2
Mehrere Bibliotheken wurden für "Bounce2.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Bounce2
Mehrere Bibliotheken wurden für "Adafruit_BME280.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_BME280_Library
Mehrere Bibliotheken wurden für "Adafruit_Sensor.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\Adafruit_Unified_Sensor
Mehrere Bibliotheken wurden für "SPI.h" gefunden
Benutzt: C:\Users\VM001\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.6.2\libraries\SPI
Mehrere Bibliotheken wurden für "WiFi.h" gefunden
Benutzt: C:\Program
Mehrere Bibliotheken wurden für "PubSubClient.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\PubSubClient
Nicht benutzt: C:\Users\VM001\Documents\Arduino\libraries\Antares_ESP8266_MQTT
Mehrere Bibliotheken wurden für "ErriezBH1750.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\ErriezBH1750-master
Mehrere Bibliotheken wurden für "OneWire.h" gefunden
Benutzt: C:\Users\VM001\Documents\Arduino\libraries\OneWire
exit status 1
'getLocalTime' was not declared in this scope
Sind das Fehler die man ignorieren kann?
amithlon:
ich habe den Kram mal in meine TestIDE geworfen, IDE 1.8.10, ESP32 1.04 Boardmangerversion.
Wenn ich den TO richtig verstanden habe, will er von ESP32 nach ESP8266 migrieren.
Gruß Tommy
Ja Tommy genau.
Beim ESP32 geht es, ohne Fehlermeldung.
Beim WIFI muss ich folgenden ändern:
const char* ssid = "ddd";
const char* password = "ddd";
nach
char* ssid = "ddd";
char* password = "ddd";
warum?
"const" sagt doch nur aus das der erste Zeiger auf einen konstanten String zeigt, oder?
PS Habe als Baord: LOLIN(WEMOS) D1 R2 & mini
Ist laut Doku der richtige für das Baord.
Welche ESP8266-Version verwendest Du?
Gruß Tommy
Hallo,
Tommy56:
Wenn ich den TO richtig verstanden habe, will er von ESP32 nach ESP8266 migrieren.
aua, wer lesen kann ist klar im Vorteil, ich konnte es offensichtlich nicht.
Also nochmal von vorn...
WiFi.h durch ESP8266WiFi.h ersetzt und compiliert.
Abbruch in Zeile 418: 'getLocalTime' was not declared in this scope
Zum Test den Abfrageblock mal auskommtiert: läuft durch, nur wieder ein paar im Moment unbedeutende warnings.
ich habe noch nicht geschaut, was er da macht, er benutzt ja die time.h, die läuft aber alleine zuverlaääsig und holt alle Stunde die NTP-Zeit, wenn man sie einmal beim Start initialisiert hat.
IDE 1.8.10, ESP8266 2.6.1 Boardmanagerversion
PS:
// Start Time service.
configTime(0, 0, "pool.ntp.org", "time.nist.gov");
setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 0);
time_t now = time(nullptr);
struct tm * timeinfo;
timeinfo = localtime(&now);
ist z.B. mein Startcode bei den Uhren in setup()
Die Laufzeitkorrekturen in der time.h sind verblüffend gut, due Uhr läuft wirklich quarzgenau, wenn sie mal längere Zeit keine NTP-Daten bekommt.
Gruß aus Berlin
Michael
Danke, mit dem WiFi geht es so.
Habe mal nur das ntpServer Script genommen.
//#include <WiFi.h> //je nach Baord (ESP32)
#include <ESP8266WiFi.h> //je nach Board (ESP8266)
#include "time.h"
char* ssid = "sss";
char* password = "sss";
const char* ntpServer = "192.168.134.1";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 0; //Sommerzeit / Winterzeit (wird aber nicht gebraucht da die Zeit vom ntpServer kommt)
const uint32_t ntpServer_TimerCounter = 60000; //Zeit festlegen in ms, wann die Uhrzeit und das Datum um ntpServer geholt werden soll
uint32_t ntpServer_TimerComparison = 0; //Vergleichswert für den Zähler(Startwert muss 0 sein)
char ntpDate[50]; //Datum
char ntpTime[50]; //Uhrzeit
struct tm timeinfo; //für time.h
void setup()
{
Serial.begin(115200);
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" CONNECTED");
ntpServer_TimerComparison = millis() + 50000; //damit die IF Bedinung das erstmal auch WAHR ist
}
void loop()
{
LocalTime(); //Aktuelle Uhrzeit und das Datum holen
Serial.println(ntpDate);
Serial.println(ntpTime);
delay(1000);
}
void LocalTime()
{
//jede Stunde die Uhrzeit und das Datum vom ntpServer holen
if (millis() - ntpServer_TimerComparison >= ntpServer_TimerCounter)
{
Serial.println("Uhrzzeit und Datum wird aktualisiert...");
ntpServer_TimerComparison = millis();
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); //Verbindung zum ntpServer
}
if (!getLocalTime(&timeinfo))
{
Serial.println("Uhrzzeit und Datum konnte nicht aktualisiert werden!");
return;
}
snprintf (ntpTime, 50, "%02d:%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec + 1);
snprintf (ntpDate, 50, "%02d.%02d.%0002d (%1d)", timeinfo.tm_mday, timeinfo.tm_mon + 1, timeinfo.tm_year + 1900, timeinfo.tm_wday);
}
Die Fehlermeldung hab ich im Netz gefunden nur ohne eine Lösung.
Hallo,
wenn ich richtig liege, muß es %02d.%02d.%04d heißen, sagt zumindest die Format-String Beschreibung.
Allerdings habe ich den Zweck der Funktion LocalTime() noch nicht erkannt.
Gruß aus Berlin
Michael
LocalTime soll mir die die Uhrzeit und das Datum vom ntpServer holen und in einer Variablen zu Verfügung stellen. Diese rufe ich bei bedarf dann im Codes einfach auf.
Wenn die in einer Variablen stehen und Du sie irgendwann mal verwendest, sind sie mit Sicherheit veraltet.
Du musst sie dann aus dem System holen, wenn Du sie brauchst.
Gruß Tommy
hd458:
if (!getLocalTime(&timeinfo))
Der Esp8266 hat keine Funktion "getLocalTime" in den mitgelieferten Bibliotheken. Diese gibt es nur Beim Esp32.
Die Fehlermeldung hab ich im Netz gefunden nur ohne eine Lösung.
Welche Fehlermeldung hast du im Netz gefunden, ich seh keine.
Gruß Fips
Die Variablen aktualisiere ich je Sekunde.
Benutze ich für die Uhrzeit im Display und übertrage die als MQTT zu openhab.
openhab prüft dann ob die Uhrzeit +/-1 Sekunde gleich ist, mit seiner Zeit,. Wenn dem so ist, weiß ich das der ESP eine aktive Verbindung hat.
Derfips:
Der Esp8266 hat keine Funktion "getLocalTime" in den mitgelieferten Bibliotheken. Diese gibt es nur Beim Esp32.Welche Fehlermeldung hast du im Netz gefunden, ich seh keine.
Gruß Fips
Also nicht time.h abhängig. Gibt es dazu eine Alternative?