Subversion Repositories HomeAutomation

Rev

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

Rev 2079 Rev 2099
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
            level_set = level*39;
106
            level_set = level*39;
-
 
107
        if (level_set > 9940) {
-
 
108
          level_set = 10000;
107
        }
109
        }
-
 
110
        } else {
-
 
111
            level_set = level;
-
 
112
    }
108
       
113
       
109
        //Check for undefined Channel parameter in alias
114
        //Check for undefined Channel parameter in alias
110
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
115
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
111
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
116
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
112
            break;
117
            break;
113
        }
118
        }
114
       
119
       
115
        var variables = {
120
        var variables = {
116
            "Channel"   : aliases_data[name]["specific"]["Channel"],
121
            "Channel"   : aliases_data[name]["specific"]["Channel"],
117
            "Speed"     : speed,
122
            "Speed"     : speed,
118
            "EndValue"  : level_set
123
            "EndValue"  : level_set
119
        };
124
        };
120
       
125
       
121
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
126
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
122
        {
127
        {
123
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
128
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
124
        }
129
        }
125
        else
130
        else
126
        {
131
        {
127
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
132
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
128
        }
133
        }
129
       
134
       
130
        found = true;
135
        found = true;
131
       
136
       
132
    }
137
    }
133
   
138
   
134
    if (!found)
139
    if (!found)
135
    {
140
    {
136
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
141
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
137
        return false;
142
        return false;
138
    }
143
    }
139
   
144
   
140
    return true;
145
    return true;
141
}
146
}
142
Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
147
Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
143
 
148
 
144
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
149
function Dimmer_RelativeFade(alias_name, speed, direction, steps)
145
{
150
{
146
    if (arguments.length < 4)
151
    if (arguments.length < 4)
147
    {
152
    {
148
        Log("\033[31mNot enough parameters given.\033[0m\n");
153
        Log("\033[31mNot enough parameters given.\033[0m\n");
149
        return false;
154
        return false;
150
    }
155
    }
151
   
156
   
152
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
157
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
153
    var found = false;
158
    var found = false;
154
    var steps_set = steps;
159
    var steps_set = steps;
155
   
160
   
156
    for (var name in aliases_data)
161
    for (var name in aliases_data)
157
    {
162
    {
158
        if (aliases_data[name]["module_name"]=="hwPWM") {
163
        if (aliases_data[name]["module_name"]=="hwPWM") {
159
            steps_set = steps*39;
164
            steps_set = steps*39;
-
 
165
        if (steps_set > 9940) {
-
 
166
          level_set = 10000;
-
 
167
        }
-
 
168
        } else {
-
 
169
            steps_set = steps;
160
        }
170
    }
161
        var variables = {
171
        var variables = {
162
            "Channel"   : aliases_data[name]["specific"]["Channel"],
172
            "Channel"   : aliases_data[name]["specific"]["Channel"],
163
            "Speed"     : speed,
173
            "Speed"     : speed,
164
            "Direction" : direction,
174
            "Direction" : direction,
165
            "Steps"     : steps_set
175
            "Steps"     : steps_set
166
        };
176
        };
167
       
177
       
168
        //Check for undefined Channel parameter in alias
178
        //Check for undefined Channel parameter in alias
169
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
179
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
170
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
180
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
171
            break;
181
            break;
172
        }
182
        }
173
       
183
       
174
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
184
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
175
        {
185
        {
176
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
186
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
177
        }
187
        }
178
        else
188
        else
179
        {
189
        {
180
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
190
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
181
        }
191
        }
182
       
192
       
183
        found = true;
193
        found = true;
184
    }
194
    }
185
   
195
   
186
    if (!found)
196
    if (!found)
187
    {
197
    {
188
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
198
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
189
        return false;
199
        return false;
190
    }
200
    }
191
   
201
   
192
    return true;
202
    return true;
193
}
203
}
194
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
204
Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
195
 
205
 
