Subversion Repositories HomeAutomation

Rev

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

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