Subversion Repositories HomeAutomation

Rev

Rev 1648 | Rev 1650 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 1648 Rev 1649
Line 2... Line 2...
2
Require("plugin/storage.js");
2
Require("plugin/storage.js");
3
 
3
 
4
function Module_CreateAliasAutoComplete(args)
4
function Module_CreateAliasAutoComplete(arg_index, args)
5
{
5
{
6
    // args[0] == command name
-
 
7
    var arg_index = args.length - 2;
-
 
8
   
-
 
9
    if (arg_index == 0)
6
    if (arg_index == 0)
10
    {
7
    {
11
        return Module_GetAliasNames();
8
        return Module_GetAliasNames();
12
    }
9
    }
13
    else if (arg_index == 1)
10
    else if (arg_index == 1)
14
    {
11
    {
15
        return Module_GetNames();
12
        return Module_GetNames();
16
    }
13
    }
17
    else if (arg_index == 2)
14
    else if (arg_index == 2)
18
    {
15
    {
19
        return Module_GetAvailableIds([ args[2] ])
16
        return Module_GetAvailableIds([ args[1] ])
20
    }
17
    }
21
   
18
   
22
    return [];
19
    return [];
-
 
20
}
-
 
21
 
-
 
22
function Module_CreateAlias(alias_name, module_name, module_id, specific)
-
 
23
{
-
 
24
    if (arguments.length < 3)
-
 
25
    {
-
 
26
        Log("\033[31mNot enough parameters given.\033[0m\n");
-
 
27
        return false;
23
}
28
    }
24
 
29
   
25
function Module_CreateAlias(alias_name, module_name, module_id, specific)
30
    if (alias_name == "all")
26
{
31
    {
-
 
32
        Log("\033[31m\"all\" is not allowed as alias name.\033[0m\n");
27
    // TODO Check arguments
33
        return false;
-
 
34
    }
28
   
35
   
29
    var specific_list = {};
36
    var specific_list = {};
30
   
37
   
31
    if (specific)
38
    if (specific)
32
    {
39
    {
33
        var specific_parts = split(",", specific);
40
        var specific_parts = specific.split(",");
34
       
41
       
35
        // TODO: Check length
42
        // TODO: Check length
36
       
43
       
37
        for (var index in specific_parts)
44
        for (var index in specific_parts)
38
        {
45
        {
39
            var parts = split("=", specific_parts[index]);
46
            var parts = specific_parts[index].split("=");
40
           
47
           
41
            // TODO: Check length
48
            // TODO: Check length
42
           
49
           
43
            specific_list[parts[0]] = parts[1];
50
            specific_list[parts[0]] = parts[1];
44
        }
51
        }
Line 54... Line 61...
54
   
61
   
55
    return Storage_SetParameter("alias", alias_name, JSON.stringify(alias_data));
62
    return Storage_SetParameter("alias", alias_name, JSON.stringify(alias_data));
56
}
63
}
57
Console_RegisterCommand(Module_CreateAlias, Module_CreateAliasAutoComplete);
64
Console_RegisterCommand(Module_CreateAlias, Module_CreateAliasAutoComplete);
58
 
65
 
59
function Module_CreateAliasGroupAutoComplete(args)
66
function Module_CreateAliasGroupAutoComplete(arg_index, args)
60
{
67
{
61
    // args[0] == command name
-
 
62
    var arg_index = args.length - 2;
-
 
63
   
-
 
64
    if (arg_index == 0)
68
    if (arg_index == 0)
65
    {
69
    {
66
        return Module_GetAliasNames();
70
        return Module_GetAliasNames();
67
    }
71
    }
68
    else if (arg_index == 1)
72
    else if (arg_index == 1)
69
    {
73
    {
70
        return Module_GetNames();
74
        return Module_GetNames();
71
    }
75
    }
72
    else if (arg_index >= 2)
76
    else if (arg_index >= 2)
73
    {
77
    {
74
        return Module_GetAliasNames([ args[2] ])
78
        return Module_GetAliasNames([ args[1] ])
75
    }
79
    }
76
   
80
   
77
    return [];
81
    return [];
78
}
82
}
79
 
83
 
80
function Module_CreateAliasGroup(alias_group_name, module_type, alias_name1, alias_name2)
84
function Module_CreateAliasGroup(alias_group_name, module_type, alias_name1, alias_name2)
81
{
85
{
82
    if (arguments.length < 3)
86
    if (arguments.length < 3)
83
    {
87
    {
84
        throw("Not enought parameters given");
88
        Log("\033[31mNot enough parameters given.\033[0m\n");
-
 
89
        return false;
-
 
90
    }
-
 
91
   
-
 
92
    if (alias_group_name == "all")
-
 
93
    {
-
 
94
        Log("\033[31m\"all\" is not allowed as alias name.\033[0m\n");
-
 
95
        return false;
85
    }
96
    }
86
   
97
   
87
    alias_group_name = arguments[0];
98
    alias_group_name = arguments[0];
88
    module_type = arguments[1];
99
    module_type = arguments[1];
89
    var aliases = [];
100
    var aliases = [];
Line 95... Line 106...
95
            var aliases_data = Module_ResolveAlias(arguments[n]);
106
            var aliases_data = Module_ResolveAlias(arguments[n]);
96
            aliases.push(arguments[n]);
107
            aliases.push(arguments[n]);
97
        }
108
        }
98
    }
109
    }
