Files
IoTManager/src/modules/AnalogAdc.cpp

59 lines
4.1 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();
};
//после замены названия сенсора, на функцию можно не обращать внимания
//если сенсор предполагает использование общего объекта библиотеки для нескольких экземпляров сенсора, то в данной функции необходимо предусмотреть
//создание и контроль соответствующих глобальных переменных (см. пример реализации сенсора ds18b20)
ModuleInfo getAPI_AnalogAdc(String subtype, String param) {
ModuleInfo mi;
mi.apiToComponent = nullptr;
mi.defConfig = "конфин такой вот джисон";
if (subtype == F("AnalogAdc")) {
mi.apiToComponent = new AnalogAdc(param);
}
return mi;
}