Merge pull request #124 from biveraxe/ver4dev

Пушим конфиг глубже в базовый класс IoTSensors и адаптируем текущие модули
This commit is contained in:
IoT Manager
2022-02-01 12:11:04 +01:00
committed by GitHub
4 changed files with 15 additions and 22 deletions

View File

@@ -4,15 +4,14 @@
class IoTSensor { class IoTSensor {
public: public:
IoTSensor(); IoTSensor(String parameters);
~IoTSensor(); ~IoTSensor();
void loop(); void loop();
virtual void doByInterval(); virtual void doByInterval();
void init(String key, String id, unsigned long interval);
void regEvent(String value, String consoleInfo); void regEvent(String value, String consoleInfo);
String getKey(); String getSubtype();
String getID(); String getID();
unsigned long currentMillis; unsigned long currentMillis;
@@ -20,11 +19,7 @@ class IoTSensor {
unsigned long difference; unsigned long difference;
protected: protected:
String _key; String _subtype;
String _id; String _id;
unsigned long _interval; unsigned long _interval;
}; };
// extern IoTSensor* myIoTSensor;
//модулям не нужно знать эту переменную
//- ок понял

View File

@@ -3,17 +3,16 @@
#include "Classes/ScenarioClass3.h" #include "Classes/ScenarioClass3.h"
#include "Classes/IoTSensor.h" #include "Classes/IoTSensor.h"
void IoTSensor::init(String key, String id, unsigned long interval) {
_interval = interval * 1000;
_key = key;
_id = id;
}
IoTSensor::IoTSensor() {} IoTSensor::IoTSensor(String parameters) {
_interval = jsonReadInt(parameters, "int") * 1000;
_subtype = jsonReadStr(parameters, "subtype");
_id = jsonReadStr(parameters, "id");
}
IoTSensor::~IoTSensor() {} IoTSensor::~IoTSensor() {}
String IoTSensor::getKey() { String IoTSensor::getSubtype() {
return _key; return _subtype;
} }
String IoTSensor::getID() { String IoTSensor::getID() {

View File

@@ -20,9 +20,7 @@ class AnalogAdc : public IoTSensor {
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса. //Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции: //Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
// jsonReadStr, jsonReadBool, jsonReadInt // jsonReadStr, jsonReadBool, jsonReadInt
AnalogAdc(String parameters) { AnalogAdc(String parameters): IoTSensor(parameters) {
init(jsonReadStr(parameters, "key"), jsonReadStr(parameters, "id"), jsonReadInt(parameters, "int")); //обязательный вызов
_pin = jsonReadInt(parameters, "pin"); _pin = jsonReadInt(parameters, "pin");
} }
//======================================================================================================= //=======================================================================================================

View File

@@ -27,8 +27,7 @@ class ds18b20 : public IoTSensor {
//Такие как ...begin и подставлять в них параметры полученные из web интерфейса. //Такие как ...begin и подставлять в них параметры полученные из web интерфейса.
//Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции: //Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции:
// jsonReadStr, jsonReadBool, jsonReadInt // jsonReadStr, jsonReadBool, jsonReadInt
ds18b20(String parameters) { ds18b20(String parameters): IoTSensor(parameters) {
init(jsonReadStr(parameters, "key"), jsonReadStr(parameters, "id"), jsonReadInt(parameters, "int")); //обязательный вызов
_pin = jsonReadInt(parameters, "pin"); _pin = jsonReadInt(parameters, "pin");
_index = jsonReadInt(parameters, "index"); _index = jsonReadInt(parameters, "index");
@@ -62,6 +61,8 @@ class ds18b20 : public IoTSensor {
sensors->requestTemperatures(); sensors->requestTemperatures();
//Определяем адрес. Если парамтер addr не установлен, то узнаем адрес по индексу //Определяем адрес. Если парамтер addr не установлен, то узнаем адрес по индексу
// TODO: понять как лучше. в текущей реализации адрес вычисляется каждый раз при опросе шины, это хорошо при отладке,
// но при постоянном контакте и использовании правильнее генерировать адрес при инициализации модуля. Но тогда нужно перезагружать устройство при новом датчике
DeviceAddress deviceAddress; DeviceAddress deviceAddress;
if (_addr == "") { if (_addr == "") {
sensors->getAddress(deviceAddress, _index); sensors->getAddress(deviceAddress, _index);