Subversion Repositories HomeAutomation

Rev

Rev 2099 | Rev 2129 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 2099 Rev 2128
1
 
1
 
2
Require("plugin/module.js");
2
Require("plugin/module.js");
3
 
3
 
4
Dimmer_ModuleNames    = [ "Dimmer230", "hwPWM" ];
4
Dimmer_ModuleNames    = [ "Dimmer230", "hwPWM" ];
5
Dimmer_SpeedLevels    = function() { return [ 50, 135, 200, 255 ]; };
5
Dimmer_SpeedLevels    = function() { return [ 50, 135, 200, 255 ]; };
6
Dimmer_StrengthLevels = function() { return [ 0, 50, 100, 150, 200, 255 ]; };
6
Dimmer_StrengthLevels = function() { return [ 0, 50, 100, 150, 200, 255 ]; };
7
Dimmer_StepsLevels    = function() { return [ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 ]; };
7
Dimmer_StepsLevels    = function() { return [ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 ]; };
8
Dimmer_Directions     = function() { return [ "Increase", "Decrease" ]; };
8
Dimmer_Directions     = function() { return [ "Increase", "Decrease" ]; };
9
Dimmer_Channels       = function() { return [ 0 ]; };
9
Dimmer_Channels       = function() { return [ 0 ]; };
10
Dimmer_Aliases        = function() { return Module_GetAliasNames(Dimmer_ModuleNames); };
10
Dimmer_Aliases        = function() { return Module_GetAliasNames(Dimmer_ModuleNames); };
11
Dimmer_AvailableIds   = function() { return Module_GetAvailableIds(Dimmer_ModuleNames); };
11
Dimmer_AvailableIds   = function() { return Module_GetAvailableIds(Dimmer_ModuleNames); };
12
 
12
 
13
function Dimmer_StartFade(alias_name, speed, direction)
13
function Dimmer_StartFade(alias_name, speed, direction)
14
{
14
{
15
    if (arguments.length < 3)
15
    if (arguments.length < 3)
16
    {
16
    {
17
        Log("\033[31mNot enough parameters given.\033[0m\n");
17
        Log("\033[31mNot enough parameters given.\033[0m\n");
18
        return false;
18
        return false;
19
    }
19
    }
20
   
20
   
21
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
21
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
22
    var found = false;
22
    var found = false;
23
   
23
   
24
    for (var name in aliases_data)
24
    for (var name in aliases_data)
25
    {
25
    {
26
        var variables = {
26
        var variables = {
27
            "Channel"   : aliases_data[name]["specific"]["Channel"],
27
            "Channel"   : aliases_data[name]["specific"]["Channel"],
28
            "Speed"     : speed,
28
            "Speed"     : speed,
29
            "Direction" : direction };
29
            "Direction" : direction };
30
           
30
           
31
            if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Start_Fade", variables))
31
            if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Start_Fade", variables))
32
            {
32
            {
33
                //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
33
                //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
34
            }
34
            }
35
            else
35
            else
36
            {
36
            {
37
                Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
37
                Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
38
            }
38
            }
39
           
39
           
40
            found = true;
40
            found = true;
41
    }
41
    }
42
   
42
   
43
    if (!found)
43
    if (!found)
44
    {
44
    {
45
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
45
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
46
        return false;
46
        return false;
47
    }
47
    }
48
   
48
   
49
    return true;
49
    return true;
50
}
50
}
51
Console_RegisterCommand(Dimmer_StartFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions()); });
51
Console_RegisterCommand(Dimmer_StartFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions()); });
52
 
52
 
