Subversion Repositories HomeAutomation

Rev

Rev 2210 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 2210 Rev 2275
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", "softPWM", "SlowPWM", "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
 
145
 
146
          var last_value = {};
146
          var last_value = {};
147
          var last_value_string = Storage_GetParameter("LastValues", name);
147
          var last_value_string = Storage_GetParameter("LastValues", name);
148
 
148
 
149
          if (last_value_string)
149
          if (last_value_string)
150
          {
150
          {
151
            last_value = eval("(" + last_value_string + ")");
151
            last_value = eval("(" + last_value_string + ")");
152
          }
152
          }
153
 
153
 
154
          last_value["Level"] = { "value" : level, "timestamp" : get_time() };
154
          last_value["Level"] = { "value" : level, "timestamp" : get_time() };
155
 
155
 
156
          Storage_SetParameter("LastValues", name, JSON.stringify(last_value));
156
          Storage_SetParameter("LastValues", name, JSON.stringify(last_value));
157
        }
157
        }
158
        else
158
        else
159
        {
159
        {
160
          Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
160
          Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
161
        }
161
        }
162
 
162
 
163
        found = true;
163
        found = true;
164
 
164
 
165
        continue;
165
        continue;
166
      }
166
      }
167
      else
167
      else
168
      {
168
      {
169
        level_set = level;
169
        level_set = level;
170
        }
170
        }
171
       
171
       
172
      //Check for undefined Channel parameter in alias
172
      //Check for undefined Channel parameter in alias
173
      if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined')
173
      if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined')
174
      {
174
      {
175
        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");
176
        break;
176
        break;
177
      }
177
      }
178
       
178
       
179
        var variables = {
179
        var variables = {
180
            "Channel"   : aliases_data[name]["specific"]["Channel"],
180
            "Channel"   : aliases_data[name]["specific"]["Channel"],
181
            "Speed"     : speed,
181
            "Speed"     : speed,
182
            "EndValue"  : level_set
182
            "EndValue"  : level_set
183
        };
183
        };
184
       
184
       
185
        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))
186
        {
186
        {
187
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
187
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
188
        }
188
        }
189
        else
189
        else
190
        {
190
        {
191
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
191
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
192
        }
192
        }
193
       
193
       
194
        found = true;
194
        found = true;
195
       
195
       
196
    }
196
    }
197
   
197
   
198
    if (!found)
198
    if (!found)
199
    {
199
    {
200
        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");
201
        return false;
201
        return false;
202
    }
202
    }
203
   
203
   
204
    return true;
204
    return true;
205
}
205
}
206
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()); });
207
 
207
 
