mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 03:49:13 +03:00
upddate BL0937
This commit is contained in:
@@ -15,7 +15,7 @@
|
|||||||
"port": 1883,
|
"port": 1883,
|
||||||
"user": "root",
|
"user": "root",
|
||||||
"pass": "4321",
|
"pass": "4321",
|
||||||
"brige":1,
|
"brige": 1,
|
||||||
"server":"http://iotmanager.org",
|
"server":"http://iotmanager.org",
|
||||||
"srvUser": "rise",
|
"srvUser": "rise",
|
||||||
"srvPass": "3hostel3",
|
"srvPass": "3hostel3",
|
||||||
|
|||||||
@@ -157,9 +157,12 @@ private:
|
|||||||
int BL0937_CF_GPIO = 4; // 8266 12 //Нужна возможность задавать пин из веб, это по умолчанию
|
int BL0937_CF_GPIO = 4; // 8266 12 //Нужна возможность задавать пин из веб, это по умолчанию
|
||||||
int BL0937_CF1_GPIO = 5; // 8266 13 //Нужна возможность задавать пин из веб, это по умолчанию
|
int BL0937_CF1_GPIO = 5; // 8266 13 //Нужна возможность задавать пин из веб, это по умолчанию
|
||||||
int BL0937_SEL_GPIO_INV = 12; // 8266 15 // inverted //Нужна возможность задавать пин из веб, это по умолчанию
|
int BL0937_SEL_GPIO_INV = 12; // 8266 15 // inverted //Нужна возможность задавать пин из веб, это по умолчанию
|
||||||
float _expV = 0;
|
float _kfV = 0;
|
||||||
float _expA = 0;
|
float _kfA = 0;
|
||||||
float _expW = 0;
|
float _kfW = 0;
|
||||||
|
float expV = 0;
|
||||||
|
float expA = 0;
|
||||||
|
float expW = 0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BL0937cmd(String parameters) : IoTItem(parameters)
|
BL0937cmd(String parameters) : IoTItem(parameters)
|
||||||
@@ -170,24 +173,64 @@ public:
|
|||||||
jsonRead(parameters, "CF_GPIO", BL0937_CF_GPIO);
|
jsonRead(parameters, "CF_GPIO", BL0937_CF_GPIO);
|
||||||
jsonRead(parameters, "CF1_GPIO", BL0937_CF1_GPIO);
|
jsonRead(parameters, "CF1_GPIO", BL0937_CF1_GPIO);
|
||||||
jsonRead(parameters, "SEL_GPIO", BL0937_SEL_GPIO_INV);
|
jsonRead(parameters, "SEL_GPIO", BL0937_SEL_GPIO_INV);
|
||||||
jsonRead(parameters, "expV", _expV);
|
jsonRead(parameters, "kfV", _kfV);
|
||||||
jsonRead(parameters, "expA", _expA);
|
jsonRead(parameters, "kfA", _kfA);
|
||||||
jsonRead(parameters, "expW", _expW);
|
jsonRead(parameters, "kfW", _kfW);
|
||||||
bl0937 = new BL0937;
|
bl0937 = new BL0937;
|
||||||
bl0937->begin(BL0937_CF_GPIO, BL0937_CF1_GPIO, BL0937_SEL_GPIO_INV, LOW, true);
|
bl0937->begin(BL0937_CF_GPIO, BL0937_CF1_GPIO, BL0937_SEL_GPIO_INV, LOW, true);
|
||||||
bl0937->setResistors(CURRENT_RESISTOR, VOLTAGE_RESISTOR_UPSTREAM, VOLTAGE_RESISTOR_DOWNSTREAM);
|
bl0937->setResistors(CURRENT_RESISTOR, VOLTAGE_RESISTOR_UPSTREAM, VOLTAGE_RESISTOR_DOWNSTREAM);
|
||||||
attachInterrupt(BL0937_CF1_GPIO, bl0937_cf1_interrupt, FALLING);
|
attachInterrupt(BL0937_CF1_GPIO, bl0937_cf1_interrupt, FALLING);
|
||||||
attachInterrupt(BL0937_CF_GPIO, bl0937_cf_interrupt, FALLING);
|
attachInterrupt(BL0937_CF_GPIO, bl0937_cf_interrupt, FALLING);
|
||||||
if (_expV)
|
if (_kfV)
|
||||||
bl0937->expectedVoltage(_expV); // для калибровки вольтаж нужно вводить из веб интерфейса
|
bl0937->setVoltageMultiplier(_kfV);
|
||||||
if (_expV)
|
if (_kfA)
|
||||||
bl0937->expectedCurrent(_expA); // для калибровки можно так, а лучше ток вводить из веб интерфейса
|
bl0937->setCurrentMultiplier(_kfA);
|
||||||
if (_expV)
|
if (_kfW)
|
||||||
bl0937->expectedActivePower(_expW); // для калибровки потребляемую мощность нужно вводить из веб интерфейса
|
bl0937->setPowerMultiplier(_kfW);
|
||||||
}
|
}
|
||||||
|
|
||||||
void doByInterval()
|
void doByInterval()
|
||||||
{
|
{
|
||||||
|
static bool startCalbr = false;
|
||||||
|
if (expV && expA && expW)
|
||||||
|
{
|
||||||
|
startCalbr = true;
|
||||||
|
SerialPrint("i", "BL0937", "Start calibration ...");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (startCalbr)
|
||||||
|
{
|
||||||
|
if (expV && bl0937->getVoltage())
|
||||||
|
{
|
||||||
|
bl0937->expectedVoltage(expV); // для калибровки вольтаж нужно вводить из веб интерфейса
|
||||||
|
_kfV = bl0937->getVoltageMultiplier();
|
||||||
|
expV = 0;
|
||||||
|
}
|
||||||
|
if (expA && bl0937->getCurrent())
|
||||||
|
{
|
||||||
|
bl0937->expectedCurrent(expA); // для калибровки можно так, а лучше ток вводить из веб интерфейса
|
||||||
|
_kfA = bl0937->getCurrentMultiplier();
|
||||||
|
expA = 0;
|
||||||
|
}
|
||||||
|
if (expW && bl0937->getActivePower())
|
||||||
|
{
|
||||||
|
bl0937->expectedActivePower(expW); // для калибровки потребляемую мощность нужно вводить из веб интерфейса
|
||||||
|
_kfW = bl0937->getPowerMultiplier();
|
||||||
|
expW = 0;
|
||||||
|
}
|
||||||
|
if (!expV && !expA && !expW)
|
||||||
|
{
|
||||||
|
String str = "Calibration done: kfV=";
|
||||||
|
str += _kfV;
|
||||||
|
str += ", kfA=";
|
||||||
|
str += _kfA;
|
||||||
|
str += ", kfW=";
|
||||||
|
str += _kfW;
|
||||||
|
SerialPrint("i", "BL0937", str);
|
||||||
|
SerialPrint("i", "BL0937", "Enter multiplier to configuration!");
|
||||||
|
startCalbr = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void onModuleOrder(String &key, String &value)
|
void onModuleOrder(String &key, String &value)
|
||||||
@@ -201,27 +244,24 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
IoTValue execute(String command, std::vector<IoTValue> ¶m)
|
IoTValue execute(String command, std::vector<IoTValue> ¶m)
|
||||||
{
|
{
|
||||||
if (!bl0937)
|
if (!bl0937)
|
||||||
return {};
|
|
||||||
if (command == "calibration")
|
|
||||||
{
|
|
||||||
if (param.size() == 3)
|
|
||||||
{
|
|
||||||
float v = param[0].valD;
|
|
||||||
float a = param[1].valD;
|
|
||||||
float p = param[2].valD;
|
|
||||||
bl0937->expectedVoltage(v); // для калибровки вольтаж нужно вводить из веб интерфейса
|
|
||||||
bl0937->expectedCurrent(a); // для калибровки можно так, а лучше ток вводить из веб интерфейса
|
|
||||||
bl0937->expectedActivePower(p); // для калибровки потребляемую мощность нужно вводить из веб интерфейса
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return {};
|
return {};
|
||||||
|
if (command == "calibration")
|
||||||
|
{
|
||||||
|
if (param.size() == 3)
|
||||||
|
{
|
||||||
|
expV = param[0].valD;
|
||||||
|
expA = param[1].valD;
|
||||||
|
expW = param[2].valD;
|
||||||
|
return {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*/
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
~BL0937cmd()
|
~BL0937cmd()
|
||||||
{
|
{
|
||||||
if (bl0937)
|
if (bl0937)
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ double BL0937::getCurrent() {
|
|||||||
// so we first check if power is 0 to set _current to 0 too
|
// so we first check if power is 0 to set _current to 0 too
|
||||||
if (_power == 0) {
|
if (_power == 0) {
|
||||||
_current_pulse_width = 0;
|
_current_pulse_width = 0;
|
||||||
|
getActivePower();
|
||||||
|
|
||||||
} else if (_use_interrupts) {
|
} else if (_use_interrupts) {
|
||||||
_checkCF1Signal();
|
_checkCF1Signal();
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
"name": "BL0937 Реакт.Мощность",
|
"name": "BL0937 Реакт.Мощность",
|
||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "BL0937reactw",
|
"subtype": "BL0937reactw",
|
||||||
"id": "bl_w",
|
"id": "bl_reactw",
|
||||||
"widget": "anydataWt",
|
"widget": "anydataWt",
|
||||||
"page": "BL0937",
|
"page": "BL0937",
|
||||||
"descr": "Реакт.Мощность",
|
"descr": "Реакт.Мощность",
|
||||||
@@ -83,6 +83,7 @@
|
|||||||
"page": "",
|
"page": "",
|
||||||
"descr": "",
|
"descr": "",
|
||||||
"btn-reset": "",
|
"btn-reset": "",
|
||||||
|
"int": "5",
|
||||||
"R_current": 0.001,
|
"R_current": 0.001,
|
||||||
"R_upstream": 1000000,
|
"R_upstream": 1000000,
|
||||||
"R_downstream": 1000,
|
"R_downstream": 1000,
|
||||||
@@ -108,7 +109,7 @@
|
|||||||
"title": "Счетчик электроэнергии BL0937",
|
"title": "Счетчик электроэнергии BL0937",
|
||||||
"moduleDesc": "Считает потраченную электроэнергию, измеряет напряжение, силу тока и прочие параметры.",
|
"moduleDesc": "Считает потраченную электроэнергию, измеряет напряжение, силу тока и прочие параметры.",
|
||||||
"propInfo": {
|
"propInfo": {
|
||||||
"int": "Количество секунд между опросами датчика.",
|
"int": "Количество секунд между опросами датчика. В bl_set интервал между попытками калибровки (т.к. нужны сначала данные от датчика)",
|
||||||
"btn-reset": "Энергия BL0937 будет сброшена к нулю.",
|
"btn-reset": "Энергия BL0937 будет сброшена к нулю.",
|
||||||
"R_current": "Резистор подключенный последовательно к основной линии",
|
"R_current": "Резистор подключенный последовательно к основной линии",
|
||||||
"R_upstream": "это 5 резисторов по 470 Ком в делителе напряжения, который питает вывод V2P",
|
"R_upstream": "это 5 резисторов по 470 Ком в делителе напряжения, который питает вывод V2P",
|
||||||
@@ -116,10 +117,17 @@
|
|||||||
"CF_GPIO": "пин CF",
|
"CF_GPIO": "пин CF",
|
||||||
"CF1_GPIO": "пин CF1",
|
"CF1_GPIO": "пин CF1",
|
||||||
"SEL_GPIO": "пин SEL",
|
"SEL_GPIO": "пин SEL",
|
||||||
"expV": "реальное напряжение, указать для калибровки",
|
"kfV": "Коэффициент корректировки напряжение, указать после калибровки",
|
||||||
"expA": "реальный ток, указать для калибровки",
|
"kfA": "Коэффициент корректировки тока, указать после калибровки",
|
||||||
"expW": "реальная мощность, указать для калибровки"
|
"kfW": "Коэффициент корректировки мощности, указать после калибровки"
|
||||||
}
|
},
|
||||||
|
"funcInfo": [
|
||||||
|
{
|
||||||
|
"name": "calibration",
|
||||||
|
"descr": "Расчет коэффициентов калибровки. Вызывать от имени BL0937 настройка. bl_set.calibration(220, 16, 3.5). Полученный коэффициенты искать в логе и ввести в конфигурацию kfV, kfA и kfW",
|
||||||
|
"params": ["Напряжение, Ток, Мощность"]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"defActive": true,
|
"defActive": true,
|
||||||
"usedLibs": {
|
"usedLibs": {
|
||||||
|
|||||||
Reference in New Issue
Block a user