Subversion Repositories HomeAutomation

Rev

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

Rev 1649 Rev 1650
Line 146... Line 146...
146
                }
146
                }
147
            }
147
            }
148
        }
148
        }
149
        else
149
        else
150
        {
150
        {
151
            if (in_array(filter_module_names, alias_data["module_name"]))
151
            if (!filter_module_names || in_array(filter_module_names, alias_data["module_name"]))
152
            {
152
            {
153
                aliases_data[alias_name] = alias_data;
153
                aliases_data[alias_name] = alias_data;
154
            }
154
            }
155
        }
155
        }
156
    }
156
    }
157
   
157
   
158
    return aliases_data;
158
    return aliases_data;
159
}
159
}
160
 
160
 
161
function Module_LookupAliases(match_filter)
161
function Module_LookupAliases(match_filter)
162
{
162
{
163
    var aliases_data_filtered = {};
163
    var aliases_data_filtered = {};
164
    var aliases_data = Storage_GetParameters("alias");
164
    var aliases_data = Storage_GetParameters("alias");
165
   
165
   
166
    for (var name in aliases_data)
166
    for (var name in aliases_data)
167
    {
167
    {
168
        var alias_data = eval("(" + aliases_data[name] + ")");
168
        var alias_data = eval("(" + aliases_data[name] + ")");
169
       
169
       
170
        var valid = true;
170
        var valid = true;
171
       
171
       
172
        for (var key in match_filter)
172
        for (var key in match_filter)
173
        {
173
        {
174
            if (alias_data[key] != match_filter[key])
174
            if (alias_data[key] != match_filter[key])
175
            {
175
            {
176
                valid = false;
176
                valid = false;
177
                break;
177
                break;
178
            }
178
            }
179
        }
179
        }
180
       
180
       
181
        if (valid)
181
        if (valid)
182
        {
182
        {
183
            aliases_data_filtered[name] = alias_data;
183
            aliases_data_filtered[name] = alias_data;
184
        }
184
        }
185
    }
185
    }
186
   
186
   
187
    return aliases_data_filtered;
187
    return aliases_data_filtered;
188
}
188
}
189
 
189
 
190
function Module_GetAliasNames(filter_module_names)
190
function Module_GetAliasNames(filter_module_names)
191
{
191
{
192
    var aliases_name_filtered = [];
192
    var aliases_name_filtered = [];
193
    var aliases_data = Storage_GetParameters("alias");
193
    var aliases_data = Storage_GetParameters("alias");
194
   
194
   
195
    for (var name in aliases_data)
195
    for (var name in aliases_data)
196
    {
196
    {
197
        var alias_data = eval("(" + aliases_data[name] + ")");
197
        var alias_data = eval("(" + aliases_data[name] + ")");
198
       
198
       
199
        if (!filter_module_names || in_array(filter_module_names, alias_data["module_name"]))
199
        if (!filter_module_names || in_array(filter_module_names, alias_data["module_name"]))
200
        {
200
        {
201
            aliases_name_filtered.push(name)
201
            aliases_name_filtered.push(name)
202
        }
202
        }
203
    }
203
    }
204
   
204
   
205
    return aliases_name_filtered;
205
    return aliases_name_filtered;
206
}
206
}
207
 
207
 
208
function Module_GetAvailableIds(filter_module_names)
208
function Module_GetAvailableIds(filter_module_names)
209
{
209
{
210
    var result_list = [];
210
    var result_list = [];
211
    var available_modules = ModuleExport_GetAvailableModules();
211
    var available_modules = ModuleExport_GetAvailableModules();
212
   
212
   
213
    for (var n in available_modules)
213
    for (var n in available_modules)
214
    {
214
    {
215
        var id_parts = available_modules[n].split(":", 2);
215
        var id_parts = available_modules[n].split(":", 2);
216
       
216
       
217
        if (in_array(filter_module_names, id_parts[0]))
217
        if (in_array(filter_module_names, id_parts[0]))
218
        {
218
        {
219
            result_list.push(id_parts[1]);
219
            result_list.push(id_parts[1]);
220
        }
220
        }
221
    }
221
    }
222
   
222
   
223
    return result_list;
223
    return result_list;
224
}
224
}
225
 
225
 
226
function Module_GetNames()
226
function Module_GetNames()
227
{
227
{
228
    return [ "Dimmer230", "irTransmit", "irReceive", "SimpleDTMF", "BusVoltage", "DS18x20", "FOST02" ];
228
    return [ "Dimmer230", "irTransmit", "irReceive", "SimpleDTMF", "BusVoltage", "DS18x20", "FOST02", "HD44789" ];
229
}
229
}
230
 
230
 
231
function Module_SendMessage(module_name, module_id, command, variables)
231
function Module_SendMessage(module_name, module_id, command, variables)
232
{
232
{
233
    var args = [];
233
    var args = [];
234
   
234
   
235
    args.push(module_name + ":" + module_id);
235
    args.push(module_name + ":" + module_id);
236
    args.push(command);
236
    args.push(command);
237
   
237
   
238
    var length = 0;
238
    var length = 0;
239
    for (var key in variables)
239
    for (var key in variables)
240
    {
240
    {
241
        length++;
241
        length++;
242
    }
242
    }
243
   
243
   
244
    args.push(length);
244
    args.push(length);
245
   
245
   
246
    for (var key in variables)
246
    for (var key in variables)
247
    {
247
    {
248
        args.push(key);
248
        args.push(key);
249
        args.push(variables[key]);
249
        args.push(variables[key]);
250
    }
250
    }
251
   
251
   
252
    return ModuleExport_SendMessage.apply(null, Array.prototype.slice.call(args, 0));
252
    return ModuleExport_SendMessage.apply(null, Array.prototype.slice.call(args, 0));
253
}
253
}
254
 
