mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
исправления, компиляция для 32
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
"name": "IoTmanagerVer4",
|
||||
"apssid": "IoTmanager",
|
||||
"appass": "",
|
||||
"routerssid": "rise",
|
||||
"routerpass": "hostel3333",
|
||||
"routerssid": "MercureSpeedZone",
|
||||
"routerpass": "",
|
||||
"timezone": 1,
|
||||
"ntp": "pool.ntp.org",
|
||||
"weblogin": "admin",
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#pragma once
|
||||
#include "Global.h"
|
||||
|
||||
#ifdef ESP8266
|
||||
//эта библиотека встроена в ядро
|
||||
#include "ESPAsyncUDP.h"
|
||||
#else
|
||||
#include "AsyncUDP.h"
|
||||
|
||||
@@ -31,12 +31,13 @@ data_dir = data_svelte
|
||||
[common_env_data]
|
||||
lib_deps_external =
|
||||
bblanchon/ArduinoJson @6.18.0
|
||||
me-no-dev/ESP Async WebServer
|
||||
;me-no-dev/ESP Async WebServer
|
||||
Links2004/WebSockets
|
||||
knolleary/PubSubClient
|
||||
|
||||
[env:esp8266_4mb_fromitems]
|
||||
lib_deps =
|
||||
ESPAsyncUDP
|
||||
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
||||
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
||||
Adafruit AHTX0
|
||||
@@ -52,6 +53,7 @@ lib_deps =
|
||||
|
||||
[env:esp32_4mb_fromitems]
|
||||
lib_deps =
|
||||
plerup/EspSoftwareSerial
|
||||
adafruit/Adafruit MCP23017 Arduino Library@^2.0.2
|
||||
adafruit/Adafruit ADS1X15 @ ^2.3.0
|
||||
Adafruit AHTX0
|
||||
|
||||
@@ -67,7 +67,7 @@ void setup() {
|
||||
// IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}"));
|
||||
|
||||
// пример получения JSON всех Items
|
||||
Serial.println(getParamsJson());
|
||||
// Serial.println(getParamsJson());
|
||||
|
||||
//чтение одного параметра
|
||||
// Serial.println(findIoTItem("t1")->getValue());
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@
|
||||
should also work with other Sds sensors.
|
||||
|
||||
https://github.com/lewapek/sds-dust-sensors-arduino-library
|
||||
|
||||
|
||||
adapted for version 4 @cmche
|
||||
******************************************************************/
|
||||
|
||||
@@ -14,9 +14,19 @@ extern IoTGpio IoTgpio;
|
||||
|
||||
#include "SdsDustSensor.h"
|
||||
|
||||
int rxPinSDS = 13; // D7 – подключаем к Tx сенсора
|
||||
int txPinSDS = 12; // D6 – подключаем к Rx сенсора
|
||||
//встроена в ядро для 8266, для 32 по этому же имени обращаемся к другой библиотеке plerup/EspSoftwareSerial
|
||||
#include <SoftwareSerial.h>
|
||||
|
||||
#ifdef ESP8266
|
||||
int rxPinSDS = 13; // D7 – подключаем к Tx сенсора
|
||||
int txPinSDS = 12; // D6 – подключаем к Rx сенсора
|
||||
SdsDustSensor sds(rxPinSDS, txPinSDS);
|
||||
#endif
|
||||
#ifdef ESP32
|
||||
#include <HardwareSerial.h>
|
||||
HardwareSerial sdsSerial(2);
|
||||
SdsDustSensor sds(sdsSerial);
|
||||
#endif
|
||||
|
||||
unsigned int warmUp;
|
||||
unsigned int period;
|
||||
@@ -29,29 +39,29 @@ float Sds011request(int sensorID);
|
||||
//для добавления сенсора вам нужно скопировать этот файл и заменить в нем текст AnalogAdc на название вашего сенсора
|
||||
//Название должно быть уникальным, коротким и отражать суть сенсора.
|
||||
|
||||
class Sds011_25 : public IoTItem
|
||||
{
|
||||
private:
|
||||
class Sds011_25 : public IoTItem {
|
||||
private:
|
||||
//=======================================================================================================
|
||||
// Секция переменных.
|
||||
//Это секция где Вы можете объявлять переменные и объекты arduino библиотек, что бы
|
||||
//впоследствии использовать их в loop и setup
|
||||
// unsigned int _pin;
|
||||
|
||||
public:
|
||||
public:
|
||||
//=======================================================================================================
|
||||
// setup()
|
||||
//это аналог setup из arduino. Здесь вы можете выполнять методы инициализации сенсора.
|
||||
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
|
||||
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
|
||||
// jsonReadStr, jsonReadBool, jsonReadInt
|
||||
Sds011_25(String parameters) : IoTItem(parameters)
|
||||
{
|
||||
Sds011_25(String parameters) : IoTItem(parameters) {
|
||||
// _pin = jsonReadInt(parameters, "pin");
|
||||
#ifdef ESP8266
|
||||
rxPinSDS = jsonReadInt(parameters, "rxPin");
|
||||
txPinSDS = jsonReadInt(parameters, "txPin");
|
||||
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
||||
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
||||
#endif
|
||||
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
||||
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
||||
}
|
||||
//=======================================================================================================
|
||||
// doByInterval()
|
||||
@@ -61,42 +71,41 @@ public:
|
||||
//если у сенсора несколько величин то делайте несколько regEvent
|
||||
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
|
||||
//и выполнить за несколько тактов
|
||||
void doByInterval()
|
||||
{
|
||||
void doByInterval() {
|
||||
SDS011_init();
|
||||
Serial.println("request from 25");
|
||||
value.valD = Sds011request(25);
|
||||
|
||||
regEvent(value.valD, "Sds011_25"); //обязательный вызов хотяб один
|
||||
regEvent(value.valD, "Sds011_25"); //обязательный вызов хотяб один
|
||||
}
|
||||
|
||||
~Sds011_25() {};
|
||||
~Sds011_25(){};
|
||||
};
|
||||
|
||||
//////////////////////////////////// for PM 10//=
|
||||
|
||||
class Sds011_10 : public IoTItem
|
||||
{
|
||||
private:
|
||||
class Sds011_10 : public IoTItem {
|
||||
private:
|
||||
//=======================================================================================================
|
||||
// Секция переменных.
|
||||
//Это секция где Вы можете объявлять переменные и объекты arduino библиотек, что бы
|
||||
//впоследствии использовать их в loop и setup
|
||||
|
||||
public:
|
||||
public:
|
||||
//=======================================================================================================
|
||||
// setup()
|
||||
//это аналог setup из arduino. Здесь вы можете выполнять методы инициализации сенсора.
|
||||
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
|
||||
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
|
||||
// jsonReadStr, jsonReadBool, jsonReadInt
|
||||
Sds011_10(String parameters) : IoTItem(parameters)
|
||||
{
|
||||
// _pin = jsonReadInt(parameters, "pin");
|
||||
Sds011_10(String parameters) : IoTItem(parameters) {
|
||||
// _pin = jsonReadInt(parameters, "pin");
|
||||
#ifdef ESP8266
|
||||
rxPinSDS = jsonReadInt(parameters, "rxPin");
|
||||
txPinSDS = jsonReadInt(parameters, "txPin");
|
||||
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
||||
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
||||
#endif
|
||||
warmUp = jsonReadInt(parameters, "warmUp"); // сек. пробужнение должен быть больше
|
||||
period = jsonReadInt(parameters, "period"); // сек. время зарогрева/продувки, затем идут замеры
|
||||
}
|
||||
//=======================================================================================================
|
||||
// doByInterval()
|
||||
@@ -107,46 +116,37 @@ public:
|
||||
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
|
||||
//и выполнить за несколько тактов
|
||||
|
||||
void doByInterval()
|
||||
{
|
||||
void doByInterval() {
|
||||
SDS011_init();
|
||||
Serial.println("request from 10");
|
||||
value.valD = Sds011request(10);
|
||||
|
||||
regEvent(value.valD, "Sds011_10"); //обязательный вызов хотяб один
|
||||
regEvent(value.valD, "Sds011_10"); //обязательный вызов хотяб один
|
||||
}
|
||||
~Sds011_10() {};
|
||||
~Sds011_10(){};
|
||||
};
|
||||
|
||||
//после замены названия сенсора, на функцию можно не обращать внимания
|
||||
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
|
||||
//создание и контроль соответствующих глобальных переменных
|
||||
void *getAPI_Sds011(String subtype, String param)
|
||||
{
|
||||
if (subtype == F("Sds011_25"))
|
||||
{
|
||||
void* getAPI_Sds011(String subtype, String param) {
|
||||
if (subtype == F("Sds011_25")) {
|
||||
return new Sds011_25(param);
|
||||
}
|
||||
else if (subtype == F("Sds011_10"))
|
||||
{
|
||||
} else if (subtype == F("Sds011_10")) {
|
||||
return new Sds011_10(param);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
float Sds011request(int sensorID)
|
||||
{
|
||||
float Sds011request(int sensorID) {
|
||||
float reply = 0;
|
||||
static int a = 0;
|
||||
static float pm25 = 0;
|
||||
static float pm10 = 0;
|
||||
static int startMillis = millis();
|
||||
|
||||
if (a == 0)
|
||||
{
|
||||
if (a == 0) {
|
||||
Serial.print("SDS011 ... warmUp = ");
|
||||
Serial.print(warmUp);
|
||||
Serial.print(" period = ");
|
||||
@@ -155,11 +155,9 @@ float Sds011request(int sensorID)
|
||||
startMillis = millis();
|
||||
a = a + 1;
|
||||
}
|
||||
if (a == 1 && millis() >= (startMillis + warmUp * 1000))
|
||||
{
|
||||
if (a == 1 && millis() >= (startMillis + warmUp * 1000)) {
|
||||
PmResult pm = sds.readPm();
|
||||
if (pm.isOk())
|
||||
{
|
||||
if (pm.isOk()) {
|
||||
pm25 = pm.pm25;
|
||||
pm10 = pm.pm10;
|
||||
Serial.print("PM2.5 = ");
|
||||
@@ -168,41 +166,33 @@ float Sds011request(int sensorID)
|
||||
Serial.println(pm10);
|
||||
a = a + 1;
|
||||
sds.sleep();
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
Serial.print("Could not read values from sensor 25, reason: ");
|
||||
Serial.println(pm.statusToString());
|
||||
a = a + 1;
|
||||
}
|
||||
}
|
||||
if (a > 1 && millis() >= (startMillis + period * 1000))
|
||||
{
|
||||
if (a > 1 && millis() >= (startMillis + period * 1000)) {
|
||||
Serial.println("end of period for pm25");
|
||||
a = 0;
|
||||
}
|
||||
if (sensorID == 25)
|
||||
{
|
||||
if (sensorID == 25) {
|
||||
reply = pm25;
|
||||
}
|
||||
if (sensorID == 10)
|
||||
{
|
||||
if (sensorID == 10) {
|
||||
reply = pm10;
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
void SDS011_init()
|
||||
{
|
||||
if (SDS011_init_flag)
|
||||
{
|
||||
void SDS011_init() {
|
||||
if (SDS011_init_flag) {
|
||||
sds.begin();
|
||||
Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
|
||||
// Serial.println(sds.setActiveReportingMode().toString()); //
|
||||
Serial.println(sds.queryFirmwareVersion().toString()); // prints firmware version
|
||||
// Serial.println(sds.setActiveReportingMode().toString()); //
|
||||
String ReportingMode = sds.setActiveReportingMode().toString();
|
||||
Serial.println(ReportingMode);
|
||||
if (ReportingMode == "Mode: active")
|
||||
{
|
||||
if (ReportingMode == "Mode: active") {
|
||||
SDS011_init_flag = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user