diff --git a/include/classes/IoTSensor.h b/include/classes/IoTSensor.h index caf08d9c..40807f75 100644 --- a/include/classes/IoTSensor.h +++ b/include/classes/IoTSensor.h @@ -4,15 +4,14 @@ class IoTSensor { public: - IoTSensor(); + IoTSensor(String parameters); ~IoTSensor(); void loop(); virtual void doByInterval(); - void init(String key, String id, unsigned long interval); void regEvent(String value, String consoleInfo); - String getKey(); + String getSubtype(); String getID(); unsigned long currentMillis; @@ -20,11 +19,7 @@ class IoTSensor { unsigned long difference; protected: - String _key; + String _subtype; String _id; unsigned long _interval; }; - -// extern IoTSensor* myIoTSensor; -//модулям не нужно знать эту переменную -//- ок понял \ No newline at end of file diff --git a/src/classes/IoTSensor.cpp b/src/classes/IoTSensor.cpp index eb461b86..fa253b5c 100644 --- a/src/classes/IoTSensor.cpp +++ b/src/classes/IoTSensor.cpp @@ -3,17 +3,16 @@ #include "Classes/ScenarioClass3.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() {} -String IoTSensor::getKey() { - return _key; +String IoTSensor::getSubtype() { + return _subtype; } String IoTSensor::getID() { diff --git a/src/modules/AnalogAdc.cpp b/src/modules/AnalogAdc.cpp index 5d2b3e6e..ae298f1d 100644 --- a/src/modules/AnalogAdc.cpp +++ b/src/modules/AnalogAdc.cpp @@ -20,9 +20,7 @@ class AnalogAdc : public IoTSensor { //Такие как ...begin и подставлять в них параметры полученные из web интерфейса. //Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции: // jsonReadStr, jsonReadBool, jsonReadInt - AnalogAdc(String parameters) { - init(jsonReadStr(parameters, "key"), jsonReadStr(parameters, "id"), jsonReadInt(parameters, "int")); //обязательный вызов - + AnalogAdc(String parameters): IoTSensor(parameters) { _pin = jsonReadInt(parameters, "pin"); } //======================================================================================================= diff --git a/src/modules/ds18b20.cpp b/src/modules/ds18b20.cpp index cefd7696..c227dc2c 100644 --- a/src/modules/ds18b20.cpp +++ b/src/modules/ds18b20.cpp @@ -27,9 +27,8 @@ class ds18b20 : public IoTSensor { //Такие как ...begin и подставлять в них параметры полученные из web интерфейса. //Все параметры хранятся в перемененной parameters, вы можете прочитать любой параметр используя jsonRead функции: // jsonReadStr, jsonReadBool, jsonReadInt - ds18b20(String parameters) { - init(jsonReadStr(parameters, "key"), jsonReadStr(parameters, "id"), jsonReadInt(parameters, "int")); //обязательный вызов - + ds18b20(String parameters): IoTSensor(parameters) { + _pin = jsonReadInt(parameters, "pin"); _index = jsonReadInt(parameters, "index"); _addr = jsonReadStr(parameters, "addr"); @@ -62,6 +61,8 @@ class ds18b20 : public IoTSensor { sensors->requestTemperatures(); //Определяем адрес. Если парамтер addr не установлен, то узнаем адрес по индексу + // TODO: понять как лучше. в текущей реализации адрес вычисляется каждый раз при опросе шины, это хорошо при отладке, + // но при постоянном контакте и использовании правильнее генерировать адрес при инициализации модуля. Но тогда нужно перезагружать устройство при новом датчике DeviceAddress deviceAddress; if (_addr == "") { sensors->getAddress(deviceAddress, _index);