Subversion Repositories HomeAutomation

Rev

Rev 1899 | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1.  
  2.  
  3. function TouchPanel(aliasnameRGBLED_red,aliasnameRGBLED_green, aliasnameRGBLED_blue, aliasnameTouch, aliasnameDimmer1, aliasnameDimmer2, aliasnameDimmer3, aliasnameDimmer4, aliasnameDimmer5, aliasnameDimmer6,aliasnameDimmer7, aliasnameIR )
  4. {
  5.  
  6. /* Declaration of instance variables, for static variables remove prototype */
  7.  
  8.     /* We must always call the parent constructor, initialization
  9.        of variables could be done here, but initialize is a better place */
  10.     var self = this;
  11.     this.myTouch = aliasnameTouch;
  12.     this.myRGBLED_red = aliasnameRGBLED_red;
  13.     this.myRGBLED_blue = aliasnameRGBLED_blue;
  14.     this.myRGBLED_green = aliasnameRGBLED_green;
  15.     this.myDimmer1 = aliasnameDimmer1;
  16.     this.myDimmer2 = aliasnameDimmer2;
  17.     this.myDimmer3 = aliasnameDimmer3;
  18.     this.myDimmer4 = aliasnameDimmer4;
  19.     this.myDimmer5 = aliasnameDimmer5;
  20.     this.myDimmer6 = aliasnameDimmer6;
  21.     this.myDimmer7 = aliasnameDimmer7;
  22.     this.myIR = aliasnameIR;
  23.     this.myTouchMode = "Gesture";
  24.     this.myTouchRawX = 0;
  25.     this.myTouchRawY = 0;
  26.     this.myTouchRawYlast = 0;
  27.     Module_RegisterToOnMessage(aliasnameTouch, function(alias_name, command, variables) { self.touchOnMessage(alias_name, command, variables) });
  28.    
  29.     /* Start interval timer for sending timestamp to network. Arguments are the callback function and time in milliseconds
  30.     used to make sure an eth-node gets its init packet (600s) */
  31.     this.myTimer = Timer_SetTimer(function(timer) {self.timerUpdate(timer)}, 5000, true);
  32.     Log("\033[33mTouchpanel created.\033[0m");
  33.    
  34. }
  35.  
  36. /* Declaration of instance variables, for static variables remove prototype */
  37. TouchPanel.prototype.myDimmer1 = null;
  38. TouchPanel.prototype.myDimmer2 = null;
  39. TouchPanel.prototype.myDimmer3 = null;
  40. TouchPanel.prototype.myDimmer4 = null;
  41. TouchPanel.prototype.myDimmer5 = null;
  42. TouchPanel.prototype.myDimmer6 = null;
  43. TouchPanel.prototype.myDimmer7 = null;
  44. TouchPanel.prototype.myTouch = null;
  45. TouchPanel.prototype.myRGBLED_red = null;
  46. TouchPanel.prototype.myRGBLED_green = null;
  47. TouchPanel.prototype.myRGBLED_blue = null;
  48. //TouchPanel.prototype.outputStatus = "Low";
  49. TouchPanel.prototype.myInterval = null;
  50. //TouchPanel.prototype.oldPwmValue = 0;
  51. //TouchPanel.prototype.turnOffCnt = 0;
  52.  
  53. TouchPanel.prototype.myTouchMode = null;
  54. TouchPanel.prototype.myTouchRawX = null;
  55. TouchPanel.prototype.myTouchRawY = null;
  56. TouchPanel.prototype.myTouchRawYlast = null;
  57.  
  58. const XMIN = 40;
  59. const XMAX = 215;
  60. //const XLIMIT1 = XMIN + (XMAX-XMIN)/3;
  61. //const XLIMIT2 = XMIN*2 + (XMAX-XMIN)/3;
  62. const XLIMIT1 = 100;
  63. const XLIMIT2 = 155;
  64.  
  65.  
  66.  
  67. TouchPanel.prototype.touchOnMessage = function(alias_name, command, variables)
  68. {
  69. //Log("\033[33mMessage.\033[0m\n");
  70.     switch (command)
  71.     {
  72.         case "Gesture":
  73.             var gesture = null;
  74.             gesture = Touch_lookupGesture(variables["f1"],variables["f2"],variables["f3"],variables["f4"],variables["f5"],variables["f6"],variables["f7"],variables["f8"],variables["f9"]);
  75.             if (this.myTouchMode == "Gesture")
  76.             {
  77.                 var self = this;
  78.                 Log("New gesture: "+gesture);
  79.                 if (gesture == "INSERT")
  80.                 {
  81.                     ////getDimmerService('Badrum').absFade(2,132, 255);
  82.                     //getDimmerService('TakHall').absFade(0,132, 255);
  83.                     //getDimmerService('TakSovrum').absFade(0,132, 255);
  84.                     //Dimmer_AbsoluteFade(this.myDimmer1, 132, 255);
  85.                     Dimmer_AbsoluteFade(this.myDimmer2, 132, 255);
  86.                     Dimmer_AbsoluteFade(this.myDimmer3, 132, 255);
  87.                     Dimmer_AbsoluteFade(this.myDimmer4, 132, 255);
  88.                     Dimmer_AbsoluteFade(this.myDimmer5, 132, 255);
  89.                     Dimmer_AbsoluteFade(this.myDimmer6, 132, 255);
  90.                     this.setLED(0,255,0);
  91.                     Timer_Cancel(this.myInterval);
  92.                     this.myInterval = Timer_SetTimer(function(timer) {self.timerUpdate(timer)}, 5000, true);
  93.                    
  94.                    
  95.                     /* Check if it is time to turn on ljusstake i sovrummet */
  96.                    
  97.                     if (get_time() > TouchGetTsFromTime("7:00") && get_time() < TouchGetTsFromTime("9:30"))
  98.                     {
  99.                         TouchstartSend("rf", "NexaRemote", "Dosa_3_On", 4);
  100.                     }
  101.                     if (get_time() > TouchGetTsFromTime("16:00") && get_time() < TouchGetTsFromTime("22:00"))
  102.                     {
  103.                         TouchstartSend("rf", "NexaRemote", "Dosa_3_On", 4);
  104.                     }
  105.                    
  106.                    
  107.                 }
  108.                 else if (gesture == "JOIN")
  109.                 {
  110.                     //getDimmerService('Badrum').absFade(2,132, 0);
  111.                     //getDimmerService('TakHall').absFade(0,132, 0);
  112.                     //getDimmerService('TakSovrum').absFade(0,132, 0);
  113.                     Dimmer_AbsoluteFade(this.myDimmer1, 132, 0);
  114.                     Dimmer_AbsoluteFade(this.myDimmer2, 132, 0);
  115.                     var shorttime = new Date().getTimeShortFormated();
  116.                     /* Remove leading zero if any */
  117.                     var data = parseInt(shorttime.substr(0,2));
  118.                     //if (data < 22 && data >= 6) {
  119.                         Dimmer_AbsoluteFade(this.myDimmer3, 132, 0);
  120.                     //}
  121.                     Dimmer_AbsoluteFade(this.myDimmer4, 132, 0);
  122.                     Dimmer_AbsoluteFade(this.myDimmer5, 132, 0);
  123.                     Dimmer_AbsoluteFade(this.myDimmer6, 132, 0);
  124.                     Dimmer_AbsoluteFade(this.myDimmer7, 132, 0);
  125.                     this.setLED(0,0,255);
  126.                     Timer_Cancel(this.myInterval);
  127.                     this.myInterval = Timer_SetTimer(function(timer) {self.timerUpdate(timer)}, 5000, true);
  128.                    
  129.                 }
  130.                 /*else if (gesture == "UNDO")
  131.                 {
  132.                     Log("Going to raw mode\n");
  133.                     this.setLED(255,0,0);
  134.                     this.myTouchMode = "Raw";
  135.                
  136.                 } */
  137.                 else if (gesture == "COPY")
  138.                 {
  139.                     this.setLED(0,255,255);
  140.                     //getDimmerService('Badrum').absFade(2,132, 0);
  141.                     //getDimmerService('TakHall').absFade(0,117, 0);
  142.                     //getDimmerService('TakSovrum').absFade(0,105, 0);
  143.                     Dimmer_AbsoluteFade(this.myDimmer1, 132, 0);
  144.                     Dimmer_AbsoluteFade(this.myDimmer2, 117, 0);
  145.                     Dimmer_AbsoluteFade(this.myDimmer3, 132, 0);
  146.                     Dimmer_AbsoluteFade(this.myDimmer4, 132, 0);
  147.                     Dimmer_AbsoluteFade(this.myDimmer5, 132, 0);
  148.                     Dimmer_AbsoluteFade(this.myDimmer6, 132, 0);
  149.                     Dimmer_AbsoluteFade(this.myDimmer7, 132, 0);
  150.                     Timer_Cancel(this.myInterval);
  151.                     this.myInterval = Timer_SetTimer(function(timer) {self.timerUpdate(timer)}, 5000, true);
  152.                 } else if (gesture == "INSERT_LINE")
  153.                 {
  154.                     Log("Starting Roomba\n");
  155.                     this.setLED(255,0,0);
  156.                     IROut_SendBurst(this.myIR, "Roomba", "Clean");         
  157.                 }
  158.  
  159.             }
  160.            
  161.            
  162.             break;
  163.         case "Raw":
  164.  
  165.             break;
  166.     }
  167.  
  168. }
  169.  
  170. function TouchGetTsFromTime(time)
  171. {
  172.     var date = new Date().getDateFormated();
  173.     var timestamp = Date.parse(date + " " + time);
  174.     return timestamp/1000;
  175. }
  176.  
  177. /* Start sending command, could be command to start heating or stop heating */
  178. /* A command is sent <count> number of times to make sure its actually sent */
  179. function TouchstartSend(alias, remote, button, count)
  180. {
  181.     if (count > 0)
  182.     {
  183. //Log("carHeater: Start sending heater command, count="+count);
  184.         sendCounter = count;
  185.         sendTimer_id = Timer_SetTimer(function(timer) {send(alias, remote, button)}, 5000, true);
  186.         send(alias, remote, button);
  187.     }
  188. }
  189.  
  190. function Touchsend(alias, remote, button)
  191. {
  192.     if (sendCounter > 0)
  193.     {
  194. //Log("carHeater: Sending heater command, count="+sendCounter);
  195.         IROut_SendBurst(alias, remote, button);
  196.     }
  197.     sendCounter--;
  198.     if (sendCounter == 0)
  199.     {
  200.         Timer_Cancel(sendTimer_id);
  201.     }
  202. }
  203.  
  204.  
  205. TouchPanel.prototype.timerUpdate = function(timer)
  206. {
  207.     this.myTouchMode = "Gesture"
  208.     Log("Switching back to Gesture mode\n");
  209.     this.setLED(0,0,0);
  210.     Timer_Cancel(timer);
  211.     //this.myInterval = Timer_SetTimer(function(timer) {self.updateDisplay(timer)}, this.currentMenuItem.UpdateTime, true);
  212. }
  213.  
  214.  
  215. TouchPanel.prototype.setLED = function(red, green, blue)
  216. {
  217.     //log("setting LED\n");
  218.     softPWM_SetPWMValue(this.myRGBLED_red, 10000-(red&0xff)*39);
  219.     softPWM_SetPWMValue(this.myRGBLED_green, 10000-(green&0xff)*39);
  220.     softPWM_SetPWMValue(this.myRGBLED_blue, 10000-(blue&0xff)*39);
  221. }
  222.  
  223.  
  224. /*
  225.  
  226. TouchPanel.prototype.incomingStatusChanged = function()
  227. {
  228.     if (this.myTouchMode == "Raw")
  229.     {
  230.         if (this.myTouchPanelService.getLastState() == "Pressed")
  231.         {
  232.             this.myTouchRawX = this.myTouchPanelService.getLastX();
  233.             this.myTouchRawY = this.myTouchPanelService.getLastY();
  234.             this.myTouchRawYlast = this.myTouchPanelService.getLastY();
  235.         }
  236.         else if (this.myTouchPanelService.getLastState() == "Released")
  237.         {
  238.             *//*var currX = this.myTouchPanelService.getLastX();
  239.             var currY = this.myTouchPanelService.getLastY();
  240.             log("stored x "+this.myTouchRawX+" currx "+currX+" stored y "+this.myTouchRawY+" curry "+currY+"\n");
  241.             if (this.myTouchRawX < currX+8 && this.myTouchRawX > currX-8 && this.myTouchRawY < currY+8 && this.myTouchRawY > currY-8)
  242.             {
  243.                 log("activating next lightdevice\n");
  244.                 if (this.currentLightDevice.nextItem)
  245.                 {
  246.                     this.currentLightDevice = this.currentLightDevice.nextItem;
  247.                     this.currentLightDevice.doActivate();
  248.                 }
  249.             }
  250. *//*
  251. //log("starting timer\n");
  252.         this.myInterval.start();
  253.         }
  254.     }
  255. }
  256.  
  257. TouchPanel.prototype.incomingRaw = function()
  258. {
  259.    
  260.     if (this.myTouchMode == "Raw")
  261.     {
  262.         if (this.myTouchPanelService.getLastState() == "Pressed")
  263.         {
  264.             var yDiff = this.myTouchPanelService.getLastY() - this.myTouchRawYlast;
  265.             //var xPos = this.myTouchPanelService.getLastX();
  266.             if (yDiff > 0)
  267.             {  
  268.                 if (this.myTouchRawX < XLIMIT1) {
  269.                 //this.currentLightDevice.doRelIncrease(yDiff*2)
  270.                     getDimmerService('Badrum').relFade(2,132, "Increase", yDiff*2);
  271.                 } else if (this.myTouchRawX < XLIMIT2) {
  272.                     getDimmerService('TakHall').relFade(0,132, "Increase", yDiff*2);
  273.                 } else {
  274.                     getDimmerService('TakSovrum').relFade(0,132, "Increase", yDiff*2);
  275.                 }
  276.             }
  277.             else if (yDiff < 0)
  278.             {
  279.                 if (this.myTouchRawX < XLIMIT1) {
  280.                 //this.currentLightDevice.doRelIncrease(yDiff*2)
  281.                     getDimmerService('Badrum').relFade(2,132, "Decrease", yDiff*2);
  282.                 } else if (this.myTouchRawX < XLIMIT2) {
  283.                     getDimmerService('TakHall').relFade(0,132, "Decrease", yDiff*2);
  284.                 } else {
  285.                     getDimmerService('TakSovrum').relFade(0,132, "Decrease", yDiff*2);
  286.                 }
  287.             }
  288.             this.myTouchRawYlast = this.myTouchPanelService.getLastY();
  289.         }
  290.         //this.myInterval.stop();
  291.         //this.myInterval.start();
  292.     }
  293. }
  294. */
  295.  
  296.  
  297.