Skip to content

Commit 5266938

Browse files
committed
Merge branch 'develop' into feature/RestApiv2
2 parents 1bcbc94 + 17eb989 commit 5266938

2 files changed

Lines changed: 39 additions & 26 deletions

File tree

sources/plugins/EnOcean/changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
### 2.2.1
2+
* Fixes on A5-20-01 profile :
3+
* External sensor sent value
4+
* Battery level
5+
16
### 2.2.0
27
* Fix 4BS Teach-In variant 3
38
* Fix A5-20-01 profile

sources/plugins/EnOcean/profiles/hardCoded/Profile_A5_20_01.cpp

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -59,30 +59,38 @@ std::vector<boost::shared_ptr<const yApi::historization::IHistorizable>> CProfil
5959
if (rorg != CRorgs::k4BS_Telegram)
6060
return {}; // Some valves send extra messages, ignore them
6161

62-
YADOMS_LOG(trace) << "Message received from " + m_deviceId + " (A5-20-01) :";
63-
YADOMS_LOG(trace) << " - CV , Current Value : " << bitset_extract(data, 0, 8);
64-
YADOMS_LOG(trace) << " - SO , Service On : " << (bitset_extract(data, 8, 1) ? true : false);
65-
YADOMS_LOG(trace) << " - ENIE , Energy Input Enable : " << (bitset_extract(data, 9, 1) ? true : false);
66-
YADOMS_LOG(trace) << " - ES , Energy Storage : " << (bitset_extract(data, 10, 1) ? true : false);
67-
YADOMS_LOG(trace) << " - BCAP , Battery capacity : " << (bitset_extract(data, 11, 1) ? true : false);
68-
YADOMS_LOG(trace) << " - CCO , Contact Cover Open : " << (bitset_extract(data, 12, 1) ? true : false);
69-
YADOMS_LOG(trace) << " - FTS , Fail Temperature Sensor (out of range) : " << (bitset_extract(data, 13, 1) ? true : false);
70-
YADOMS_LOG(trace) << " - DWO , Detection, Windows Open : " << (bitset_extract(data, 14, 1) ? true : false);
71-
YADOMS_LOG(trace) << " - ACO , Actuator obstructed : " << (bitset_extract(data, 15, 1) ? true : false);
72-
YADOMS_LOG(trace) << " - TMP , Temperature : " << bitset_extract(data, 16, 8) << " => " <<
73-
byteToCelciusDegrees(bitset_extract(data, 16, 8)) << "°C";
74-
YADOMS_LOG(trace) << " - LRNB , Learn bit : " << (bitset_extract(data, 28, 1) ? true : false) << " => " <<
75-
(bitset_extract(data, 28, 1)
76-
? "data telegram"
77-
: "teach-in telegram");
62+
const auto cv = bitset_extract(data, 0, 8);
63+
const auto so = bitset_extract(data, 8, 1) ? true : false;
64+
const auto enie = bitset_extract(data, 9, 1) ? true : false;
65+
const auto es = bitset_extract(data, 10, 1) ? true : false;
66+
const auto bcap = bitset_extract(data, 11, 1) ? true : false; // true = change battery in the next days
67+
const auto cco = bitset_extract(data, 12, 1) ? true : false;
68+
const auto fts = bitset_extract(data, 13, 1) ? true : false;
69+
const auto dwo = bitset_extract(data, 14, 1) ? true : false;
70+
const auto aco = bitset_extract(data, 15, 1) ? true : false;
71+
const auto tmp = bitset_extract(data, 16, 8);
72+
const auto lrnb = bitset_extract(data, 28, 1) ? true : false;
7873

79-
m_energyInputEnable->set(bitset_extract(data, 9, 1) ? true : false);
80-
m_battery->set(bitset_extract(data, 10, 1) || bitset_extract(data, 11, 1) ? 100 : 10);
81-
m_coverOpen->set(bitset_extract(data, 12, 1) ? true : false);
82-
m_temperatureFailure->set(bitset_extract(data, 13, 1) ? true : false);
83-
m_windowOpen->set(bitset_extract(data, 14, 1) ? true : false);
84-
m_actuatorObstructed->set(bitset_extract(data, 15, 1) ? true : false);
85-
m_internalSensorTemperature->set(byteToCelciusDegrees(bitset_extract(data, 16, 8)));
74+
YADOMS_LOG(trace) << "Message received from " + m_deviceId + " (A5-20-01) :";
75+
YADOMS_LOG(trace) << " - CV , Current Value : " << cv;
76+
YADOMS_LOG(trace) << " - SO , Service On : " << so;
77+
YADOMS_LOG(trace) << " - ENIE , Energy Input Enable : " << enie;
78+
YADOMS_LOG(trace) << " - ES , Energy Storage : " << es;
79+
YADOMS_LOG(trace) << " - BCAP , Battery capacity : " << bcap;
80+
YADOMS_LOG(trace) << " - CCO , Contact Cover Open : " << cco;
81+
YADOMS_LOG(trace) << " - FTS , Fail Temperature Sensor (out of range) : " << fts;
82+
YADOMS_LOG(trace) << " - DWO , Detection, Windows Open : " << dwo;
83+
YADOMS_LOG(trace) << " - ACO , Actuator obstructed : " << aco;
84+
YADOMS_LOG(trace) << " - TMP , Temperature : " << tmp << " => " << byteToCelciusDegrees(tmp) << "°C";
85+
YADOMS_LOG(trace) << " - LRNB , Learn bit : " << lrnb << " => " << (lrnb ? "data telegram" : "teach-in telegram");
86+
87+
m_energyInputEnable->set(enie);
88+
m_battery->set(es ? 100 : (bcap ? 10 : 50));
89+
m_coverOpen->set(cco);
90+
m_temperatureFailure->set(fts);
91+
m_windowOpen->set(dwo);
92+
m_actuatorObstructed->set(aco);
93+
m_internalSensorTemperature->set(byteToCelciusDegrees(tmp));
8694

8795
if (m_pendingCommand.empty())
8896
{
@@ -153,10 +161,10 @@ void CProfile_A5_20_01::sendCommand(const std::string& keyword,
153161
m_pendingCommand.reset();
154162

155163
bitset_insert(m_pendingCommand, 0, 8, m_setPointModeIsTemperature
156-
? (m_useInternalSensor ? 0 : celciusDegreesToByte(m_temperatureSetPoint->get()))
164+
? celciusDegreesToByte(m_temperatureSetPoint->get())
157165
: m_valvePosition->get());
158166
bitset_insert(m_pendingCommand, 21, 1, m_setPointModeIsTemperature);
159-
bitset_insert(m_pendingCommand, 8, 8, 255 - celciusDegreesToByte(m_externalSensorTemperature->get()));
167+
bitset_insert(m_pendingCommand, 8, 8, m_useInternalSensor ? 0 : (255 - celciusDegreesToByte(m_externalSensorTemperature->get())));
160168
bitset_insert(m_pendingCommand, 23, 1, false);
161169
bitset_insert(m_pendingCommand, 16, 1, false);
162170
bitset_insert(m_pendingCommand, 17, 1, false);
@@ -182,5 +190,5 @@ double CProfile_A5_20_01::byteToCelciusDegrees(const unsigned int byte)
182190

183191
std::uint8_t CProfile_A5_20_01::celciusDegreesToByte(const double degrees)
184192
{
185-
return static_cast<std::uint8_t>(std::round(m_temperatureSetPoint->get() * 255.0 / 40.0));
193+
return static_cast<std::uint8_t>(std::round(degrees * 255.0 / 40.0));
186194
}

0 commit comments

Comments
 (0)