add bmp sensor

This commit is contained in:
Dmitry Borisenko
2020-09-17 23:45:10 +03:00
parent 16b2498d6a
commit 0598a20beb
12 changed files with 106 additions and 4 deletions

View File

@@ -1 +1 @@
bme280-hum;id;anydata;Сенсоры;Влажность;order;c[1]
bme280-hum;id;anydataHum;Сенсоры;Влажность;order;addr[0x76];c[1]

View File

@@ -1 +1 @@
bme280-press;id;anydata;Сенсоры;Давление;order;c[1]
bme280-press;id;anydataPress;Сенсоры;Давление;order;addr[0x76];c[1]

View File

@@ -1 +1 @@
bme280-temp;id;anydata;Сенсоры;Температура;order;c[1]
bme280-temp;id;anydataTemp;Сенсоры;Температура;order;addr[0x76];c[1]

View File

@@ -0,0 +1 @@
bmp280-press;id;anydataPress;Сенсоры;Давление;order;addr[0x76];c[1]

View File

@@ -0,0 +1 @@
bmp280-temp;id;anydataTemp;Сенсоры;Температура;order;addr[0x76];c[1]

View File

@@ -71,7 +71,9 @@
"/set?addItem=dht22-hum": "14.Датчик влажности (DHT22, DHT33, DHT44, AM2302, RHT03)",
"/set?addItem=bme280-temp": "15.Датчик температуры bme280",
"/set?addItem=bme280-hum": "16.Датчик влажности bme280",
"/set?addItem=bme280-press": "17.Датчик давления bme280"
"/set?addItem=bme280-press": "17.Датчик давления bme280",
"/set?addItem=bmp280-temp": "18.Датчик температуры bmp280",
"/set?addItem=bmp280-press": "19.Датчик давления bmp280"
}
},
{

View File

@@ -0,0 +1,5 @@
{
"widget": "anydata",
"after": "mm",
"icon": "speedometer"
}

View File

@@ -38,3 +38,8 @@ extern void bme280Hum();
extern void bme280ReadingHum();
extern void bme280Press();
extern void bme280ReadingPress();
extern void bmp280Temp();
extern void bmp280ReadingTemp();
extern void bmp280Press();
extern void bmp280ReadingPress();

View File

@@ -18,6 +18,7 @@ class SensorBme280Class : public SensorConvertingClass {
bme.begin(hexStringToUint8(_addr));
jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c);
sensorReadingMap += _key + ",";
}
void SensorBme280ReadTmp(String key) {
@@ -43,6 +44,7 @@ class SensorBme280Class : public SensorConvertingClass {
void SensorBme280ReadPress(String key) {
float value;
value = bme.readPressure();
value = value / 1.333224;
float valueFl = this->correction(key, value);
eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl));

View File

@@ -0,0 +1,48 @@
#pragma once
#include <Arduino.h>
#include "Class/LineParsing.h"
#include "Global.h"
#include "items/SensorConvertingClass.h"
Adafruit_BMP280 bmp;
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
class SensorBmp280Class : public SensorConvertingClass {
public:
SensorBmp280Class() : SensorConvertingClass(){};
void SensorBmp280Init() {
bmp.begin(hexStringToUint8(_addr));
jsonWriteStr(configOptionJson, _key + "_map", _map);
jsonWriteStr(configOptionJson, _key + "_с", _c);
sensorReadingMap += _key + ",";
}
void SensorBmp280ReadTmp(String key) {
float value;
sensors_event_t temp_event;
bmp_temp->getEvent(&temp_event);
value = temp_event.temperature;
float valueFl = this->correction(key, value);
eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl));
MqttClient::publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl));
}
void SensorBmp280ReadPress(String key) {
float value;
sensors_event_t pressure_event;
bmp_pressure->getEvent(&pressure_event);
value = pressure_event.pressure;
value = value / 1.333224;
float valueFl = this->correction(key, value);
eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl));
MqttClient::publishStatus(key, String(valueFl));
Serial.println("I sensor '" + key + "' data: " + String(valueFl));
}
};
extern SensorBmp280Class mySensorBmp280;

View File

@@ -40,6 +40,9 @@ void cmd_init() {
sCmd.addCommand("bme280-hum", bme280Hum);
sCmd.addCommand("bme280-press", bme280Press);
sCmd.addCommand("bmp280-temp", bmp280Temp);
sCmd.addCommand("bmp280-press", bmp280Press);
handle_time_init();
}

View File

@@ -0,0 +1,35 @@
#include "items/SensorBmp280Class.h"
#include "ItemsCmd.h"
//#ifdef SensorBmp280Enabled
//=========================================Модуль ультрозвукового дальномера==================================================================
//bmp280-temp;id;anydata;Сенсоры;Температура;order;c[1]
//bmp280-hum;id;anydata;Сенсоры;Температура;order;c[1]
//bmp280-press;id;anydata;Сенсоры;Температура;order;c[1]
//=========================================================================================================================================
SensorBmp280Class mySensorBmp280;
void bmp280Temp() {
mySensorBmp280.update();
String key = mySensorBmp280.gkey();
sCmd.addCommand(key.c_str(), bmp280ReadingTemp);
mySensorBmp280.SensorBmp280Init();
mySensorBmp280.clear();
}
void bmp280ReadingTemp() {
String key = sCmd.order();
mySensorBmp280.SensorBmp280ReadTmp(key);
}
void bmp280Press() {
mySensorBmp280.update();
String key = mySensorBmp280.gkey();
sCmd.addCommand(key.c_str(), bmp280ReadingPress);
mySensorBmp280.SensorBmp280Init();
mySensorBmp280.clear();
}
void bmp280ReadingPress() {
String key = sCmd.order();
mySensorBmp280.SensorBmp280ReadPress(key);
}
//#endif