208
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
208
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
209
{
209
{
210
    if (arguments.length < 4)
210
    if (arguments.length < 4)
211
    {
211
    {
212
        Log("\033[31mNot enough parameters given.\033[0m\n");
212
        Log("\033[31mNot enough parameters given.\033[0m\n");
213
        return false;
213
        return false;
214
    }
214
    }
215
   
215
   
216
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
216
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
217
    var found = false;
217
    var found = false;
218
    var steps_set = steps;
218
    var steps_set = steps;
219
   
219
   
220
    for (var name in aliases_data)
220
    for (var name in aliases_data)
221
    {
221
    {
222
        if (aliases_data[name]["module_name"]=="hwPWM") {
222
        if (aliases_data[name]["module_name"]=="hwPWM") {
223
            steps_set = steps*39;
223
            steps_set = steps*39;
224
        if (steps_set > 9940) {
224
        if (steps_set > 9940) {
225
          level_set = 10000;
225
          level_set = 10000;
226
        }
226
        }
227
        }      
227
        }      
228
    else if (aliases_data[name]["module_name"] == "rfTransceive")
228
    else if (aliases_data[name]["module_name"] == "rfTransceive")
229
    {
229
    {
230
       var last_value = { "Level" : { "value" : 0, "timestamp" : 0 } };
230
       var last_value = { "Level" : { "value" : 0, "timestamp" : 0 } };
231
        var last_value_string = Storage_GetParameter("LastValues", name);
231
        var last_value_string = Storage_GetParameter("LastValues", name);
232
 
232
 
233
        if (last_value_string)
233
        if (last_value_string)
234
        {
234
        {
235
          last_value = eval("(" + last_value_string + ")");
235
          last_value = eval("(" + last_value_string + ")");
236
        }
236
        }
237
       
237
       
238
        var current_level = parseInt(last_value["Level"]["value"], 10)
238
        var current_level = parseInt(last_value["Level"]["value"], 10)
239
        if (direction == "Decrease")
239
        if (direction == "Decrease")
240
        {
240
        {
241
          current_level -= parseInt(steps,10);
241
          current_level -= parseInt(steps,10);
242
        }
242
        }
243
        else
243
        else
244
        {
244
        {
245
          current_level += parseInt(steps,10);
245
          current_level += parseInt(steps,10);
246
        }
246
        }
247
        if (current_level > 255)
247
        if (current_level > 255)
248
        {
248
        {
249
          current_level = 255;
249
          current_level = 255;
250
        }
250
        }
251
        if (current_level < 0)
251
        if (current_level < 0)
252
        {
252
        {
253
          current_level = 0;
253
          current_level = 0;
254
        }
254
        }
255
      var data = parseInt(aliases_data[name]["specific"]["Data"], 10);
255
      var data = parseInt(aliases_data[name]["specific"]["Data"], 10);
256
      var level_index = Math.ceil(current_level / 16);
256
      var level_index = Math.ceil(current_level / 16);
257
      var level_values = [ 0, 15, 7, 11, 3, 13, 5, 9, 1, 14, 6, 10, 2, 12, 4, 8, 0 ];
257
      var level_values = [ 0, 15, 7, 11, 3, 13, 5, 9, 1, 14, 6, 10, 2, 12, 4, 8, 0 ];
258
 
258
 
259
      if (level_index === 0)
259
      if (level_index === 0)
260
      {
260
      {
261
        var highest_bit = data | 1;
261
        var highest_bit = data | 1;
262
 
262
 
263
        data |= 0x8000000;
263
        data |= 0x8000000;
264
 
264
 
265
        var down_shifted_data = data >>> 1;
265
        var down_shifted_data = data >>> 1;
266
        data = (down_shifted_data * 2) + (highest_bit & 1);
266
        data = (down_shifted_data * 2) + (highest_bit & 1);
267
      }
267
      }
268
      else
268
      else
269
      {
269
      {
270
        data += 0x8000000000; // Set MSB = Dimmer mode 
270
        data += 0x8000000000; // Set MSB = Dimmer mode 
271
      }
271
      }
272
 
272
 
273
      data += level_values[level_index] * 0x100000000; //Add dimmer level 
273
      data += level_values[level_index] * 0x100000000; //Add dimmer level 
274
 
274
 
275
      var variables = {
275
      var variables = {
276
        "Channel"  : aliases_data[name]["specific"]["Channel"],
276
        "Channel"  : aliases_data[name]["specific"]["Channel"],
277
        "Protocol" : "Nexa2",
277
        "Protocol" : "Nexa2",
278
        "IRdata"   : data,
278
        "IRdata"   : data,
279
        "Status"   : "Burst" };
279
        "Status"   : "Burst" };
280
 
280
 
281
      if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
281
      if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
282
      {
282
      {
283
        //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
283
        //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
284
 
284
 
285
        var last_value = {};
285
        var last_value = {};
286
        var last_value_string = Storage_GetParameter("LastValues", name);
286
        var last_value_string = Storage_GetParameter("LastValues", name);
287
 
287
 
288
        if (last_value_string)
288
        if (last_value_string)
289
        {
289
        {
290
          last_value = eval("(" + last_value_string + ")");
290
          last_value = eval("(" + last_value_string + ")");
291
        }
291
        }
292
 
292
 
293
        last_value["Level"] = { "value" : current_level, "timestamp" : get_time() };
293
        last_value["Level"] = { "value" : current_level, "timestamp" : get_time() };
294
 
294
 
295
        Storage_SetParameter("LastValues", name, JSON.stringify(last_value));
295
        Storage_SetParameter("LastValues", name, JSON.stringify(last_value));
296
      }
296
      }
297
      else
297
      else
298
      {
298
      {
299
        Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
299
        Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
300
      }
300
      }
301
 
301
 
302
      found = true;
302
      found = true;
303
 
303
 
304
      continue;
304
      continue;
305
    }  
305
    }  
306
        else {
306
        else {
307
            steps_set = steps;
307
            steps_set = steps;
308
    }
308
    }
309
        var variables = {
309
        var variables = {
310
            "Channel"   : aliases_data[name]["specific"]["Channel"],
310
            "Channel"   : aliases_data[name]["specific"]["Channel"],
311
            "Speed"     : speed,
311
            "Speed"     : speed,
312
            "Direction" : direction,
312
            "Direction" : direction,
313
            "Steps"     : steps_set
313
            "Steps"     : steps_set
314
        };
314
        };
315
       
315
       
316
        //Check for undefined Channel parameter in alias
316
        //Check for undefined Channel parameter in alias
317
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
317
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
318
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
318
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
319
            break;
319
            break;
320
        }
320
        }
321
       
321
       
322
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
322
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
323
        {
323
        {
324
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
324
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
325
        }
325
        }
326
        else
326
        else
327
        {
327
        {
328
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
328
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
329
        }
329
        }
330
       
330
       
331
        found = true;
331
        found = true;
332
    }
332
    }
333
   
333
   
334
    if (!found)
334
    if (!found)
335
    {
335
    {
336
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
336
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
337
        return false;
337
        return false;
338
    }
338
    }
339
   
339
   
340
    return true;
340
    return true;
341
}
341
}
342
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
342
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
343
 
343
 
