Skip to content

Commit 729f9e1

Browse files
committed
Merge pull request #119 from domoticz/master
Update from original
2 parents ce2a980 + db665d3 commit 729f9e1

40 files changed

+210
-83
lines changed

Config/eneco/ed20.xml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Product xmlns='http://code.google.com/p/open-zwave/'>
3+
4+
<!-- ED2.0 Meter Adapter -->
5+
6+
<!-- Configuration -->
7+
<CommandClass id="112">
8+
<Value type="list" genre="config" instance="0" index="1" label="Gas Metering" size="1">
9+
<Help>Enable and disable gas metering</Help>
10+
<Item label="Enabled" value="1" />
11+
<Item label="Disabled" value="0" />
12+
</Value>
13+
14+
<Value type="short" genre="config" instance="1" index="2" label="Gas Meter resolution" min="0" max="9999" value="400" size="2">
15+
<Help>The resolution of the analog gas meter (revolutions per m³) in unsigned Q14.2 notation.</Help>
16+
</Value>
17+
18+
<Value type="list" genre="config" instance="2" index="3" label="Electricity metering" size="1">
19+
<Help>Set Gas Metering mode</Help>
20+
<Item label="Enabled" value="1" />
21+
<Item label="Disabled" value="0" />
22+
</Value>
23+
24+
<Value type="short" genre="config" instance="3" index="4" label="Electricity meter resolution" min="0" max="9999" value="400" size="2">
25+
<Help>The resolution of the analog electricity meter (revolutions per kWh) in unsigned Q14.2 notation.</Help>
26+
</Value>
27+
</CommandClass>
28+
29+
<!-- Association Groups -->
30+
31+
<!-- Remove COMMAND_CLASS_BASIC -->
32+
<CommandClass id="32" action="remove" />
33+
34+
<!-- Map endpoints to instances -->
35+
<CommandClass id="96" mapping="endpoints" />
36+
37+
<!-- Association Groups -->
38+
<CommandClass id="133">
39+
<Associations num_groups="1">
40+
<Group index="1" max_associations="1" label="Lifeline" auto="true"/>
41+
</Associations>
42+
</CommandClass>
43+
44+
</Product>

Config/manufacturer_specific.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
<Product type="0002" id="0001" name="EUR_COMETZ Wall Radiator Thermostat Valve Control" config="eurotronic/eur_cometz.xml"/>
224224
</Manufacturer>
225225
<Manufacturer id="0128" name="Eneco">
226-
<Product type="0000" id="0000" name="ED2.0 Meter Adapter"/>
226+
<Product type="0000" id="0000" name="ED2.0 Meter Adapter" config="eneco/ed20.xml"/>
227227
<Product type="0128" id="0000" name="ED2.0 Display"/>
228228
</Manufacturer>
229229
<Manufacturer id="011a" name="Enerwave">

hardware/OpenZWave.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,12 @@ const char *cclassStr(uint8 cc)
156156
return "METER PULSE";
157157
case 0x38:
158158
return "THERMOSTAT HEATING";
159+
case 0x3C:
160+
return "METER_TBL_CONFIG";
161+
case 0x3D:
162+
return "METER_TBL_MONITOR";
163+
case 0x3E:
164+
return "METER_TBL_PUSH";
159165
case 0x40:
160166
return "THERMOSTAT MODE";
161167
case 0x42:

hardware/ZWaveCommands.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
#define COMMAND_CLASS_ZIP_ADV_CLIENT 0x34
2525
#define COMMAND_CLASS_METER_PULSE 0x35
2626
#define COMMAND_CLASS_THERMOSTAT_HEATING 0x38
27+
28+
#define COMMAND_CLASS_METER_TBL_CONFIG 0x3C
29+
#define COMMAND_CLASS_METER_TBL_MONITOR 0x3D
30+
#define COMMAND_CLASS_METER_TBL_PUSH 0x3E
31+
32+
2733
#define COMMAND_CLASS_THERMOSTAT_MODE 0x40
2834
#define COMMAND_CLASS_THERMOSTAT_OPERATING_STATE 0x42
2935
#define COMMAND_CLASS_THERMOSTAT_SETPOINT 0x43

main/RFXNames.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ const char *Timer_Type_Desc(const int tType)
118118
{ TTYPE_BEFORESUNSET, "Before Sunset" },
119119
{ TTYPE_AFTERSUNSET, "After Sunset" },
120120
{ TTYPE_FIXEDDATETIME, "Fixed Date/Time" },
121+
{ TTYPE_DAYSODD, "Odd Day Numbers" },
122+
{ TTYPE_DAYSEVEN, "Even Day Numbers" },
121123
{ TTYPE_WEEKSODD, "Odd Week Numbers"},
122124
{ TTYPE_WEEKSEVEN, "Even Week Numbers" },
123125
{ TTYPE_MONTHLY, "Monthly" },

