Subversion Repositories HomeAutomation

Rev

Details | Last modification | View Log | SVN | RSS feed

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