99
   
110
   
100
    if (aliases.length == 0)
111
    if (aliases.length == 0)
101
    {
112
    {
102
        throw("No valid aliases were found, aborting creation of group alias");
113
        Log("\033[31mNo valid aliases were found, aborting creation of group alias.\033[0m\n");
-
 
114
        return false;
103
    }
115
    }
104
   
116
   
105
    var alias_data = {
117
    var alias_data = {
106
        "group"       : true,
118
        "group"       : true,
107
        "name"        : alias_group_name,
119
        "name"        : alias_group_name,
108
        "module_name" : module_type,
120
        "module_name" : module_type,
109
        "aliases"     : aliases
121
        "aliases"     : aliases
Line 119... Line 131...
119
    var alias_data_string = Storage_GetParameter("alias", alias_name);
131
    var alias_data_string = Storage_GetParameter("alias", alias_name);
120
   
132
   
121
    if (alias_data_string)
133
    if (alias_data_string)
122
    {
134
    {
123
        var alias_data = eval("(" + alias_data_string + ")");
135
        var alias_data = eval("(" + alias_data_string + ")");
124
       
136
       
125
        if (alias_data["group"])
137
        if (alias_data["group"])
126
        {
138
        {
127
            for (var n in alias_data["aliases"])
139
            for (var n in alias_data["aliases"])
128
            {
140
            {
129
                var aliases_data_sub = Module_ResolveAlias(alias_data["aliases"][n], filter_module_names);
141
                var aliases_data_sub = Module_ResolveAlias(alias_data["aliases"][n], filter_module_names);
Line 131... Line 143...
131
                for (var name in aliases_data_sub)
143
                for (var name in aliases_data_sub)
132
                {
144
                {
133
                    aliases_data[name] = aliases_data_sub[name];
145
                    aliases_data[name] = aliases_data_sub[name];
134
                }
146
                }
135
            }
147
            }
136
        }
148
        }
137
        else
149
        else
138
        {
150
        {
139
            if (in_array(filter_module_names, alias_data["module_name"]))
151
            if (in_array(filter_module_names, alias_data["module_name"]))
140
            {
152
            {
141
                aliases_data[alias_name] = alias_data;
153
                aliases_data[alias_name] = alias_data;
142
            }
154
            }
143
        }
155
        }
Line 211... Line 223...
211
    return result_list;
223
    return result_list;
212
}
224
}
213
 
225
 
214
function Module_GetNames()
226
function Module_GetNames()
215
{
227
{
216
    return [ "Dimmer230", "irTransmit", "irReceive", "SimpleDTMF", "BusVoltage" ];
228
    return [ "Dimmer230", "irTransmit", "irReceive", "SimpleDTMF", "BusVoltage", "DS18x20", "FOST02" ];
217
}
229
}
218
 
230
 
219
function Module_SendMessage(module_name, module_id, command, variables)
231
function Module_SendMessage(module_name, module_id, command, variables)
220
{
232
{
221
    var args = [];
233
    var args = [];
Line 252... Line 264...
252
   
264
   
253
    Module_OnChangeFunctions[alias_name].push(callback);
265
    Module_OnChangeFunctions[alias_name].push(callback);
254
}
266
}
255
 
267
 
256
function Module_RegisterToOnMessage(alias_name, callback)
268
function Module_RegisterToOnMessage(alias_name, callback)
257
{
269
{
258
    if (!Module_OnMessageFunctions[alias_name])
270
    if (!Module_OnMessageFunctions[alias_name])
259
    {
271
    {
260
        Module_OnMessageFunctions[alias_name] = [];
272
        Module_OnMessageFunctions[alias_name] = [];
261
    }
273
    }
262
   
274
   
263
    Module_OnMessageFunctions[alias_name].push(callback);
275
    Module_OnMessageFunctions[alias_name].push(callback);
264
}
276
}
265
 
277
 
266
function Module_OnMessage(full_id, command, variables)
278
function Module_OnMessage(full_id, command, variables)
267
{
279
{
268
    var id_parts = full_id.split(":", 2);
280
    var id_parts = full_id.split(":", 2);
269
    var aliases_data = {};
281
    var aliases_data = {};
270
 
282
 
271
    var aliases_data = Module_LookupAliases({
283
    var aliases_data = Module_LookupAliases({
-
 
284
        "module_name" : id_parts[0],
-
 
285
        "module_id"   : id_parts[1],
-
 
286
        "group"       : false
-
 
287
    });
-
 
288
   
-
 
289
    for (var alias_name in aliases_data)
-
 
290
    {
-
 
291
        var ok = true;
-
 
292
 
-
 
293
        if (aliases_data[alias_name]["specific"])
-
 
294
        {
-
 
295
            var ok = true;
-
 
296
           
-
 
297
            for (var name in variables)
-
 
298
            {
-
 
299
                if (aliases_data[alias_name]["specific"][name] && aliases_data[alias_name]["specific"][name] != variables[name])
-
 
300
                {
-
 
301
                    ok = false;
-
 
302
                    break;
-
 
303
                }
-
 
304
            }
-
 
305
        }
-
 
306
       
-
 
307
        if (Module_OnMessageFunctions[alias_name] && ok)
-
 
308
        {
-
 
309
            for (var n in Module_OnMessageFunctions[alias_name])
-
 
310
            {
-
 
311
                Module_OnMessageFunctions[alias_name][n](alias_name, command, variables);
-
 
312
            }
-
 
313
        }
-
 
314
    }
-
 
315
   
-
 
316
    if (Module_OnMessageFunctions["all"])
-
 
317
    {
-
 
318
        for (var n in Module_OnMessageFunctions["all"])
-
 
319
        {
-
 
320
            Module_OnMessageFunctions["all"][n](id_parts[0], id_parts[1], command, variables);
-
 
321
        }
-
 
322
    }
-
 
323
}
-
 
324
 
-
 
325
function Module_OnChange(full_id, available)
-
 
326
{
-
 
327
    var id_parts = full_id.split(":", 2);
-
 
328
    var aliases_data = {};
-
 
329
   
-
 
330
    var aliases_data_all = Module_LookupAliases({
272
        "module_name" : id_parts[0],
331
        "module_name" : id_parts[0],
273
        "module_id"   : id_parts[1],
332
        "module_id"   : id_parts[1],
274
        "group"       : false
333
        "group"       : false
275
    });
334
    });
276
   
335
   
277
    for (var alias_name in aliases_data)
336
    for (var alias_name in aliases_data)
278
    {
-
 
279
        var ok = true;
-
 
280
 
-
 
281
        if (aliases_data[alias_name]["specific"])
-
 
282
        {
-
 
283
            var ok = true;
-
 
284
           
-
 
285
            for (var name in variables)
-
 
286
            {
-
 
287
                if (aliases_data[alias_name]["specific"][name] && aliases_data[alias_name]["specific"][name] != variables[name])
-
 
288
                {
-
 
289
                    ok = false;
-
 
290
                    break;
-
 
291
                }
-
 
292
            }
-
 
293
        }
-
 
294
       
-
 
295
        if (Module_OnMessageFunctions[alias_name] && ok)
-
 
296
        {
-
 
297
            for (var n in Module_OnMessageFunctions[alias_name])
-
 
298
            {
-
 
299
                Module_OnMessageFunctions[alias_name][n](alias_name, command, variables);
-
 
300
            }
-
 
301
        }
-
 
302
    }
-
 
303
}
-
 
304
 
-
 
305
function Module_OnChange(full_id, available)
-
 
306
{
-
 
307
    var id_parts = full_id.split(":", 2);
-
 
308
    var aliases_data = {};
-
 
309
   
-
 
310
    var aliases_data_all = Module_LookupAliases({
-
 
311
        "module_name" : id_parts[0],
-
 
312
        "module_id"   : id_parts[1],
-
 
313
        "group"       : false
-
 
314
    });
-
 
315
   
-
 
316
    for (var alias_name in aliases_data)
-
 
317
    {
337
    {
318
        var ok = true;
338
        var ok = true;
319
       
339
       
320
        if (aliases_data[alias_name]["specific"])
340
        if (aliases_data[alias_name]["specific"])
321
        {
341
        {
322
            var ok = true;
342
            var ok = true;
323
           
343
           
Line 330... Line 350...
330
                }
350
                }
331
            }
351
            }
332
        }
352
        }
333
       
353
       
334
        if (Module_OnChangeFunctions[alias_name] && ok)
354
        if (Module_OnChangeFunctions[alias_name] && ok)
335
        {
355
        {
336
            for (var n in Module_OnChangeFunctions[alias_name])
356
            for (var n in Module_OnChangeFunctions[alias_name])
337
            {
357
            {
338
                Module_OnChangeFunctions[alias_name][n](alias_name, available);
358
                Module_OnChangeFunctions[alias_name][n](alias_name, available);
339
            }
359
            }
-
 
360
        }
-
 
361
    }
-
 
362
   
-
 
363
    if (Module_OnChangeFunctions["all"])
-
 
364
    {
-
 
365
        for (var n in Module_OnChangeFunctions["all"])
-
 
366
        {
-
 
367
            Module_OnChangeFunctions["all"][n](id_parts[0], id_parts[1], available);
340
        }
368
        }
341
    }
369
    }
342
}
370
}