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 {
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;
//модулям не нужно знать эту переменную
//- ок понял

View File

@@ -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() {

View File

@@ -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");
}
//=======================================================================================================

View File

@@ -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);