254
 
255
var Module_OnChangeFunctions = {};
255
var Module_OnChangeFunctions = {};
256
var Module_OnMessageFunctions = {};
256
var Module_OnMessageFunctions = {};
257
 
257
 
258
function Module_RegisterToOnChange(alias_name, callback)
258
function Module_RegisterToOnChange(alias_name, callback)
259
{
259
{
260
    if (!Module_OnChangeFunctions[alias_name])
260
    if (!Module_OnChangeFunctions[alias_name])
261
    {
261
    {
262
        Module_OnChangeFunctions[alias_name] = [];
262
        Module_OnChangeFunctions[alias_name] = [];
263
    }
263
    }
264
   
264
   
265
    Module_OnChangeFunctions[alias_name].push(callback);
265
    Module_OnChangeFunctions[alias_name].push(callback);
266
}
266
}
267
 
267
 
268
function Module_RegisterToOnMessage(alias_name, callback)
268
function Module_RegisterToOnMessage(alias_name, callback)
269
{
269
{
270
    if (!Module_OnMessageFunctions[alias_name])
270
    if (!Module_OnMessageFunctions[alias_name])
271
    {
271
    {
272
        Module_OnMessageFunctions[alias_name] = [];
272
        Module_OnMessageFunctions[alias_name] = [];
273
    }
273
    }
274
   
274
   
Line 279... Line 279...
279
{
279
{
280
    var id_parts = full_id.split(":", 2);
280
    var id_parts = full_id.split(":", 2);
281
    var aliases_data = {};
281
    var aliases_data = {};
282
 
282
 
283
    var aliases_data = Module_LookupAliases({
283
    var aliases_data = Module_LookupAliases({
284
        "module_name" : id_parts[0],
284
        "module_name" : id_parts[0],
285
        "module_id"   : id_parts[1],
285
        "module_id"   : id_parts[1],
286
        "group"       : false
286
        "group"       : false
287
    });
287
    });
288
   
288
   
289
    for (var alias_name in aliases_data)
289
    for (var alias_name in aliases_data)
290
    {
290
    {
291
        var ok = true;
291
        var ok = true;
292
 
292
 
293
        if (aliases_data[alias_name]["specific"])
293
        if (aliases_data[alias_name]["specific"])
294
        {
294
        {
295
            var ok = true;
295
            var ok = true;
296
           
296
           
Line 307... Line 307...
307
        if (Module_OnMessageFunctions[alias_name] && ok)
307
        if (Module_OnMessageFunctions[alias_name] && ok)
308
        {
308
        {
309
            for (var n in Module_OnMessageFunctions[alias_name])
309
            for (var n in Module_OnMessageFunctions[alias_name])
310
            {
310
            {
311
                Module_OnMessageFunctions[alias_name][n](alias_name, command, variables);
311
                Module_OnMessageFunctions[alias_name][n](alias_name, command, variables);
312
            }
312
            }
313
        }
313
        }
314
    }
314
    }
315
   
315
   
316
    if (Module_OnMessageFunctions["all"])
316
    if (Module_OnMessageFunctions["all"])
317
    {
317
    {
318
        for (var n in Module_OnMessageFunctions["all"])
318
        for (var n in Module_OnMessageFunctions["all"])
319
        {
319
        {
320
            Module_OnMessageFunctions["all"][n](id_parts[0], id_parts[1], command, variables);
320
            Module_OnMessageFunctions["all"][n](id_parts[0], id_parts[1], command, variables);
Line 366... Line 366...
366
        {
366
        {
367
            Module_OnChangeFunctions["all"][n](id_parts[0], id_parts[1], available);
367
            Module_OnChangeFunctions["all"][n](id_parts[0], id_parts[1], available);
368
        }
368
        }
369
    }
369
    }
370
}
370
}
-
 
371
 
-
 
372
function Module_GetLastValue(alias_name)
-
 
373
{
-
 
374
    if (arguments.length < 1)
-
 
375
    {
-
 
376
        Log("\033[31mNot enough parameters given.\033[0m\n");
-
 
377
        return false;
-
 
378
    }
-
 
379
   
-
 
380
    var aliases_data = Module_ResolveAlias(alias_name);
-
 
381
    var found = false;
-
 
382
   
-
 
383
    for (var name in aliases_data)
-
 
384
    {
-
 
385
        var last_value_string = Storage_GetParameter("LastValues", alias_name);
-
 
386
       
-
 
387
        if (last_value_string)
-
 
388
        {
-
 
389
            var last_value = eval("(" + last_value_string + ")");
-
 
390
           
-
 
391
            for (var type_name in last_value)
-
 
392
            {
-
 
393
                var date = new Date(last_value[type_name]["timestamp"] * 1000);
-
 
394
               
-
 
395
                Log("\033[96m" + type_name + ": \033[0;1m" + last_value[type_name]["value"] + "\033[0m at " + date.toString() + "\n");
-
 
396
            }
-
 
397
        }
-
 
398
        else
-
 
399
        {
-
 
400
            Log("\033[32mNo value is stored for " + name + ".\033[0m\n");
-
 
401
        }
-
 
402
       
-
 
403
        found = true;
-
 
404
    }
-
 
405
   
-
 
406
    if (!found)
-
 
407
    {
-
 
408
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
-
 
409
        return false;
-
 
410
    }
-
 
411
   
-
 
412
    return true;
-
 
413
}
-
 
414
Console_RegisterCommand(Module_GetLastValue, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Module_GetAliasNames()); });