Subversion Repositories HomeAutomation

Rev

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

  1.  
  2. Require("plugin/module.js");
  3.  
  4. Dimmer_ModuleNames    = [ "Dimmer230", "hwPWM" ];
  5. Dimmer_SpeedLevels    = function() { return [ 50, 135, 200, 255 ]; };
  6. Dimmer_StrengthLevels = function() { return [ 0, 50, 100, 150, 200, 255 ]; };
  7. Dimmer_StepsLevels    = function() { return [ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90 ]; };
  8. Dimmer_Directions     = function() { return [ "Increase", "Decrease" ]; };
  9. Dimmer_Channels       = function() { return [ 0 ]; };
  10. Dimmer_Aliases        = function() { return Module_GetAliasNames(Dimmer_ModuleNames); };
  11. Dimmer_AvailableIds   = function() { return Module_GetAvailableIds(Dimmer_ModuleNames); };
  12.  
  13. function Dimmer_StartFade(alias_name, speed, direction)
  14. {
  15.     if (arguments.length < 3)
  16.     {
  17.         Log("\033[31mNot enough parameters given.\033[0m\n");
  18.         return false;
  19.     }
  20.    
  21.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  22.     var found = false;
  23.    
  24.     for (var name in aliases_data)
  25.     {
  26.         var variables = {
  27.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  28.             "Speed"     : speed,
  29.             "Direction" : direction };
  30.            
  31.             if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Start_Fade", variables))
  32.             {
  33.                 //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  34.             }
  35.             else
  36.             {
  37.                 Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  38.             }
  39.            
  40.             found = true;
  41.     }
  42.    
  43.     if (!found)
  44.     {
  45.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  46.         return false;
  47.     }
  48.    
  49.     return true;
  50. }
  51. Console_RegisterCommand(Dimmer_StartFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions()); });
  52.  
  53. function Dimmer_StopFade(alias_name)
  54. {
  55.     if (arguments.length < 1)
  56.     {
  57.         Log("\033[31mNot enough parameters given.\033[0m\n");
  58.         return false;
  59.     }
  60.    
  61.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  62.     var found = false;
  63.    
  64.     for (var name in aliases_data)
  65.     {
  66.         var variables = {
  67.             "Channel" : aliases_data[name]["specific"]["Channel"] };
  68.            
  69.             if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Stop_Fade", variables))
  70.             {
  71.                 //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  72.             }
  73.             else
  74.             {
  75.                 Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  76.             }
  77.            
  78.             found = true;
  79.     }
  80.    
  81.     if (!found)
  82.     {
  83.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  84.         return false;
  85.     }
  86.    
  87.     return true;
  88. }
  89. Console_RegisterCommand(Dimmer_StopFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases()); });
  90.  
  91. function Dimmer_AbsoluteFade(alias_name, speed, level)
  92. {
  93.     if (arguments.length < 3)
  94.     {
  95.         Log("\033[31mNot enough parameters given.\033[0m\n");
  96.         return false;
  97.     }
  98.    
  99.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  100.     var found = false;
  101.     var level_set = level;
  102.    
  103.     for (var name in aliases_data)
  104.     {
  105.         if (aliases_data[name]["module_name"]=="hwPWM") {
  106.             level_set = level*39;
  107.         }
  108.        
  109.         //Check for undefined Channel parameter in alias
  110.         if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
  111.             Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
  112.             break;
  113.         }
  114.        
  115.         var variables = {
  116.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  117.             "Speed"     : speed,
  118.             "EndValue"  : level_set
  119.         };
  120.        
  121.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
  122.         {
  123.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  124.         }
  125.         else
  126.         {
  127.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  128.         }
  129.        
  130.         found = true;
  131.        
  132.     }
  133.    
  134.     if (!found)
  135.     {
  136.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  137.         return false;
  138.     }
  139.    
  140.     return true;
  141. }
  142. Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
  143.  
  144. function Dimmer_RelativeFade(alias_name, speed, direction, steps)
  145. {
  146.     if (arguments.length < 4)
  147.     {
  148.         Log("\033[31mNot enough parameters given.\033[0m\n");
  149.         return false;
  150.     }
  151.    
  152.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  153.     var found = false;
  154.     var steps_set = steps;
  155.    
  156.     for (var name in aliases_data)
  157.     {
  158.         if (aliases_data[name]["module_name"]=="hwPWM") {
  159.             steps_set = steps*39;
  160.         }
  161.         var variables = {
  162.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  163.             "Speed"     : speed,
  164.             "Direction" : direction,
  165.             "Steps"     : steps_set
  166.         };
  167.        
  168.         //Check for undefined Channel parameter in alias
  169.         if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
  170.             Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
  171.             break;
  172.         }
  173.        
  174.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
  175.         {
  176.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  177.         }
  178.         else
  179.         {
  180.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  181.         }
  182.        
  183.         found = true;
  184.     }
  185.    
  186.     if (!found)
  187.     {
  188.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  189.         return false;
  190.     }
  191.    
  192.     return true;
  193. }
  194. Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
  195.  
  196. function Dimmer_Demo(alias_name, speed, steps)
  197. {
  198.     if (arguments.length < 3)
  199.     {
  200.         Log("\033[31mNot enough parameters given.\033[0m\n");
  201.         return false;
  202.     }
  203.    
  204.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  205.     var found = false;
  206.     var steps_set = steps;
  207.    
  208.     for (var name in aliases_data)
  209.     {
  210.         if (aliases_data[name]["module_name"]=="hwPWM") {
  211.             steps_set = steps*39;
  212.         }
  213.         var variables = {
  214.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  215.             "Speed"     : speed,
  216.             "Steps"     : steps_set
  217.         };
  218.        
  219.         //Check for undefined Channel parameter in alias
  220.         if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
  221.             Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
  222.             break;
  223.         }
  224.        
  225.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
  226.         {
  227.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  228.         }
  229.         else
  230.         {
  231.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  232.         }
  233.        
  234.         found = true;
  235.     }
  236.    
  237.     if (!found)
  238.     {
  239.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  240.         return false;
  241.     }
  242.    
  243.     return true;
  244. }
  245. Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
  246.  
  247. function Dimmer_OnMessage(module_name, module_id, command, variables)
  248. {
  249.     if (in_array(Dimmer_ModuleNames, module_name))
  250.     {
  251.         var aliases_data = Module_LookupAliases({
  252.             "module_name" : module_name,
  253.             "module_id"   : module_id,
  254.             "group"       : false
  255.         });
  256.        
  257.         switch (command)
  258.         {
  259.             case "Netinfo":
  260.             {
  261.                 for (var alias_name in aliases_data)
  262.                 {
  263.                     if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
  264.                     {
  265.                         continue;
  266.                     }
  267.                    
  268.                     var last_value = {};
  269.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  270.                    
  271.                     if (last_value_string)
  272.                     {
  273.                         last_value = eval("(" + last_value_string + ")");
  274.                     }
  275.                    
  276.                     last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
  277.                     last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
  278.                     last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
  279.                    
  280.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  281.                 }
  282.                
  283.                 break;
  284.             }
  285.             case "Pwm":
  286.             {
  287.                 for (var alias_name in aliases_data)
  288.                 {
  289.                     if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
  290.                     {
  291.                         continue;
  292.                     }
  293.                    
  294.                     var last_value = {};
  295.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  296.                    
  297.                     if (last_value_string)
  298.                     {
  299.                         last_value = eval("(" + last_value_string + ")");
  300.                     }
  301.                     var value = 0 + variables["Value"];
  302.                     value = value / 39;
  303.                     value = parseInt(value).toString();
  304.                     last_value["Level"] = { "value" : value, "timestamp" : get_time() };
  305.                    
  306.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  307.                 }
  308.                
  309.                 break;
  310.             }
  311.         }
  312.     }
  313. }
  314. Module_RegisterToOnMessage("all", Dimmer_OnMessage);
  315.