Merge pull request #259 from IoTManagerProject/ver4dev

Ver4dev
This commit is contained in:
2023-01-30 14:30:16 +03:00
committed by GitHub
21 changed files with 804 additions and 144 deletions

View File

@@ -0,0 +1,85 @@
#include "Global.h"
#include "classes/IoTItem.h"
#include "classes/IoTGpio.h"
#include <Adafruit_MCP23X08.h>
class Mcp23008Driver : public IoTGpio {
private:
Adafruit_MCP23X08 _mcp;
public:
Mcp23008Driver(int index, String addr) : IoTGpio(index) {
if (!_mcp.begin_I2C(hexStringToUint8(addr))) {
Serial.println("MCP23X08 Init Error.");
}
}
void pinMode(uint8_t pin, uint8_t mode) {
_mcp.pinMode(pin, mode);
}
void digitalWrite(uint8_t pin, uint8_t val) {
_mcp.digitalWrite(pin, val);
}
int digitalRead(uint8_t pin) {
return _mcp.digitalRead(pin);
}
void digitalInvert(uint8_t pin) {
_mcp.digitalWrite(pin, 1 - _mcp.digitalRead(pin));
}
~Mcp23008Driver() {};
};
class Mcp23008 : public IoTItem {
private:
Mcp23008Driver* _driver;
String _addr;
public:
Mcp23008(String parameters) : IoTItem(parameters) {
_driver = nullptr;
jsonRead(parameters, "addr", _addr);
if (_addr == "") {
scanI2C();
return;
}
int index;
jsonRead(parameters, "index", index);
if (index > 4) {
Serial.println("MCP23X08 wrong index. Must be 0 - 4");
return;
}
_driver = new Mcp23008Driver(index, _addr);
}
void doByInterval() {
if (_addr == "") {
scanI2C();
return;
}
}
//возвращает ссылку на экземпляр класса Mcp23008Driver
IoTGpio* getGpioDriver() {
return _driver;
}
~Mcp23008() {
delete _driver;
};
};
void* getAPI_Mcp23008(String subtype, String param) {
if (subtype == F("Mcp23008")) {
return new Mcp23008(param);
} else {
return nullptr;
}
}

View File

@@ -0,0 +1,67 @@
{
"menuSection": "Исполнительные устройства",
"configItem": [{
"global": 0,
"name": "Расширитель портов Mcp23008",
"type": "Reading",
"subtype": "Mcp23008",
"id": "Mcp",
"widget": "",
"page": "",
"descr": "",
"int": "0",
"addr": "0x20",
"index": 1
}],
"about": {
"authorName": "Ilya Belyakov",
"authorContact": "https://t.me/Biveraxe",
"authorGit": "https://github.com/biveraxe",
"specialThanks": "",
"moduleName": "Mcp23008",
"moduleVersion": "1.0",
"usedRam": {
"esp32_4mb": 15,
"esp8266_4mb": 15
},
"title": "Расширитель портов Mcp23008",
"moduleDesc": "Добавляет в систему дополнительные GPIO для элементов, которые поддерживают такую функцию.",
"propInfo": {
"int": "Не используется",
"addr": "Адрес устройства на шине, обычно 0x20",
"index": "Значения от 1 до 4, где при выборе 1 будет нумерация pin 100-115, при выборе 2 200-215 и т.д."
}
},
"defActive": false,
"usedLibs": {
"esp32_4mb": [
"adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0",
"adafruit/Adafruit BusIO @ ^1.13.2"
],
"esp8266_4mb": [
"adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0",
"adafruit/Adafruit BusIO @ ^1.13.2"
],
"esp8266_1mb": [
"adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0",
"adafruit/Adafruit BusIO @ ^1.13.2"
],
"esp8266_1mb_ota": [
"adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0",
"adafruit/Adafruit BusIO @ ^1.13.2"
],
"esp8285_1mb": [
"adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0",
"adafruit/Adafruit BusIO @ ^1.13.2"
],
"esp8285_1mb_ota": [
"adafruit/Adafruit Mcp23017 Arduino Library@^2.1.0",
"adafruit/Adafruit BusIO @ ^1.13.2"
]
}
}

View File

@@ -1,5 +1,7 @@
#pragma once
#include "Const.h"
#define MYSENSORS
#ifdef MYSENSORS
/*