Browse Source

add mqtt

lightsleep
Hendrik Langer 7 years ago
parent
commit
99198638ca
  1. 27
      src/main.cpp

27
src/main.cpp

@ -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");

Loading…
Cancel
Save