Subversion Repositories HomeAutomation

Rev

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

Rev Author Line No. Line
1603 runge 1
 
1647 runge 2
IRIn_ModuleNames    = [ "irReceive" ];
1646 runge 3
IRIn_Channels       = function() { return [ 0 ]; };
1647 runge 4
IRIn_Aliases        = function() { return Module_GetAliasNames(IRIn_ModuleNames); };
5
IRIn_AvailableIds   = function() { return Module_GetAvailableIds(IRIn_ModuleNames); };
6
IRIn_Remotes        = function() { return get_keys(Storage_GetParameters("RemoteList")); };
1646 runge 7
 
1647 runge 8
IRIn_RecordRemoteName = null;
9
IRIn_RecordAliasData = null;
10
IRIn_RecordLast = null;
11
 
12
function IRIn_CodeToName(data, protocol, remote_name)
1646 runge 13
{
1647 runge 14
    var remote_storage_name = Storage_GetParameter("RemoteList", remote_name);
1646 runge 15
 
1647 runge 16
        if (!remote_storage_name)
17
        {
18
        Log("No such remote " + remote_name);
19
                return "";
20
        }
1646 runge 21
 
1647 runge 22
    var buttons = Storage_GetParameters(remote_storage_name);
1646 runge 23
 
1647 runge 24
    for (var button_name in buttons)
25
    {
26
        var button_data = eval("(" + buttons[button_name]+ ")");
1646 runge 27
 
1647 runge 28
        Log(buttons[button_name]);
1646 runge 29
 
1647 runge 30
        Log(button_data);
31
        Log(button_data["protocol"] + "==" + protocol);
32
        Log(button_data["data"] + "==" + data);
1646 runge 33
 
1647 runge 34
        if (button_data["data"] == (data + '') && button_data["protocol"] == protocol)
35
        {
36
            return button_name;
37
        }
38
    }
1646 runge 39
 
1647 runge 40
    Log("Found nothing");
41
    return "";
42
}
1646 runge 43
 
1647 runge 44
function IRIn_Record(alias_name, remote_name)
45
{
46
 
47
    if (arguments.length < 2)
48
    {
49
        Log("\033[31;1mNot enough parameters given.\033[0m\n");
50
        return false;
51
    }
52
 
53
    IRIn_RecordRemoteName = Storage_GetParameter("RemoteList", remote_name);
54
 
55
    if (!IRIn_RecordRemoteName)
56
    {
57
        IRIn_RecordRemoteName = "Remote_" + remote_name;
58
 
59
        Log("\033[32;1mNo such remote name in list, " + remote_name + ", creating...\033[0m\n");
60
 
61
        Storage_SetParameter("RemoteList", remote_name, IRIn_RecordRemoteName);
62
    }
63
 
64
    var aliases_data = Module_ResolveAlias(alias_name, IRIn_ModuleNames);
65
 
66
    for (var name in aliases_data)
67
    {
68
        if (aliases_data[name]["group"])
69
        {
70
            Log("\033[31;1mAlias must not be an alias group.\033[0m\n");
71
            return false;
72
        }
73
 
74
        IRIn_RecordAliasData = aliases_data[name];
75
        Log("Enter a single dot to finish.\n");
76
 
77
        Log("\033[29;1mPress a button on you remote...\033[0m\n");
78
        Console_PreventDefaultPrompt();
79
 
80
        Module_RegisterToOnMessage(alias_name, IRIn_RecordOnIrMessage);
81
        return true;
82
    }
83
 
84
    Log("\033[31;1mNo such alias name found, " + alias_name + ".\033[0m\n");
85
    return false;
86
 
87
}
88
Console_RegisterCommand(IRIn_Record, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, IRIn_Aliases(), IRIn_Remotes()); });
1646 runge 89
 
1647 runge 90
function IRIn_RecordOnResponse(response)
1603 runge 91
{
1647 runge 92
    if (response == ".")
93
    {
94
        return true;
95
    }
96
 
97
    Storage_SetParameter(IRIn_RecordRemoteName, response, JSON.stringify(IRIn_RecordLast));
98
    IRIn_RecordLast = null;
99
 
100
    Log("\033[29;1mPress a button on you remote...\033[0m\n");
101
    Console_PreventDefaultPrompt();
102
 
103
    return true;
1603 runge 104
}
105
 
1647 runge 106
function IRIn_RecordOnIrMessage(alias_name, command, variables)
1603 runge 107
{
1647 runge 108
    Log("callback\n");
109
 
110
    if (variables["Status"] != "Pressed" || IRIn_RecordLast != null)
1603 runge 111
    {
1647 runge 112
        return;
1603 runge 113
    }
114
 
1647 runge 115
    Log("\033[32;1mGot code " + variables["IRdata"] + " on protocol " + variables["Protocol"] + ".\033[0m\n");
116
 
117
    IRIn_RecordLast = { "protocol" : variables["Protocol"], "data" : variables["IRdata"] };
118
 
119
    Console_PromptRequest("\033[29;1mEnter name: \033[0m", IRIn_RecordOnResponse);
120
 
121
    return true;
1603 runge 122
}
123
 
1647 runge 124
 
125