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