53
function Dimmer_StopFade(alias_name)
53
function Dimmer_StopFade(alias_name)
54
{
54
{
55
    if (arguments.length < 1)
55
    if (arguments.length < 1)
56
    {
56
    {
57
        Log("\033[31mNot enough parameters given.\033[0m\n");
57
        Log("\033[31mNot enough parameters given.\033[0m\n");
58
        return false;
58
        return false;
59
    }
59
    }
60
   
60
   
61
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
61
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
62
    var found = false;
62
    var found = false;
63
   
63
   
64
    for (var name in aliases_data)
64
    for (var name in aliases_data)
65
    {
65
    {
66
        var variables = {
66
        var variables = {
67
            "Channel" : aliases_data[name]["specific"]["Channel"] };
67
            "Channel" : aliases_data[name]["specific"]["Channel"] };
68
           
68
           
69
            if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Stop_Fade", variables))
69
            if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Stop_Fade", variables))
70
            {
70
            {
71
                //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
71
                //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
72
            }
72
            }
73
            else
73
            else
74
            {
74
            {
75
                Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
75
                Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
76
            }
76
            }
77
           
77
           
78
            found = true;
78
            found = true;
79
    }
79
    }
80
   
80
   
81
    if (!found)
81
    if (!found)
82
    {
82
    {
83
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
83
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
84
        return false;
84
        return false;
85
    }
85
    }
86
   
86
   
87
    return true;
87
    return true;
88
}
88
}
89
Console_RegisterCommand(Dimmer_StopFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases()); });
89
Console_RegisterCommand(Dimmer_StopFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases()); });
90
 
90
 
91
function Dimmer_AbsoluteFade(alias_name, speed, level)
91
function Dimmer_AbsoluteFade(alias_name, speed, level)
92
{
92
{
93
    if (arguments.length < 3)
93
    if (arguments.length < 3)
94
    {
94
    {
95
        Log("\033[31mNot enough parameters given.\033[0m\n");
95
        Log("\033[31mNot enough parameters given.\033[0m\n");
96
        return false;
96
        return false;
97
    }
97
    }
98
   
98
   
99
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
99
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
100
    var found = false;
100
    var found = false;
101
    var level_set = level;
101
    var level_set = level;
102
   
102
   
103
    for (var name in aliases_data)
103
    for (var name in aliases_data)
104
    {
104
    {
105
        if (aliases_data[name]["module_name"]=="hwPWM") {
105
      if (aliases_data[name]["module_name"] == "hwPWM")
-
 
106
      {
106
            level_set = level*39;
107
        level_set = level*39;
-
 
108
 
107
        if (level_set > 9940) {
109
          if (level_set > 9940)
-
 
110
        {
108
          level_set = 10000;
111
            level_set = 10000;
109
        }
112
          }
-
 
113
      }
-
 
114
      else if (alias_data[name]["module_name"] == "rfTransceiver")
-
 
115
      {
-
 
116
        var data = parseInt(alias_data[name]["specific"]["Data"], 10);
-
 
117
        var level_index = Math.ceil(parseInt(level, 10) / 16);
-
 
118
        var level_values = [ 0, 15, 7, 11, 3, 13, 5, 9, 1, 14, 6, 10, 2, 12, 4, 8, 0 ];
-
 
119
 
-
 
120
        if (level_index === 0)
-
 
121
        {
-
 
122
          var highest_bit = data | 1;
-
 
123
 
-
 
124
          data |= 0x8000000;
-
 
125
 
-
 
126
          var down_shifted_data = data >>> 1;
-
 
127
          data = (down_shifted_data * 2) + (highest_bit & 1);
-
 
128
        }
-
 
129
        else
-
 
130
        {
-
 
131
          data += 0x8000000000; // Set MSB = Dimmer mode 
-
 
132
        }
-
 
133
 
-
 
134
        data += level_values[level_index] * 0x100000000; //Add dimmer level 
-
 
135
 
-
 
136
        var variables = {
-
 
137
          "Channel"  : aliases_data[name]["specific"]["Channel"],
-
 
138
          "Protocol" : "Nexa2",
-
 
139
          "IRdata"   : data,
-
 
140
          "Status"   : "Burst" };
-
 
141
 
-
 
142
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
-
 
143
        {
-
 
144
          Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
-
 
145
        }
110
        } else {
146
        else
-
 
147
        {
-
 
148
          Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
-
 
149
        }
-
 
150
 
-
 
151
        found = true;
-
 
152
 
-
 
153
        continue;
-
 
154
      }
-
 
155
      else
-
 
156
      {
111
            level_set = level;
157
        level_set = level;
112
    }
158
        }
113
       
159
       
114
        //Check for undefined Channel parameter in alias
160
      //Check for undefined Channel parameter in alias
115
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
161
      if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined')
-
 
162
      {
116
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
163
        Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
117
            break;
164
        break;
118
        }
165
      }
119
       
166
       
120
        var variables = {
167
        var variables = {
121
            "Channel"   : aliases_data[name]["specific"]["Channel"],
168
            "Channel"   : aliases_data[name]["specific"]["Channel"],
122
            "Speed"     : speed,
169
            "Speed"     : speed,
123
            "EndValue"  : level_set
170
            "EndValue"  : level_set
124
        };
171
        };
125
       
172
       
126
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
173
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
127
        {
174
        {
128
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
175
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
129
        }
176
        }
130
        else
177
        else
131
        {
178
        {
132
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
179
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
133
        }
180
        }
134
       
181
       
135
        found = true;
182
        found = true;
136
       
183
       
137
    }
184
    }
138
   
185
   
139
    if (!found)
186
    if (!found)
140
    {
187
    {
141
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
188
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
142
        return false;
189
        return false;
143
    }
190
    }
144
   
191
   
145
    return true;
192
    return true;
146
}
193
}
147
Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
194
Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
148
 
