mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Merge pull request #237 from biveraxe/ver4dev
Добавляем модуль Multitouch и Ina219
This commit is contained in:
@@ -78,6 +78,10 @@
|
|||||||
"descr": "Введите число",
|
"descr": "Введите число",
|
||||||
"int": "0",
|
"int": "0",
|
||||||
"val": "0.0",
|
"val": "0.0",
|
||||||
|
"map": "1024,1024,1,100",
|
||||||
|
"plus": 0,
|
||||||
|
"multiply": 1,
|
||||||
|
"round": 0,
|
||||||
"num": 5
|
"num": 5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -545,7 +549,6 @@
|
|||||||
"int": 5
|
"int": 5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"global": 0,
|
|
||||||
"name": "39. UART",
|
"name": "39. UART",
|
||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "UART",
|
"subtype": "UART",
|
||||||
@@ -555,7 +558,9 @@
|
|||||||
"id": "u",
|
"id": "u",
|
||||||
"tx": 12,
|
"tx": 12,
|
||||||
"rx": 13,
|
"rx": 13,
|
||||||
|
"line": 2,
|
||||||
"speed": 9600,
|
"speed": 9600,
|
||||||
|
"eventFormat": 0,
|
||||||
"num": 39
|
"num": 39
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -639,7 +644,25 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"global": 0,
|
"global": 0,
|
||||||
"name": "45. Расширитель портов Pcf8574",
|
"name": "45. Сенсорная кнопка",
|
||||||
|
"type": "Writing",
|
||||||
|
"subtype": "Multitouch",
|
||||||
|
"id": "impulse",
|
||||||
|
"widget": "anydataDef",
|
||||||
|
"page": "Кнопки",
|
||||||
|
"descr": "Количество нажаний",
|
||||||
|
"needSave": 0,
|
||||||
|
"int": 300,
|
||||||
|
"inv": 1,
|
||||||
|
"pin": 16,
|
||||||
|
"pinMode": "INPUT",
|
||||||
|
"debounceDelay": 50,
|
||||||
|
"PWMDelay": 500,
|
||||||
|
"num": 45
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "46. Расширитель портов Pcf8574",
|
||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "Pcf8574",
|
"subtype": "Pcf8574",
|
||||||
"id": "Pcf",
|
"id": "Pcf",
|
||||||
@@ -649,11 +672,11 @@
|
|||||||
"int": "0",
|
"int": "0",
|
||||||
"addr": "0x20",
|
"addr": "0x20",
|
||||||
"index": 1,
|
"index": 1,
|
||||||
"num": 45
|
"num": 46
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"global": 0,
|
"global": 0,
|
||||||
"name": "46. PWM ESP8266",
|
"name": "47. PWM ESP8266",
|
||||||
"type": "Writing",
|
"type": "Writing",
|
||||||
"subtype": "Pwm8266",
|
"subtype": "Pwm8266",
|
||||||
"id": "pwm",
|
"id": "pwm",
|
||||||
@@ -665,11 +688,11 @@
|
|||||||
"freq": 5000,
|
"freq": 5000,
|
||||||
"val": 0,
|
"val": 0,
|
||||||
"apin": -1,
|
"apin": -1,
|
||||||
"num": 46
|
"num": 47
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"global": 0,
|
"global": 0,
|
||||||
"name": "47. Телеграм-Лайт",
|
"name": "48. Телеграм-Лайт",
|
||||||
"type": "Writing",
|
"type": "Writing",
|
||||||
"subtype": "TelegramLT",
|
"subtype": "TelegramLT",
|
||||||
"id": "tg",
|
"id": "tg",
|
||||||
@@ -678,14 +701,14 @@
|
|||||||
"descr": "",
|
"descr": "",
|
||||||
"token": "",
|
"token": "",
|
||||||
"chatID": "",
|
"chatID": "",
|
||||||
"num": 47
|
"num": 48
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"header": "Экраны"
|
"header": "Экраны"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"global": 0,
|
"global": 0,
|
||||||
"name": "48. LCD экран 2004",
|
"name": "49. LCD экран 2004",
|
||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "Lcd2004",
|
"subtype": "Lcd2004",
|
||||||
"id": "Lcd",
|
"id": "Lcd",
|
||||||
@@ -697,10 +720,10 @@
|
|||||||
"size": "20,4",
|
"size": "20,4",
|
||||||
"coord": "0,0",
|
"coord": "0,0",
|
||||||
"id2show": "id датчика",
|
"id2show": "id датчика",
|
||||||
"num": 48
|
"num": 49
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "49. LCD экран 1602",
|
"name": "50. LCD экран 1602",
|
||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "Lcd2004",
|
"subtype": "Lcd2004",
|
||||||
"id": "Lcd",
|
"id": "Lcd",
|
||||||
@@ -712,11 +735,11 @@
|
|||||||
"size": "16,2",
|
"size": "16,2",
|
||||||
"coord": "0,0",
|
"coord": "0,0",
|
||||||
"id2show": "id датчика",
|
"id2show": "id датчика",
|
||||||
"num": 49
|
"num": 50
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"global": 0,
|
"global": 0,
|
||||||
"name": "50. Strip ws2812b",
|
"name": "51. Strip ws2812b",
|
||||||
"type": "Reading",
|
"type": "Reading",
|
||||||
"subtype": "Ws2812b",
|
"subtype": "Ws2812b",
|
||||||
"id": "strip",
|
"id": "strip",
|
||||||
@@ -732,6 +755,6 @@
|
|||||||
"min": "15",
|
"min": "15",
|
||||||
"max": "30",
|
"max": "30",
|
||||||
"idshow": "t",
|
"idshow": "t",
|
||||||
"num": 50
|
"num": 51
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -107,6 +107,10 @@
|
|||||||
"path": "src/modules/sensors/Hdc1080",
|
"path": "src/modules/sensors/Hdc1080",
|
||||||
"active": true
|
"active": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "src/modules/sensors/Ina219",
|
||||||
|
"active": false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "src/modules/sensors/IoTWiegand",
|
"path": "src/modules/sensors/IoTWiegand",
|
||||||
"active": false
|
"active": false
|
||||||
@@ -173,6 +177,10 @@
|
|||||||
"path": "src/modules/exec/Mp3",
|
"path": "src/modules/exec/Mp3",
|
||||||
"active": true
|
"active": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "src/modules/exec/Multitouch",
|
||||||
|
"active": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "src/modules/exec/Pcf8574",
|
"path": "src/modules/exec/Pcf8574",
|
||||||
"active": true
|
"active": true
|
||||||
|
|||||||
@@ -185,6 +185,7 @@ build_src_filter =
|
|||||||
+<modules/exec/IoTServo>
|
+<modules/exec/IoTServo>
|
||||||
+<modules/exec/Mcp23017>
|
+<modules/exec/Mcp23017>
|
||||||
+<modules/exec/Mp3>
|
+<modules/exec/Mp3>
|
||||||
|
+<modules/exec/Multitouch>
|
||||||
+<modules/exec/Pcf8574>
|
+<modules/exec/Pcf8574>
|
||||||
+<modules/exec/Pwm8266>
|
+<modules/exec/Pwm8266>
|
||||||
+<modules/exec/TelegramLT>
|
+<modules/exec/TelegramLT>
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ void* getAPI_ButtonOut(String subtype, String params);
|
|||||||
void* getAPI_IoTServo(String subtype, String params);
|
void* getAPI_IoTServo(String subtype, String params);
|
||||||
void* getAPI_Mcp23017(String subtype, String params);
|
void* getAPI_Mcp23017(String subtype, String params);
|
||||||
void* getAPI_Mp3(String subtype, String params);
|
void* getAPI_Mp3(String subtype, String params);
|
||||||
|
void* getAPI_Multitouch(String subtype, String params);
|
||||||
void* getAPI_Pcf8574(String subtype, String params);
|
void* getAPI_Pcf8574(String subtype, String params);
|
||||||
void* getAPI_Pwm8266(String subtype, String params);
|
void* getAPI_Pwm8266(String subtype, String params);
|
||||||
void* getAPI_TelegramLT(String subtype, String params);
|
void* getAPI_TelegramLT(String subtype, String params);
|
||||||
@@ -62,6 +63,7 @@ if ((tmpAPI = getAPI_ButtonOut(subtype, params)) != nullptr) return tmpAPI;
|
|||||||
if ((tmpAPI = getAPI_IoTServo(subtype, params)) != nullptr) return tmpAPI;
|
if ((tmpAPI = getAPI_IoTServo(subtype, params)) != nullptr) return tmpAPI;
|
||||||
if ((tmpAPI = getAPI_Mcp23017(subtype, params)) != nullptr) return tmpAPI;
|
if ((tmpAPI = getAPI_Mcp23017(subtype, params)) != nullptr) return tmpAPI;
|
||||||
if ((tmpAPI = getAPI_Mp3(subtype, params)) != nullptr) return tmpAPI;
|
if ((tmpAPI = getAPI_Mp3(subtype, params)) != nullptr) return tmpAPI;
|
||||||
|
if ((tmpAPI = getAPI_Multitouch(subtype, params)) != nullptr) return tmpAPI;
|
||||||
if ((tmpAPI = getAPI_Pcf8574(subtype, params)) != nullptr) return tmpAPI;
|
if ((tmpAPI = getAPI_Pcf8574(subtype, params)) != nullptr) return tmpAPI;
|
||||||
if ((tmpAPI = getAPI_Pwm8266(subtype, params)) != nullptr) return tmpAPI;
|
if ((tmpAPI = getAPI_Pwm8266(subtype, params)) != nullptr) return tmpAPI;
|
||||||
if ((tmpAPI = getAPI_TelegramLT(subtype, params)) != nullptr) return tmpAPI;
|
if ((tmpAPI = getAPI_TelegramLT(subtype, params)) != nullptr) return tmpAPI;
|
||||||
|
|||||||
94
src/modules/exec/Multitouch/Multitouch.cpp
Normal file
94
src/modules/exec/Multitouch/Multitouch.cpp
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
#include "Global.h"
|
||||||
|
#include "classes/IoTItem.h"
|
||||||
|
|
||||||
|
extern IoTGpio IoTgpio;
|
||||||
|
|
||||||
|
class Multitouch : public IoTItem
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int _pin;
|
||||||
|
int _int;
|
||||||
|
int _inv;
|
||||||
|
String _pinMode;
|
||||||
|
int _lastButtonState = LOW;
|
||||||
|
unsigned long _lastDebounceTime = 0;
|
||||||
|
unsigned long timing;
|
||||||
|
long _debounceDelay = 50;
|
||||||
|
long _PWMDelay = 500;
|
||||||
|
int _buttonState;
|
||||||
|
int _reading;
|
||||||
|
int _count = 0;
|
||||||
|
int duration = 0;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Multitouch(String parameters) : IoTItem(parameters)
|
||||||
|
{
|
||||||
|
jsonRead(parameters, "pin", _pin);
|
||||||
|
jsonRead(parameters, "pinMode", _pinMode);
|
||||||
|
jsonRead(parameters, "debounceDelay", _debounceDelay);
|
||||||
|
jsonRead(parameters, "PWMDelay", _PWMDelay);
|
||||||
|
jsonRead(parameters, "int", _int);
|
||||||
|
jsonRead(parameters, "inv", _inv);
|
||||||
|
_round = 0;
|
||||||
|
|
||||||
|
IoTgpio.pinMode(_pin, INPUT);
|
||||||
|
if (_pinMode == "INPUT_PULLUP")
|
||||||
|
IoTgpio.digitalWrite(_pin, HIGH);
|
||||||
|
else if (_pinMode == "INPUT_PULLDOWN")
|
||||||
|
IoTgpio.digitalWrite(_pin, LOW);
|
||||||
|
|
||||||
|
value.valD = _buttonState = IoTgpio.digitalRead(_pin);
|
||||||
|
// сообщаем всем о стартовом статусе без генерации события
|
||||||
|
regEvent(_buttonState, "", false, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
_reading = IoTgpio.digitalRead(_pin);
|
||||||
|
if (_reading != _lastButtonState)
|
||||||
|
{
|
||||||
|
_lastDebounceTime = millis();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((millis() - _lastDebounceTime) > _debounceDelay)
|
||||||
|
{
|
||||||
|
if (millis() - timing > _int && _reading == _inv && millis() - _lastDebounceTime > _PWMDelay)
|
||||||
|
{
|
||||||
|
timing = millis();
|
||||||
|
duration = millis() - _lastDebounceTime - _PWMDelay;
|
||||||
|
value.valD = duration / 50;
|
||||||
|
regEvent(value.valD, "Multitouch");
|
||||||
|
_count = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_reading != _buttonState)
|
||||||
|
{
|
||||||
|
_buttonState = _reading;
|
||||||
|
_count++;
|
||||||
|
duration = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (1 < _count && millis() > _lastDebounceTime + _PWMDelay)
|
||||||
|
{
|
||||||
|
value.valD = _count / 2;
|
||||||
|
regEvent(value.valD, "Multitouch");
|
||||||
|
_count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_lastButtonState = _reading;
|
||||||
|
}
|
||||||
|
|
||||||
|
~Multitouch(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
void *getAPI_Multitouch(String subtype, String param)
|
||||||
|
{
|
||||||
|
if (subtype == F("Multitouch"))
|
||||||
|
{
|
||||||
|
return new Multitouch(param);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
51
src/modules/exec/Multitouch/modinfo.json
Normal file
51
src/modules/exec/Multitouch/modinfo.json
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"menuSection": "Исполнительные устройства",
|
||||||
|
"configItem": [
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "Сенсорная кнопка",
|
||||||
|
"type": "Writing",
|
||||||
|
"subtype": "Multitouch",
|
||||||
|
"id": "impulse",
|
||||||
|
"widget": "anydataDef",
|
||||||
|
"page": "Кнопки",
|
||||||
|
"descr": "Количество нажаний",
|
||||||
|
"needSave": 0,
|
||||||
|
"int": 300,
|
||||||
|
"inv": 1,
|
||||||
|
"pin": 16,
|
||||||
|
"pinMode": "INPUT",
|
||||||
|
"debounceDelay": 50,
|
||||||
|
"PWMDelay": 500
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"about": {
|
||||||
|
"authorName": "AVAKS",
|
||||||
|
"authorContact": "https://t.me/@avaks_dev",
|
||||||
|
"authorGit": "https://github.com/avaksru",
|
||||||
|
"specialThanks": "",
|
||||||
|
"moduleName": "Multitouch",
|
||||||
|
"moduleVersion": "1.0",
|
||||||
|
"usedRam": {
|
||||||
|
"esp32_4mb": 15,
|
||||||
|
"esp8266_4mb": 15
|
||||||
|
},
|
||||||
|
"title": "Модуль чтения состояния GPIO (pin)",
|
||||||
|
"moduleDesc": "Считает количество нажатий на выключатель без фиксации или сенсорную кнопку. При удержании кнопки нажатой - считает длительность нажатия. Позволяет реализовать логику работы: включения различных устройств в зависимости от количества нажатий, диммировать яркость удержанием выключателя нажатым, а так же счетчик импульсов, дверной звонок, сенсорный выключатель, концевой выключатель, датчик открытия окна, и т.п.",
|
||||||
|
"propInfo": {
|
||||||
|
"int": "Интервал отправки времени удержания кнопки (миллисекунд)",
|
||||||
|
"pin": "Укажите GPIO номер пина для чтения состояний подключенной кнопки",
|
||||||
|
"inv": "Инверсия GPIO",
|
||||||
|
"pinMode": "Может быть INPUT_PULLUP INPUT_PULLDOWN INPUT",
|
||||||
|
"debounceDelay": "Время обработки дребезга (миллисекунд)",
|
||||||
|
"PWMDelay": "Время ожидания повторного нажатия. И время после которого начитается отсчет длительности непрерывного ражатия (миллисекунд)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"defActive": true,
|
||||||
|
"usedLibs": {
|
||||||
|
"esp32_4mb": [],
|
||||||
|
"esp8266_4mb": [],
|
||||||
|
"esp8266_1mb": [],
|
||||||
|
"esp8266_1mb_ota": []
|
||||||
|
}
|
||||||
|
}
|
||||||
136
src/modules/sensors/Ina219/Ina219.cpp
Normal file
136
src/modules/sensors/Ina219/Ina219.cpp
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
/******************************************************************
|
||||||
|
Used Adafruit INA219 Current Sensor
|
||||||
|
Support for INA219
|
||||||
|
https://github.com/adafruit/Adafruit_INA219
|
||||||
|
|
||||||
|
adapted for version 4dev @Serghei63
|
||||||
|
******************************************************************/
|
||||||
|
|
||||||
|
#include "Global.h"
|
||||||
|
#include "classes/IoTItem.h"
|
||||||
|
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <Adafruit_INA219.h>
|
||||||
|
|
||||||
|
Adafruit_INA219 ina219;
|
||||||
|
|
||||||
|
float shuntvoltage = 0;
|
||||||
|
float busvoltage = 0;
|
||||||
|
float current_mA = 0;
|
||||||
|
float loadvoltage = 0;
|
||||||
|
float power_mW = 0;
|
||||||
|
|
||||||
|
// shuntvoltage = ina219.getShuntVoltage_mV(); // Получение напряжение на шунте
|
||||||
|
// busvoltage = ina219.getBusVoltage_V(); // Получение значение напряжения V
|
||||||
|
// current_mA = ina219.getCurrent_mA(); // Получение значение тока в мА
|
||||||
|
// power_mW = ina219.getPower_mW(); // Получение значение мощности
|
||||||
|
// loadvoltage = busvoltage + (shuntvoltage / 1000); // Расчет напряжение на нагрузки
|
||||||
|
|
||||||
|
class Ina219loadvoltage : public IoTItem {
|
||||||
|
public:
|
||||||
|
Ina219loadvoltage(String parameters) : IoTItem(parameters) {
|
||||||
|
|
||||||
|
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
|
||||||
|
}
|
||||||
|
|
||||||
|
void doByInterval() {
|
||||||
|
|
||||||
|
loadvoltage = busvoltage + (shuntvoltage / 1000);
|
||||||
|
value.valD = loadvoltage;
|
||||||
|
|
||||||
|
regEvent(value.valD, "Ina219loadvoltage");
|
||||||
|
}
|
||||||
|
|
||||||
|
~Ina219loadvoltage(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Ina219busvoltage : public IoTItem {
|
||||||
|
public:
|
||||||
|
Ina219busvoltage(String parameters) : IoTItem(parameters) {
|
||||||
|
|
||||||
|
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
|
||||||
|
}
|
||||||
|
|
||||||
|
void doByInterval() {
|
||||||
|
|
||||||
|
busvoltage = ina219.getBusVoltage_V();
|
||||||
|
value.valD = busvoltage;
|
||||||
|
|
||||||
|
regEvent(value.valD, "Ina219busvoltage");
|
||||||
|
}
|
||||||
|
|
||||||
|
~Ina219busvoltage(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class Ina219curr : public IoTItem {
|
||||||
|
public:
|
||||||
|
Ina219curr(String parameters) : IoTItem(parameters) {
|
||||||
|
|
||||||
|
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
|
||||||
|
}
|
||||||
|
void doByInterval() {
|
||||||
|
|
||||||
|
current_mA = ina219.getCurrent_mA();
|
||||||
|
value.valD = current_mA;
|
||||||
|
|
||||||
|
regEvent(value.valD, "Ina219curr");
|
||||||
|
}
|
||||||
|
|
||||||
|
~Ina219curr(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Ina219shuntvoltage : public IoTItem {
|
||||||
|
public:
|
||||||
|
Ina219shuntvoltage(String parameters) : IoTItem(parameters) {
|
||||||
|
|
||||||
|
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
|
||||||
|
}
|
||||||
|
void doByInterval() {
|
||||||
|
|
||||||
|
shuntvoltage = ina219.getShuntVoltage_mV();
|
||||||
|
value.valD = shuntvoltage;
|
||||||
|
|
||||||
|
regEvent(value.valD, "Ina219shuntvoltage");
|
||||||
|
}
|
||||||
|
|
||||||
|
~Ina219shuntvoltage(){};
|
||||||
|
};
|
||||||
|
|
||||||
|
class Power_mW : public IoTItem {
|
||||||
|
public:
|
||||||
|
Power_mW(String parameters) : IoTItem(parameters) {
|
||||||
|
|
||||||
|
// Wire.begin(2,0); // Инициализация шины I2C для модуля E01
|
||||||
|
}
|
||||||
|
void doByInterval() {
|
||||||
|
|
||||||
|
power_mW = ina219.getPower_mW();
|
||||||
|
value.valD = power_mW;
|
||||||
|
|
||||||
|
regEvent(value.valD, "Ina219power"); // TODO: найти способ понимания ошибки получения данных
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
~Power_mW(){};
|
||||||
|
};
|
||||||
|
void* getAPI_Ina219(String subtype, String param) {
|
||||||
|
if (subtype == F("Ina219curr")) {
|
||||||
|
ina219.begin();
|
||||||
|
return new Ina219curr(param);
|
||||||
|
} else if (subtype == F("Ina219shuntvoltage")) {
|
||||||
|
ina219.begin();
|
||||||
|
return new Ina219shuntvoltage(param);
|
||||||
|
} else if (subtype == F("power_mW")) {
|
||||||
|
ina219.begin();
|
||||||
|
return new Power_mW(param);
|
||||||
|
} else if (subtype == F("Ina219busvoltage")) {
|
||||||
|
ina219.begin();
|
||||||
|
return new Ina219busvoltage(param);
|
||||||
|
} else if (subtype == F("Ina219loadvoltage")) {
|
||||||
|
ina219.begin();
|
||||||
|
return new Ina219loadvoltage(param);
|
||||||
|
} else {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
99
src/modules/sensors/Ina219/modinfo.json
Normal file
99
src/modules/sensors/Ina219/modinfo.json
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
{
|
||||||
|
"menuSection": "Сенсоры",
|
||||||
|
|
||||||
|
"configItem": [{
|
||||||
|
"global": 0,
|
||||||
|
"name": "INA219 Tок",
|
||||||
|
"type": "Reading",
|
||||||
|
"subtype": "Ina219curr",
|
||||||
|
"id": "Ina219current",
|
||||||
|
"widget": "anydatamAmp",
|
||||||
|
"page": "INA 219",
|
||||||
|
"descr": "219 Датчик тока",
|
||||||
|
"int": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "INA219 Напряжение",
|
||||||
|
"type": "Reading",
|
||||||
|
"subtype": "Ina219busvoltage",
|
||||||
|
"id": "Ina219busvoltage",
|
||||||
|
"widget": "anydataVlt",
|
||||||
|
"page": "INA 219",
|
||||||
|
"descr": "219 Датчик напряжения",
|
||||||
|
"int": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "INA219 Мощность",
|
||||||
|
"type": "Reading",
|
||||||
|
"subtype": "power_mW",
|
||||||
|
"id": "Ina219power",
|
||||||
|
"widget": "anydatamWtt",
|
||||||
|
"page": "INA 219",
|
||||||
|
"descr": "219 Мощность",
|
||||||
|
"int": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "INA219 Напряжение нагрузки",
|
||||||
|
"type": "Reading",
|
||||||
|
"subtype": "Ina219loadvoltage",
|
||||||
|
"id": "Ina219loadvoltage",
|
||||||
|
"widget": "anydataVlt",
|
||||||
|
"page": "INA 219",
|
||||||
|
"descr": "219 Напряжение нагрузки",
|
||||||
|
"int": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"global": 0,
|
||||||
|
"name": "INA219 Шунт",
|
||||||
|
"type": "Reading",
|
||||||
|
"subtype": "Ina219shuntvoltage",
|
||||||
|
"id": "Ina219shuntvoltage",
|
||||||
|
"widget": "anydatamVlt",
|
||||||
|
"page": "INA 219",
|
||||||
|
"descr": "219 Напряжение шунта",
|
||||||
|
"int": 10
|
||||||
|
}],
|
||||||
|
|
||||||
|
"about": {
|
||||||
|
"authorName": "Serghei Crasnicov",
|
||||||
|
"authorContact": "https://t.me/Serghei63",
|
||||||
|
"authorGit": "https://github.com/Serghei63",
|
||||||
|
"specialThanks": "Дмитрий , Serg",
|
||||||
|
"moduleName": "Ina219",
|
||||||
|
"moduleVersion": "1.0",
|
||||||
|
"usedRam": {
|
||||||
|
"esp32_4mb": 15,
|
||||||
|
"esp8266_4mb": 15
|
||||||
|
},
|
||||||
|
"subTypes": [
|
||||||
|
"Ina219curr",
|
||||||
|
"Ina219busvoltage",
|
||||||
|
"power_mW",
|
||||||
|
"Ina219loadvoltage",
|
||||||
|
"Ina219shuntvoltage"
|
||||||
|
],
|
||||||
|
"title": "Милливатметр постоянного тока",
|
||||||
|
"moduleDesc": "Измеряет постоянный ток до 3.2 ампера, напряжение до 26 вольт и мощность на нагрузке",
|
||||||
|
"propInfo": {
|
||||||
|
"int": "Количество секунд между опросами датчика."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"defActive": false,
|
||||||
|
|
||||||
|
"usedLibs": {
|
||||||
|
"esp32_4mb": [
|
||||||
|
"https://github.com/adafruit/Adafruit_INA219.git"
|
||||||
|
],
|
||||||
|
|
||||||
|
"esp8266_4mb": [
|
||||||
|
"https://github.com/adafruit/Adafruit_INA219.git"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user