344
function Dimmer_Demo(alias_name, speed, steps)
344
function Dimmer_Demo(alias_name, speed, steps)
345
{
345
{
346
    if (arguments.length < 3)
346
    if (arguments.length < 3)
347
    {
347
    {
348
        Log("\033[31mNot enough parameters given.\033[0m\n");
348
        Log("\033[31mNot enough parameters given.\033[0m\n");
349
        return false;
349
        return false;
350
    }
350
    }
351
   
351
   
352
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
352
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
353
    var found = false;
353
    var found = false;
354
    var steps_set = steps;
354
    var steps_set = steps;
355
   
355
   
356
    for (var name in aliases_data)
356
    for (var name in aliases_data)
357
    {
357
    {
358
        if (aliases_data[name]["module_name"]=="hwPWM") {
358
        if (aliases_data[name]["module_name"]=="hwPWM") {
359
            steps_set = steps*39;
359
            steps_set = steps*39;
360
        if (steps_set > 9940) {
360
        if (steps_set > 9940) {
361
          level_set = 10000;
361
          level_set = 10000;
362
        }
362
        }
363
        } else {
363
        } else {
364
            steps_set = steps;
364
            steps_set = steps;
365
    }
365
    }
366
        var variables = {
366
        var variables = {
367
            "Channel"   : aliases_data[name]["specific"]["Channel"],
367
            "Channel"   : aliases_data[name]["specific"]["Channel"],
368
            "Speed"     : speed,
368
            "Speed"     : speed,
369
            "Steps"     : steps_set
369
            "Steps"     : steps_set
370
        };
370
        };
371
       
371
       
372
        //Check for undefined Channel parameter in alias
372
        //Check for undefined Channel parameter in alias
373
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
373
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
374
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
374
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
375
            break;
375
            break;
376
        }
376
        }
377
       
377
       
378
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
378
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
379
        {
379
        {
380
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
380
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
381
        }
381
        }
382
        else
382
        else
383
        {
383
        {
384
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
384
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
385
        }
385
        }
386
       
386
       
387
        found = true;
387
        found = true;
388
    }
388
    }
389
   
389
   
390
    if (!found)
390
    if (!found)
391
    {
391
    {
392
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
392
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
393
        return false;
393
        return false;
394
    }
394
    }
395
   
395
   
396
    return true;
396
    return true;
397
}
397
}
398
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
398
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
399
 
399
 
400
function Dimmer_OnMessage(module_name, module_id, command, variables)
400
function Dimmer_OnMessage(module_name, module_id, command, variables)
401
{
401
{
402
    if (in_array(Dimmer_ModuleNames, module_name))
402
    if (in_array(Dimmer_ModuleNames, module_name))
403
    {
403
    {
404
        var aliases_data = Module_LookupAliases({
404
        var aliases_data = Module_LookupAliases({
405
            "module_name" : module_name,
405
            "module_name" : module_name,
406
            "module_id"   : module_id,
406
            "module_id"   : module_id,
407
            "group"       : false
407
            "group"       : false
408
        });
408
        });
409
       
409
       
410
        switch (command)
410
        switch (command)
411
        {
411
        {
412
            case "Netinfo":
412
            case "Netinfo":
413
            {
413
            {
414
                for (var alias_name in aliases_data)
414
                for (var alias_name in aliases_data)
415
                {
415
                {
416
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
416
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
417
                    {
417
                    {
418
                        continue;
418
                        continue;
419
                    }
419
                    }
420
                   
420
                   
421
                    var last_value = {};
421
                    var last_value = {};
422
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
422
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
423
                   
423
                   
424
                    if (last_value_string)
424
                    if (last_value_string)
425
                    {
425
                    {
426
                        last_value = eval("(" + last_value_string + ")");
426
                        last_value = eval("(" + last_value_string + ")");
427
                    }
427
                    }
428
                   
428
                   
429
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
429
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
430
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
430
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
431
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
431
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
432
                   
432
                   
433
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
433
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
434
                }
434
                }
435
               
435
               
436
                break;
436
                break;
437
            }
437
            }
438
            case "Pwm":
438
            case "Pwm":
439
            {
439
            {
440
                for (var alias_name in aliases_data)
440
                for (var alias_name in aliases_data)
441
                {
441
                {
442
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
442
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
443
                    {
443
                    {
444
                        continue;
444
                        continue;
445
                    }
445
                    }
446
                   
446
                   
447
                    var last_value = {};
447
                    var last_value = {};
448
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
448
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
449
                   
449
                   
450
                    if (last_value_string)
450
                    if (last_value_string)
451
                    {
451
                    {
452
                        last_value = eval("(" + last_value_string + ")");
452
                        last_value = eval("(" + last_value_string + ")");
453
                    }
453
                    }
454
                    var value = 0 + variables["Value"];
454
                    var value = 0 + variables["Value"];
455
                    value = value / 39;
455
                    value = value / 39;
456
                    value = parseInt(value).toString();
456
                    value = parseInt(value).toString();
457
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
457
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
458
                   
458
                   
459
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
459
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
460
                }
460
                }
461
               
461
               
462
                break;
462
                break;
463
            }
463
            }
464
        }
464
        }
465
    }
465
    }
466
}
466
}
467
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
467
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
468
 
468