Subversion Repositories HomeAutomation

Rev

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

  1.  
  2.  
  3. function badrumsdimmer(aliasnameSensor, aliasnameDimmer, aliasnameRotary, aliasnameDimmer_indication, aliasnameOutput)
  4. {
  5.     /* We must always call the parent constructor, initialization
  6.        of variables could be done here, but initialize is a better place */
  7.     var self = this;
  8.     this.mySensor = aliasnameSensor;
  9.     this.myDimmer = aliasnameDimmer;
  10.     this.myOutput = aliasnameOutput;
  11.     this.myDimmerIndication = aliasnameDimmer_indication;
  12.     this.myRotary = aliasnameRotary;
  13.  
  14.     Module_RegisterToOnMessage(aliasnameSensor, function(alias_name, command, variables) { self.sensorOnMessage(alias_name, command, variables) });
  15.     Module_RegisterToOnMessage(this.myRotary, function(alias_name, command, variables) { self.rotary_OnMessage(alias_name, command, variables) });
  16.     //Module_RegisterToOnChange(this.myRotary, function(alias_name, available,test) { self.rotaryOnline(alias_name, available,test) });
  17.    
  18.     //Module_RegisterToOnChange( aliasnameSensor, function(alias_name, available,test) { self.sensorOnline(alias_name, available,test) });
  19.     //Module_RegisterToOnChange( aliasnameDimmer, function(alias_name, available) { self.dimmerOnline(alias_name, available) });
  20.    
  21.     /* Start interval timer for sending timestamp to network. Arguments are the callback function and time in milliseconds
  22.     used to make sure an eth-node gets its init packet (600s) */
  23.     this.myTimer = Timer_SetTimer(function(timer) {self.timerUpdate1(timer)}, 5000, true);
  24.     Log("\033[33mbadrumsdimmer created.\033[0m\n");
  25.    
  26. }
  27.  
  28. /* Declaration of instance variables, for static variables remove prototype */
  29. badrumsdimmer.prototype.myDimmer = null;
  30. badrumsdimmer.prototype.mySensor = null;
  31. badrumsdimmer.prototype.myOutput = null;
  32. badrumsdimmer.prototype.myDimmerIndication = null;
  33. badrumsdimmer.prototype.myRotary = null;
  34. badrumsdimmer.prototype.outputStatus = "Low";
  35. badrumsdimmer.prototype.myInterval = null;
  36. badrumsdimmer.prototype.oldPwmValue = 0;
  37. badrumsdimmer.prototype.turnOffCnt = 0;
  38. const MovementTimeout = 300;
  39. const AdjustTimeout = 480;
  40. const ButtonTimeout = 900;
  41.  
  42. badrumsdimmer.prototype.sensorOnline = function(alias_name, available)
  43. {
  44.  
  45. }
  46.  
  47. badrumsdimmer.prototype.dimmerOnline = function(alias_name, available)
  48. {
  49.  
  50. }
  51.  
  52. badrumsdimmer.prototype.sensorOnMessage = function(alias_name, command, variables)
  53. {
  54. //Log("\033[33mMessage.\033[0m\n");
  55.     switch (command)
  56.     {
  57.         case "PinStatus":
  58.         {
  59.            
  60.             if (variables["Status"] == "Low") {
  61.               //Log("\033[33mknapp låg.\033[0m\n");
  62.                 Dimmer_AbsoluteFade(this.myDimmerIndication, 129, 255);
  63.               //Log("\033[33mPin low.\033[0m\n");
  64.                 var last_value_string = Storage_GetParameter("LastValues", this.myDimmer);
  65.                 var last_value = eval("(" + last_value_string + ")");
  66.                 if (last_value["Level"]["value"] == 0) {
  67.                       //log(this.myName + ":" + this.myId + "> Light on.\n");
  68.                     if (this.oldPwmValue == 0) {
  69.                         this.oldPwmValue = 255;
  70.                     }
  71.                     Dimmer_AbsoluteFade(this.myDimmer, 129, this.oldPwmValue);
  72.                 }
  73.          
  74.             } else {
  75.               //Log("\033[33mknapp hög.\033[0m\n");
  76.              
  77.               Dimmer_AbsoluteFade(this.myDimmerIndication, 129, 0);
  78.               //Log("\033[33mPin high.\033[0m\n");
  79.             }
  80.             if (this.turnOffCnt <  MovementTimeout) {
  81.                 this.turnOffCnt = MovementTimeout;
  82.             }
  83.             break;
  84.         }
  85.     }
  86.  
  87. }
  88.  
  89. badrumsdimmer.prototype.timerUpdate1 = function(timer)
  90. {
  91.   //Log("\033[33mTimer.\033[0m\n");
  92.     if (this.turnOffCnt > 0) {
  93.         this.turnOffCnt -= 5;
  94.         if (this.turnOffCnt < 0) {
  95.             this.turnOffCnt = 0;
  96.         }
  97.         if (this.turnOffCnt == 0) {
  98.             //Turn off light
  99.             //log(this.myName + ":" + this.myId + "> Light off.\n");
  100.             var last_value_string = Storage_GetParameter("LastValues", this.myDimmer);
  101.             var last_value = eval("(" + last_value_string + ")");
  102.             this.oldPwmValue = last_value["Level"]["value"];
  103.             //this.myPWM.setPWMValue(0,2);
  104.             Dimmer_AbsoluteFade(this.myDimmer, 129, 0);
  105.             //getDimmerService('Skohylla').absFade(2,129, 0);
  106.         }
  107.     }
  108. }
  109.    
  110. badrumsdimmer.prototype.rotary_OnMessage = function(alias_name, command, variables)
  111. {
  112.     switch (command)
  113.     {
  114.         case "Rotary_Switch":
  115.         {
  116.             Dimmer_AbsoluteFade(this.myDimmer, 129, 17*variables["Position"]);
  117.                
  118.             /*for (var i = 0; i < variables["Steps"]; i++)
  119.             {
  120.                    
  121.                 if (variables["Direction"] == "Clockwise")
  122.                 {
  123.                     Dimmer_RelativeFade(this.myDimmer, 132, "Increase", 25);
  124.                     Log("\033[33mclock.\033[0m\n");
  125.              
  126.                 }
  127.                 else
  128.                 {
  129.                     Dimmer_RelativeFade(this.myDimmer, 132, "Decrease", 25);
  130.                     Log("\033[33m!clock.\033[0m\n");
  131.              
  132.                 }
  133.                
  134.             }*/
  135.  
  136.             if (this.turnOffCnt <  AdjustTimeout) {
  137.                 this.turnOffCnt = AdjustTimeout;
  138.             }
  139.            
  140.             break;
  141.         }
  142.         case "Button":
  143.         {
  144.             var last_value_string = Storage_GetParameter("LastValues", this.myDimmer);
  145.             var last_value = eval("(" + last_value_string + ")");
  146.            
  147.             if (variables["Status"] == "Pressed")
  148.             {
  149.                 Log("\033[33mknapp pressed.\033[0m\n");
  150.              
  151.                 if (last_value["Level"]["value"] == 0) {
  152.                     if (this.oldPwmValue == 0) {
  153.                         this.oldPwmValue = 90;
  154.                     }
  155.                     Dimmer_AbsoluteFade(this.myDimmer, 129, 128);
  156.                 }
  157.                 if (this.turnOffCnt <  AdjustTimeout) {
  158.                     this.turnOffCnt = AdjustTimeout;
  159.                 }
  160.                 last_value_string = Storage_GetParameter("LastValues", this.myOutput);
  161.                 last_value = eval("(" + last_value_string + ")");
  162.                 if (last_value["Status"]["value"] == "High") {
  163.                     Output_SetPin(this.myOutput, "Low");
  164.                 } else {
  165.                     Output_SetPin(this.myOutput, "High");
  166.                 }
  167.                 if (this.turnOffCnt < ButtonTimeout) {
  168.                     this.turnOffCnt = ButtonTimeout;
  169.                 }
  170.             }
  171.        
  172.             break;
  173.         }
  174.     }
  175.  
  176. }
  177.  
  178.