195
 
149
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
196
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
150
{
197
{
151
    if (arguments.length < 4)
198
    if (arguments.length < 4)
152
    {
199
    {
153
        Log("\033[31mNot enough parameters given.\033[0m\n");
200
        Log("\033[31mNot enough parameters given.\033[0m\n");
154
        return false;
201
        return false;
155
    }
202
    }
156
   
203
   
157
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
204
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
158
    var found = false;
205
    var found = false;
159
    var steps_set = steps;
206
    var steps_set = steps;
160
   
207
   
161
    for (var name in aliases_data)
208
    for (var name in aliases_data)
162
    {
209
    {
163
        if (aliases_data[name]["module_name"]=="hwPWM") {
210
        if (aliases_data[name]["module_name"]=="hwPWM") {
164
            steps_set = steps*39;
211
            steps_set = steps*39;
165
        if (steps_set > 9940) {
212
        if (steps_set > 9940) {
166
          level_set = 10000;
213
          level_set = 10000;
167
        }
214
        }
168
        } else {
215
        } else {
169
            steps_set = steps;
216
            steps_set = steps;
170
    }
217
    }
171
        var variables = {
218
        var variables = {
172
            "Channel"   : aliases_data[name]["specific"]["Channel"],
219
            "Channel"   : aliases_data[name]["specific"]["Channel"],
173
            "Speed"     : speed,
220
            "Speed"     : speed,
174
            "Direction" : direction,
221
            "Direction" : direction,
175
            "Steps"     : steps_set
222
            "Steps"     : steps_set
176
        };
223
        };
177
       
224
       
178
        //Check for undefined Channel parameter in alias
225
        //Check for undefined Channel parameter in alias
179
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
226
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
180
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
227
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
181
            break;
228
            break;
182
        }
229
        }
183
       
230
       
184
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
231
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
185
        {
232
        {
186
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
233
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
187
        }
234
        }
188
        else
235
        else
189
        {
236
        {
190
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
237
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
191
        }
238
        }
192
       
239
       
193
        found = true;
240
        found = true;
194
    }
241
    }
195
   
242
   
196
    if (!found)
243
    if (!found)
197
    {
244
    {
198
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
245
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
199
        return false;
246
        return false;
200
    }
247
    }
201
   
248
   
202
    return true;
249
    return true;
203
}
250
}
204
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
251
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
205
 
252
 
