Subversion Repositories HomeAutomation

Rev

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

Rev 1646 Rev 1647
Line 1... Line 1...
1
 
1
 
2
IROut_ModuleName     = "irTransmit";
2
IROut_ModuleNames    = [ "irTransmit" ];
3
IROut_Channels       = function() { return [ 0 ]; };
3
IROut_Channels       = function() { return [ 0 ]; };
4
IROut_Statuses       = function() { return [ "Pressed", "Released", "Burst" ]; };
4
IROut_Statuses       = function() { return [ "Pressed", "Released", "Burst" ]; };
5
IROut_Protocols      = function() { return [ "RC5", "RC6", "RCMM", "SIRC", "Sharp", "NEC", "Samsung", "Marantz", "Panasonic", "Sky", "Nexa2" ]; };
5
IROut_Protocols      = function() { return [ "RC5", "RC6", "RCMM", "SIRC", "Sharp", "NEC", "Samsung", "Marantz", "Panasonic", "Sky", "Nexa2" ]; };
6
IROut_Aliases        = function() { return Module_GetAliasNames([ IROut_ModuleName ]); };
6
IROut_Aliases        = function() { return Module_GetAliasNames(IROut_ModuleNames); };
7
IROut_AvailableIds   = function() { return Module_GetAvailableIds([ IROut_ModuleName ]); };
7
IROut_AvailableIds   = function() { return Module_GetAvailableIds(IROut_ModuleNames); };
8
 
-
 
9
function IROut_MessageAliasLookup(module_id, command, variables)
-
 
10
{
-
 
11
    var aliases_data = {};
-
 
12
   
-
 
13
    aliases_data = Module_LookupAliases({
-
 
14
        "module_name" : IROut_ModuleName,
-
 
15
        "module_id"   : module_id,
-
 
16
        "channel"     : channel
-
 
17
    });
-
 
18
   
-
 
19
    return aliases_data;
-
 
20
}
-
 
21
Module_RegisterMessageAliasLookup(IROut_ModuleName, IROut_MessageAliasLookup);
-
 
22
 
-
 
23
function IROut_CreateAlias(alias_name, module_id, channel)
-
 
24
{
-
 
25
    var alias_data = {
-
 
26
        "group"       : false,
-
 
27
        "name"        : alias_name,
-
 
28
        "module_name" : IROut_ModuleName,
-
 
29
        "module_id"   : module_id,
-
 
30
        "channel"     : channel
-
 
31
    };
-
 
32
   
-
 
33
    return Storage_SetParameter("alias", alias_name, JSON.stringify(alias_data));
-
 
34
}
-
 
35
Console_RegisterCommand(IROut_CreateAlias, function(args) { return Console_StandardAutocomplete(args, IROut_Aliases(), IROut_AvailableIds(), IROut_Channels()); });
-
 
36
 
8
 
37
function IROut_StopSend(alias_name)
9
function IROut_StopSend(alias_name)
38
{
10
{
39
    if (arguments.length < 1)
11
    if (arguments.length < 1)
40
    {
12
    {
41
        throw("Not enought parameters given");
13
        Log("\033[31;1mNot enough parameters given.\033[0m\n");
-
 
14
        return false;
42
    }
15
    }
43
   
16
   
44
    var result_text = "";
-
 
45
    var aliases_data = Module_ResolveAlias(alias_name, [ IROut_ModuleName ]);
17
    var aliases_data = Module_ResolveAlias(alias_name, IROut_ModuleNames);
46
   
18
    var found = false;
47
   
19
   
48
    for (var name in aliases_data)
20
    for (var name in aliases_data)
49
    {
21
    {
50
        var variables = {
22
        var variables = {
51
            "Channel"  : aliases_data[name]["channel"],
23
        "Channel"  : aliases_data[name]["specific"]["Channel"],
52
            "Status"   : "Released" };
24
        "Status"   : "Released" };
53
       
25
       
54
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
26
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
55
        {
27
        {
56
            result_text += "StopSend sent successfully to " + name + "\n";
28
            Log("\033[32;1mCommand sent successfully to " + name + ".\033[0m\n");
57
        }
29
        }
58
        else
30
        else
59
        {
31
        {
60
            result_text += "StopSend failed to send to " + name + "\n";
32
            Log("\033[31;1mFailed to send command to " + name + ".\033[0m\n");
61
        }
33
        }
-
 
34
       
-
 
35
        found = true;
62
    }
36
    }
63
   
37
   
64
    if (result_text.length == 0)
38
    if (!found)
65
    {
39
    {
66
        result_text = "No aliases by the name " + alias_name + " were applicable to StopSend.";
40
        Log("\033[31;1mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
67
    }
-
 
68
   
-
 
69
    return result_text;
41
        return false;
70
}
42
    }
71
Console_RegisterCommand(IROut_StopSend, function(args) { return Console_StandardAutocomplete(args, IROut_Aliases()); });
-
 
72
 
-
 
73
function IROut_StartSendAutoComplete(args)
-
 
74
{
-
 
75
    // args[0] == command name
-
 
76
    var arg_index = args.length - 2;
-
 
77
   
43
   
-
 
44
    return true;
-
 
45
}
-
 
46
Console_RegisterCommand(IROut_StopSend, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, IROut_Aliases()); });
-
 
47
 
-
 
48
function IROut_StartSendAutoComplete(arg_index, args)
-
 
