Subversion Repositories HomeAutomation

Rev

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

Rev 2131 Rev 2132
1
 
1
 
2
Require("plugin/module.js");
2
Require("plugin/module.js");
3
 
3
 
4
Dimmer_ModuleNames    = [ "Dimmer230", "hwPWM", "rfTransceive" ];
4
Dimmer_ModuleNames    = [ "Dimmer230", "hwPWM", "rfTransceive" ];
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
      {
107
        level_set = level*39;
107
        level_set = level*39;
108
 
108
 
109
          if (level_set > 9940)
109
          if (level_set > 9940)
110
        {
110
        {
111
            level_set = 10000;
111
            level_set = 10000;
112
          }
112
          }
113
      }
113
      }
114
      else if (aliases_data[name]["module_name"] == "rfTransceive")
114
      else if (aliases_data[name]["module_name"] == "rfTransceive")
115
      {
115
      {
116
        var data = parseInt(aliases_data[name]["specific"]["Data"], 10);
116
        var data = parseInt(aliases_data[name]["specific"]["Data"], 10);
117
        var level_index = Math.ceil(parseInt(level, 10) / 16);
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 ];
118
        var level_values = [ 0, 15, 7, 11, 3, 13, 5, 9, 1, 14, 6, 10, 2, 12, 4, 8, 0 ];
119
 
119
 
120
        if (level_index === 0)
120
        if (level_index === 0)
121
        {
121
        {
122
          var highest_bit = data | 1;
122
          var highest_bit = data | 1;
123
 
123
 
124
          data |= 0x8000000;
124
          data |= 0x8000000;
125
 
125
 
126
          var down_shifted_data = data >>> 1;
126
          var down_shifted_data = data >>> 1;
127
          data = (down_shifted_data * 2) + (highest_bit & 1);
127
          data = (down_shifted_data * 2) + (highest_bit & 1);
128
        }
128
        }
129
        else
129
        else
130
        {
130
        {
131
          data += 0x8000000000; // Set MSB = Dimmer mode 
131
          data += 0x8000000000; // Set MSB = Dimmer mode 
132
        }
132
        }
133
 
133
 
134
        data += level_values[level_index] * 0x100000000; //Add dimmer level 
134
        data += level_values[level_index] * 0x100000000; //Add dimmer level 
135
 
135
 
136
        var variables = {
136
        var variables = {
137
          "Channel"  : aliases_data[name]["specific"]["Channel"],
137
          "Channel"  : aliases_data[name]["specific"]["Channel"],
138
          "Protocol" : "Nexa2",
138
          "Protocol" : "Nexa2",
139
          "IRdata"   : data,
139
          "IRdata"   : data,
140
          "Status"   : "Burst" };
140
          "Status"   : "Burst" };
141
 
141
 
142
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
142
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
143
        {
143
        {
144
          Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
144
          Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
-
 
145
 
-
 
146
          var last_value = {};
-
 
147
          var last_value_string = Storage_GetParameter("LastValues", name);
-
 
148
 
-
 
149
          if (last_value_string)
-
 
150
          {
-
 
151
            last_value = eval("(" + last_value_string + ")");
-
 
152
          }
-
 
153
 
-
 
154
          last_value["Level"] = { "value" : level, "timestamp" : get_time() };
-
 
155
 
-
 
156
          Storage_SetParameter("LastValues", name, JSON.stringify(last_value));
145
        }
157
        }
146
        else
158
        else
147
        {
159
        {
148
          Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
160
          Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
149
        }
161
        }
150
 
162
 
151
        found = true;
163
        found = true;
152
 
164
 
153
        continue;
165
        continue;
154
      }
166
      }
155
      else
167
      else
156
      {
168
      {
157
        level_set = level;
169
        level_set = level;
158
        }
170
        }
159
       
171
       
160
      //Check for undefined Channel parameter in alias
172
      //Check for undefined Channel parameter in alias
161
      if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined')
173
      if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined')
162
      {
174
      {
163
        Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
175
        Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
164
        break;
176
        break;
165
      }
177
      }
166
       
178
       
