Merge pull request #39 from IoTManagerProject/ver4dev

merge
This commit is contained in:
Mit4el
2025-03-10 22:41:06 +03:00
committed by GitHub
5 changed files with 204 additions and 1 deletions

View File

@@ -1,4 +1,5 @@
#pragma once
#include <vector>
#include "classes/IoTGpio.h"
//#include "classes/IoTBench.h"

View File

@@ -0,0 +1,98 @@
#include "Global.h"
#include "classes/IoTItem.h"
#include "classes/IoTGpio.h"
#include "Wire.h"
#include "TCA9555.h"
class Tca9555Driver : public IoTGpio {
private:
TCA9555* _tca;
public:
Tca9555Driver(int index, TCA9555* tca) : IoTGpio(index) {
_tca = tca;
}
void pinMode(int pin, uint8_t mode) {
_tca->pinMode1(pin, mode);
}
void digitalWrite(int pin, uint8_t val) {
_tca->write1(pin, val);
}
int digitalRead(int pin) {
return _tca->read1(pin);
}
void digitalInvert(int pin) {
_tca->write1(pin, 1 - _tca->read1(pin));
}
~Tca9555Driver() {};
};
class Tca9555 : public IoTItem {
private:
String _addr;
Tca9555Driver* _driver;
public:
Tca9555(String parameters) : IoTItem(parameters) {
_driver = nullptr;
Wire.begin();
jsonRead(parameters, "addr", _addr);
if (_addr == "") {
scanI2C();
return;
}
int index;
jsonRead(parameters, "index", index);
if (index > 4) {
Serial.println(F("TCA9555 wrong index. Must be 0 - 4"));
return;
}
int mktype;
TCA9555* tca;
jsonRead(parameters, "mktype", mktype);
if (mktype == 35) {
tca = new TCA9535(hexStringToUint8(_addr));
} else if (mktype == 55) {
tca = new TCA9555(hexStringToUint8(_addr));
} else {
Serial.println(F("TCA9555 wrong type. Must be 35 or 55"));
return;
}
_driver = new Tca9555Driver(index, tca);
}
void doByInterval() {
if (_addr == "") {
scanI2C();
return;
}
}
//возвращает ссылку на экземпляр класса Tca9555Driver
IoTGpio* getGpioDriver() {
return _driver;
}
~Tca9555() {
delete _driver;
};
};
void* getAPI_Tca9555(String subtype, String param) {
if (subtype == F("Tca9555")) {
return new Tca9555(param);
} else {
return nullptr;
}
}

View File

@@ -0,0 +1,47 @@
{
"menuSection": "executive_devices",
"configItem": [
{
"global": 0,
"name": "Расширитель портов Tca9555",
"type": "Reading",
"subtype": "Tca9555",
"id": "Tca",
"widget": "",
"page": "",
"descr": "",
"mktype": 55,
"addr": "0x20",
"index": 1
}
],
"about": {
"authorName": "Ilya Belyakov",
"authorContact": "https://t.me/Biveraxe",
"authorGit": "https://github.com/biveraxe",
"specialThanks": "",
"moduleName": "Tca9555",
"moduleVersion": "1.0",
"usedRam": {
"esp32_4mb": 15,
"esp8266_4mb": 15
},
"title": "Расширитель портов Tca9555",
"moduleDesc": "Добавляет в систему дополнительные GPIO для элементов, которые поддерживают такую функцию.",
"propInfo": {
"mktype": "Тип устройства: 55 - TCA9555, 35 - TCA9535",
"addr": "Адрес устройства на шине, обычно 0x20",
"index": "Значения от 1 до 4, где при выборе 1 будет нумерация pin 100-115, при выборе 2 200-215 и т.д."
}
},
"defActive": false,
"usedLibs": {
"esp32*": [
"https://github.com/RobTillaart/TCA9555"
],
"esp82*": [
"https://github.com/RobTillaart/TCA9555"
]
}
}

View File

@@ -0,0 +1,57 @@
{
"mark": "iotm",
"config": [
{
"global": 0,
"type": "Reading",
"subtype": "IoTMath",
"id": "math",
"widget": "anydataValue",
"page": "Ввод",
"descr": ""
},
{
"global": 0,
"type": "Reading",
"subtype": "Variable",
"id": "start",
"needSave": 0,
"widget": "inputTm",
"page": "Ввод",
"descr": "Введите время",
"int": "0",
"val": "02:00"
},
{
"global": 0,
"type": "Reading",
"subtype": "Variable",
"id": "stop",
"needSave": 0,
"widget": "inputTm",
"page": "Ввод",
"descr": "Введите время",
"int": "0",
"val": "02:00"
},
{
"global": 0,
"type": "Writing",
"subtype": "ButtonOut",
"needSave": 0,
"id": "led",
"widget": "toggle",
"page": "Ввод",
"descr": "Освещение",
"int": 0,
"inv": 0,
"pin": 2
}
]
}
scenario=>if start | stop then {
if math.nowInTimePeriod(start, stop) then {
led = 1
} else led = 0
}

View File

@@ -28,4 +28,4 @@ try:
fw.write(newData)
print(f"Файл изменён, ОК! {mainPyPath}")
except FileNotFoundError:
print("Файл не найден или не удается открыть")
print("Файл не найден или не удается открыть")