Skip to content

Commit f07b51a

Browse files
Spugna85gizmocuz
authored andcommitted
OpenWebNet: change wait time between energy totalizer request (#2104)
* OpenWebNet: bug fix and burglar alarm battery, network and maintenance status and fix warnings Fix wrong automatic creation of auxiliary device and update status of dry contact, introduced with the development of CEN PLUS commands. 'Unit' must be left free for the interface, so the alarm zone is used as the 'where' and not as 'interface' in UpdateAlarm function. After this update, the alarm device will have a different ID. Adding devices to battery status, network status and alarm maintenance. * OpenWebNet: fix close socket command problem * OpenWebNet: GEN, AREA and GROUP devices
1 parent 7d40a8b commit f07b51a

File tree

2 files changed

+106
-48
lines changed

2 files changed

+106
-48
lines changed

hardware/OpenWebNetTCP.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ License: Public domain
3636
#define OPENWEBNET_BUFFER_SIZE 1024
3737
#define OPENWEBNET_SOCKET_SUCCESS 0
3838

39+
#define SCAN_TIME_REQ_AUTO_UPDATE_POWER (14400) // 4hour = 240min = 14400sec
40+
#define SCAN_TIME_REQ_ENERGY_TOTALIZER (900) // 15min = 900sec
41+
3942
#define OPENWEBNET_GROUP_ID 0x00008000
4043

4144
#define OPENWEBNET_AUTOMATION "AUTOMATION"
@@ -50,7 +53,7 @@ License: Public domain
5053
#define OPENWEBNET_AUXILIARY "AUXILIARY"
5154
#define OPENWEBNET_DRY_CONTACT "DRYCONTACT"
5255
#define OPENWEBNET_ENERGY_MANAGEMENT "ENERGY MANAGEMENT"
53-
56+
#define OPENWEBNET_SOUND_DIFFUSION "SOUND DIFFUSION"
5457

5558
/**
5659
Create new hardware OpenWebNet instance
@@ -85,6 +88,7 @@ bool COpenWebNetTCP::StartHardware()
8588
m_stoprequested = false;
8689
m_bIsStarted = true;
8790
mask_request_status = 0x1; // Set scan all devices
91+
LastScanTimeEnergy = LastScanTimeEnergyTot = 0; // Force first request command
8892

8993
//Start monitor thread
9094
m_monitorThread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&COpenWebNetTCP::MonitorFrames, this)));
@@ -1075,11 +1079,13 @@ void COpenWebNetTCP::UpdateDeviceValue(vector<bt_openwebnet>::iterator iter)
10751079
case WHO_SCENARIO_SCHEDULER_SWITCH: // 15
10761080
case WHO_AUDIO: // 16
10771081
case WHO_SCENARIO_PROGRAMMING: // 17
1082+
case WHO_SOUND_DIFFUSION: // 22
10781083
case WHO_LIHGTING_MANAGEMENT: // 24
10791084
case WHO_ZIGBEE_DIAGNOSTIC: // 1000
10801085
case WHO_AUTOMATIC_DIAGNOSTIC: // 1001
10811086
case WHO_THERMOREGULATION_DIAGNOSTIC_FAILURES: // 1004
10821087
case WHO_DEVICE_DIAGNOSTIC: // 1013
1088+
case WHO_ENERGY_MANAGEMENT_DIAGNOSTIC: // 1018
10831089
_log.Log(LOG_ERROR, "COpenWebNetTCP: Who=%s not yet supported!", who.c_str());
10841090
return;
10851091
default:
@@ -1564,14 +1570,13 @@ void COpenWebNetTCP::Do_Work()
15641570

15651571
sleep_seconds(OPENWEBNET_HEARTBEAT_DELAY);
15661572

1567-
if ((mytime(NULL) - LastScanTimeEnergy) > 300)
1573+
if ((mytime(NULL) - LastScanTimeEnergy) > SCAN_TIME_REQ_AUTO_UPDATE_POWER)
15681574
{
1569-
1570-
requestAutomaticUpdatePower(300 / 60);
1575+
requestAutomaticUpdatePower(255); // automatic update for 255 minutes
15711576
LastScanTimeEnergy = mytime(NULL);
15721577
}
15731578

1574-
if ((mytime(NULL) - LastScanTimeEnergyTot) > 30)
1579+
if ((mytime(NULL) - LastScanTimeEnergyTot) > SCAN_TIME_REQ_ENERGY_TOTALIZER)
15751580
{
15761581
requestEnergyTotalizer();
15771582
LastScanTimeEnergyTot = mytime(NULL);

hardware/openwebnet/bt_openwebnet.h

Lines changed: 96 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,8 @@
1616
#define OPENWEBNET_COMMAND_SOCKET_DURATION 30
1717

1818

19-
typedef enum {
20-
TEMPERATURE_CONTROL_DIMENSION_TEMPERATURE = 0,
21-
TEMPERATURE_CONTROL_DIMENSION_FAN_COIL_SPEED = 11,
22-
TEMPERATURE_CONTROL_DIMENSION_COMPLETE_PROBE_STATUS = 12,
23-
TEMPERATURE_CONTROL_DIMENSION_LOCAL_SET_OFFSET = 13,
24-
TEMPERATURE_CONTROL_DIMENSION_SET_POINT_TEMPERATURE = 14,
25-
TEMPERATURE_CONTROL_DIMENSION_VALVES_STATUS = 19,
26-
TEMPERATURE_CONTROL_DIMENSION_ACTUATOR_STATUS = 20,
27-
TEMPERATURE_CONTROL_DIMENSION_SPLIT_CONTROL = 22,
28-
TEMPERATURE_CONTROL_DIMENSION_END_DATE_HOLIDAY_SCENARIO = 30
29-
}_eTemperatureControlDimension;
30-
31-
typedef enum {
19+
// OpenWebNet Who
20+
enum {
3221
WHO_SCENARIO = 0,
3322
WHO_LIGHTING = 1,
3423
WHO_AUTOMATION = 2,
@@ -52,11 +41,12 @@ typedef enum {
5241
WHO_THERMOREGULATION_DIAGNOSTIC_FAILURES = 1004,
5342
WHO_DEVICE_DIAGNOSTIC = 1013,
5443
WHO_ENERGY_MANAGEMENT_DIAGNOSTIC = 1018
55-
}_eWho;
44+
};
5645

5746
//"What" enumerations
5847

59-
typedef enum {
48+
// Scenario what
49+
enum {
6050
SCENARIO_WHAT_SCENARIO1 = 1,
6151
SCENARIO_WHAT_SCENARIO2 = 2,
6252
SCENARIO_WHAT_SCENARIO3 = 3,
@@ -84,9 +74,10 @@ typedef enum {
8474
SCENARIO_WHAT_UNLOCK_SCENARIO_CENTRAL_UNIT = 44,
8575
SCENARIO_WHAT_UNAVAILABLE_SCENARIOS_CENTRAL_UNIT = 45,
8676
SCENARIO_WHAT_ERASE_SCENARIOS_CENTRAL_UNIT = 46
87-
}_eScenarioWhat;
77+
};
8878

89-
typedef enum {
79+
// Lighting what
80+
enum {
9081
LIGHTING_WHAT_OFF = 0,
9182
LIGHTING_WHAT_ON = 1,
9283
LIGHTING_WHAT_20 = 2,
@@ -119,31 +110,34 @@ typedef enum {
119110
LIGHTING_WHAT_UP_ONE_LEVEL = 30,
120111
LIGHTING_WHAT_DOWN_ONE_LEVEL = 31,
121112
LIGHTING_WHAT_COMMAND_TRANSLATION = 1000
122-
}_eLightingWhat;
123-
113+
};
124114

125-
typedef enum {
115+
// Auxiliary what
116+
enum {
126117
AUXILIARY_WHAT_OFF = 0,
127118
AUXILIARY_WHAT_ON = 1
128-
}_eAuxiliaryWhat;
119+
};
129120

130-
typedef enum {
121+
// Automation what
122+
enum {
131123
AUTOMATION_WHAT_STOP = 0,
132124
AUTOMATION_WHAT_UP = 1,
133125
AUTOMATION_WHAT_DOWN = 2,
134126
AUTOMATION_WHAT_STOP_ADVANCED = 10,
135127
AUTOMATION_WHAT_UP_ADVANCED = 11,
136128
AUTOMATION_WHAT_DOWN_ADVANCED = 12
137-
}_eAutomationWhat;
129+
};
138130

139-
typedef enum {
131+
// Load control what
132+
enum {
140133
LOAD_CONTROL_WHAT_DISABLED = 0,
141134
LOAD_CONTROL_WHAT_ENABLED = 1,
142135
LOAD_CONTROL_WHAT_FORCED = 2,
143136
LOAD_CONTROL_WHAT_REMOVE_FORCED = 3
144-
}_eLoadControlWhat;
137+
};
145138

146-
typedef enum {
139+
// Sound Diffusion what
140+
enum {
147141
SOUND_DIFFUSION_WHAT_TURN_OFF = 0,
148142
SOUND_DIFFUSION_WHAT_TURN_ON = 1,
149143
SOUND_DIFFUSION_WHAT_SOURCE_TURNED_ON = 2,
@@ -169,57 +163,99 @@ typedef enum {
169163
SOUND_DIFFUSION_WHAT_BALANCE_RIGHT_TO_LEFT = 43,
170164
SOUND_DIFFUSION_WHAT_NEXT_PRESET = 55,
171165
SOUND_DIFFUSION_WHAT_PREVIOUS_PRESET = 56
172-
}_eSoundDiffusionWhat;
166+
};
173167

174-
typedef enum {
168+
// Dry Contact IR Detection what
169+
enum {
175170
DRY_CONTACT_IR_DETECTION_WHAT_ON = 31,
176171
DRY_CONTACT_IR_DETECTION_WHAT_OFF = 32
177-
}_eDryContactIrDetectionWhat;
172+
};
178173

179-
typedef enum {
174+
// Dry Contact IR Detection parameters
175+
enum {
180176
DRY_CONTACT_IR_DETECTION_WHAT_PARAM_STATUS_REQUESTED = 0,
181177
DRY_CONTACT_IR_DETECTION_WHAT_PARAM_EVENT_OCCURRED = 1
182-
}_eDryContactIrDetectionWhatParameters;
178+
};
183179

184-
typedef enum {
180+
// Scenarion Programmin what
181+
enum {
185182
SCENARIO_PROGRAMMING_WHAT_START_SCENE = 1,
186183
SCENARIO_PROGRAMMING_WHAT_STOP_SCENE = 2,
187184
SCENARIO_PROGRAMMING_WHAT_ENABLE_SCENE = 3,
188185
SCENARIO_PROGRAMMING_WHAT_DISABLE_SCENE = 4
189-
}_eScenarioProgrammingWhat;
186+
};
190187

191188
//"Where" enumerations
192189

193-
typedef enum {
190+
// Load Control where
191+
enum {
194192
LOAD_CONTROL_WHERE_GENERAL = 0,
195193
LOAD_CONTROL_WHERE_CONTRL_UNIT = 10
196-
}_eLoadControlWhere;
194+
};
195+
196+
/* sound diffusion Where (WHO=22) */
197+
/*
198+
|Description | Value
199+
--------------------------------------
200+
|Source | 2#sourceID |
201+
|Speaker | 3#area#point |
202+
|Speaker Area | 4#area |
203+
|General | 5#sender_address |
204+
|All Source | 6 |
205+
--------------------------------------
206+
*/
207+
enum {
208+
WHERE_SOUND_DIFFUSION_SOURCE = 2,
209+
WHERE_SOUND_DIFFUSION_SPEAKER = 3,
210+
WHERE_SOUND_DIFFUSION_SPEAKER_AREA = 4,
211+
WHERE_SOUND_DIFFUSION_GENERAL = 5,
212+
WHERE_SOUND_DIFFUSION_ALL_SOURCE = 6,
213+
MAX_WHERE_SOUND = 7
214+
};
215+
197216

198217
//"Dimensions" enumerations
199218

200-
typedef enum {
219+
// Lighting dimension
220+
enum {
201221
LIGHTING_DIMENSION_SET_UP_LEVEL_WITH_GIVEN_SPEED = 1,
202222
LIGHTING_DIMENSION_TEMPORISATION = 2,
203223
LIGHTING_DIMENSION_REQUIRED_ONLY_ON_LIGHT = 3,
204224
LIGHTING_DIMENSION_STATUS_DIMMER_100_LEVELS_WITH_GIVEN_SPEED = 4,
205225
LIGHTING_DIMENSION_WORKING_TIME_LAMP = 8,
206226
LIGHTING_DIMENSION_MAX_WORKING_TIME_LAMP = 9
207-
}_eLightingDimension;
227+
};
208228

209-
typedef enum {
229+
// Automation dimension
230+
enum {
210231
AUTOMATION_DIMENSION_SHUTTER_STATUS = 10,
211232
AUTOMATION_DIMENSION_GOTO_LEVEL = 11
212-
}_eAutomationDimension;
233+
};
213234

214-
typedef enum{
235+
// temperature Control dimension
236+
enum {
237+
TEMPERATURE_CONTROL_DIMENSION_TEMPERATURE = 0,
238+
TEMPERATURE_CONTROL_DIMENSION_FAN_COIL_SPEED = 11,
239+
TEMPERATURE_CONTROL_DIMENSION_COMPLETE_PROBE_STATUS = 12,
240+
TEMPERATURE_CONTROL_DIMENSION_LOCAL_SET_OFFSET = 13,
241+
TEMPERATURE_CONTROL_DIMENSION_SET_POINT_TEMPERATURE = 14,
242+
TEMPERATURE_CONTROL_DIMENSION_VALVES_STATUS = 19,
243+
TEMPERATURE_CONTROL_DIMENSION_ACTUATOR_STATUS = 20,
244+
TEMPERATURE_CONTROL_DIMENSION_SPLIT_CONTROL = 22,
245+
TEMPERATURE_CONTROL_DIMENSION_END_DATE_HOLIDAY_SCENARIO = 30
246+
};
247+
248+
// Load Control dimension
249+
enum{
215250
LOAD_CONTROL_WHAT_ALL_DIMENSIONS = 0,
216251
LOAD_CONTROL_WHAT_VOLTAGE = 1,
217252
LOAD_CONTROL_WHAT_CURRENT = 2,
218253
LOAD_CONTROL_WHAT_POWER = 3,
219254
LOAD_CONTROL_WHAT_ENERGY = 4
220-
}_eLoadControlDimension;
255+
};
221256

222-
typedef enum {
257+
// Energy Management dimension
258+
enum {
223259
ENERGY_MANAGEMENT_DIMENSION_ACTIVE_POWER = 113,
224260
ENERGY_MANAGEMENT_DIMENSION_END_AUTOMATIC_UPDATE = 1200,
225261
ENERGY_MANAGEMENT_DIMENSION_ENERGY_TOTALIZER = 51,
@@ -247,7 +283,24 @@ typedef enum {
247283
ENERGY_MANAGEMENT_DIMENSION_STATUS_STOPGO_MONTHLY_AVERAGE_HOURLY_BASIS_FOR_16BIT_MEDIA_DAILY_GRAPHICS = 512,
248284
ENERGY_MANAGEMENT_DIMENSION_STATUS_STOPGO_MONTHLY_TOTALIZERS_CURRENT_YEAR_DAILY_BASIS_FOR_32BIT_MONTHLY_GRAPHICS = 513,
249285
ENERGY_MANAGEMENT_DIMENSION_STATUS_STOPGO_MONTHLY_TOTALIZERS_DAILY_BASIS_LAST_YEAR_COMPARED_TO_32BIT_GRAPHICS_TOUCHX_PREVIUS_YEAR = 514
250-
}eEnergyManagementDimension;
286+
};
287+
288+
// Sound Diffusion dimension
289+
enum {
290+
SOUND_DIFFUSION_DIMENSION_VOLUME = 1,
291+
SOUND_DIFFUSION_DIMENSION_HIGH_TONES = 2,
292+
SOUND_DIFFUSION_DIMENSION_MEDIUM_TONES = 3,
293+
SOUND_DIFFUSION_DIMENSION_LOW_TONES = 4,
294+
SOUND_DIFFUSION_DIMENSION_FREQUENCY = 5,
295+
SOUND_DIFFUSION_DIMENSION_TRACK_STATION = 6,
296+
SOUND_DIFFUSION_DIMENSION_PLAY_STATUS = 7,
297+
SOUND_DIFFUSION_DIMENSION_FREQUENCY_AND_STATION = 11,
298+
SOUND_DIFFUSION_DIMENSION_DEVICE_STATE = 12,
299+
SOUND_DIFFUSION_DIMENSION_BALANCE = 17,
300+
SOUND_DIFFUSION_DIMENSION_3D = 18,
301+
SOUND_DIFFUSION_DIMENSION_PRESET = 19,
302+
SOUND_DIFFUSION_DIMENSION_LOUDNESS = 20
303+
};
251304

252305
class bt_openwebnet {
253306

0 commit comments

Comments
 (0)