Subversion Repositories HomeAutomation

Rev

Rev 1648 | Rev 1650 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1.  
  2. Sensor_ModuleNames    = [ "DS18x20", "FOST02", "BusVoltage", "SimpleDTMF" ];
  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.     {
  11.         Log("\033[31mNot enough parameters given.\033[0m\n");
  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 = {
  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_GetLastValue(alias_name)
  47. {
  48.     if (arguments.length < 1)
  49.     {
  50.         Log("\033[31mNot enough parameters given.\033[0m\n");
  51.         return false;
  52.     }
  53.    
  54.     var aliases_data = Module_ResolveAlias(alias_name, Sensor_ModuleNames);
  55.     var found = false;
  56.    
  57.     for (var name in aliases_data)
  58.     {
  59.         var last_value_string = Storage_GetParameter("SensorValueList", alias_name);
  60.        
  61.         if (last_value_string)
  62.         {
  63.             var last_value = eval("(" + last_value_string + ")");
  64.            
  65.             for (var type_name in last_value)
  66.             {
  67.                 var date = new Date(last_value[type_name]["timestamp"] * 1000);
  68.                
  69.                 Log("\033[96m" + type_name + ": \033[0;1m" + last_value[type_name]["value"] + "\033[0m at " + date.toString() + "\n");
  70.             }
  71.         }
  72.         else
  73.         {
  74.             Log("\033[32mNo value is stored for " + name + ".\033[0m\n");
  75.         }
  76.        
  77.         found = true;
  78.     }
  79.    
  80.     if (!found)
  81.     {
  82.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  83.         return false;
  84.     }
  85.    
  86.     return true;
  87. }
  88. Console_RegisterCommand(Sensor_GetLastValue, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Sensor_Aliases()); });
  89.  
  90. function Sensor_OnMessage(module_name, module_id, command, variables)
  91. {
  92.     if (in_array(Sensor_ModuleNames, module_name))
  93.     {
  94.         var aliases_data = Module_LookupAliases({
  95.             "module_name" : module_name,
  96.             "module_id"   : module_id,
  97.             "group"       : false
  98.         });
  99.        
  100.         switch (command)
  101.         {
  102.             case "Phonenumber":
  103.             {
  104.                 for (var alias_name in aliases_data)
  105.                 {
  106.                     var last_value = {};
  107.                     var last_value_string = Storage_GetParameter("SensorValueList", alias_name);
  108.                
  109.                     if (last_value_string)
  110.                     {
  111.                         last_value = eval("(" + last_value_string + ")");
  112.                     }
  113.                    
  114.                     last_value[command] = { "value" : variables["Number"], "timestamp" : get_time() };
  115.                    
  116.                     Storage_GetParameter("SensorValueList", alias_name, JSON.stringify(last_value));
  117.                 }
  118.                
  119.                 break;
  120.             }
  121.             case "Voltage":
  122.             case "Temperature_Celsius":
  123.             case "Humidity_Percent":
  124.             {
  125.                 for (var alias_name in aliases_data)
  126.                 {
  127.                     if (aliases_data[alias_name]["specific"]["SensorId"] != variables["SensorId"])
  128.                     {
  129.                         continue;
  130.                     }
  131.                    
  132.                     var last_value = {};
  133.                     var last_value_string = Storage_GetParameter("SensorValueList", alias_name);
  134.  
  135.                     if (last_value_string)
  136.                     {
  137.                         last_value = eval("(" + last_value_string + ")");
  138.                     }
  139.                    
  140.                     last_value[command] = { "value" : variables["Value"], "timestamp" : get_time() };
  141.                    
  142.                     Storage_SetParameter("SensorValueList", alias_name, JSON.stringify(last_value));
  143.                 }
  144.                
  145.                 break;
  146.             }
  147.         }
  148.     }
  149. }
  150. Module_RegisterToOnMessage("all", Sensor_OnMessage);
  151.