2022-01-14 21:48:43 +01:00
# pragma once
2022-02-14 18:33:52 +03:00
# include "classes/IoTGpio.h"
2022-01-14 21:48:43 +01:00
2022-02-14 12:48:59 +03:00
struct IoTValue {
float valD = 0 ;
String valS = " " ;
bool isDecimal = true ;
} ;
2022-01-14 21:48:43 +01:00
2022-02-06 09:11:07 +03:00
class IoTItem {
2022-01-15 16:30:34 +01:00
public :
2022-02-06 09:11:07 +03:00
IoTItem ( String parameters ) ;
2022-02-25 15:38:32 +03:00
virtual ~ IoTItem ( ) { }
2022-03-08 13:10:34 +03:00
virtual void loop ( ) ;
2022-01-15 16:30:34 +01:00
virtual void doByInterval ( ) ;
2022-02-14 12:48:59 +03:00
virtual IoTValue execute ( String command , std : : vector < IoTValue > & param ) ;
2022-02-06 09:32:28 +03:00
2022-01-15 16:30:34 +01:00
void regEvent ( String value , String consoleInfo ) ;
2022-02-01 23:04:06 +03:00
void regEvent ( float value , String consoleInfo ) ;
2022-01-14 21:48:43 +01:00
2022-02-01 12:30:13 +03:00
String getSubtype ( ) ;
2022-01-15 16:30:34 +01:00
String getID ( ) ;
2022-02-26 22:42:57 +03:00
String getValue ( ) ;
2022-01-14 21:48:43 +01:00
2022-01-15 16:30:34 +01:00
unsigned long currentMillis ;
unsigned long prevMillis ;
unsigned long difference ;
2022-02-14 12:48:59 +03:00
IoTValue value ; // хранение основного значения, котрое обновляется из сценария, execute(), loop() или doByInterval()
2022-02-25 13:20:03 +03:00
bool iAmDead = false ; // признак необходимости удалить объект из базы
2022-02-25 22:44:04 +03:00
bool iAmLocal = true ; // признак локальной переменной
2022-02-14 12:48:59 +03:00
2022-03-27 09:11:24 +03:00
bool needSave = false ;
2022-02-21 20:00:18 +03:00
virtual IoTGpio * getGpioDriver ( ) ;
2022-02-22 22:48:35 +03:00
virtual void setValue ( IoTValue Value ) ;
2022-02-14 18:33:52 +03:00
2022-01-15 16:30:34 +01:00
protected :
2022-02-01 12:30:13 +03:00
String _subtype ;
2022-01-15 16:30:34 +01:00
String _id ;
unsigned long _interval ;
2022-02-01 23:04:06 +03:00
float _multiply ; // умножаем на значение
float _plus ; // увеличиваем на значение
int _map1 ;
int _map2 ;
int _map3 ;
int _map4 ;
int _round ; // 1, 10, 100, 1000, 10000
2022-01-15 16:30:34 +01:00
} ;
2022-02-14 12:48:59 +03:00
IoTItem * findIoTItem ( String name ) ; // поиск экземпляра элемента модуля по имени
2022-02-28 00:55:43 +03:00
String getItemValue ( String name ) ; // поиск плюс получение значения
2022-02-26 22:42:57 +03:00
StaticJsonDocument < JSON_BUFFER_SIZE > * getLocalItemsAsJSON ( ) ; // с б о р всех локальных занчений Items
2022-02-25 13:20:03 +03:00
class externalVariable : IoTItem { // объект, создаваемый при получении информации о событии на другом контроллере для хранения информации о событии указанное время
public :
externalVariable ( String parameters ) ;
~ externalVariable ( ) ;
void doByInterval ( ) ; // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения
2022-02-25 15:38:32 +03:00
2022-02-25 13:20:03 +03:00
} ;