Skip to content

Commit 50c6886

Browse files
committed
Implemented: Manual add Thermostat2 switch (type HE105)
1 parent 3801433 commit 50c6886

File tree

13 files changed

+188
-92
lines changed

13 files changed

+188
-92
lines changed

History.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Version 2.0.xxxx (October xxth 2014)
3636
- Implemented: Changing color in scene/groups will now also change it on actual device (for preview)
3737
- Fixed: OpenZWave, now fully supported domoticz as a secondary Controller (thanks to Cruguah)
3838
- Changed: 1Wire, better temperature checking
39+
- Implemented: Manual add Thermostat2 switch (type HE105)
3940

4041
Version 2.0.2025 (September 28th 2014)
4142
- Implemented: Fibaro Link data pusher

main/RFXNames.cpp

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -708,8 +708,8 @@ const char *RFX_Type_SubType_Values(const unsigned char dType, const unsigned ch
708708
{ pTypeThermostat1, sTypeDigimax, "Temperature,Set point,Mode,Status" },
709709
{ pTypeThermostat1, sTypeDigimaxShort, "Temperature,Set point,Mode,Status" },
710710

711-
{ pTypeThermostat2, sTypeHE105, "Not implemented" },
712-
{ pTypeThermostat2, sTypeRTS10, "Not implemented" },
711+
{ pTypeThermostat2, sTypeHE105, "Status" },
712+
{ pTypeThermostat2, sTypeRTS10, "Status" },
713713

714714
{ pTypeThermostat3, sTypeMertikG6RH4T1, "Status" },
715715
{ pTypeThermostat3, sTypeMertikG6RH4TB, "Status" },
@@ -1338,6 +1338,17 @@ void GetLightStatus(
13381338
case pTypeRemote:
13391339
lstatus="On";
13401340
break;
1341+
case pTypeThermostat2:
1342+
switch (nValue)
1343+
{
1344+
case thermostat2_sOff:
1345+
lstatus = "Off";
1346+
break;
1347+
case thermostat2_sOn:
1348+
lstatus = "On";
1349+
break;
1350+
}
1351+
break;
13411352
case pTypeThermostat3:
13421353
switch (nValue)
13431354
{
@@ -1939,6 +1950,23 @@ bool GetLightCommand(
19391950
case pTypeRemote:
19401951
cmd=light2_sOn;
19411952
break;
1953+
case pTypeThermostat2:
1954+
{
1955+
if (switchcmd == "On")
1956+
{
1957+
cmd = thermostat2_sOn;
1958+
}
1959+
else if (switchcmd == "Off")
1960+
{
1961+
cmd = thermostat2_sOff;
1962+
}
1963+
else
1964+
{
1965+
cmd = thermostat2_sOff;
1966+
}
1967+
return true;
1968+
}
1969+
break;
19421970
case pTypeThermostat3:
19431971
{
19441972
if (switchcmd=="On")

main/SQLHelper.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1621,6 +1621,7 @@ unsigned long long CSQLHelper::UpdateValue(const int HardwareID, const char* ID,
16211621
case pTypeCurtain:
16221622
case pTypeBlinds:
16231623
case pTypeRFY:
1624+
case pTypeThermostat2:
16241625
case pTypeThermostat3:
16251626
case pTypeRemote:
16261627
bIsLightSwitch=true;
@@ -1720,6 +1721,9 @@ unsigned long long CSQLHelper::UpdateValue(const int HardwareID, const char* ID,
17201721
case pTypeRFY:
17211722
newnValue=rfy_sUp;
17221723
break;
1724+
case pTypeThermostat2:
1725+
newnValue = thermostat2_sOff;
1726+
break;
17231727
case pTypeThermostat3:
17241728
newnValue=thermostat3_sOff;
17251729
break;
@@ -1788,6 +1792,9 @@ unsigned long long CSQLHelper::UpdateValue(const int HardwareID, const char* ID,
17881792
case pTypeRFY:
17891793
newnValue=rfy_sUp;
17901794
break;
1795+
case pTypeThermostat2:
1796+
newnValue = thermostat2_sOff;
1797+
break;
17911798
case pTypeThermostat3:
17921799
newnValue=thermostat3_sOff;
17931800
break;
@@ -1891,6 +1898,7 @@ unsigned long long CSQLHelper::UpdateValueInt(const int HardwareID, const char*
18911898
case pTypeBlinds:
18921899
case pTypeRFY:
18931900
case pTypeChime:
1901+
case pTypeThermostat2:
18941902
case pTypeThermostat3:
18951903
case pTypeRemote:
18961904
//Add Lighting log
@@ -6039,7 +6047,7 @@ void CSQLHelper::CheckDeviceTimeout()
60396047
std::vector<std::vector<std::string> > result;
60406048
char szTmp[300];
60416049
sprintf(szTmp,
6042-
"SELECT ID,Name,LastUpdate FROM DeviceStatus WHERE (Used!=0 AND LastUpdate<='%04d-%02d-%02d %02d:%02d:%02d' AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d) ORDER BY Name",
6050+
"SELECT ID,Name,LastUpdate FROM DeviceStatus WHERE (Used!=0 AND LastUpdate<='%04d-%02d-%02d %02d:%02d:%02d' AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d AND Type!=%d) ORDER BY Name",
60436051
ltime.tm_year+1900,ltime.tm_mon+1, ltime.tm_mday, ltime.tm_hour, ltime.tm_min, ltime.tm_sec,
60446052
pTypeLighting1,
60456053
pTypeLighting2,
@@ -6053,6 +6061,7 @@ void CSQLHelper::CheckDeviceTimeout()
60536061
pTypeBlinds,
60546062
pTypeRFY,
60556063
pTypeChime,
6064+
pTypeThermostat2,
60566065
pTypeThermostat3,
60576066
pTypeRemote
60586067
);

main/WebServer.cpp

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3659,6 +3659,7 @@ namespace http {
36593659
case pTypeBlinds:
36603660
case pTypeRFY:
36613661
case pTypeChime:
3662+
case pTypeThermostat2:
36623663
case pTypeThermostat3:
36633664
case pTypeRemote:
36643665
bdoAdd = true;
@@ -3729,6 +3730,7 @@ namespace http {
37293730
case pTypeBlinds:
37303731
case pTypeRFY:
37313732
case pTypeChime:
3733+
case pTypeThermostat2:
37323734
case pTypeThermostat3:
37333735
case pTypeRemote:
37343736
{
@@ -4202,20 +4204,20 @@ namespace http {
42024204
}
42034205
else if (lighttype == 104)
42044206
{
4205-
//Chime/Byron MP001
4206-
dtype = pTypeChime;
4207-
subtype = sTypeByronMP001;
4208-
std::string id = m_pWebEm->FindValue("id");
4207+
//HE105
4208+
dtype = pTypeThermostat2;
4209+
subtype = sTypeHE105;
42094210
sunitcode = m_pWebEm->FindValue("unitcode");
4210-
if (
4211-
(id == "") ||
4212-
(sunitcode == "")
4213-
)
4211+
if (sunitcode == "")
42144212
return;
4215-
int iUnitCode = atoi(sunitcode.c_str()) - 1;
4213+
//convert to hex, and we have our Unit Code
4214+
std::stringstream s_strid;
4215+
s_strid << std::hex << std::uppercase << sunitcode;
4216+
int iUnitCode;
4217+
s_strid >> iUnitCode;
42164218
sprintf(szTmp, "%d", iUnitCode);
42174219
sunitcode = szTmp;
4218-
devid = id;
4220+
devid = "1";
42194221
}
42204222
else if ((lighttype >= 200) && (lighttype < 300))
42214223
{
@@ -4504,20 +4506,20 @@ namespace http {
45044506
}
45054507
else if (lighttype == 104)
45064508
{
4507-
//Chime/Byron MP001
4508-
dtype = pTypeChime;
4509-
subtype = sTypeByronMP001;
4510-
std::string id = m_pWebEm->FindValue("id");
4509+
//HE105
4510+
dtype = pTypeThermostat2;
4511+
subtype = sTypeHE105;
45114512
sunitcode = m_pWebEm->FindValue("unitcode");
4512-
if (
4513-
(id == "") ||
4514-
(sunitcode == "")
4515-
)
4513+
if (sunitcode == "")
45164514
return;
4517-
int iUnitCode = atoi(sunitcode.c_str()) - 1;
4515+
//convert to hex, and we have our Unit Code
4516+
std::stringstream s_strid;
4517+
s_strid << std::hex << std::uppercase << sunitcode;
4518+
int iUnitCode;
4519+
s_strid >> iUnitCode;
45184520
sprintf(szTmp, "%d", iUnitCode);
45194521
sunitcode = szTmp;
4520-
devid = id;
4522+
devid = "1";
45214523
}
45224524
else if ((lighttype >= 200) && (lighttype < 300))
45234525
{
@@ -4632,6 +4634,7 @@ namespace http {
46324634
(dType == pTypeBlinds) ||
46334635
(dType == pTypeRFY) ||
46344636
(dType == pTypeChime) ||
4637+
(dType == pTypeThermostat2) ||
46354638
(dType == pTypeThermostat3) ||
46364639
(dType == pTypeRemote)
46374640
)
@@ -5425,6 +5428,7 @@ namespace http {
54255428
(dType != pTypeBlinds) &&
54265429
(dType != pTypeRFY) &&
54275430
(dType != pTypeChime) &&
5431+
(dType != pTypeThermostat2) &&
54285432
(dType != pTypeThermostat3) &&
54295433
(dType != pTypeRemote)
54305434
)
@@ -7433,6 +7437,7 @@ namespace http {
74337437
(dType != pTypeBlinds) &&
74347438
(dType != pTypeRFY) &&
74357439
(dType != pTypeChime) &&
7440+
(dType != pTypeThermostat2) &&
74367441
(dType != pTypeThermostat3) &&
74377442
(dType != pTypeRemote) &&
74387443
(dType != pTypeChime) &&
@@ -7619,6 +7624,7 @@ namespace http {
76197624
(dType == pTypeBlinds) ||
76207625
(dType == pTypeRFY) ||
76217626
(dType == pTypeChime) ||
7627+
(dType == pTypeThermostat2) ||
76227628
(dType == pTypeThermostat3) ||
76237629
(dType == pTypeRemote)
76247630
)
@@ -11634,6 +11640,7 @@ namespace http {
1163411640
(dType != pTypeRFY) &&
1163511641
(dType != pTypeRego6XXValue) &&
1163611642
(dType != pTypeChime) &&
11643+
(dType != pTypeThermostat2) &&
1163711644
(dType != pTypeThermostat3) &&
1163811645
(dType != pTypeRemote)
1163911646
)

0 commit comments

Comments
 (0)