167
        var variables = {
179
        var variables = {
168
            "Channel"   : aliases_data[name]["specific"]["Channel"],
180
            "Channel"   : aliases_data[name]["specific"]["Channel"],
169
            "Speed"     : speed,
181
            "Speed"     : speed,
170
            "EndValue"  : level_set
182
            "EndValue"  : level_set
171
        };
183
        };
172
       
184
       
173
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
185
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
174
        {
186
        {
175
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
187
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
176
        }
188
        }
177
        else
189
        else
178
        {
190
        {
179
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
191
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
180
        }
192
        }
181
       
193
       
182
        found = true;
194
        found = true;
183
       
195
       
184
    }
196
    }
185
   
197
   
186
    if (!found)
198
    if (!found)
187
    {
199
    {
188
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
200
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
189
        return false;
201
        return false;
190
    }
202
    }
191
   
203
   
192
    return true;
204
    return true;
193
}
205
}
194
Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
206
Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
195
 
207
 
196
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
208
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
197
{
209
{
198
    if (arguments.length < 4)
210
    if (arguments.length < 4)
199
    {
211
    {
200
        Log("\033[31mNot enough parameters given.\033[0m\n");
212
        Log("\033[31mNot enough parameters given.\033[0m\n");
201
        return false;
213
        return false;
202
    }
214
    }
203
   
215
   
204
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
216
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
205
    var found = false;
217
    var found = false;
206
    var steps_set = steps;
218
    var steps_set = steps;
207
   
219
   
208
    for (var name in aliases_data)
220
    for (var name in aliases_data)
209
    {
221
    {
210
        if (aliases_data[name]["module_name"]=="hwPWM") {
222
        if (aliases_data[name]["module_name"]=="hwPWM") {
211
            steps_set = steps*39;
223
            steps_set = steps*39;
212
        if (steps_set > 9940) {
224
        if (steps_set > 9940) {
213
          level_set = 10000;
225
          level_set = 10000;
214
        }
226
        }
215
        } else {
227
        } else {
216
            steps_set = steps;
228
            steps_set = steps;
217
    }
229
    }
218
        var variables = {
230
        var variables = {
219
            "Channel"   : aliases_data[name]["specific"]["Channel"],
231
            "Channel"   : aliases_data[name]["specific"]["Channel"],
220
            "Speed"     : speed,
232
            "Speed"     : speed,
221
            "Direction" : direction,
233
            "Direction" : direction,
222
            "Steps"     : steps_set
234
            "Steps"     : steps_set
223
        };
235
        };
224
       
236
       
225
        //Check for undefined Channel parameter in alias
237
        //Check for undefined Channel parameter in alias
226
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
238
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
227
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
239
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
228
            break;
240
            break;
229
        }
241
        }
230
       
242
       
231
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
243
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
232
        {
244
        {
233
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
245
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
234
        }
246
        }
235
        else
247
        else
236
        {
248
        {
237
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
249
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
238
        }
250
        }
239
       
251
       
240
        found = true;
252
        found = true;
241
    }
253
    }
242
   
254
   
243
    if (!found)
255
    if (!found)
244
    {
256
    {
245
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
257
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
246
        return false;
258
        return false;
247
    }
259
    }
248
   
260
   
249
    return true;
261
    return true;
250
}
262
}
251
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
263
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
252
 
264
 
253
function Dimmer_Demo(alias_name, speed, steps)
265
function Dimmer_Demo(alias_name, speed, steps)
254
{
266
{
255
    if (arguments.length < 3)
267
    if (arguments.length < 3)
256
    {
268
    {
257
        Log("\033[31mNot enough parameters given.\033[0m\n");
269
        Log("\033[31mNot enough parameters given.\033[0m\n");
258
        return false;
270
        return false;
259
    }
271
    }
260
   
272
   
261
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
273
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
262
    var found = false;
274
    var found = false;
263
    var steps_set = steps;
275
    var steps_set = steps;
264
   
276
   
265
    for (var name in aliases_data)
277
    for (var name in aliases_data)
266
    {
278
    {
267
        if (aliases_data[name]["module_name"]=="hwPWM") {
279
        if (aliases_data[name]["module_name"]=="hwPWM") {
268
            steps_set = steps*39;
280
            steps_set = steps*39;
269
        if (steps_set > 9940) {
281
        if (steps_set > 9940) {
270
          level_set = 10000;
282
          level_set = 10000;
271
        }
283
        }
272
        } else {
284
        } else {
273
            steps_set = steps;
285
            steps_set = steps;
274
    }
286
    }
275
        var variables = {
287
        var variables = {
276
            "Channel"   : aliases_data[name]["specific"]["Channel"],
288
            "Channel"   : aliases_data[name]["specific"]["Channel"],
277
            "Speed"     : speed,
289
            "Speed"     : speed,
278
            "Steps"     : steps_set
290
            "Steps"     : steps_set
279
        };
291
        };
280
       
292
       
281
        //Check for undefined Channel parameter in alias
293
        //Check for undefined Channel parameter in alias
282
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
294
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
283
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
295
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
284
            break;
296
            break;
285
        }
297
        }
286
       
298
       
287
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
299
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
288
        {
300
        {
289
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
301
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
290
        }
302
        }
291
        else
303
        else
292
        {
304
        {
293
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
305
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
294
        }
306
        }
295
       
307
       
296
        found = true;
308
        found = true;
297
    }
309
    }
