Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <ArduinoJson.h>
- #include "bme280.h"
- #include "config.h"
- const char *luftdatenAPIHOST = "api.luftdaten.info";
- const char *luftdatenAPIURL = "/v1/push-sensor-data/";
- const uint16_t luftdatenAPIPort = 80;
- void sendLuftdatenJson(JsonObject& json) {
- WiFiClient client;
- Serial.print("\nconnecting to ");
- Serial.println(luftdatenAPIHOST);
- if (!client.connect(luftdatenAPIHOST, luftdatenAPIPort)) {
- Serial.println("connection failed");
- Serial.println("wait 3 sec...\n");
- delay(3000);
- return;
- }
- delay(100);
- client.println("POST "+ String(luftdatenAPIURL) + " HTTP/1.1");
- client.println("Host: "+ String(luftdatenAPIHOST));
- client.println("Content-Type: application/json");
- if (!strcmp(DUST_MODEL, "PMS7003")) {
- client.println("X-PIN: 1");
- }
- if (!strcmp(THP_MODEL, "BME280")) {
- client.println("X-PIN: 11");
- }
- client.println("X-Sensor: esp8266-" + String(ESP.getChipId()));
- client.print("Content-Length: ");
- client.println(measureJson(json));
- client.println();
- client.println("Connection: close");
- client.println();
- serializeJson(json, client);
- String line = client.readStringUntil('\r');
- // TODO: Support wrong error (!= 200)
- if (DEBUG) {
- Serial.print("Length:");
- Serial.println(measureJson(json));
- serializeJsonPretty(json, Serial);
- Serial.println("\n");
- Serial.println(line);
- }
- client.stop();
- }
- void sendPMSDatatoLuftdaten(int averagePM1, int averagePM25, int averagePM10) {
- if (strcmp(DUST_MODEL, "Non")) {
- StaticJsonDocument<600> jsonBuffer;
- JsonObject json = jsonBuffer.to<JsonObject>();
- if (!strcmp(DUST_MODEL, "PMS7003")) {
- json["software_version"] = "Smogomierz_" + String(SOFTWAREVERSION);
- JsonArray sensordatavalues = json.createNestedArray("sensordatavalues");
- JsonObject P1 = sensordatavalues.createNestedObject();
- P1["value_type"] = "P1";
- P1["value"] = averagePM10;
- JsonObject P2 = sensordatavalues.createNestedObject();
- P2["value_type"] = "P2";
- P2["value"] = averagePM25;
- }
- sendLuftdatenJson(json);
- }
- }
- void sendBMEDatatoLuftdaten(BME280<BME280_C, BME280_ADDRESS> &bme) {
- if (strcmp(THP_MODEL, "Non")) {
- StaticJsonDocument<600> jsonBuffer;
- JsonObject json = jsonBuffer.to<JsonObject>();
- if (!strcmp(THP_MODEL, "BME280")) {
- json["software_version"] = "Smogomierz_" + String(SOFTWAREVERSION);
- JsonArray sensordatavalues = json.createNestedArray("sensordatavalues");
- JsonObject temperature = sensordatavalues.createNestedObject();
- temperature["value_type"] = "temperature";
- temperature["value"] = float(bme.temperature);
- JsonObject humidity = sensordatavalues.createNestedObject();
- humidity["value_type"] = "humidity";
- humidity["value"] = float(bme.humidity);
- JsonObject pressure = sensordatavalues.createNestedObject();
- pressure["value_type"] = "pressure";
- pressure["value"] = float(bme.seaLevelForAltitude(MYALTITUDE));
- }
- sendLuftdatenJson(json);
- }
- }
- void sendDataToLuftdaten(BME280<BME280_C, BME280_ADDRESS> &bme, int averagePM1, int averagePM25, int averagePM10) {
- if (!(LUFTDATEN_ON)) {
- return;
- }
- sendPMSDatatoLuftdaten(averagePM1, averagePM25, averagePM10);
- sendBMEDatatoLuftdaten(bme);
- }
Add Comment
Please, Sign In to add comment