Subversion Repositories HomeAutomation

Rev

Rev 1644 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

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