Subversion Repositories HomeAutomation

Rev

Rev 2131 | Rev 2210 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed

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