196
function Dimmer_Demo(alias_name, speed, steps)
206
function Dimmer_Demo(alias_name, speed, steps)
197
{
207
{
198
    if (arguments.length < 3)
208
    if (arguments.length < 3)
199
    {
209
    {
200
        Log("\033[31mNot enough parameters given.\033[0m\n");
210
        Log("\033[31mNot enough parameters given.\033[0m\n");
201
        return false;
211
        return false;
202
    }
212
    }
203
   
213
   
204
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
214
    var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
205
    var found = false;
215
    var found = false;
206
    var steps_set = steps;
216
    var steps_set = steps;
207
   
217
   
208
    for (var name in aliases_data)
218
    for (var name in aliases_data)
209
    {
219
    {
210
        if (aliases_data[name]["module_name"]=="hwPWM") {
220
        if (aliases_data[name]["module_name"]=="hwPWM") {
211
            steps_set = steps*39;
221
            steps_set = steps*39;
-
 
222
        if (steps_set > 9940) {
-
 
223
          level_set = 10000;
-
 
224
        }
-
 
225
        } else {
-
 
226
            steps_set = steps;
212
        }
227
    }
213
        var variables = {
228
        var variables = {
214
            "Channel"   : aliases_data[name]["specific"]["Channel"],
229
            "Channel"   : aliases_data[name]["specific"]["Channel"],
215
            "Speed"     : speed,
230
            "Speed"     : speed,
216
            "Steps"     : steps_set
231
            "Steps"     : steps_set
217
        };
232
        };
218
       
233
       
219
        //Check for undefined Channel parameter in alias
234
        //Check for undefined Channel parameter in alias
220
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
235
        if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
221
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
236
            Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
222
            break;
237
            break;
223
        }
238
        }
224
       
239
       
225
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
240
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
226
        {
241
        {
227
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
242
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
228
        }
243
        }
229
        else
244
        else
230
        {
245
        {
231
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
246
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
232
        }
247
        }
233
       
248
       
234
        found = true;
249
        found = true;
235
    }
250
    }
236
   
251
   
237
    if (!found)
252
    if (!found)
238
    {
253
    {
239
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
254
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
240
        return false;
255
        return false;
241
    }
256
    }
242
   
257
   
243
    return true;
258
    return true;
244
}
259
}
245
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
260
Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
246
 
261
 
247
function Dimmer_OnMessage(module_name, module_id, command, variables)
262
function Dimmer_OnMessage(module_name, module_id, command, variables)
248
{
263
{
249
    if (in_array(Dimmer_ModuleNames, module_name))
264
    if (in_array(Dimmer_ModuleNames, module_name))
250
    {
265
    {
251
        var aliases_data = Module_LookupAliases({
266
        var aliases_data = Module_LookupAliases({
252
            "module_name" : module_name,
267
            "module_name" : module_name,
253
            "module_id"   : module_id,
268
            "module_id"   : module_id,
254
            "group"       : false
269
            "group"       : false
255
        });
270
        });
256
       
271
       
257
        switch (command)
272
        switch (command)
258
        {
273
        {
259
            case "Netinfo":
274
            case "Netinfo":
260
            {
275
            {
261
                for (var alias_name in aliases_data)
276
                for (var alias_name in aliases_data)
262
                {
277
                {
263
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
278
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
264
                    {
279
                    {
265
                        continue;
280
                        continue;
266
                    }
281
                    }
267
                   
282
                   
268
                    var last_value = {};
283
                    var last_value = {};
269
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
284
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
270
                   
285
                   
271
                    if (last_value_string)
286
                    if (last_value_string)
272
                    {
287
                    {
273
                        last_value = eval("(" + last_value_string + ")");
288
                        last_value = eval("(" + last_value_string + ")");
274
                    }
289
                    }
275
                   
290
                   
276
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
291
                    last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
277
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
292
                    last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
278
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
293
                    last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
279
                   
294
                   
280
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
295
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
281
                }
296
                }
282
               
297
               
283
                break;
298
                break;
284
            }
299
            }
285
            case "Pwm":
300
            case "Pwm":
286
            {
301
            {
287
                for (var alias_name in aliases_data)
302
                for (var alias_name in aliases_data)
288
                {
303
                {
289
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
304
                    if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
290
                    {
305
                    {
291
                        continue;
306
                        continue;
292
                    }
307
                    }
293
                   
308
                   
294
                    var last_value = {};
309
                    var last_value = {};
295
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
310
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
296
                   
311
                   
297
                    if (last_value_string)
312
                    if (last_value_string)
298
                    {
313
                    {
299
                        last_value = eval("(" + last_value_string + ")");
314
                        last_value = eval("(" + last_value_string + ")");
300
                    }
315
                    }
301
                    var value = 0 + variables["Value"];
316
                    var value = 0 + variables["Value"];
302
                    value = value / 39;
317
                    value = value / 39;
303
                    value = parseInt(value).toString();
318
                    value = parseInt(value).toString();
304
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
319
                    last_value["Level"] = { "value" : value, "timestamp" : get_time() };
305
                   
320
                   
306
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
321
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
307
                }
322
                }
308
               
323
               
309
                break;
324
                break;
310
            }
325
            }
311
        }
326
        }
312
    }
327
    }
313
}
328
}
314
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
329
Module_RegisterToOnMessage("all", Dimmer_OnMessage);
315
 
330