Hi Leute,
ich komme aus der Web-Development-Ecke und bin gerade dabei mich ein bisschen in die Raspi/Arduino-Welt einzuarbeiten mit verschiedenen kleinen Projekten.
Vor einiger Zeit habe ich mir einen Wettersensor gebastelt mit einem BME280. Dazu habe ich 2-3 Tutorials aus dem Web genommen und zusammen gebastelt, damit das Ding per HTTP POST die Daten an einen Kafka-Server schickt und das hat auch funktioniert.
Jetzt wollte ich allerdings ein bisschen mehr machen damit und somit die Daten nicht mehr an Kafka, sondern an eine API schicken.
Ich habe dazu den Code ein wenig umgebaut und es hat soweit auch alles funktioniert, bis auf einmal der httpClient nur noch "-1" returned hat. Und jetzt bringe ich gar nichts mehr zum Laufen, nicht einmal mehr die alte Version, die an Kafka schickt (nochmal aus git ausgecheckt). Ich finde leider auch keine Doku dazu was der -1 genau für ein return code ist.
Hier wäre mein (gekürzter) Code mit Debug output:
Und der Serial Output schaut dann so aus:
Dann Fängt er wieder bei L0 an. Also gibt
Hat jemand eine Idee wie ich das Werk wieder zum Laufen bekomme? Ich vermute, dass evtl etwas mit den Libraries nicht mehr stimmt, da ja auch die alte Version nicht mehr geht, aber da kenne ich mich leider noch viel zu wenig aus.
Vielen Dank im Voraus und lg!
ich komme aus der Web-Development-Ecke und bin gerade dabei mich ein bisschen in die Raspi/Arduino-Welt einzuarbeiten mit verschiedenen kleinen Projekten.
Vor einiger Zeit habe ich mir einen Wettersensor gebastelt mit einem BME280. Dazu habe ich 2-3 Tutorials aus dem Web genommen und zusammen gebastelt, damit das Ding per HTTP POST die Daten an einen Kafka-Server schickt und das hat auch funktioniert.
Jetzt wollte ich allerdings ein bisschen mehr machen damit und somit die Daten nicht mehr an Kafka, sondern an eine API schicken.
Ich habe dazu den Code ein wenig umgebaut und es hat soweit auch alles funktioniert, bis auf einmal der httpClient nur noch "-1" returned hat. Und jetzt bringe ich gar nichts mehr zum Laufen, nicht einmal mehr die alte Version, die an Kafka schickt (nochmal aus git ausgecheckt). Ich finde leider auch keine Doku dazu was der -1 genau für ein return code ist.
Hier wäre mein (gekürzter) Code mit Debug output:
C++:
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
#define NTP_OFFSET 0 // In seconds
#define NTP_INTERVAL 5 * 1000 // In miliseconds
#define NTP_ADDRESS "at.pool.ntp.org"
#define SEALEVELPRESSURE_HPA (1013.25)
#define ALTITUDE 728 //Altitude of your location (m above sea level)
const int sensorId = 1;
const String sensorLocation = "Carport";
const float cToKOffset = 273.15;
float absoluteHumidity(float temperature, float humidity);
float dewPoint(float temperature, float humidity);
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, NTP_ADDRESS, NTP_OFFSET, NTP_INTERVAL);
// WiFi Configuration
WiFiClientSecure espClient;
const char* cfg_wifi_ssid = "<WifiName>";
const char* cfg_wifi_password = "<WifiPass>";
//Web/Server address to read/write from
//const char* http_target = "<APIUrl>";
const char* http_target = "<LocalAPIUrl>";
Adafruit_BME280 bme; // I2C
unsigned long interval = 60000; // every minute
void setup() {
delay(1000);
Serial.begin(115200);
WiFi.mode(WIFI_OFF); //Prevents reconnection issue (taking too long to connect)
delay(1000);
WiFi.mode(WIFI_STA); //This line hides the viewing of ESP as wifi hotspot
WiFi.begin(cfg_wifi_ssid, cfg_wifi_password); //Connect to your WiFi router
Serial.println("");
Serial.println("1");
Serial.print("Connecting");
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("2");
//If connection successful show IP address in serial monitor
Serial.println("");
Serial.print("Connected to ");
Serial.println(cfg_wifi_ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP()); //IP address assigned to your ESP
Serial.println("3");
timeClient.begin();
// default settings
// (you can also pass in a Wire library object like &Wire2)
bool status;
status = bme.begin(0x76);
if (!status) {
Serial.println(F("Could not find a valid BME280 sensor, check wiring!"));
while (1);
}
Serial.println("4");
}
void loop() {
Serial.println("L0");
timeClient.update();
Serial.println("L1");
unsigned long timestamp = timeClient.getEpochTime();
HTTPClient http; //Declare object of class HTTPClient
Serial.println("L2");
String postData;
float temperature = bme.readTemperature();
float relHumidity = bme.readHumidity();
float pressure = bme.readPressure() / 100.0F;
float dewpoint = dewPoint(temperature, relHumidity);
float absHumidity = absoluteHumidity(temperature, relHumidity);
Serial.println("L3");
//Post Data
postData = "{";
postData += jsonTupel("timestamp", String(timestamp)) + ",";
postData += jsonTupel("sensor_id", String(sensorId)) + ",";
postData += jsonTupel("sensor_location", sensorLocation) + ",";
postData += jsonTupel("temperature", String(temperature)) + ",";
postData += jsonTupel("relative_humidity", String(relHumidity)) + ",";
postData += jsonTupel("pressure", String(pressure)) + ",";
postData += jsonTupel("dewpoint", String(dewpoint)) + ",";
postData += jsonTupel("absolute_humidity", String(absHumidity));
postData += "}";
Serial.println("L4");
http.begin(http_target); //Specify request destination
http.addHeader("Content-Type", "application/json"); //Specify content-type header
http.addHeader("Accept", "application/json"); //Specify content-type header
Serial.println("L5");
int httpCode = http.POST(postData); //Send the request
Serial.println("L6");
String payload = http.getString(); //Get the response payload
Serial.println("L7");
Serial.println(httpCode); //Print HTTP return code
Serial.println("L7,5");
Serial.println(payload); //Print request response payload
Serial.println("L8");
http.end(); //Close connection
Serial.println("L9");
delay(interval);
Serial.println("L10");
}
Und der Serial Output schaut dann so aus:
Code:
1
Connecting...........2
Connected to Simon
IP address: 192.168.1.155
3
4
L0
L1
L2
L3
L4
L5
L6
L7
-1
L7,5
L8
L9
L10
Dann Fängt er wieder bei L0 an. Also gibt
http.POST(postData)
"-1" zurück und http.getString()
ist leer.Hat jemand eine Idee wie ich das Werk wieder zum Laufen bekomme? Ich vermute, dass evtl etwas mit den Libraries nicht mehr stimmt, da ja auch die alte Version nicht mehr geht, aber da kenne ich mich leider noch viel zu wenig aus.
Vielen Dank im Voraus und lg!