206
function Dimmer_Demo(alias_name, speed, steps)
253
function Dimmer_Demo(alias_name, speed, steps)
207
{
254
{
208
    if (arguments.length < 3)
255
    if (arguments.length < 3)
209
    {
256
    {
210
        Log("\033[31mNot enough parameters given.\033[0m\n");
257
        Log("\033[31mNot enough parameters given.\033[0m\n");
211
        return false;
258
        return false;
212
    }
259
    }
213
   
260
   
214
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
261
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
215
    var found = false;
262
    var found = false;
216
    var steps_set = steps;
263
    var steps_set = steps;
217
   
264
   
218
    for (var name in aliases_data)
265
    for (var name in aliases_data)
219
    {
266
    {
220
        if (aliases_data[name]["module_name"]=="hwPWM") {
267
        if (aliases_data[name]["module_name"]=="hwPWM") {
221
            steps_set = steps*39;
268
            steps_set = steps*39;
222
        if (steps_set > 9940) {
269
        if (steps_set > 9940) {
223
          level_set = 10000;
270
          level_set = 10000;
224
        }
271
        }
225
        } else {
272
        } else {
226
            steps_set = steps;
273
            steps_set = steps;
227
    }
274
    }
228
        var variables = {
275
        var variables = {
229
            "Channel"   : aliases_data[name]["specific"]["Channel"],
276
            "Channel"   : aliases_data[name]["specific"]["Channel"],
230
            "Speed"     : speed,
277
            "Speed"     : speed,
231
            "Steps"     : steps_set
278
            "Steps"     : steps_set
232
        };
279
        };
233
       
280
       
234
        //Check for undefined Channel parameter in alias
281
        //Check for undefined Channel parameter in alias
235
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
282
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
236
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
283
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
237
            break;
284
            break;
238
        }
285
        }
239
       
286
       
240
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
287
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
241
        {
288
        {
242
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
289
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
243
        }
290
        }
244
        else
291
        else
245
        {
292
        {
246
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
293
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
247
        }
294
        }
248
       
295
       
249
        found = true;
296
        found = true;
250
    }
297
    }
251
   
298
   
252
    if (!found)
299
    if (!found)
253
    {
300
    {
254
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
301
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
255
        return false;
302
        return false;
256
    }
303
    }
257
   
304
   
258
    return true;
305
    return true;
259
}
306
}
260
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
307
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
261
 
308
 
262
function Dimmer_OnMessage(module_name, module_id, command, variables)
309
function Dimmer_OnMessage(module_name, module_id, command, variables)
263
{
310
{
264
    if (in_array(Dimmer_ModuleNames, module_name))
311
    if (in_array(Dimmer_ModuleNames, module_name))
265
    {
312
    {
266
        var aliases_data = Module_LookupAliases({
313
        var aliases_data = Module_LookupAliases({
267
            "module_name" : module_name,
314
            "module_name" : module_name,
268
            "module_id"   : module_id,
315
            "module_id"   : module_id,
269
            "group"       : false
316
            "group"       : false
270
        });
317
        });
271
       
318
       
272
        switch (command)
319
        switch (command)
273
        {
320
        {
274
            case "Netinfo":
321
            case "Netinfo":
275
            {
322
            {
276
                for (var alias_name in aliases_data)
323
                for (var alias_name in aliases_data)
277
                {
324
                {
278
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
325
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
279
                    {
326
                    {
280
                        continue;
327
                        continue;
281
                    }
328
                    }
282
                   
329
                   
283
                    var last_value = {};
330
                    var last_value = {};
284
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
331
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
285
                   
332
                   
286
                    if (last_value_string)
333
                    if (last_value_string)
287
                    {
334
                    {
288
                        last_value = eval("(" + last_value_string + ")");
335
                        last_value = eval("(" + last_value_string + ")");
289
                    }
336
                    }
290
                   
337
                   
291
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
338
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
292
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
339
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
293
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
340
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
294
                   
341
                   
295
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
342
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
296
                }
343
                }
297
               
344
               
298
                break;
345
                break;
299
            }
346
            }
300
            case "Pwm":
347
            case "Pwm":
301
            {
348
            {
302
                for (var alias_name in aliases_data)
349
                for (var alias_name in aliases_data)
303
                {
350
                {
304
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
351
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
305
                    {
352
                    {
306
                        continue;
353
                        continue;
307
                    }
354
                    }
308
                   
355
                   
309
                    var last_value = {};
356
                    var last_value = {};
310
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
357
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
311
                   
358
                   
312
                    if (last_value_string)
359
                    if (last_value_string)
313
                    {
360
                    {
314
                        last_value = eval("(" + last_value_string + ")");
361
                        last_value = eval("(" + last_value_string + ")");
315
                    }
362
                    }
316
                    var value = 0 + variables["Value"];
363
                    var value = 0 + variables["Value"];
317
                    value = value / 39;
364
                    value = value / 39;
318
                    value = parseInt(value).toString();
365
                    value = parseInt(value).toString();
319
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
366
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
320
                   
367
                   
321
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
368
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
322
                }
369
                }
323
               
370
               
324
                break;
371
                break;
325
            }
372
            }
326
        }
373
        }
327
    }
374
    }
328
}
375
}
329
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
376
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
330
 
377