BACnetSensorGroup.cpp 2.63 KB
Newer Older
1
2
3
//================================================================================
// Name        : BACnetSensorGroup.cpp
// Author      : Micha Mueller
Micha Müller's avatar
Micha Müller committed
4
// Contact     : info@dcdb.it
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 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.
//================================================================================
27
28
29
30
31

#include "BACnetSensorGroup.h"

#include <functional>

32
BACnetSensorGroup::BACnetSensorGroup(const std::string &name)
33
    : SensorGroupTemplateEntity(name), _deviceInstance(0) {
34
35
}

36
BACnetSensorGroup::BACnetSensorGroup(const BACnetSensorGroup &other)
37
    : SensorGroupTemplateEntity(other),
38
      _deviceInstance(other._deviceInstance) {}
39

40
41
BACnetSensorGroup::~BACnetSensorGroup() {}

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

46
	return *this;
47
48
}

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

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

67
void BACnetSensorGroup::printGroupConfig(LOG_LEVEL ll, unsigned int leadingSpaces) {
68
69
	std::string leading(leadingSpaces, ' ');
	LOG_VAR(ll) << leading << "deviceInstance: " << _deviceInstance;
70
}