mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
DHT support
This commit is contained in:
166
Sensors.ino
166
Sensors.ino
@@ -1,7 +1,6 @@
|
||||
//===============================================================================================================================
|
||||
//=========================================Модуль аналогового сенсора============================================================
|
||||
void analog() {
|
||||
static boolean flag = true;
|
||||
String pin = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
String page_name = sCmd.next();
|
||||
@@ -11,29 +10,26 @@ void analog() {
|
||||
String analog_start_out = sCmd.next();
|
||||
String analog_end_out = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
|
||||
jsonWrite(optionJson, "analog_start", analog_start);
|
||||
jsonWrite(optionJson, "analog_end", analog_end);
|
||||
jsonWrite(optionJson, "analog_start_out", analog_start_out);
|
||||
jsonWrite(optionJson, "analog_end_out", analog_end_out);
|
||||
|
||||
choose_viget_and_create(viget_name, page_name, page_number, type, "analog");
|
||||
|
||||
ts.add(ANALOG_, analog_update_int, [&](void*) {
|
||||
|
||||
static int analog_old;
|
||||
|
||||
#ifdef ESP32
|
||||
int analog_in = analogRead(pin.toInt());
|
||||
#endif
|
||||
#ifdef ESP8266
|
||||
int analog_in = analogRead(A0);
|
||||
#endif
|
||||
jsonWrite(configJson, "analog_in", analog_in);
|
||||
|
||||
int analog = map(analog_in,
|
||||
jsonReadtoInt(optionJson, "analog_start") ,
|
||||
jsonReadtoInt(optionJson, "analog_end"),
|
||||
jsonReadtoInt(optionJson, "analog_start_out"),
|
||||
jsonReadtoInt(optionJson, "analog_end_out"));
|
||||
|
||||
jsonWrite(configJson, "analog", analog);
|
||||
|
||||
// if (analog_old != analog) {
|
||||
eventGen ("analog", "");
|
||||
sendSTATUS("analog", String(analog));
|
||||
@@ -41,95 +37,30 @@ void analog() {
|
||||
Serial.println("[i] sensor analog send date " + String(analog));
|
||||
}
|
||||
// }
|
||||
|
||||
analog_old = analog;
|
||||
}, nullptr, true);
|
||||
}
|
||||
|
||||
//===============================================================================================================================
|
||||
//=========================================Модуль аналогового сенсора============================================================
|
||||
void ph() {
|
||||
|
||||
String viget_name = sCmd.next();
|
||||
String page_name = sCmd.next();
|
||||
String type = sCmd.next();
|
||||
String offset = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
|
||||
jsonWrite(optionJson, "ph_offset", offset);
|
||||
|
||||
if (type == "text") createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "ph");
|
||||
if (type == "gauge") createViget (viget_name, page_name, page_number, "vigets/viget.fillgauge.json", "ph");
|
||||
if (type == "gauge2") createViget (viget_name, page_name, page_number, "vigets/viget.gauge.json", "ph");
|
||||
if (type == "termometr") createViget (viget_name, page_name, page_number, "vigets/viget.termometr.json", "ph", "titleString", viget_name);
|
||||
|
||||
|
||||
ts.add(PH, ph_shooting_interval, [&](void*) {
|
||||
|
||||
static float pHValue_old;
|
||||
static int counter;
|
||||
|
||||
float offset = jsonRead(optionJson, "ph_offset").toFloat();
|
||||
|
||||
int analog = analogRead(A0);
|
||||
analog = medianFilter.filtered(analog);
|
||||
float voltage = analog * 3.2 / 1024;
|
||||
float pHValue = 3.5 * voltage + offset;
|
||||
String pHValue_str = String(pHValue);
|
||||
|
||||
pHValue_str = selectToMarkerPlus(pHValue_str, "." , 2);
|
||||
|
||||
counter++;
|
||||
|
||||
if (counter > ph_times_to_send) {
|
||||
counter = 0;
|
||||
|
||||
jsonWrite(configJson, "ph", pHValue_str);
|
||||
|
||||
//if (pHValue_old != pHValue) {
|
||||
|
||||
eventGen ("ph", "");
|
||||
sendSTATUS("ph", pHValue_str);
|
||||
if (client.connected()) {
|
||||
Serial.println("[i] sensor ph send date " + pHValue_str);
|
||||
Serial.println("voltage " + String(voltage));
|
||||
}
|
||||
//}
|
||||
pHValue_old = pHValue;
|
||||
}
|
||||
}, nullptr, true);
|
||||
}
|
||||
//===================================================================================================================================
|
||||
//=========================================Модуль измерения уровня в баке============================================================
|
||||
void level() {
|
||||
|
||||
static boolean flag = true;
|
||||
String viget_name = sCmd.next();
|
||||
String page_name = sCmd.next();
|
||||
String type = sCmd.next();
|
||||
String empty_level = sCmd.next();
|
||||
String full_level = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
|
||||
jsonWrite(optionJson, "empty_level", empty_level);
|
||||
jsonWrite(optionJson, "full_level", full_level);
|
||||
|
||||
pinMode(14, OUTPUT);
|
||||
pinMode(12, INPUT);
|
||||
|
||||
if (type == "text") createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "level");
|
||||
if (type == "gauge") createViget (viget_name, page_name, page_number, "vigets/viget.fillgauge.json", "level");
|
||||
if (type == "gauge2") createViget (viget_name, page_name, page_number, "vigets/viget.gauge.json", "level", "maximum", "100");
|
||||
if (type == "termometr") createViget (viget_name, page_name, page_number, "vigets/viget.termometr.json", "level", "titleString", viget_name);
|
||||
|
||||
choose_viget_and_create(viget_name, page_name, page_number, type, "level");
|
||||
ts.add(LEVEL, tank_level_shooting_interval, [&](void*) {
|
||||
|
||||
long duration_;
|
||||
int distance_cm;
|
||||
int level;
|
||||
static int level_old; //переменная static сохраняет свое значение между вызовами функции
|
||||
static int counter;
|
||||
|
||||
digitalWrite(14, LOW);
|
||||
delayMicroseconds(2);
|
||||
digitalWrite(14, HIGH);
|
||||
@@ -138,21 +69,15 @@ void level() {
|
||||
duration_ = pulseIn(12, HIGH, 30000); // 3000 µs = 50cm // 30000 µs = 5 m
|
||||
distance_cm = duration_ / 29 / 2;
|
||||
distance_cm = medianFilter.filtered(distance_cm);//отсечение промахов медианным фильтром
|
||||
|
||||
counter++;
|
||||
|
||||
if (counter > tank_level_times_to_send) {
|
||||
counter = 0;
|
||||
jsonWrite(configJson, "level_in", distance_cm);
|
||||
|
||||
level = map(distance_cm,
|
||||
jsonReadtoInt(optionJson, "empty_level"),
|
||||
jsonReadtoInt(optionJson, "full_level"), 0, 100);
|
||||
|
||||
//jsonWrite(configJson, "level", level);
|
||||
|
||||
//if (level_old != level) {
|
||||
|
||||
eventGen ("level", "");
|
||||
sendSTATUS("level", String(level));
|
||||
if (client.connected()) {
|
||||
@@ -167,33 +92,22 @@ void level() {
|
||||
//==========================================================================================================================================
|
||||
//=========================================Модуль температурного сенсора ds18b20============================================================
|
||||
void dallas() {
|
||||
|
||||
static boolean flag = true;
|
||||
String pin = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
String page_name = sCmd.next();
|
||||
String type = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
|
||||
oneWire = new OneWire((uint8_t) pin.toInt());
|
||||
sensors.setOneWire(oneWire);
|
||||
sensors.begin();
|
||||
sensors.setResolution(12);
|
||||
|
||||
if (type == "text") createViget (viget_name, page_name, page_number, "vigets/viget.alertsm.json", "dallas");
|
||||
if (type == "gauge") createViget (viget_name, page_name, page_number, "vigets/viget.fillgauge.json", "dallas");
|
||||
if (type == "gauge2") createViget (viget_name, page_name, page_number, "vigets/viget.gauge.json", "dallas");
|
||||
if (type == "termometr") createViget (viget_name, page_name, page_number, "vigets/viget.termometr.json", "dallas", "titleString", viget_name);
|
||||
|
||||
choose_viget_and_create(viget_name, page_name, page_number, type, "dallas");
|
||||
ts.add(DALLAS, temp_update_int, [&](void*) {
|
||||
|
||||
float temp = 0;
|
||||
static float temp_old;
|
||||
sensors.requestTemperatures();
|
||||
temp = sensors.getTempCByIndex(0);
|
||||
|
||||
jsonWrite(configJson, "dallas", String(temp));
|
||||
|
||||
//if (temp_old != temp) {
|
||||
eventGen ("dallas", "");
|
||||
sendSTATUS("dallas", String(temp));
|
||||
@@ -201,17 +115,71 @@ void dallas() {
|
||||
Serial.println("[i] sensor dallas send date " + String(temp));
|
||||
}
|
||||
//}
|
||||
|
||||
temp_old = temp;
|
||||
}, nullptr, true);
|
||||
}
|
||||
|
||||
|
||||
//======================================================================================================================
|
||||
//=========================================Модуль сенсоров DHT==========================================================
|
||||
void dhtT() {
|
||||
String pin = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
String page_name = sCmd.next();
|
||||
String type = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
dht.setup(pin.toInt());
|
||||
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtT");
|
||||
ts.add(DHTT, dhtT_update_int, [&](void*) {
|
||||
int value = 0;
|
||||
static int value_old;
|
||||
value = dht.getTemperature();
|
||||
jsonWrite(configJson, "dhtT", String(value));
|
||||
//if (value_old != value) {
|
||||
eventGen ("dhtT", "");
|
||||
sendSTATUS("dhtT", String(value));
|
||||
if (client.connected()) {
|
||||
Serial.println("[i] sensor dhtT send date " + String(value));
|
||||
}
|
||||
//}
|
||||
value_old = value;
|
||||
}, nullptr, true);
|
||||
}
|
||||
|
||||
|
||||
void dhtH() {
|
||||
String pin = sCmd.next();
|
||||
String viget_name = sCmd.next();
|
||||
String page_name = sCmd.next();
|
||||
String type = sCmd.next();
|
||||
String page_number = sCmd.next();
|
||||
dht.setup(pin.toInt());
|
||||
choose_viget_and_create(viget_name, page_name, page_number, type, "dhtH");
|
||||
ts.add(DHTH, dhtH_update_int, [&](void*) {
|
||||
int value = 0;
|
||||
static int value_old;
|
||||
value = dht.getHumidity();
|
||||
jsonWrite(configJson, "dhtH", String(value));
|
||||
//if (value_old != value) {
|
||||
eventGen ("dhtH", "");
|
||||
sendSTATUS("dhtH", String(value));
|
||||
if (client.connected()) {
|
||||
Serial.println("[i] sensor dhtH send date " + String(value));
|
||||
}
|
||||
//}
|
||||
value_old = value;
|
||||
}, nullptr, true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void choose_viget_and_create(String viget_name, String page_name, String page_number, String type, String topik) {
|
||||
|
||||
|
||||
if (type == "any-data") createViget (viget_name, page_name, page_number, "vigets/viget.anydata.json", topik);
|
||||
if (type == "progress-line") createViget (viget_name, page_name, page_number, "vigets/viget.progressL.json", topik);
|
||||
if (type == "progress-round") createViget (viget_name, page_name, page_number,"vigets/viget.progressR.json", topik);
|
||||
|
||||
if (type == "progress-round") createViget (viget_name, page_name, page_number, "vigets/viget.progressR.json", topik);
|
||||
|
||||
|
||||
}
|
||||
//======================================================================================================================
|
||||
//===============================================Логирование============================================================
|
||||
@@ -232,12 +200,12 @@ void logging() {
|
||||
if (sensor_name == "level") jsonWrite(optionJson, "level_logging_count", maxCount);
|
||||
if (sensor_name == "dallas") jsonWrite(optionJson, "dallas_logging_count", maxCount);
|
||||
if (sensor_name == "ph") jsonWrite(optionJson, "ph_logging_count", maxCount);
|
||||
|
||||
/*
|
||||
if (sensor_name == "analog") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loganalog", "maxCount", maxCount);
|
||||
if (sensor_name == "level") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loglevel", "maxCount", maxCount);
|
||||
if (sensor_name == "dallas") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logdallas", "maxCount", maxCount);
|
||||
if (sensor_name == "ph") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logph", "maxCount", maxCount);
|
||||
|
||||
*/
|
||||
if (sensor_name == "analog") {
|
||||
flagLoggingAnalog = true;
|
||||
ts.remove(ANALOG_LOG);
|
||||
|
||||
Reference in New Issue
Block a user