Subversion Repositories HomeAutomation

Rev

Rev 1620 | Go to most recent revision | Blame | Last modification | View Log | SVN | RSS feed

  1.  
  2. RequireModule("irReceive");
  3. RequireModule("irTransmit");
  4. RequireModule("Dimmer230");
  5.  
  6. var dimmer_module = GetModule("Dimmer230");
  7. var ir_module = GetModule("irReceive");
  8.  
  9. function test_press(event, id, channel, data, protocol)
  10. {
  11.     Log("Pressed: protocol=" + protocol + ", channel=" + channel + ", data=" + data);
  12.    
  13.     if (protocol == "NEC" && data == 3877174275)
  14.     {
  15.         Dimmer230_StartFade(2, 0, 135, "Increase");
  16.         Dimmer230_StartFade(1, 0, 135, "Increase");
  17.     }
  18.     else if (protocol == "NEC" && data == 3860462595)
  19.     {
  20.         Dimmer230_StartFade(2, 0, 135, "Decrease");
  21.         Dimmer230_StartFade(1, 0, 135, "Decrease");
  22.     }
  23.     else if (protocol == "NEC" && data == 4144561155)
  24.     {
  25.         irTransmit_SendCode(1, 0, "Burst", "NEC", 3843720570);
  26.     }
  27.     else if (protocol == "NEC" && data == 4211407875)
  28.     {
  29.         irTransmit_SendCode(1, 0, "Burst", "NEC", 3827008890);
  30.     }
  31. }
  32.  
  33. function test_release(event, id, channel, data, protocol)
  34. {
  35.     Log("Released: protocol=" + protocol + ", channel=" + channel + ", data=" + data);
  36.    
  37.     if (protocol == "NEC" && (data == 3877174275 || data == 3860462595))
  38.     {
  39.         Dimmer230_StopFade(2, 0);
  40.         Dimmer230_StopFade(1, 0);
  41.     }
  42.     else if (protocol == "NEC" && (data == 4144561155 || data == 4211407875))
  43.     {
  44.         //irTransmit_SendCode(1, 0, "Released", "NEC", data);
  45.     }
  46. }
  47.  
  48. function test_status(event, id, available)
  49. {
  50.     //Log("status change!");
  51. }
  52.  
  53. ir_module.Bind("onStatusChange", test_status);
  54. ir_module.Bind("onPressed", test_press);
  55. ir_module.Bind("onReleased", test_release);
  56.  
  57.  
  58. /*CreateModuleAlias("bardisk", "Dimmer230", 2, { "channel" : 0 });
  59. CreateModuleAlias("bokhylla", "Dimmer230", 1, { "channel" : 0 });
  60. CreateModuleAliasGroup("vardagsrum", [ "bokhylla", "bardisk" ]);
  61. */
  62.  
  63. function fadeto(alias, level, speed)
  64. {
  65.     var alias_data = resolvealias(alias);
  66.    
  67.     if (alias_data == null)
  68.     {
  69.         return "No such module name found";
  70.     }
  71.    
  72.     if (alias_data["is_group"])
  73.     {
  74.         var result = "";
  75.        
  76.         for (var n = 0; n < alias_data["aliases"].length; n++)
  77.         {
  78.             result += fadeto(alias_data["aliases"][n], level, speed) + "\n";
  79.         }
  80.        
  81.         return result;
  82.     }
  83.    
  84.     if (alias_data["module_name"] != "Dimmer230")
  85.     {
  86.         return "Module type " + alias_data["module_name"] + " is not valid for this action, valid are Dimmer230";
  87.     }
  88.    
  89.     if (!speed)
  90.     {
  91.         speed = 135;
  92.     }
  93.  
  94.     return Dimmer230_AbsoluteFade(alias_data["module_id"], alias_data["extra"], speed, level);
  95. }
  96. RegisterConsoleCommand(fadeto, function(args) { return StandardAutocomplete(args, Dimmer230.instance_.GetAvailableNames(), [ 0, 50, 100, 150, 200, 255 ], [ 50, 135, 200, 255 ]); });
  97.  
  98. function irsend_autocomplete(args)
  99. {
  100.     // args[0] == command name
  101.     var arg_index = args.length - 2;
  102.    
  103.     if (arg_index == 0)
  104.     {
  105.         return irTransmit.instance_.GetAvailableNames();
  106.     }
  107.     else if (arg_index == 1)
  108.     {
  109.         var remotes = Storage_GetParameters("RemoteList");
  110.        
  111.         var result = new Array();
  112.        
  113.         for (var name in remotes)
  114.         {
  115.             result.push(name);
  116.         }
  117.        
  118.         return result;
  119.     }
  120.     else if (arg_index == 2)
  121.     {
  122.         var remote_storage_name = Storage_GetParameter("RemoteList", args[arg_index]);
  123.  
  124.         var buttons = Storage_GetParameters(remote_storage_name);
  125.  
  126.         var result = new Array();
  127.        
  128.         for (var name in buttons)
  129.         {
  130.             result.push(name);
  131.         }
  132.        
  133.         return result;
  134.     }
  135.    
  136.     return new Array();
  137. }
  138.  
  139.  
  140. function irsend(alias, remote, button)
  141. {
  142.     var alias_data = resolvealias(alias);
  143.    
  144.     if (alias_data == null)
  145.     {
  146.         return "No such module name found";
  147.     }
  148.    
  149.     if (alias_data["is_group"])
  150.     {
  151.         var result = "";
  152.        
  153.         for (var n = 0; n < alias_data["aliases"].length; n++)
  154.         {
  155.             result += irsend(alias_data["aliases"][n], remote, button) + "\n";
  156.         }
  157.        
  158.         return result;
  159.     }
  160.    
  161.     if (alias_data["module_name"] != "irTransmit")
  162.     {
  163.         return "Module type " + alias_data["module_name"] + " is not valid for this action, valid are irTransmit";
  164.     }
  165.    
  166.     Log(remote);
  167.     var remote_storage_name = Storage_GetParameter("RemoteList", remote);
  168.     Log(remote_storage_name);
  169.     var button = eval("(" + Storage_GetParameter(remote_storage_name, button) + ")");
  170.     Log(JSON.stringify(button));
  171.     Log(alias_data["module_id"]);
  172.     Log(alias_data["extra"]);
  173.     Log(button["protocol"]);
  174.     Log(button["data"]);
  175.    
  176.     return irTransmit_SendCode(alias_data["module_id"], alias_data["extra"], "Burst", button["protocol"], button["data"]);
  177. }
  178. RegisterConsoleCommand(irsend, irsend_autocomplete);
  179.