Files
IoTManager/src/modules/AnalogAdc.cpp

56 lines
3.9 KiB
C++
Raw Normal View History

#include "Global.h"
#include "Classes/IoTSensor.h"
//Это файл сенсора, в нем осуществляется чтение сенсора.
//для добавления сенсора вам нужно скопировать этот файл и заменить в нем текст AnalogAdc на название вашего сенсора
//Название должно быть уникальным, коротким и отражать суть сенсора.
2022-01-15 16:41:25 +01:00
class AnalogAdc : public IoTSensor {
private:
//=======================================================================================================
// Секция переменных.
//Это секция где Вы можете объявлять переменные и объекты arduino библиотек, что бы
//впоследствии использовать их в loop и setup
unsigned int _pin;
2022-01-15 16:41:25 +01:00
public:
//=======================================================================================================
2022-01-15 16:41:25 +01:00
// setup()
//это аналог setup из arduino. Здесь вы можете выполнять методы инициализации сенсора.
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
// jsonReadStr, jsonReadBool, jsonReadInt
2022-01-15 16:41:25 +01:00
AnalogAdc(String parameters) {
init(jsonReadStr(parameters, "key"), jsonReadStr(parameters, "id"), jsonReadInt(parameters, "int")); //обязательный вызов
2022-01-15 16:41:25 +01:00
_pin = jsonReadInt(parameters, "pin");
}
//=======================================================================================================
// doByInterval()
//это аналог loop из arduino, но вызываемый каждые int секунд, заданные в настройках. Здесь вы должны выполнить чтение вашего сенсора
//а затем выполнить regEvent - это регистрация произошедшего события чтения
2022-01-15 17:34:56 +01:00
//здесь так же доступны все переменные из секции переменных, и полученные в setup
//если у сенсора несколько величин то делайте несколько regEvent
//не используйте delay - помните, что данный loop общий для всех модулей. Если у вас планируется длительная операция, постарайтесь разбить ее на порции
//и выполнить за несколько тактов
2022-01-15 16:41:25 +01:00
void doByInterval() {
float value = analogRead(_pin);
regEvent((String)value, "AnalogAdc"); //обязательный вызов хотяб один
2022-01-15 16:41:25 +01:00
}
//=======================================================================================================
2022-01-15 16:41:25 +01:00
~AnalogAdc();
};
//после замены названия сенсора, на функцию можно не обращать внимания
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
2022-01-17 13:42:48 +03:00
//создание и контроль соответствующих глобальных переменных
2022-01-16 13:31:05 +01:00
void* getAPI_AnalogAdc(String subtype, String param) {
if (subtype == F("AnalogAdc")) {
2022-01-16 13:31:05 +01:00
return new AnalogAdc(param);
} else {
return nullptr;
}
}