mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
Добавляем сервопривод
This commit is contained in:
@@ -92,8 +92,22 @@
|
||||
"pin": 2
|
||||
},
|
||||
{
|
||||
"name": "7. MP3 плеер",
|
||||
"name": "7. Сервопривод",
|
||||
"num": 7,
|
||||
"type": "Writing",
|
||||
"subtype": "IoTServo",
|
||||
"id": "servo",
|
||||
"widget": "range",
|
||||
"page": "servo",
|
||||
"descr": "угол",
|
||||
"int": 0,
|
||||
"pin": 12,
|
||||
"apin": -1,
|
||||
"amap": "0, 4096, 0, 180"
|
||||
},
|
||||
{
|
||||
"name": "8. MP3 плеер",
|
||||
"num": 8,
|
||||
"type": "Reading",
|
||||
"subtype": "Mp3",
|
||||
"id": "mp3",
|
||||
@@ -105,8 +119,8 @@
|
||||
"volume": 20
|
||||
},
|
||||
{
|
||||
"name": "8. Телеграм-Бот",
|
||||
"num": 8,
|
||||
"name": "9. Телеграм-Бот",
|
||||
"num": 9,
|
||||
"type": "Writing",
|
||||
"subtype": "Telegram",
|
||||
"id": "tg",
|
||||
@@ -120,8 +134,8 @@
|
||||
"chatID": ""
|
||||
},
|
||||
{
|
||||
"name": "9. Таймер",
|
||||
"num": 9,
|
||||
"name": "10. Таймер",
|
||||
"num": 10,
|
||||
"type": "Writing",
|
||||
"subtype": "Timer",
|
||||
"id": "timer",
|
||||
@@ -138,8 +152,8 @@
|
||||
"header": "Сенсоры"
|
||||
},
|
||||
{
|
||||
"name": "10. Датчик напряжения ADS1115",
|
||||
"num": 10,
|
||||
"name": "11. Датчик напряжения ADS1115",
|
||||
"num": 11,
|
||||
"type": "Reading",
|
||||
"subtype": "Ads1115",
|
||||
"id": "Ads3",
|
||||
@@ -155,8 +169,8 @@
|
||||
"int": 10
|
||||
},
|
||||
{
|
||||
"name": "11. Cенсор температуры AHT20",
|
||||
"num": 11,
|
||||
"name": "12. Cенсор температуры AHT20",
|
||||
"num": 12,
|
||||
"type": "Reading",
|
||||
"subtype": "Aht20t",
|
||||
"id": "Temp20",
|
||||
@@ -168,8 +182,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "12. Cенсор влажности AHT20",
|
||||
"num": 12,
|
||||
"name": "13. Cенсор влажности AHT20",
|
||||
"num": 13,
|
||||
"type": "Reading",
|
||||
"subtype": "Aht20h",
|
||||
"id": "Hum20",
|
||||
@@ -181,8 +195,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "13. Аналоговый сенсор",
|
||||
"num": 13,
|
||||
"name": "14. Аналоговый сенсор",
|
||||
"num": 14,
|
||||
"type": "Reading",
|
||||
"subtype": "AnalogAdc",
|
||||
"id": "t",
|
||||
@@ -197,8 +211,8 @@
|
||||
"int": 15
|
||||
},
|
||||
{
|
||||
"name": "14. Cенсор температуры Bme280",
|
||||
"num": 14,
|
||||
"name": "15. Cенсор температуры Bme280",
|
||||
"num": 15,
|
||||
"type": "Reading",
|
||||
"subtype": "Bme280t",
|
||||
"id": "tmp3",
|
||||
@@ -210,8 +224,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "15. Cенсор давления Bme280",
|
||||
"num": 15,
|
||||
"name": "16. Cенсор давления Bme280",
|
||||
"num": 16,
|
||||
"type": "Reading",
|
||||
"subtype": "Bme280p",
|
||||
"id": "Press3",
|
||||
@@ -223,8 +237,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "16. Cенсор влажности Bme280",
|
||||
"num": 16,
|
||||
"name": "17. Cенсор влажности Bme280",
|
||||
"num": 17,
|
||||
"type": "Reading",
|
||||
"subtype": "Bme280h",
|
||||
"id": "Hum3",
|
||||
@@ -236,8 +250,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "17. Cенсор температуры Bmp280",
|
||||
"num": 17,
|
||||
"name": "18. Cенсор температуры Bmp280",
|
||||
"num": 18,
|
||||
"type": "Reading",
|
||||
"subtype": "Bmp280t",
|
||||
"id": "tmp3",
|
||||
@@ -249,8 +263,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "18. Cенсор давления Bmp280",
|
||||
"num": 18,
|
||||
"name": "19. Cенсор давления Bmp280",
|
||||
"num": 19,
|
||||
"type": "Reading",
|
||||
"subtype": "Bmp280p",
|
||||
"id": "Press3",
|
||||
@@ -262,8 +276,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "19. Cенсор температуры dht11",
|
||||
"num": 19,
|
||||
"name": "20. Cенсор температуры dht11",
|
||||
"num": 20,
|
||||
"type": "Reading",
|
||||
"subtype": "Dht1122t",
|
||||
"id": "tmp3",
|
||||
@@ -275,8 +289,8 @@
|
||||
"senstype": "dht11"
|
||||
},
|
||||
{
|
||||
"name": "20. Cенсор влажности dht11",
|
||||
"num": 20,
|
||||
"name": "21. Cенсор влажности dht11",
|
||||
"num": 21,
|
||||
"type": "Reading",
|
||||
"subtype": "Dht1122h",
|
||||
"id": "Hum3",
|
||||
@@ -288,8 +302,8 @@
|
||||
"senstype": "dht11"
|
||||
},
|
||||
{
|
||||
"name": "21. Cенсор температуры ds18b20",
|
||||
"num": 21,
|
||||
"name": "22. Cенсор температуры ds18b20",
|
||||
"num": 22,
|
||||
"type": "Reading",
|
||||
"subtype": "Ds18b20",
|
||||
"id": "dstmp",
|
||||
@@ -303,8 +317,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "22. Датчик тока",
|
||||
"num": 22,
|
||||
"name": "23. Датчик тока",
|
||||
"num": 23,
|
||||
"type": "Reading",
|
||||
"subtype": "I",
|
||||
"id": "current",
|
||||
@@ -318,8 +332,8 @@
|
||||
"multiply": 1
|
||||
},
|
||||
{
|
||||
"name": "23. Датчик напряжения",
|
||||
"num": 23,
|
||||
"name": "24. Датчик напряжения",
|
||||
"num": 24,
|
||||
"type": "Reading",
|
||||
"subtype": "U",
|
||||
"id": "voltage",
|
||||
@@ -333,8 +347,8 @@
|
||||
"multiply": 1
|
||||
},
|
||||
{
|
||||
"name": "24. Cенсор температуры GY21",
|
||||
"num": 24,
|
||||
"name": "25. Cенсор температуры GY21",
|
||||
"num": 25,
|
||||
"type": "Reading",
|
||||
"subtype": "GY21t",
|
||||
"id": "tmp4",
|
||||
@@ -345,8 +359,8 @@
|
||||
"int": 15
|
||||
},
|
||||
{
|
||||
"name": "25. Cенсор влажности GY21",
|
||||
"num": 25,
|
||||
"name": "26. Cенсор влажности GY21",
|
||||
"num": 26,
|
||||
"type": "Reading",
|
||||
"subtype": "GY21h",
|
||||
"id": "Hum4",
|
||||
@@ -357,8 +371,8 @@
|
||||
"int": 15
|
||||
},
|
||||
{
|
||||
"name": "26. Cенсор температуры HDC1080",
|
||||
"num": 26,
|
||||
"name": "27. Cенсор температуры HDC1080",
|
||||
"num": 27,
|
||||
"type": "Reading",
|
||||
"subtype": "Hdc1080t",
|
||||
"id": "Temp1080",
|
||||
@@ -370,8 +384,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "27. Cенсор влажности HDC1080",
|
||||
"num": 27,
|
||||
"name": "28. Cенсор влажности HDC1080",
|
||||
"num": 28,
|
||||
"type": "Reading",
|
||||
"subtype": "Hdc1080h",
|
||||
"id": "Hum1080",
|
||||
@@ -383,8 +397,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "28. Cенсор температуры MAX6675",
|
||||
"num": 28,
|
||||
"name": "29. Cенсор температуры MAX6675",
|
||||
"num": 29,
|
||||
"type": "Reading",
|
||||
"subtype": "Max6675t",
|
||||
"id": "maxtmp",
|
||||
@@ -397,8 +411,8 @@
|
||||
"CLK": 14
|
||||
},
|
||||
{
|
||||
"name": "29. Датчик CO2 MHZ-19 UART",
|
||||
"num": 29,
|
||||
"name": "30. Датчик CO2 MHZ-19 UART",
|
||||
"num": 30,
|
||||
"type": "Reading",
|
||||
"subtype": "Mhz19uart",
|
||||
"id": "co2uart",
|
||||
@@ -416,8 +430,8 @@
|
||||
"ABC": 1
|
||||
},
|
||||
{
|
||||
"name": "30. Датчик CO2 MHZ-19 PWM",
|
||||
"num": 30,
|
||||
"name": "31. Датчик CO2 MHZ-19 PWM",
|
||||
"num": 31,
|
||||
"type": "Reading",
|
||||
"subtype": "Mhz19pwm",
|
||||
"id": "co2pwm",
|
||||
@@ -431,8 +445,8 @@
|
||||
"int": 300
|
||||
},
|
||||
{
|
||||
"name": "31. Cенсор температуры от MHZ-19 UART",
|
||||
"num": 31,
|
||||
"name": "32. Cенсор температуры от MHZ-19 UART",
|
||||
"num": 32,
|
||||
"type": "Reading",
|
||||
"subtype": "Mhz19temp",
|
||||
"id": "Mhz19temp",
|
||||
@@ -448,8 +462,8 @@
|
||||
"int": 30
|
||||
},
|
||||
{
|
||||
"name": "32. Рабочий диапазон от MHZ-19 UART",
|
||||
"num": 32,
|
||||
"name": "33. Рабочий диапазон от MHZ-19 UART",
|
||||
"num": 33,
|
||||
"type": "Reading",
|
||||
"subtype": "Mhz19range",
|
||||
"id": "Mhz19range",
|
||||
@@ -466,8 +480,8 @@
|
||||
"int": 30
|
||||
},
|
||||
{
|
||||
"name": "33. Автокалибровка от MHZ-19 UART",
|
||||
"num": 33,
|
||||
"name": "34. Автокалибровка от MHZ-19 UART",
|
||||
"num": 34,
|
||||
"type": "Reading",
|
||||
"subtype": "Mhz19ABC",
|
||||
"id": "Mhz19ABC",
|
||||
@@ -481,8 +495,8 @@
|
||||
"int": 30
|
||||
},
|
||||
{
|
||||
"name": "34. Датчик пыли SDS011 PM25",
|
||||
"num": 34,
|
||||
"name": "35. Датчик пыли SDS011 PM25",
|
||||
"num": 35,
|
||||
"type": "Reading",
|
||||
"subtype": "Sds011_25",
|
||||
"id": "pmuart25",
|
||||
@@ -499,8 +513,8 @@
|
||||
"period": 300
|
||||
},
|
||||
{
|
||||
"name": "35. Датчик пыли SDS011 PM10",
|
||||
"num": 35,
|
||||
"name": "36. Датчик пыли SDS011 PM10",
|
||||
"num": 36,
|
||||
"type": "Reading",
|
||||
"subtype": "Sds011_10",
|
||||
"id": "pmuart10",
|
||||
@@ -517,8 +531,8 @@
|
||||
"period": 300
|
||||
},
|
||||
{
|
||||
"name": "36. Cенсор температуры Sht20",
|
||||
"num": 36,
|
||||
"name": "37. Cенсор температуры Sht20",
|
||||
"num": 37,
|
||||
"type": "Reading",
|
||||
"subtype": "Sht20t",
|
||||
"id": "tmp2",
|
||||
@@ -529,8 +543,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "37. Cенсор влажности Sht20",
|
||||
"num": 37,
|
||||
"name": "38. Cенсор влажности Sht20",
|
||||
"num": 38,
|
||||
"type": "Reading",
|
||||
"subtype": "Sht20h",
|
||||
"id": "Hum2",
|
||||
@@ -541,8 +555,8 @@
|
||||
"round": 1
|
||||
},
|
||||
{
|
||||
"name": "38. Сонар HC-SR04",
|
||||
"num": 38,
|
||||
"name": "39. Сонар HC-SR04",
|
||||
"num": 39,
|
||||
"type": "Reading",
|
||||
"subtype": "Sonar",
|
||||
"id": "sonar",
|
||||
@@ -557,8 +571,8 @@
|
||||
"header": "Экраны"
|
||||
},
|
||||
{
|
||||
"name": "39. LCD экран 2004",
|
||||
"num": 39,
|
||||
"name": "40. LCD экран 2004",
|
||||
"num": 40,
|
||||
"type": "Reading",
|
||||
"subtype": "Lcd2004",
|
||||
"id": "Lcd",
|
||||
@@ -572,8 +586,8 @@
|
||||
"id2show": "id датчика"
|
||||
},
|
||||
{
|
||||
"name": "40. LCD экран 1602",
|
||||
"num": 40,
|
||||
"name": "41. LCD экран 1602",
|
||||
"num": 41,
|
||||
"type": "Reading",
|
||||
"subtype": "Lcd2004",
|
||||
"id": "Lcd",
|
||||
|
||||
@@ -47,7 +47,7 @@ lib_deps_external =
|
||||
lib_deps =
|
||||
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
||||
dfrobot/DFRobotDFPlayerMini @ ^1.0.5
|
||||
CTBot @2.1.9
|
||||
witnessmenow/UniversalTelegramBot @ ^1.3.0
|
||||
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
||||
Adafruit AHTX0
|
||||
adafruit/Adafruit BME280 Library
|
||||
@@ -62,12 +62,14 @@ lib_deps =
|
||||
robtillaart/SHT2x@^0.1.1
|
||||
marcoschwartz/LiquidCrystal_I2C@^1.1.4
|
||||
build_src_filter =
|
||||
-<modules/exec/EspCam>
|
||||
|
||||
[env:esp32_4mb_fromitems]
|
||||
lib_deps =
|
||||
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
||||
https://github.com/RoboticsBrno/ServoESP32
|
||||
dfrobot/DFRobotDFPlayerMini @ ^1.0.5
|
||||
CTBot @2.1.9
|
||||
witnessmenow/UniversalTelegramBot @ ^1.3.0
|
||||
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
||||
Adafruit AHTX0
|
||||
adafruit/Adafruit BME280 Library
|
||||
@@ -82,4 +84,5 @@ lib_deps =
|
||||
robtillaart/SHT2x@^0.1.1
|
||||
marcoschwartz/LiquidCrystal_I2C@^1.1.4
|
||||
build_src_filter =
|
||||
-<modules/exec/EspCam>
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ void* getAPI_SysExt(String subtype, String params);
|
||||
void* getAPI_Variable(String subtype, String params);
|
||||
void* getAPI_ButtonIn(String subtype, String params);
|
||||
void* getAPI_ButtonOut(String subtype, String params);
|
||||
void* getAPI_IoTServo(String subtype, String params);
|
||||
void* getAPI_Mp3(String subtype, String params);
|
||||
void* getAPI_Telegram(String subtype, String params);
|
||||
void* getAPI_Timer(String subtype, String params);
|
||||
@@ -34,6 +35,7 @@ if ((tmpAPI = getAPI_SysExt(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_Variable(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_ButtonIn(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_ButtonOut(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_IoTServo(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_Mp3(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_Telegram(subtype, params)) != nullptr) return tmpAPI;
|
||||
if ((tmpAPI = getAPI_Timer(subtype, params)) != nullptr) return tmpAPI;
|
||||
|
||||
69
src/modules/exec/IoTServo/IoTServo.cpp
Normal file
69
src/modules/exec/IoTServo/IoTServo.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
#include "Global.h"
|
||||
#include "classes/IoTItem.h"
|
||||
|
||||
#include <Servo.h>
|
||||
|
||||
class IoTServo : public IoTItem {
|
||||
private:
|
||||
Servo servObj;
|
||||
int _apin, _oldValue;
|
||||
int _locmap1, _locmap2, _locmap3, _locmap4;
|
||||
|
||||
public:
|
||||
IoTServo(String parameters): IoTItem(parameters) {
|
||||
int pin;
|
||||
jsonRead(parameters, "pin", pin);
|
||||
servObj.attach(pin);
|
||||
|
||||
jsonRead(parameters, "apin", _apin);
|
||||
|
||||
String map;
|
||||
jsonRead(parameters, F("amap"), map, false);
|
||||
if (map != "") {
|
||||
_locmap1 = selectFromMarkerToMarker(map, ",", 0).toInt();
|
||||
_locmap2 = selectFromMarkerToMarker(map, ",", 1).toInt();
|
||||
_locmap3 = selectFromMarkerToMarker(map, ",", 2).toInt();
|
||||
_locmap4 = selectFromMarkerToMarker(map, ",", 3).toInt();
|
||||
}
|
||||
}
|
||||
|
||||
void doByInterval() {
|
||||
if (_apin >= 0) {
|
||||
value.valD = map(analogRead(_apin), _locmap1, _locmap2, _locmap3, _locmap4);
|
||||
if (abs(_oldValue - value.valD) > 1) {
|
||||
_oldValue = value.valD;
|
||||
servObj.write(_oldValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IoTValue execute(String command, std::vector<IoTValue> ¶m) {
|
||||
if (command == "rotate") {
|
||||
if (param.size()) {
|
||||
value.valD = param[0].valD;
|
||||
servObj.write(value.valD);
|
||||
regEvent(value.valD, "IoTServo");
|
||||
}
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
void setValue(IoTValue Value) {
|
||||
value = Value;
|
||||
if (value.isDecimal & (_oldValue != value.valD)) {
|
||||
_oldValue = value.valD;
|
||||
servObj.write(_oldValue);
|
||||
regEvent(value.valD, "IoTServo");
|
||||
}
|
||||
}
|
||||
|
||||
~IoTServo() {};
|
||||
};
|
||||
|
||||
void* getAPI_IoTServo(String subtype, String param) {
|
||||
if (subtype == F("IoTServo")) {
|
||||
return new IoTServo(param);
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
17
src/modules/exec/IoTServo/items.json
Normal file
17
src/modules/exec/IoTServo/items.json
Normal file
@@ -0,0 +1,17 @@
|
||||
[
|
||||
{
|
||||
"name": "Сервопривод",
|
||||
"num": 30,
|
||||
"type": "Writing",
|
||||
"subtype": "IoTServo",
|
||||
"id": "servo",
|
||||
"widget": "range",
|
||||
"page": "servo",
|
||||
"descr": "угол",
|
||||
|
||||
"int": 0,
|
||||
"pin": 12,
|
||||
"apin": -1,
|
||||
"amap": "0, 4096, 0, 180"
|
||||
}
|
||||
]
|
||||
7
src/modules/exec/IoTServo/platformio.ini
Normal file
7
src/modules/exec/IoTServo/platformio.ini
Normal file
@@ -0,0 +1,7 @@
|
||||
[env:esp8266_4mb]
|
||||
lib_deps =
|
||||
|
||||
|
||||
[env:esp32_4mb]
|
||||
lib_deps =
|
||||
https://github.com/RoboticsBrno/ServoESP32
|
||||
Reference in New Issue
Block a user