Subversion Repositories HomeAutomation

Rev

Rev 1649 | Blame | 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_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 = {};
  63.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  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.                    
  72.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  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 = {};
  89.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  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.                    
  98.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  99.                 }
  100.                
  101.                 break;
  102.             }
  103.         }
  104.     }
  105. }
  106. Module_RegisterToOnMessage("all", Sensor_OnMessage);
  107.