49
{
78
    if (arg_index == 0)
50
    if (arg_index == 0)
79
    {
51
    {
80
        return IROut_Aliases();
52
        return IROut_Aliases();
81
    }
53
    }
82
    else if (arg_index == 1)
54
    else if (arg_index == 1)
83
    {
55
    {
84
        var remotes = Storage_GetParameters("RemoteList");
56
        return get_keys(Storage_GetParameters("RemoteList"));
85
       
57
    }
86
        var result = [];
58
    else if (arg_index == 2)
-
 
59
    {
-
 
60
        var remote_storage_name = Storage_GetParameter("RemoteList", args[arg_index - 1]);
87
       
61
 
88
        for (var name in remotes)
62
        return get_keys(Storage_GetParameters(remote_storage_name));
89
        {
-
 
90
            result.push(name);
-
 
91
        }
63
    }
92
       
64
   
93
        return result;
-
 
94
    }
-
 
95
    else if (arg_index == 2)
-
 
96
    {
-
 
97
        var remote_storage_name = Storage_GetParameter("RemoteList", args[arg_index]);
-
 
98
       
-
 
99
        var buttons = Storage_GetParameters(remote_storage_name);
-
 
100
       
-
 
101
        var result = [];
-
 
102
       
-
 
103
        for (var name in buttons)
-
 
104
        {
-
 
105
            result.push(name);
-
 
106
        }
-
 
107
       
-
 
108
        return result;
-
 
109
    }
-
 
110
   
-
 
111
    return [];
65
    return [];
112
}
66
}
113
 
67
 
114
function IROut_Send(alias_name, remote_name, button_name, status)
68
function IROut_Send(alias_name, remote_name, button_name, status)
115
{
69
{
116
    if (arguments.length < 4)
70
    if (arguments.length < 4)
117
    {
71
    {
118
        throw("Not enought parameters given");
72
        Log("\033[31;1mNot enough parameters given.\033[0m\n");
-
 
73
        return false;
119
    }
74
    }
120
   
75
   
121
    var result_text = "";
76
    var result_text = "";
122
    var aliases_data = Module_ResolveAlias(alias_name, [ IROut_ModuleName ]);
77
    var aliases_data = Module_ResolveAlias(alias_name, IROut_ModuleNames);
123
   
78
   
124
    var remote_storage_name = Storage_GetParameter("RemoteList", remote_name);
79
    var remote_storage_name = Storage_GetParameter("RemoteList", remote_name);
125
   
80
   
126
    if (!remote_storage_name)
81
    if (!remote_storage_name)
127
    {
82
    {
128
        return "No such remote name in list, " + remote_name;
83
        Log("\033[31;1mNo such remote name in list, " + remote_name + ".\033[0m\n");
-
 
84
        return false;
129
    }
85
    }
130
   
86
   
131
    var button_string = Storage_GetParameter(remote_storage_name, button_name);
87
    var button_string = Storage_GetParameter(remote_storage_name, button_name);
132
   
88
   
133
    if (!button_string)
89
    if (!button_string)
134
    {
90
    {
135
        return "No such button " + button_name + " found on remote " + remote;
91
        Log("\033[31;1mNo such button " + button_name + " found on remote " + remote + ".\033[0m\n");
-
 
92
        return false;
136
    }
93
    }
137
   
94
   
138
    var button_data = eval("(" + button_string + ")");
95
    var button_data = eval("(" + button_string + ")");
139
   
96
   
140
    if (typeof button_data["protocol"] == 'undefined' || typeof button_data["data"] == 'undefined')
97
    if (typeof button_data["protocol"] == 'undefined' || typeof button_data["data"] == 'undefined')
141
    {
98
    {
142
        return "Button data is corrupt";
99
        Log("\033[31;1mButton data is corrupt.\033[0m\n");
-
 
100
        return false;
143
    }
101
    }
144
   
-
 
145
   
102
   
146
    for (var name in aliases_data)
103
    for (var name in aliases_data)
147
    {
104
    {
148
        var variables = {
105
        var variables = {
149
            "Channel"  : aliases_data[name]["channel"],
106
        "Channel"  : aliases_data[name]["specific"]["Channel"],
150
            "Protocol" : button_data["protocol"],
107
        "Protocol" : button_data["protocol"],
151
            "IRdata"   : button_data["data"],
108
        "IRdata"   : button_data["data"],
152
            "Status"   : status };
109
        "Status"   : status };
153
           
110
       
154
            if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
111
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "IR", variables))
155
            {
112
        {
156
                result_text += "StartSend sent successfully to " + name + "\n";
113
            Log("\033[32;1mCommand sent successfully to " + name + ".\033[0m\n");
157
            }
114
        }
158
            else
115
        else
159
            {
116
        {
160
                result_text += "StartSend failed to send to " + name + "\n";
117
            Log("\033[31;1mFailed to send command to " + name + ".\033[0m\n");
161
            }
118
        }
-
 
119
       
-
 
120
        found = true;
162
    }
121
    }
163
   
122
   
164
    if (result_text.length == 0)
123
    if (!found)
165
    {
124
    {
166
        result_text = "No aliases by the name " + alias_name + " were applicable to StartSend.";
125
        Log("\033[31;1mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
-
 
126
        return false;
167
    }
127
    }
168
   
128
   
169
    return result_text;
129
    return true;
170
}
130
}
171
 
131
 
172
function IROut_StartSend(alias_name, remote_name, button_name)
132
function IROut_StartSend(alias_name, remote_name, button_name)
173
{
133
{
174
    return IROut_Send(alias_name, remote_name, button_name, "Pressed");
134
    return IROut_Send(alias_name, remote_name, button_name, "Pressed");