mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
Merge pull request #9 from Mit4el/ver4dev
Добавил NTC, исправил косяк с Гуглом
This commit is contained in:
@@ -116,6 +116,10 @@
|
|||||||
"path": "src/modules/sensors/DS2401",
|
"path": "src/modules/sensors/DS2401",
|
||||||
"active": false
|
"active": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "src/modules/sensors/Ds2423",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "src/modules/sensors/Emon",
|
"path": "src/modules/sensors/Emon",
|
||||||
"active": false
|
"active": false
|
||||||
@@ -164,6 +168,10 @@
|
|||||||
"path": "src/modules/sensors/Mhz19",
|
"path": "src/modules/sensors/Mhz19",
|
||||||
"active": false
|
"active": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "src/modules/sensors/Ntc",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "src/modules/sensors/Pzem004t",
|
"path": "src/modules/sensors/Pzem004t",
|
||||||
"active": true
|
"active": true
|
||||||
@@ -180,6 +188,10 @@
|
|||||||
"path": "src/modules/sensors/S8",
|
"path": "src/modules/sensors/S8",
|
||||||
"active": true
|
"active": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "src/modules/sensors/Scd40",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "src/modules/sensors/Sds011",
|
"path": "src/modules/sensors/Sds011",
|
||||||
"active": false
|
"active": false
|
||||||
|
|||||||
75
src/modules/sensors/Ntc/Ntc.cpp
Normal file
75
src/modules/sensors/Ntc/Ntc.cpp
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
/******************************************************************
|
||||||
|
Simple library for NTC thermistors
|
||||||
|
https://github.com/GyverLibs/GyverNTC
|
||||||
|
|
||||||
|
adapted for version 4 @Serghei63
|
||||||
|
******************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
#include "Global.h"
|
||||||
|
#include "classes/IoTItem.h"
|
||||||
|
|
||||||
|
|
||||||
|
class NTCt : public IoTItem {
|
||||||
|
private:
|
||||||
|
|
||||||
|
unsigned int _pin;
|
||||||
|
float R1 = 10000.0; // voltage divider resistor value
|
||||||
|
float Beta = 3950.0; // Beta value
|
||||||
|
float To = 25.; // Temperature Celsius
|
||||||
|
float Ro = 10000.0; // Resistance of Thermistor at 25 degree Celsius
|
||||||
|
float adcMax = 1023.0;
|
||||||
|
float Vs = 3.3;
|
||||||
|
public:
|
||||||
|
NTCt(String parameters): IoTItem(parameters) {
|
||||||
|
|
||||||
|
_pin = jsonReadInt(parameters, "pin");
|
||||||
|
R1 = jsonReadInt(parameters, "R1"); // voltage divider resistor value
|
||||||
|
Beta = jsonReadInt(parameters, "Beta"); // Beta value
|
||||||
|
To = jsonReadInt(parameters, "T0"); // Temperature degree Celsius
|
||||||
|
Ro = jsonReadInt(parameters, "R0"); // Resistance of Thermistor at 25 degree Celsius
|
||||||
|
Vs = jsonReadInt(parameters, "Vs"); // Resistance of Thermistor at 25 degree Celsius
|
||||||
|
To = To+273.15;
|
||||||
|
|
||||||
|
#if defined ESP8266
|
||||||
|
adcMax = 1023.0;
|
||||||
|
#elif defined ESP32
|
||||||
|
adcMax = 4095.0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void doByInterval() {
|
||||||
|
|
||||||
|
float Vout, Rt = 0;
|
||||||
|
float T = 0;
|
||||||
|
float adc = 0;
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
adc += IoTgpio.analogRead(_pin);
|
||||||
|
}
|
||||||
|
adc /= 10;
|
||||||
|
|
||||||
|
Vout = adc * Vs/adcMax;
|
||||||
|
Rt = R1 * Vout / (Vs - Vout);
|
||||||
|
T = 1/(1/To + log(Rt/Ro)/Beta); // Temperature in Kelvin
|
||||||
|
value.valD = T - 273.15; // Celsius
|
||||||
|
|
||||||
|
SerialPrint("i", F("Ntc"), "adc = " + String(adc)+ " ,Vout = " + String(Vout)+ " ,T = " + String(value.valD));
|
||||||
|
if (String(value.valD) != "nan") regEvent(value.valD, "Ntc");
|
||||||
|
else
|
||||||
|
SerialPrint("E", "Ntc", "Error");
|
||||||
|
}
|
||||||
|
|
||||||
|
~NTCt() {};
|
||||||
|
};
|
||||||
|
|
||||||
|
void* getAPI_Ntc(String subtype, String param) {
|
||||||
|
if (subtype == F("Ntc")) {
|
||||||
|
|
||||||
|
return new NTCt(param);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
65
src/modules/sensors/Ntc/modinfo.json
Normal file
65
src/modules/sensors/Ntc/modinfo.json
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
"menuSection": "Сенсоры",
|
||||||
|
"configItem": [
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "Cенсор температуры NTC",
|
||||||
|
"type": "Reading",
|
||||||
|
"subtype": "Ntc",
|
||||||
|
"id": "Ntctmp",
|
||||||
|
"widget": "anydataTmp",
|
||||||
|
"page": "Сенсоры",
|
||||||
|
"descr": "NTC Температура",
|
||||||
|
"needSave": 0,
|
||||||
|
"val": "0",
|
||||||
|
"int": 15,
|
||||||
|
"pin": "35",
|
||||||
|
"R1":"10000",
|
||||||
|
"R0":"10000",
|
||||||
|
"Beta":"3950.0",
|
||||||
|
"T0":"25",
|
||||||
|
"Vs":"3.3",
|
||||||
|
"round" : 1
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"about": {
|
||||||
|
"authorName": "Serghei Crasnicov",
|
||||||
|
"authorContact": "https://t.me/Serghei63",
|
||||||
|
"authorGit": "https://github.com/Serghei63",
|
||||||
|
"specialThanks": "https://t.me/Mit4bmw",
|
||||||
|
"moduleName": "Ntc",
|
||||||
|
"moduleVersion": "1.1",
|
||||||
|
"usedRam": {
|
||||||
|
"esp32_4mb": 15,
|
||||||
|
"esp8266_4mb": 15
|
||||||
|
},
|
||||||
|
"subTypes": [
|
||||||
|
"Ntc"
|
||||||
|
],
|
||||||
|
"title": "Модуль датчика Ntc",
|
||||||
|
"moduleDesc": "",
|
||||||
|
"retInfo": "",
|
||||||
|
"propInfo": {
|
||||||
|
"pin": "Аналоговый пин (для esp8266 = 0, для esp32 алаоговый gpio, например 35)",
|
||||||
|
"R1":"Сопротивление подтягивающего резистора, должен быть равен сопротивлению термистера",
|
||||||
|
"Vs":"Напряжение питания датчика, Для точности измерить и ввести своё, по умолчанию 3.3В",
|
||||||
|
"R0":"Сопротивление термистора при температуре То, например 10 КОм при 25С",
|
||||||
|
"T0":"Базовая температура, температура измерения сопротивление термистора (Rterm), обычно 25С",
|
||||||
|
"Beta":"Beta термистора"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defActive": true,
|
||||||
|
"usedLibs": {
|
||||||
|
"esp32_4mb": [],
|
||||||
|
"esp8266_4mb": [],
|
||||||
|
"esp8266_1mb": [],
|
||||||
|
"esp8266_1mb_ota": [],
|
||||||
|
"esp8285_1mb": [],
|
||||||
|
"esp8285_1mb_ota": [],
|
||||||
|
"esp8266_2mb": [],
|
||||||
|
"esp8266_2mb_ota": []
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"descr": "",
|
"descr": "",
|
||||||
"int": 5,
|
"int": 5,
|
||||||
"logid": "id",
|
"logid": "id",
|
||||||
"scid": "AKfycbzAsuM-4Keb-DxZ6yqwmqSeiXRJJAqndijayZQfmx9pfh6wGAejjT6u7gTAIxrbxPBxyw",
|
"scid": "Script_ID",
|
||||||
"shname": "Logger"
|
"shname": "Logger"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -40,13 +40,6 @@
|
|||||||
"defActive": false,
|
"defActive": false,
|
||||||
"usedLibs": {
|
"usedLibs": {
|
||||||
"esp32_4mb": [],
|
"esp32_4mb": [],
|
||||||
"esp32s2_4mb": [],
|
"esp32s2_4mb": []
|
||||||
"esp8266_4mb": [],
|
|
||||||
"esp8266_1mb": [],
|
|
||||||
"esp8266_1mb_ota": [],
|
|
||||||
"esp8285_1mb": [],
|
|
||||||
"esp8285_1mb_ota": [],
|
|
||||||
"esp8266_2mb": [],
|
|
||||||
"esp8266_2mb_ota": []
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user