|
@ -14,7 +14,6 @@ extern "C" { |
|
|
|
|
|
|
|
|
#include <ESP8266HTTPClient.h> |
|
|
#include <ESP8266HTTPClient.h> |
|
|
#include <ArduinoJson.h> |
|
|
#include <ArduinoJson.h> |
|
|
#define MQTT_MAX_PACKET_SIZE 512 |
|
|
|
|
|
#include <MQTTClient.h> |
|
|
#include <MQTTClient.h> |
|
|
|
|
|
|
|
|
#include <Wire.h> |
|
|
#include <Wire.h> |
|
@ -31,9 +30,10 @@ const char* server = "ingress.opensensemap.org"; |
|
|
//const char* ssid = "Freifunk";
|
|
|
//const char* ssid = "Freifunk";
|
|
|
//const char* password = "";
|
|
|
//const char* password = "";
|
|
|
|
|
|
|
|
|
|
|
|
#define MQTT_MAX_PACKET_SIZE 512 |
|
|
const char* mqttserver = "home.xd0.de"; |
|
|
const char* mqttserver = "home.xd0.de"; |
|
|
const char* mqttusername = "esp-weatherstation"; |
|
|
const char* mqttusername = "esp-weatherstation"; |
|
|
const char* mqttpassword = "password"; |
|
|
const char* mqttpassword = "password4"; |
|
|
|
|
|
|
|
|
constexpr unsigned int postingInterval = 60000; //Uploadintervall in Millisekunden
|
|
|
constexpr unsigned int postingInterval = 60000; //Uploadintervall in Millisekunden
|
|
|
constexpr unsigned int dhcp_interval = 60*60*1000; |
|
|
constexpr unsigned int dhcp_interval = 60*60*1000; |
|
@ -147,6 +147,8 @@ void ICACHE_FLASH_ATTR sendValues() { |
|
|
sd.pressure /= 100; |
|
|
sd.pressure /= 100; |
|
|
bmp.getTemperature(&(sd.temp2)); |
|
|
bmp.getTemperature(&(sd.temp2)); |
|
|
|
|
|
|
|
|
|
|
|
sd.voltage = ESP.getVcc()/1024.0; |
|
|
|
|
|
|
|
|
int sds_error = sds.read(&(sd.p25), &(sd.p10)); |
|
|
int sds_error = sds.read(&(sd.p25), &(sd.p10)); |
|
|
if(!sds_error) { |
|
|
if(!sds_error) { |
|
|
// Serial.println("SDS011 updated.");
|
|
|
// Serial.println("SDS011 updated.");
|
|
@ -156,7 +158,6 @@ void ICACHE_FLASH_ATTR sendValues() { |
|
|
|
|
|
|
|
|
// sds.sleep();
|
|
|
// sds.sleep();
|
|
|
|
|
|
|
|
|
sd.cpm = 0; |
|
|
|
|
|
sd.radioactivity = -1; |
|
|
sd.radioactivity = -1; |
|
|
sd.cpm = geigeraverage.getAverage()*10; |
|
|
sd.cpm = geigeraverage.getAverage()*10; |
|
|
float constexpr own_cpm = OWN_BACKGROUND_CPS * 60; |
|
|
float constexpr own_cpm = OWN_BACKGROUND_CPS * 60; |
|
@ -172,43 +173,53 @@ void ICACHE_FLASH_ATTR sendValues() { |
|
|
|
|
|
|
|
|
DynamicJsonBuffer jsonBuffer; |
|
|
DynamicJsonBuffer jsonBuffer; |
|
|
JsonArray& array = jsonBuffer.createArray(); |
|
|
JsonArray& array = jsonBuffer.createArray(); |
|
|
|
|
|
DynamicJsonBuffer jsonBuffer2; |
|
|
|
|
|
JsonObject& root = jsonBuffer.createObject(); |
|
|
|
|
|
|
|
|
JsonObject& temperatureObject = array.createNestedObject(); |
|
|
JsonObject& temperatureObject = array.createNestedObject(); |
|
|
temperatureObject["sensor"] = SENSOR1_ID; |
|
|
temperatureObject["sensor"] = SENSOR1_ID; |
|
|
temperatureObject["value"] = sd.temperature; |
|
|
temperatureObject["value"] = sd.temperature; |
|
|
|
|
|
root["temperature"] = sd.temperature; |
|
|
|
|
|
|
|
|
JsonObject& humidityObject = array.createNestedObject(); |
|
|
JsonObject& humidityObject = array.createNestedObject(); |
|
|
humidityObject["sensor"] = SENSOR2_ID; |
|
|
humidityObject["sensor"] = SENSOR2_ID; |
|
|
humidityObject["value"] = sd.humidity; |
|
|
humidityObject["value"] = sd.humidity; |
|
|
|
|
|
root["humidity"] = sd.humidity; |
|
|
|
|
|
|
|
|
JsonObject& pressureObject = array.createNestedObject(); |
|
|
JsonObject& pressureObject = array.createNestedObject(); |
|
|
pressureObject["sensor"] = SENSOR3_ID; |
|
|
pressureObject["sensor"] = SENSOR3_ID; |
|
|
pressureObject["value"] = sd.pressure; |
|
|
pressureObject["value"] = sd.pressure; |
|
|
|
|
|
root["pressure"] = sd.pressure; |
|
|
|
|
|
|
|
|
if (!sds_error) { |
|
|
if (!sds_error) { |
|
|
JsonObject& pm10Object = array.createNestedObject(); |
|
|
JsonObject& pm10Object = array.createNestedObject(); |
|
|
pm10Object["sensor"] = SENSOR4_ID; |
|
|
pm10Object["sensor"] = SENSOR4_ID; |
|
|
pm10Object["value"] = sd.p10; |
|
|
pm10Object["value"] = sd.p10; |
|
|
|
|
|
root["pm10"] = sd.p10; |
|
|
|
|
|
|
|
|
JsonObject& pm25Object = array.createNestedObject(); |
|
|
JsonObject& pm25Object = array.createNestedObject(); |
|
|
pm25Object["sensor"] = SENSOR5_ID; |
|
|
pm25Object["sensor"] = SENSOR5_ID; |
|
|
pm25Object["value"] = sd.p25; |
|
|
pm25Object["value"] = sd.p25; |
|
|
|
|
|
root["pm2.5"] = sd.p25; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (sd.cpm > 0) { |
|
|
if (sd.cpm > 0) { |
|
|
JsonObject& cpmObject = array.createNestedObject(); |
|
|
JsonObject& cpmObject = array.createNestedObject(); |
|
|
cpmObject["sensor"] = SENSOR6_ID; |
|
|
cpmObject["sensor"] = SENSOR6_ID; |
|
|
cpmObject["value"] = sd.radioactivity; |
|
|
cpmObject["value"] = sd.radioactivity; |
|
|
|
|
|
root["cpm"] = sd.cpm; |
|
|
|
|
|
root["radioactivity"] = sd.radioactivity; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
JsonObject& voltageObject = array.createNestedObject(); |
|
|
JsonObject& voltageObject = array.createNestedObject(); |
|
|
voltageObject["sensor"] = SENSOR7_ID; |
|
|
voltageObject["sensor"] = SENSOR7_ID; |
|
|
voltageObject["value"] = ESP.getVcc()/1024.0; |
|
|
voltageObject["value"] = sd.voltage; |
|
|
|
|
|
root["voltage"] = sd.voltage; |
|
|
|
|
|
|
|
|
JsonObject& rssiObject = array.createNestedObject(); |
|
|
JsonObject& rssiObject = array.createNestedObject(); |
|
|
rssiObject["sensor"] = SENSOR8_ID; |
|
|
rssiObject["sensor"] = SENSOR8_ID; |
|
|
rssiObject["value"] = sd.rssi; |
|
|
rssiObject["value"] = sd.rssi; |
|
|
|
|
|
root["rssi"] = sd.rssi; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
char buffer[500]; |
|
|
char buffer[500]; |
|
@ -305,7 +316,7 @@ void ICACHE_FLASH_ATTR sendValues() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
WiFiClientSecure net; |
|
|
WiFiClientSecure net; |
|
|
MQTTClient mqttclient; |
|
|
MQTTClient mqttclient(MQTT_MAX_PACKET_SIZE); |
|
|
|
|
|
|
|
|
mqttclient.begin(mqttserver, 8883, net); |
|
|
mqttclient.begin(mqttserver, 8883, net); |
|
|
int tries = 0; |
|
|
int tries = 0; |
|
@ -323,8 +334,8 @@ void ICACHE_FLASH_ATTR sendValues() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
mqttclient.loop(); |
|
|
mqttclient.loop(); |
|
|
Serial.println(buffer); |
|
|
root.printTo(buffer, sizeof(buffer)); |
|
|
if (mqttclient.publish("sensor/esp-weatherstation/json", buffer, sizeof(buffer))) { |
|
|
if (mqttclient.publish("sensor/esp-weatherstation/01/json", buffer, strlen(buffer))) { |
|
|
Serial.println("mqtt done"); |
|
|
Serial.println("mqtt done"); |
|
|
} else { |
|
|
} else { |
|
|
Serial.println("mqtt failed"); |
|
|
Serial.println("mqtt failed"); |
|
|