298
   
310
   
299
    if (!found)
311
    if (!found)
300
    {
312
    {
301
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
313
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
302
        return false;
314
        return false;
303
    }
315
    }
304
   
316
   
305
    return true;
317
    return true;
306
}
318
}
307
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
319
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
308
 
320
 
309
function Dimmer_OnMessage(module_name, module_id, command, variables)
321
function Dimmer_OnMessage(module_name, module_id, command, variables)
310
{
322
{
311
    if (in_array(Dimmer_ModuleNames, module_name))
323
    if (in_array(Dimmer_ModuleNames, module_name))
312
    {
324
    {
313
        var aliases_data = Module_LookupAliases({
325
        var aliases_data = Module_LookupAliases({
314
            "module_name" : module_name,
326
            "module_name" : module_name,
315
            "module_id"   : module_id,
327
            "module_id"   : module_id,
316
            "group"       : false
328
            "group"       : false
317
        });
329
        });
318
       
330
       
319
        switch (command)
331
        switch (command)
320
        {
332
        {
321
            case "Netinfo":
333
            case "Netinfo":
322
            {
334
            {
323
                for (var alias_name in aliases_data)
335
                for (var alias_name in aliases_data)
324
                {
336
                {
325
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
337
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
326
                    {
338
                    {
327
                        continue;
339
                        continue;
328
                    }
340
                    }
329
                   
341
                   
330
                    var last_value = {};
342
                    var last_value = {};
331
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
343
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
332
                   
344
                   
333
                    if (last_value_string)
345
                    if (last_value_string)
334
                    {
346
                    {
335
                        last_value = eval("(" + last_value_string + ")");
347
                        last_value = eval("(" + last_value_string + ")");
336
                    }
348
                    }
337
                   
349
                   
338
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
350
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
339
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
351
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
340
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
352
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
341
                   
353
                   
342
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
354
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
343
                }
355
                }
344
               
356
               
345
                break;
357
                break;
346
            }
358
            }
347
            case "Pwm":
359
            case "Pwm":
348
            {
360
            {
349
                for (var alias_name in aliases_data)
361
                for (var alias_name in aliases_data)
350
                {
362
                {
351
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
363
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
352
                    {
364
                    {
353
                        continue;
365
                        continue;
354
                    }
366
                    }
355
                   
367
                   
356
                    var last_value = {};
368
                    var last_value = {};
357
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
369
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
358
                   
370
                   
359
                    if (last_value_string)
371
                    if (last_value_string)
360
                    {
372
                    {
361
                        last_value = eval("(" + last_value_string + ")");
373
                        last_value = eval("(" + last_value_string + ")");
362
                    }
374
                    }
363
                    var value = 0 + variables["Value"];
375
                    var value = 0 + variables["Value"];
364
                    value = value / 39;
376
                    value = value / 39;
365
                    value = parseInt(value).toString();
377
                    value = parseInt(value).toString();
366
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
378
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
367
                   
379
                   
368
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
380
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
369
                }
381
                }
370
               
382
               
371
                break;
383
                break;
372
            }
384
            }
373
        }
385
        }
374
    }
386
    }
375
}
387
}
376
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
388
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
377
 
389