Hallo Gerald,
habe neue sensebox home und bekomme Fehlermeldung expected initializer before ‘dtostrf’- die Zeile #include “avr/dtostrf.h” habe ich bereits oben eingefügt; was kann ich tun?
Gruß
Markus
Hallo Gerald,
habe neue sensebox home und bekomme Fehlermeldung expected initializer before ‘dtostrf’- die Zeile #include “avr/dtostrf.h” habe ich bereits oben eingefügt; was kann ich tun?
Gruß
Markus
Hallo marvioli,
bitte das nächste mal deinen gesamten Code und die gesamte Fehlermeldung als öffentliches Thema posten.
Sieht aus als hättest du irgendwo einen Syntaxfehler.
Hallo Gerald, hier der Code
// senseBox:home WiFi is enabled by default!
// If you have a senseBox:home Ethernet comment out line 5
// and comment in line 4
// Do not comment in both at the same time!
#include "avr/dtostrf.h"
#define ENABLE_WIFI
#define ENABLE_ETHERNET
#include <Wire.h>
#include <SPI.h>
#ifdef ENABLE_WIFI
#include <WiFi101.h>
#include <driver/source/nmasic.h>
#endif
#ifdef ENABLE_ETHERNET
#include <Ethernet.h>
#endif
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include <Adafruit_BME280.h>
#include <Adafruit_BME680.h>
#include <Adafruit_HDC1000.h>
#include <SDS011-select-serial.h>
#include <senseBoxIO.h>
/********WiFi User Settings********/
const char *ssid = "xxx"; // your network SSID (name)
const char *pass = "xxx"; // your network password
/*
Zusätzliche Sensorbibliotheken, -Variablen etc im Folgenden einfügen.
*/
//senseBox ID
#define SENSEBOX_ID "5c9235b9922ca900194eddb3"
//Sensor IDs
// Temperatur
#define SENSOR1_ID "xxx"
// rel. Luftfeuchte
#define SENSOR2_ID "xxx"
// Luftdruck
#define SENSOR3_ID "xxx"
// Temperatur
#define SENSOR4_ID "xxx"
// Beleuchtungsstärke
#define SENSOR5_ID "5c9235b9922ca900194eddb7"
// UV-Intensität
#define SENSOR6_ID "5c9235b9922ca900194eddb6"
// PM2.5
#define SENSOR7_ID "xxx"
// PM10
#define SENSOR8_ID "xxx"
//Ethernet-Parameter
char server[] = "ingress.opensensemap.org";
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// Diese IP Adresse nutzen falls DHCP nicht möglich
IPAddress myIP(192, 168, 0, 42);
EthernetClient client;
//Messparameter
const unsigned int postingInterval = 60000; //Uploadintervall in Millisekunden
void setup () {
Serial.begin(9600);
Serial.print("Starting network...");
//Ethernet Verbindung mit DHCP ausführen..
if (Ethernet.begin(mac) == 0)
{
Serial.println("DHCP failed!");
//Falls DHCP fehltschlägt, mit manueller IP versuchen
Ethernet.begin(mac, myIP);
}
Serial.println("done!");
delay(1000);
Serial.println("Starting loop.");
}
void loop () {
/*
Hier Sensoren auslesen und nacheinerander über postFloatValue(...) hochladen. Beispiel:
float temperature = sensor.readTemperature();
postFloatValue(temperature, 1, temperatureSensorID);
*/
sleep(postingInterval);
}
void postFloatValue (float measurement, int digits, String sensorId) {
//Float zu String konvertieren
char obs[10];
char * dtostrf(
double _val,
signed char _width,
unsigned char _prec,
char * _s)
dtostrf(measurement, 5, digits, obs);
//Json erstellen
String jsonValue = "{\"value\":";
jsonValue += obs;
jsonValue += "}";
//Mit OSeM Server verbinden und POST Operation durchführen
Serial.println("-------------------------------------");
Serial.print("Connectingto OSeM Server...");
if (client.connect(server, 80)) {
Serial.println("connected!");
Serial.println("-------------------------------------");
//HTTP Header aufbauen
client.print("POST /boxes/"); client.print(SENSEBOX_ID); client.print("/"); client.print(sensorId); client.println(" HTTP/1.1");
client.print("Host:");
client.println(server);
client.println("Content-Type: application/json");
client.println("Connection: close");
client.print("Content-Length: "); client.println(jsonValue.length());
client.println();
//Daten senden
client.println(jsonValue);
} else {
Serial.println("failed!");
Serial.println("-------------------------------------");
}
//Antwort von Server im seriellen Monitor anzeigen
waitForServerResponse();
}
void waitForServerResponse () {
//Ankommende Bytes ausgeben
boolean repeat = true;
do {
if (client.available()) {
char c = client.read();
Serial.print(c);
}
//Verbindung beenden
if (!client.connected()) {
Serial.println();
Serial.println("--------------");
Serial.println("Disconnecting.");
Serial.println("--------------");
client.stop();
repeat = false;
}
} while (repeat);
}
// millis() rollover fix - http://arduino.stackexchange.com/questions/12587/how-can-i-handle-the-millis-rollover
void sleep(unsigned long ms) { // ms: duration
unsigned long start = millis(); // start: timestamp
for (;;) {
unsigned long now = millis(); // now: timestamp
unsigned long elapsed = now - start; // elapsed: duration
if (elapsed >= ms) // comparing durations: OK
return;
}
}
Bitte das nächste mal deinen gesamten Code auch als Code formatieren, sonst kann den niemand lesen.
In der Zeile über dtostrf(measurement, 5, digits, obs);
fehlt ein semikolon.
Herzlichen Dank für die schnelle Unterstützung!