Subversion Repositories HomeAutomation

Rev

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

Rev Author Line No. Line
1648 runge 1
 
1649 runge 2
Sensor_ModuleNames    = [ "DS18x20", "FOST02", "BusVoltage", "SimpleDTMF" ];
1648 runge 3
Sensor_Intervals      = function() { return [ 1, 5, 10, 15, 20 ]; };
4
Sensor_Aliases        = function() { return Module_GetAliasNames(Sensor_ModuleNames); };
5
Sensor_AvailableIds   = function() { return Module_GetAvailableIds(Sensor_ModuleNames); };
6
 
7
function Sensor_SetReportInterval(alias_name, interval)
8
{
9
    if (arguments.length < 2)
10
    {
1649 runge 11
        Log("\033[31mNot enough parameters given.\033[0m\n");
1648 runge 12
        return false;
13
    }
14
 
15
    var aliases_data = Module_ResolveAlias(alias_name, Sensor_ModuleNames);
16
    var found = false;
17
 
18
    for (var name in aliases_data)
19
    {
20
        var variables = {
1649 runge 21
        "SensorId" : aliases_data[name]["specific"]["SensorId"],
22
        "time"     : interval };
23
 
24
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
25
        {
26
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
27
        }
28
        else
29
        {
30
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
31
        }
32
 
33
        found = true;
34
    }
35
 
36
    if (!found)
37
    {
38
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
39
        return false;
40
    }
41
 
42
    return true;
43
}
44
Console_RegisterCommand(Sensor_SetReportInterval, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Sensor_Aliases(), Sensor_Intervals()); });
45
 
46
function Sensor_OnMessage(module_name, module_id, command, variables)
47
{
48
    if (in_array(Sensor_ModuleNames, module_name))
49
    {
50
        var aliases_data = Module_LookupAliases({
51
            "module_name" : module_name,
52
            "module_id"   : module_id,
53
            "group"       : false
54
        });
55
 
56
        switch (command)
57
        {
58
            case "Phonenumber":
59
            {
60
                for (var alias_name in aliases_data)
61
                {
62
                    var last_value = {};
1650 runge 63
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
1649 runge 64
 
65
                    if (last_value_string)
66
                    {
67
                        last_value = eval("(" + last_value_string + ")");
68
                    }
69
 
70
                    last_value[command] = { "value" : variables["Number"], "timestamp" : get_time() };
71
 
1650 runge 72
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
1649 runge 73
                }
74
 
75
                break;
76
            }
77
            case "Voltage":
78
            case "Temperature_Celsius":
79
            case "Humidity_Percent":
80
            {
81
                for (var alias_name in aliases_data)
82
                {
83
                    if (aliases_data[alias_name]["specific"]["SensorId"] != variables["SensorId"])
84
                    {
85
                        continue;
86
                    }
87
 
88
                    var last_value = {};
1650 runge 89
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
1649 runge 90
 
91
                    if (last_value_string)
92
                    {
93
                        last_value = eval("(" + last_value_string + ")");
94
                    }
95
 
96
                    last_value[command] = { "value" : variables["Value"], "timestamp" : get_time() };
97
 
1650 runge 98
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
1649 runge 99
                }
100
 
101
                break;
102
            }
103
        }
104
    }
105
}
106
Module_RegisterToOnMessage("all", Sensor_OnMessage);