Subversion Repositories HomeAutomation

Rev

Rev 2079 | Rev 2128 | 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.         if (level_set > 9940) {
  108.           level_set = 10000;
  109.         }
  110.         } else {
  111.             level_set = level;
  112.     }
  113.        
  114.         //Check for undefined Channel parameter in alias
  115.         if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
  116.             Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
  117.             break;
  118.         }
  119.        
  120.         var variables = {
  121.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  122.             "Speed"     : speed,
  123.             "EndValue"  : level_set
  124.         };
  125.        
  126.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Abs_Fade", variables))
  127.         {
  128.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  129.         }
  130.         else
  131.         {
  132.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  133.         }
  134.        
  135.         found = true;
  136.        
  137.     }
  138.    
  139.     if (!found)
  140.     {
  141.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  142.         return false;
  143.     }
  144.    
  145.     return true;
  146. }
  147. Console_RegisterCommand(Dimmer_AbsoluteFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StrengthLevels()); });
  148.  
  149. function Dimmer_RelativeFade(alias_name, speed, direction, steps)
  150. {
  151.     if (arguments.length < 4)
  152.     {
  153.         Log("\033[31mNot enough parameters given.\033[0m\n");
  154.         return false;
  155.     }
  156.    
  157.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  158.     var found = false;
  159.     var steps_set = steps;
  160.    
  161.     for (var name in aliases_data)
  162.     {
  163.         if (aliases_data[name]["module_name"]=="hwPWM") {
  164.             steps_set = steps*39;
  165.         if (steps_set > 9940) {
  166.           level_set = 10000;
  167.         }
  168.         } else {
  169.             steps_set = steps;
  170.     }
  171.         var variables = {
  172.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  173.             "Speed"     : speed,
  174.             "Direction" : direction,
  175.             "Steps"     : steps_set
  176.         };
  177.        
  178.         //Check for undefined Channel parameter in alias
  179.         if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
  180.             Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
  181.             break;
  182.         }
  183.        
  184.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Rel_Fade", variables))
  185.         {
  186.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  187.         }
  188.         else
  189.         {
  190.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  191.         }
  192.        
  193.         found = true;
  194.     }
  195.    
  196.     if (!found)
  197.     {
  198.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  199.         return false;
  200.     }
  201.    
  202.     return true;
  203. }
  204. Console_RegisterCommand(Dimmer_RelativeFade, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_Directions(), Dimmer_StepsLevels()); });
  205.  
  206. function Dimmer_Demo(alias_name, speed, steps)
  207. {
  208.     if (arguments.length < 3)
  209.     {
  210.         Log("\033[31mNot enough parameters given.\033[0m\n");
  211.         return false;
  212.     }
  213.    
  214.     var aliases_data = Module_ResolveAlias(alias_name, Dimmer_ModuleNames);
  215.     var found = false;
  216.     var steps_set = steps;
  217.    
  218.     for (var name in aliases_data)
  219.     {
  220.         if (aliases_data[name]["module_name"]=="hwPWM") {
  221.             steps_set = steps*39;
  222.         if (steps_set > 9940) {
  223.           level_set = 10000;
  224.         }
  225.         } else {
  226.             steps_set = steps;
  227.     }
  228.         var variables = {
  229.             "Channel"   : aliases_data[name]["specific"]["Channel"],
  230.             "Speed"     : speed,
  231.             "Steps"     : steps_set
  232.         };
  233.        
  234.         //Check for undefined Channel parameter in alias
  235.         if (typeof aliases_data[name]["specific"]["Channel"] == 'undefined') {
  236.             Log("\033[31mFailed to send command to " + name + ", Alias does not contain specific parameter \"Channel\".\033[0m\n");
  237.             break;
  238.         }
  239.        
  240.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Demo", variables))
  241.         {
  242.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  243.         }
  244.         else
  245.         {
  246.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  247.         }
  248.        
  249.         found = true;
  250.     }
  251.    
  252.     if (!found)
  253.     {
  254.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  255.         return false;
  256.     }
  257.    
  258.     return true;
  259. }
  260. Console_RegisterCommand(Dimmer_Demo, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, Dimmer_Aliases(), Dimmer_SpeedLevels(), Dimmer_StepsLevels()); });
  261.  
  262. function Dimmer_OnMessage(module_name, module_id, command, variables)
  263. {
  264.     if (in_array(Dimmer_ModuleNames, module_name))
  265.     {
  266.         var aliases_data = Module_LookupAliases({
  267.             "module_name" : module_name,
  268.             "module_id"   : module_id,
  269.             "group"       : false
  270.         });
  271.        
  272.         switch (command)
  273.         {
  274.             case "Netinfo":
  275.             {
  276.                 for (var alias_name in aliases_data)
  277.                 {
  278.                     if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
  279.                     {
  280.                         continue;
  281.                     }
  282.                    
  283.                     var last_value = {};
  284.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  285.                    
  286.                     if (last_value_string)
  287.                     {
  288.                         last_value = eval("(" + last_value_string + ")");
  289.                     }
  290.                    
  291.                     last_value["Connection"] = { "value" : variables["Connection"], "timestamp" : get_time() };
  292.                     last_value["Frequency"] = { "value" : variables["Frequency"], "timestamp" : get_time() };
  293.                     last_value["Level"] = { "value" : variables["DimmerValue"], "timestamp" : get_time() };
  294.                    
  295.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  296.                 }
  297.                
  298.                 break;
  299.             }
  300.             case "Pwm":
  301.             {
  302.                 for (var alias_name in aliases_data)
  303.                 {
  304.                     if (aliases_data[alias_name]["specific"]["Channel"] != variables["Channel"])
  305.                     {
  306.                         continue;
  307.                     }
  308.                    
  309.                     var last_value = {};
  310.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  311.                    
  312.                     if (last_value_string)
  313.                     {
  314.                         last_value = eval("(" + last_value_string + ")");
  315.                     }
  316.                     var value = 0 + variables["Value"];
  317.                     value = value / 39;
  318.                     value = parseInt(value).toString();
  319.                     last_value["Level"] = { "value" : value, "timestamp" : get_time() };
  320.                    
  321.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  322.                 }
  323.                
  324.                 break;
  325.             }
  326.         }
  327.     }
  328. }
  329. Module_RegisterToOnMessage("all", Dimmer_OnMessage);
  330.