Subversion Repositories HomeAutomation

Rev

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

  1.  
  2. PID_ModuleNames    = [ "PID" ];
  3. PID_Intervals      = function() { return [ 1, 5, 10, 15, 20 ]; };
  4. //PID_Energy         = function() { return [ 0, 500, 1000, 5000, 10000 ]; };
  5. PID_Temperatures    = function() { return [ 20, 25, 30, 35 ]; };
  6. PID_Aliases        = function() { return Module_GetAliasNames(PID_ModuleNames); };
  7. PID_AvailableIds   = function() { return Module_GetAvailableIds(PID_ModuleNames); };
  8.  
  9. function PID_SetReportInterval(alias_name, interval)
  10. {
  11.     if (arguments.length < 2)
  12.     {
  13.         Log("\033[31mNot enough parameters given.\033[0m\n");
  14.         return false;
  15.     }
  16.    
  17.     var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
  18.     var found = false;
  19.    
  20.     for (var name in aliases_data)
  21.     {
  22.         var variables = {"Time"     : interval };
  23.        
  24.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
  25.         {
  26.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  27.         }
  28.         else
  29.         {
  30.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  31.         }
  32.        
  33.         found = true;
  34.     }
  35.    
  36.     if (!found)
  37.     {
  38.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  39.         return false;
  40.     }
  41.    
  42.     return true;
  43. }
  44. Console_RegisterCommand(PID_SetReportInterval, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Intervals()); });
  45.  
  46.  
  47. function PID_setValue(alias_name, temperature)
  48. {
  49.     if (arguments.length < 2)
  50.     {
  51.         Log("\033[31mNot enough parameters given.\033[0m\n");
  52.         return false;
  53.     }
  54.     var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
  55.     var found = false;
  56.    
  57.     Log ("Called SetValue: "+temperature+"\n");
  58.  
  59.     for (var name in aliases_data)
  60.     {
  61.         var variables = {   "Value"     : temperature,
  62.                     "SensorId"     : 0 };
  63.        
  64.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Temperature_Celsius", variables))
  65.         {
  66.             Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  67.         }
  68.         else
  69.         {
  70.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  71.         }
  72.        
  73.         found = true;
  74.     }
  75.  
  76.     if (!found)
  77.     {
  78.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  79.         return false;
  80.     }
  81.  
  82.     return true;
  83. }
  84. Console_RegisterCommand(PID_setValue, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Temperatures());  });
  85.  
  86.  
  87. function PID_setParameters(alias_name, KP,KI,KD,Time,Unit)
  88. {
  89.     if (arguments.length < 6)
  90.     {
  91.         Log("\033[31mNot enough parameters given.\033[0m\n");
  92.         return false;
  93.     }
  94.     var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
  95.     var found = false;
  96.  
  97.     for (var name in aliases_data)
  98.     {
  99.         var variables = {   "K_P"     : KP,
  100.                     "K_I"     : KI,
  101.                     "K_D"     : KD,
  102.                     "RegulatorTime"     : Time,
  103.                     "TimeUnit"     : Unit };
  104.        
  105.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER", variables))
  106.         {
  107.             Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
  108.             Log("\033[32mK_P = " + KP + "K_I = " + KI + "K_D = " + KD + "RegTime = " + Time + "Unit = " + Unit + ".\033[0m\n");
  109.         }
  110.         else
  111.         {
  112.             Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
  113.         }
  114.        
  115.         found = true;
  116.     }
  117.  
  118.     if (!found)
  119.     {
  120.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  121.         return false;
  122.     }
  123.  
  124.     return true;
  125. }
  126.  
  127. function PID_getConfiguration(alias_name)
  128. {
  129.     if (arguments.length < 1)
  130.     {
  131.         Log("\033[31mNot enough parameters given.\033[0m\n");
  132.         return false;
  133.     }
  134.     var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
  135.     var found = false;
  136.  
  137.     for (var name in aliases_data)
  138.     {
  139.         var variables = {};
  140.        
  141.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_SENSOR", variables))
  142.         {
  143.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  144.         }
  145.         else
  146.         {
  147.             Log("\033[31mFailed to send command 1 to " + name + ".\033[0m\n");
  148.         }
  149.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ACTUATOR", variables))
  150.         {
  151.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  152.         }
  153.         else
  154.         {
  155.             Log("\033[31mFailed to send command 2 to " + name + ".\033[0m\n");
  156.         }
  157.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER", variables))
  158.         {
  159.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  160.         }
  161.         else
  162.         {
  163.             Log("\033[31mFailed to send command 3 to " + name + ".\033[0m\n");
  164.         }
  165.         if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
  166.         {
  167.             //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
  168.         }
  169.         else
  170.         {
  171.             Log("\033[31mFailed to send command 4 to " + name + ".\033[0m\n");
  172.         }
  173.        
  174.         found = true;
  175.     }
  176.  
  177.     if (!found)
  178.     {
  179.         Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
  180.         return false;
  181.     }
  182.  
  183.     return true;
  184. }
  185. Console_RegisterCommand(PID_getConfiguration, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases()); });
  186.  
  187. function PID_OnMessage(module_name, module_id, command, variables)
  188. {
  189.     if (in_array(PID_ModuleNames, module_name))
  190.     {
  191.         var aliases_data = Module_LookupAliases({
  192.             "module_name" : module_name,
  193.             "module_id"   : module_id,
  194.             "group"       : false
  195.         });
  196.        
  197.         switch (command)
  198.         {
  199.             case "DEBUG":
  200.                 for (var alias_name in aliases_data)
  201.                 {
  202.                     var last_value = {};
  203.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  204.  
  205.                     if (last_value_string)
  206.                     {
  207.                         last_value = eval("(" + last_value_string + ")");
  208.                     }
  209.                    
  210.                     last_value["Debug"] = { "P_term" : variables["P_term"],"I_term" : variables["I_term"],"D_term" : variables["D_term"],"Sum" : variables["Sum"], "timestamp" : get_time() };
  211.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  212.                     //Log("Got message DEBUG");
  213.                 }
  214.             break;
  215.             case "CONFIG_SENSOR":
  216.                 for (var alias_name in aliases_data)
  217.                 {
  218.                     var last_value = {};
  219.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  220.  
  221.                     if (last_value_string)
  222.                     {
  223.                         last_value = eval("(" + last_value_string + ")");
  224.                     }
  225.                    
  226.                     last_value["Sensor"] = { "sensorModuleType" : variables["sensorModuleType"],"sensorModuleId" : variables["sensorModuleId"],"sensorId" : variables["sensorId"], "timestamp" : get_time() };
  227.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  228.                 }
  229.             break;
  230.             case "CONFIG_ACTUATOR":
  231.                 for (var alias_name in aliases_data)
  232.                 {
  233.                     var last_value = {};
  234.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  235.  
  236.                     if (last_value_string)
  237.                     {
  238.                         last_value = eval("(" + last_value_string + ")");
  239.                     }
  240.                    
  241.                     last_value["Actuator"] = { "actuatorModuleType" : variables["actuatorModuleType"],"actuatorModuleId" : variables["actuatorModuleId"],"actuatorId" : variables["actuatorId"], "timestamp" : get_time() };
  242.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  243.                 }
  244.             break;
  245.             case "CONFIG_PARAMETER":
  246.                 for (var alias_name in aliases_data)
  247.                 {
  248.                     var last_value = {};
  249.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  250.  
  251.                     if (last_value_string)
  252.                     {
  253.                         last_value = eval("(" + last_value_string + ")");
  254.                     }
  255.                    
  256.                     last_value["Parameters"] = { "K_P" : variables["K_P"],"K_I" : variables["K_I"],"K_D" : variables["K_D"],"TimeUnit" : variables["TimeUnit"],"RegulatorTime" : variables["RegulatorTime"], "timestamp" : get_time() };
  257.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  258.                 }
  259.             break;
  260.             case "PID_STATUS":
  261.                 for (var alias_name in aliases_data)
  262.                 {
  263.                     var last_value = {};
  264.                     var last_value_string = Storage_GetParameter("LastValues", alias_name);
  265.  
  266.                     if (last_value_string)
  267.                     {
  268.                         last_value = eval("(" + last_value_string + ")");
  269.                     }
  270.                    
  271.                     last_value["PID_status"] = { "Measurment" : variables["Measurment"],"Reference" : variables["Reference"],"PWM" : variables["PWM"],"Sum" : variables["Sum"], "timestamp" : get_time() };
  272.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  273.                 }
  274.     //log("PID status: mea:" + this.Measurment + " ref:" + this.Reference + " pwm:" + this.PWM/100 + " sum:" + this.Sum + "\n");
  275.                 //this.callEvent("newValue", canMessage.getData("Id"));
  276.  
  277.     //var self = this;
  278.     //  this.myHTTP.request(function(result, header, content) { self.httpCallback(result, header, content); }, "linuxz.mine.nu/canlogg/add.php?measurment="+ this.Measurment + "&reference="+this.Reference+"&pwm="+this.PWM/100+"&sum="+this.Sum+"&p="+this.K_P+"&i="+this.K_I+"&d="+this.K_D+"&timeunit="+this.TimeUnit+"&pidtime="+this.RegulatorTime+"");
  279.             break;
  280.             case "Temperature_Celsius":
  281.                 for (var alias_name in aliases_data)
  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["Reference"] = { "Value" : variables["Value"], "timestamp" : get_time() };
  292.                     Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
  293.                 }  
  294.                 break;
  295.             case "Report_Interval":
  296.                 this.myReportInterval = canMessage.getData("Time");
  297.                 break;
  298.         }
  299.     }
  300. }
  301. Module_RegisterToOnMessage("all", PID_OnMessage);
  302.