main/RFXNames.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ enum _eTimerType
4747
TTYPE_BEFORESUNSET,
4848
TTYPE_AFTERSUNSET,
4949
TTYPE_FIXEDDATETIME,
50+
TTYPE_DAYSODD,
51+
TTYPE_DAYSEVEN,
5052
TTYPE_WEEKSODD,
5153
TTYPE_WEEKSEVEN,
5254
TTYPE_MONTHLY,

main/SQLHelper.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#include "../msbuild/WindowsHelper.h"
3232
#endif
3333

34-
#define DB_VERSION 93
34+
#define DB_VERSION 94
3535

3636
extern http::server::CWebServerHelper m_webservers;
3737
extern std::string szWWWFolder;
@@ -1707,6 +1707,16 @@ bool CSQLHelper::OpenDatabase()
17071707
query("ALTER TABLE SceneTimers ADD COLUMN [Occurence] INTEGER DEFAULT 0");
17081708
}
17091709
}
1710+
if (dbversion < 94)
1711+
{
1712+
std::stringstream szQuery;
1713+
szQuery << "UPDATE Timers SET [Type]=[Type]+2 WHERE ([Type]>" << TTYPE_BEFORESUNSET << ")";
1714+
query(szQuery.str());
1715+
szQuery.clear();
1716+
szQuery.str("");
1717+
szQuery << "UPDATE SceneTimers SET [Type]=[Type]+2 WHERE ([Type]>" << TTYPE_BEFORESUNSET << ")";
1718+
query(szQuery.str());
1719+
}
17101720

17111721
}
17121722
else if (bNewInstall)

main/Scheduler.cpp

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -352,20 +352,18 @@ bool CScheduler::AdjustScheduleItem(tScheduleItem *pItem, bool bForceAddDay)
352352
int roffset = 0;
353353
if (pItem->bUseRandomness)
354354
{
355-
if ((pItem->timerType == TTYPE_ONTIME) ||
356-
(pItem->timerType == TTYPE_FIXEDDATETIME) ||
357-
(pItem->timerType == TTYPE_WEEKSODD) ||
358-
(pItem->timerType == TTYPE_WEEKSEVEN) ||
359-
(pItem->timerType == TTYPE_MONTHLY) ||
360-
(pItem->timerType == TTYPE_MONTHLY_WD) ||
361-
(pItem->timerType == TTYPE_YEARLY) ||
362-
(pItem->timerType == TTYPE_YEARLY_WD))
363-
roffset = rand() % (nRandomTimerFrame * 2) - nRandomTimerFrame;
364-
else
355+
if ((pItem->timerType == TTYPE_BEFORESUNRISE) ||
356+
(pItem->timerType == TTYPE_AFTERSUNRISE) ||
357+
(pItem->timerType == TTYPE_BEFORESUNSET) ||
358+
(pItem->timerType == TTYPE_AFTERSUNSET))
365359
roffset = rand() % (nRandomTimerFrame);
360+
else
361+
roffset = rand() % (nRandomTimerFrame * 2) - nRandomTimerFrame;
366362
}
367363

368364
if ((pItem->timerType == TTYPE_ONTIME) ||
365+
(pItem->timerType == TTYPE_DAYSODD) ||
366+
(pItem->timerType == TTYPE_DAYSEVEN) ||
369367
(pItem->timerType == TTYPE_WEEKSODD) ||
370368
(pItem->timerType == TTYPE_WEEKSEVEN))
371369
{
@@ -444,7 +442,7 @@ bool CScheduler::AdjustScheduleItem(tScheduleItem *pItem, bool bForceAddDay)
444442
ltime.tm_hour = pItem->startHour;
445443
ltime.tm_min = pItem->startMin;
446444

447-
//pItem->Days: mon=0 .. sat=5, sun=6
445+
//pItem->Days: mon=1 .. sat=32, sun=64
448446
//convert to : sun=0, mon=1 .. sat=6
449447
int daynum = (int)log2(pItem->Days) + 1;
450448
if (daynum == 7) daynum = 0;
@@ -504,7 +502,7 @@ bool CScheduler::AdjustScheduleItem(tScheduleItem *pItem, bool bForceAddDay)
504502
ltime.tm_min = pItem->startMin;
505503
ltime.tm_mon = pItem->Month - 1;
506504

507-
//pItem->Days: mon=0 .. sat=5, sun=6
505+
//pItem->Days: mon=1 .. sat=32, sun=64
508506
//convert to : sun=0, mon=1 .. sat=6
509507
int daynum = (int)log2(pItem->Days) + 1;
510508
if (daynum == 7) daynum = 0;
@@ -595,6 +593,14 @@ void CScheduler::CheckSchedules()
595593
{
596594
bOkToFire = true;
597595
}
596+
else if (itt->timerType == TTYPE_DAYSODD)
597+
{
598+
bOkToFire = (ltime.tm_mday % 2 != 0);
599+
}
600+
else if (itt->timerType == TTYPE_DAYSEVEN)
601+
{
602+
bOkToFire = (ltime.tm_mday % 2 == 0);
603+
}
598604
else
599605
{
600606
if (itt->Days & 0x80)

0 commit comments

Comments
 (0)