Добавляем весы

This commit is contained in:
2022-11-21 21:14:52 +03:00
parent 3e7780a4e0
commit 4dba35d08e
2 changed files with 127 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
#include "Global.h"
#include "classes/IoTItem.h"
#include <GyverHX711.h>
class GyverHX711g : public IoTItem {
private:
GyverHX711* _thermocouple = nullptr;
public:
GyverHX711g(String parameters) : IoTItem(parameters) {
int data, clock, chan;
jsonRead(parameters, "data", data);
jsonRead(parameters, "clock", clock);
jsonRead(parameters, "chan", chan);
_thermocouple = new GyverHX711(data, clock, chan);
_thermocouple->tare(); // калибровка нуля
}
void doByInterval() {
if (!_thermocouple->available()) return;
value.valD = _thermocouple->read();
regEvent(value.valD, "Hx711");
}
IoTValue execute(String command, std::vector<IoTValue> &param) {
if (command == "tare") {
_thermocouple->tare();
} else if (command == "sleepMode") {
if (param.size() == 1) {
_thermocouple->sleepMode(param[0].valD);
}
} else if (command == "read") {
value.valD = _thermocouple->read();
regEvent(value.valD, "Hx711");
return value;
}
return {};
}
~GyverHX711g() {
if (_thermocouple) delete _thermocouple;
};
};
void* getAPI_Hx711(String subtype, String param) {
if (subtype == F("Hx711")) {
return new GyverHX711g(param);
} else {
return nullptr;
}
}

View File

@@ -0,0 +1,71 @@
{
"menuSection": "Сенсоры",
"configItem": [{
"name": "HX711 Cенсор весов",
"type": "Reading",
"subtype": "Hx711",
"id": "hx",
"widget": "anydataDef",
"page": "Весы",
"descr": "HX вес",
"int": 15,
"map": "1024,1024,1,100",
"plus": 0,
"multiply": 1,
"round": 1,
"data": 3,
"clock": 2,
"chan": 2
}],
"about": {
"authorName": "Serghei Crasnicov",
"authorContact": "https://t.me/Serghei63",
"authorGit": "https://github.com/Serghei63",
"specialThanks": "",
"moduleName": "Hx711",
"moduleVersion": "1.0",
"usedRam": {
"esp32_4mb": 15,
"esp8266_4mb": 15
},
"title": "HX711 Cенсор весов",
"moduleDesc": "Позволяет получить вес в килограммах с датчика Hx711",
"propInfo": {
"clock": "GPIO шины данных",
"data": "GPIO шины данных",
"chan": "Канал и усиление: =0 (HX_GAIN128_A) - канал А усиление 128, =1 (HX_GAIN32_B) - канал B усиление 32, =2 (HX_GAIN64_A) - канал А усиление 64",
"int": "Количество секунд между опросами датчика."
},
"retInfo": "Содержит RAW значение датчика, необходима калибровка",
"funcInfo": [
{
"name": "tare",
"descr": "Авто установка нуля",
"params": []
},
{
"name": "sleepMode",
"descr": "Перевести в режим сна",
"params": ["=1 режим сна, =0 проснуться"]
},
{
"name": "read",
"descr": "Прочитать текущее значение. Полезно использовать при Int=0 и считывать вес по событию.",
"params": []
}
]
},
"defActive": true,
"usedLibs": {
"esp32_4mb": [
"GyverHX711@1.2"
],
"esp8266_4mb": [
"GyverHX711@1.2"
]
}
}