BACnetSensorGroup.cpp 2.53 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//================================================================================
// Name        : BACnetSensorGroup.cpp
// Author      : Micha Mueller
// Copyright   : Leibniz Supercomputing Centre
// Description : Source file for BACnet sensor group class.
//================================================================================

//================================================================================
// This file is part of DCDB (DataCenter DataBase)
// Copyright (C) 2018-2019 Leibniz Supercomputing Centre
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
//================================================================================
26
27
28
29
30

#include "BACnetSensorGroup.h"

#include <functional>

31
BACnetSensorGroup::BACnetSensorGroup(const std::string& name) : SensorGroupTemplate(name), _deviceInstance(0) {
32

33
34
}

35
36
37
BACnetSensorGroup::BACnetSensorGroup(const BACnetSensorGroup& other) : SensorGroupTemplate(other),
    _deviceInstance(other._deviceInstance) {}

38
39
BACnetSensorGroup::~BACnetSensorGroup() {}

40
41
42
43
44
45
46
BACnetSensorGroup& BACnetSensorGroup::operator=(const BACnetSensorGroup& other) {
  SensorGroupTemplate::operator =(other);
  _deviceInstance = other._deviceInstance;

  return *this;
}

47
48
49
50
void BACnetSensorGroup::read() {
	reading_t reading;
	reading.timestamp = getTimestamp();

51
	for(const auto& s : _sensors) {
52
		try {
53
			reading.value = _entity->readProperty(getDeviceInstance(), s->getObjectInstance(), s->getObjectType(), s->getPropertyId());
54
#ifdef DEBUG
Micha Mueller's avatar
Micha Mueller committed
55
			LOG(debug) << _groupName << "::" << s->getName() << " raw reading: \"" << reading.value << "\"";
56
#endif
57
			s->storeReading(reading, s->getFactor());
58
59
		} catch (const std::exception& e) {
			LOG(error) << _groupName << "::" << s->getName() << " could not read value: " << e.what();
60
			continue;
61
62
		}
	}
63

64
65
}

66
void BACnetSensorGroup::printConfig(LOG_LEVEL ll) {
67
  LOG_VAR(ll) << "            deviceInstance: " << _deviceInstance;
68
}