Subversion Repositories HomeAutomation

Rev

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

Rev Author Line No. Line
1765 linlun 1
 
2275 linlun 2
PID_ModuleNames    	= [ "PID" ];
3
PID_SensorModuleNames 	= [ "DS18x20", "FOST02", "DHT11", "NTC", "TC1047A", "LM335", "TCN75A" ];
4
PID_ActModuleNames 	= [ "hwPWM", "softPWM", "SlowPWM", "PCAPWM" ];
5
 
6
PID_Intervals      	= function() { return [ 1, 5, 10, 15, 20 ]; };
7
//PID_Energy         	= function() { return [ 0, 500, 1000, 5000, 10000 ]; };
1765 linlun 8
PID_Temperatures	= function() { return [ 20, 25, 30, 35 ]; };
2271 linlun 9
PID_Constants		= function() { return [ 0, 0.1, 0.5, 1, 10, 100, 1000 ]; };
2275 linlun 10
PID_TimeUnits		= function() { return [ "s", "ms"]; };
2280 linlun 11
PID_ControllerDirection = function() { return [ "direct", "reverse"]; };
2275 linlun 12
PID_Times		= function() { return [ 1, 5, 10, 15, 20, 40, 60]; };
13
PID_Aliases        	= function() { return Module_GetAliasNames(PID_ModuleNames); };
14
PID_AvailableIds   	= function() { return Module_GetAvailableIds(PID_ModuleNames); };
15
PID_SensorAliases	= function() { return Module_GetAliasNames(PID_SensorModuleNames); };
16
PID_ActAliases		= function() { return Module_GetAliasNames(PID_ActModuleNames); };
1765 linlun 17
 
18
function PID_SetReportInterval(alias_name, interval)
19
{
20
	if (arguments.length < 2)
21
	{
22
		Log("\033[31mNot enough parameters given.\033[0m\n");
23
		return false;
24
	}
25
 
26
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
27
	var found = false;
28
 
29
	for (var name in aliases_data)
30
	{
31
		var variables = {"Time"     : interval };
32
 
33
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
34
		{
35
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
36
		}
37
		else
38
		{
39
			Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
40
		}
41
 
42
		found = true;
43
	}
44
 
45
	if (!found)
46
	{
47
		Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
48
		return false;
49
	}
50
 
51
	return true;
52
}
53
Console_RegisterCommand(PID_SetReportInterval, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Intervals()); });
54
 
55
 
56
function PID_setValue(alias_name, temperature)
57
{
58
	if (arguments.length < 2)
59
	{
60
		Log("\033[31mNot enough parameters given.\033[0m\n");
61
		return false;
62
	}
63
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
64
	var found = false;
65
 
66
	Log ("Called SetValue: "+temperature+"\n");
67
 
68
	for (var name in aliases_data)
69
	{
70
		var variables = {	"Value"     : temperature,
71
					"SensorId"     : 0 };
72
 
73
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Temperature_Celsius", variables))
74
		{
75
			Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
76
		}
77
		else
78
		{
79
			Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
80
		}
81
 
82
		found = true;
83
	}
84
 
85
	if (!found)
86
	{
87
		Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
88
		return false;
89
	}
90
 
91
	return true;
92
}
93
Console_RegisterCommand(PID_setValue, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Temperatures());  });
94
 
2275 linlun 95
function PID_setSensor(alias_name, alias_sensor)
96
{
97
	if (arguments.length < 2)
98
	{
99
		Log("\033[31mNot enough parameters given.\033[0m\n");
100
		return false;
101
	}
102
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
103
	var found = false;
104
 
105
	var sensor_aliases_data = Module_ResolveAlias(alias_sensor, PID_SensorModuleNames);
106
	var first = true;
107
	for (var sensor in sensor_aliases_data) 
108
	{
109
		if (first == false)
110
		{
111
			Log("\033[31mNo sensor by the name " + alias_sensor + " were applicable for this command, or alias was a group.\033[0m\n");
112
			return false;
113
		}
114
		Log ("Called Set Sensor:\n");
115
		Log ("sensorModuleType:   " + sensor_aliases_data[sensor]["module_name"]+"\n");
116
		Log ("sensorModuleId:     " + sensor_aliases_data[sensor]["module_id"]+"\n");
117
		Log ("SensorId:           " + sensor_aliases_data[sensor]["specific"]["SensorId"]+"\n");
118
		var id = 0;
119
		switch (sensor_aliases_data[sensor]["module_name"])
120
		{
121
		  case "DS18x20": id = 3; break;
122
		  case "FOST02": id = 5; break;
123
		  case "TC1047A": id = 17; break;
124
		  case "TCN75A": id = 46; break;
125
		  case "LM335": id = 51; break;
126
		  case "NTC": id = 55; break;
127
		  case "DHT11": id = 61; break;
128
		  default: 
129
		    Log("\033[31mCould not resolve sensor module type.\033[0m\n");
130
		    return; break;
131
		}
132
 
133
 
134
		for (var name in aliases_data)
135
		{
136
			var variables = {	"sensorModuleType"     : id,
137
						"sensorModuleId"       : sensor_aliases_data[sensor]["module_id"], 
138
						"sensorId"     : sensor_aliases_data[sensor]["specific"]["SensorId"] };
1765 linlun 139
 
2275 linlun 140
			if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_SENSOR", variables))
141
			{
142
				Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
143
			}
144
			else
145
			{
146
				Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
147
			}
148
 
149
			found = true;
150
		}
151
		first = false;
152
		if (!found)
153
		{
154
			Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
155
			return false;
156
		}
157
	}
158
 
159
	if (!found)
160
	{
161
		Log("\033[31mNo sensor aliases by the name " + alias_sensor + " were applicable for this command.\033[0m\n");
162
		return false;
163
	}
164
 
165
	return true;
166
}
167
Console_RegisterCommand(PID_setSensor, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_SensorAliases());  });
168
 
169
function PID_setActuator(alias_name, alias_actuator)
170
{
171
	if (arguments.length < 2)
172
	{
173
		Log("\033[31mNot enough parameters given.\033[0m\n");
174
		return false;
175
	}
176
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
177
	var found = false;
178
 
179
	var act_aliases_data = Module_ResolveAlias(alias_actuator, PID_ActModuleNames);
180
	var first = true;
181
	for (var act in act_aliases_data) 
182
	{
183
		if (first == false)
184
		{
185
			Log("\033[31mNo actuator by the name " + alias_actuator + " were applicable for this command, or alias was a group.\033[0m\n");
186
			return false;
187
		}
188
		Log ("Called Set Actuator:\n");
189
		Log ("actModuleType:   " + act_aliases_data[act]["module_name"]+"\n");
190
		Log ("actModuleId:     " + act_aliases_data[act]["module_id"]+"\n");
191
		Log ("actId:           " + act_aliases_data[act]["specific"]["Channel"]+"\n");
192
		var id = 0;
193
		switch (act_aliases_data[act]["module_name"])
194
		{
195
		  case "hwPWM": id = 13; break;
196
		  case "softPWM": id = 21; break;
197
		  case "SlowPWM": id = 19; break;
198
		  case "PCAPWM": id = 29; break;
199
		  default: 
200
		    Log("\033[31mCould not resolve actuator module type.\033[0m\n");
201
		    return; break;
202
		}
203
 
204
 
205
		for (var name in aliases_data)
206
		{
207
			var variables = {	"actuatorModuleType"     : id,
208
						"actuatorModuleId"       : act_aliases_data[act]["module_id"], 
209
						"actuatorId"             : act_aliases_data[act]["specific"]["Channel"] };
210
 
211
			if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ACTUATOR", variables))
212
			{
213
				Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
214
			}
215
			else
216
			{
217
				Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
218
			}
219
 
220
			found = true;
221
		}
222
		first = false;
223
		if (!found)
224
		{
225
			Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
226
			return false;
227
		}
228
	}
229
 
230
	if (!found)
231
	{
232
		Log("\033[31mNo actuator aliases by the name " + alias_actuator + " were applicable for this command.\033[0m\n");
233
		return false;
234
	}
235
 
236
	return true;
237
}
238
Console_RegisterCommand(PID_setActuator, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_ActAliases());  });
239
 
240
 
2280 linlun 241
function PID_setParameters(alias_name, KP,KI,KD,Time,Unit,ControllerDirection)
1765 linlun 242
{
243
	if (arguments.length < 6)
244
	{
245
		Log("\033[31mNot enough parameters given.\033[0m\n");
246
		return false;
247
	}
248
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
249
	var found = false;
250
 
251
	for (var name in aliases_data)
252
	{
2280 linlun 253
		var variables = {	"K_P"     		: KP,
254
					"K_I"     		: KI,
255
					"K_D"     		: KD,
256
					"RegulatorTime"     	: Time,
257
					"TimeUnit"     		: Unit };
258
		var variables_P_I = {	"K_P"     		: KP,
259
					"K_I"     		: KI };
260
		var variables_D_T = {	"K_D"     		: KD,
261
					"ControllerDirection"   : ControllerDirection,
262
					"RegulatorTime"     	: Time,
263
					"TimeUnit"     		: Unit };
1765 linlun 264
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER", variables))
265
		{
266
			Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
267
			Log("\033[32mK_P = " + KP + "K_I = " + KI + "K_D = " + KD + "RegTime = " + Time + "Unit = " + Unit + ".\033[0m\n");
268
		}
269
		else
270
		{
271
			Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
272
		}
273
 
2271 linlun 274
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_P_I", variables_P_I))
275
		{
276
			Log("\033[32mK_P = " + KP + "K_I = " + KI + ".\033[0m\n");
277
		}
278
		else
279
		{
280
			Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
281
		}
282
 
283
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_D_T", variables_D_T))
284
		{
2280 linlun 285
			Log("\033[32mK_D = " + KD + " RegTime = " + Time + " Unit = " + Unit + " Direction = " + ControllerDirection +".\033[0m\n");
2271 linlun 286
		}
287
		else
288
		{
289
			Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
290
		}
291
 
1765 linlun 292
		found = true;
293
	}
294
 
295
	if (!found)
296
	{
297
		Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
298
		return false;
299
	}
300
 
301
	return true;
302
}
2280 linlun 303
Console_RegisterCommand(PID_setParameters, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Constants(), PID_Constants(), PID_Constants(), PID_Times(), PID_TimeUnits(), PID_ControllerDirection()); });
1765 linlun 304
 
2275 linlun 305
 
306
function PID_setOutputMaxMin(alias_name, Max,Min)
307
{
308
	if (arguments.length < 3)
309
	{
310
		Log("\033[31mNot enough parameters given.\033[0m\n");
311
		return false;
312
	}
313
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
314
	var found = false;
315
 
316
	for (var name in aliases_data)
317
	{
318
		var variables = {	"Min"     : Min,
319
					"Max"     : Max };
320
 
321
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "OutMinMax", variables))
322
		{
323
			Log("\033[32mMin = " + Min + "Max = " + Max + ".\033[0m\n");
324
		}
325
		else
326
		{
327
			Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
328
		}
329
 
330
		found = true;
331
	}
332
 
333
	if (!found)
334
	{
335
		Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
336
		return false;
337
	}
338
 
339
	return true;
340
}
341
Console_RegisterCommand(PID_setOutputMaxMin, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Constants(), PID_Constants()); });
342
 
1765 linlun 343
function PID_getConfiguration(alias_name)
344
{
345
	if (arguments.length < 1)
346
	{
347
		Log("\033[31mNot enough parameters given.\033[0m\n");
348
		return false;
349
	}
350
	var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
351
	var found = false;
352
 
353
	for (var name in aliases_data)
354
	{
355
		var variables = {};
356
 
357
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_SENSOR", variables))
358
		{
359
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
360
		}
361
		else
362
		{
363
			Log("\033[31mFailed to send command 1 to " + name + ".\033[0m\n");
364
		}
365
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ACTUATOR", variables))
366
		{
367
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
368
		}
369
		else
370
		{
371
			Log("\033[31mFailed to send command 2 to " + name + ".\033[0m\n");
372
		}
373
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER", variables))
374
		{
375
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
376
		}
377
		else
378
		{
379
			Log("\033[31mFailed to send command 3 to " + name + ".\033[0m\n");
380
		}
381
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
382
		{
383
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
384
		}
385
		else
386
		{
387
			Log("\033[31mFailed to send command 4 to " + name + ".\033[0m\n");
388
		}
2271 linlun 389
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_P_I", variables))
390
		{
391
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
392
		}
393
		else
394
		{
395
			Log("\033[31mFailed to send command 5 to " + name + ".\033[0m\n");
396
		}
397
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_D_T", variables))
398
		{
399
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
400
		}
401
		else
402
		{
403
			Log("\033[31mFailed to send command 6 to " + name + ".\033[0m\n");
404
		}
2275 linlun 405
		if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "OutMinMax", variables))
406
		{
407
			//Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
408
		}
409
		else
410
		{
411
			Log("\033[31mFailed to send command 6 to " + name + ".\033[0m\n");
412
		}
1765 linlun 413
		found = true;
414
	}
415
 
416
	if (!found)
417
	{
418
		Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
419
		return false;
420
	}
421
 
422
	return true;
423
}
424
Console_RegisterCommand(PID_getConfiguration, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases()); });
425
 
426
function PID_OnMessage(module_name, module_id, command, variables)
427
{
428
	if (in_array(PID_ModuleNames, module_name))
429
	{
430
		var aliases_data = Module_LookupAliases({
431
			"module_name" : module_name,
432
			"module_id"   : module_id,
433
			"group"       : false
434
		});
435
 
436
		switch (command)
437
		{
438
			case "DEBUG":
439
				for (var alias_name in aliases_data)
440
				{
441
					var last_value = {};
442
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
443
 
444
					if (last_value_string)
445
					{
446
						last_value = eval("(" + last_value_string + ")");
447
					}
448
 
2076 linlun 449
					last_value["Debug"] = { "value" : { "P_term" : variables["P_term"],"I_term" : variables["I_term"],"D_term" : variables["D_term"],"Sum" : variables["Sum"] }, "timestamp" : get_time() };
1765 linlun 450
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
451
					//Log("Got message DEBUG");
452
				}
453
			break;
454
			case "CONFIG_SENSOR":
455
				for (var alias_name in aliases_data)
456
				{
457
					var last_value = {};
458
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
459
 
460
					if (last_value_string)
461
					{
462
						last_value = eval("(" + last_value_string + ")");
463
					}
464
 
2076 linlun 465
					last_value["Sensor"] = { "value" : { "sensorModuleType" : variables["sensorModuleType"],"sensorModuleId" : variables["sensorModuleId"],"sensorId" : variables["sensorId"] }, "timestamp" : get_time() };
1765 linlun 466
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
467
				}
468
			break;
469
			case "CONFIG_ACTUATOR":
470
				for (var alias_name in aliases_data)
471
				{
472
					var last_value = {};
473
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
474
 
475
					if (last_value_string)
476
					{
477
						last_value = eval("(" + last_value_string + ")");
478
					}
479
 
2076 linlun 480
					last_value["Actuator"] = { "value" : { "actuatorModuleType" : variables["actuatorModuleType"],"actuatorModuleId" : variables["actuatorModuleId"],"actuatorId" : variables["actuatorId"] }, "timestamp" : get_time() };
1765 linlun 481
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
482
				}
483
			break;
484
			case "CONFIG_PARAMETER":
485
				for (var alias_name in aliases_data)
486
				{
487
					var last_value = {};
488
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
489
 
490
					if (last_value_string)
491
					{
492
						last_value = eval("(" + last_value_string + ")");
493
					}
494
 
2076 linlun 495
					last_value["Parameters"] = { "value" : { "K_P" : variables["K_P"],"K_I" : variables["K_I"],"K_D" : variables["K_D"],"TimeUnit" : variables["TimeUnit"],"RegulatorTime" : variables["RegulatorTime"] }, "timestamp" : get_time() };
1765 linlun 496
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
497
				}
498
			break;
499
			case "PID_STATUS":
500
				for (var alias_name in aliases_data)
501
				{
502
					var last_value = {};
503
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
504
 
505
					if (last_value_string)
506
					{
507
						last_value = eval("(" + last_value_string + ")");
508
					}
509
 
2076 linlun 510
					last_value["PID_status"] = { "value" : { "Measurment" : variables["Measurment"],"Reference" : variables["Reference"],"PWM" : variables["PWM"],"Sum" : variables["Sum"] }, "timestamp" : get_time() };
1765 linlun 511
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
512
				}
2280 linlun 513
	//Log("PID status: mea:" + this.Measurment + " ref:" + this.Reference + " pwm:" + this.PWM/100 + " sum:" + this.Sum + "\n");
1765 linlun 514
				//this.callEvent("newValue", canMessage.getData("Id"));
515
 
516
	//var self = this;
517
	//	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+"");
518
			break;
519
			case "Temperature_Celsius":
520
				for (var alias_name in aliases_data)
521
				{
522
					var last_value = {};
523
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
524
 
525
					if (last_value_string)
526
					{
527
						last_value = eval("(" + last_value_string + ")");
528
					}
529
 
2076 linlun 530
					last_value["Reference"] = { "value" : variables["Value"], "timestamp" : get_time() };
1765 linlun 531
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
532
				}	
533
				break;
534
			case "Report_Interval":
535
				this.myReportInterval = canMessage.getData("Time");
536
				break;
2280 linlun 537
 
538
			case "CONFIG_PARAMETER_P_I":
539
				for (var alias_name in aliases_data)
540
				{
541
					var last_value = {};
542
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
543
 
544
					if (last_value_string)
545
					{
546
						last_value = eval("(" + last_value_string + ")");
547
					}
548
 
549
					last_value["Parameters"] = { "value" : { "K_P" : variables["K_P"],"K_I" : variables["K_I"], "K_D" : last_value["Parameters"]["value"]["K_D"],"ControllerDirection" : last_value["Parameters"]["value"]["ControllerDirection"],"TimeUnit" : last_value["Parameters"]["value"]["TimeUnit"],"RegulatorTime" : last_value["Parameters"]["value"]["RegulatorTime"] }, "timestamp" : get_time() };
550
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
551
				}	
552
			case "CONFIG_PARAMETER_D_T":
553
				for (var alias_name in aliases_data)
554
				{
555
					var last_value = {};
556
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
557
 
558
					if (last_value_string)
559
					{
560
						last_value = eval("(" + last_value_string + ")");
561
					}
562
					last_value["Parameters"] = { "value" : { "K_P" : last_value["Parameters"]["value"]["K_P"],"K_I" : last_value["Parameters"]["value"]["K_I"], "K_D" : variables["K_D"],"ControllerDirection" : variables["ControllerDirection"],"TimeUnit" : variables["TimeUnit"],"RegulatorTime" : variables["RegulatorTime"] }, "timestamp" : get_time() };
563
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
564
				}	
565
			case "P_I_term":
566
				for (var alias_name in aliases_data)
567
				{
568
					var last_value = {};
569
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
570
 
571
					if (last_value_string)
572
					{
573
						last_value = eval("(" + last_value_string + ")");
574
					}
575
 
576
					last_value["Debug"] = { "value" : { "P_term" : variables["P_term"],"I_term" : variables["I_term"],"D_term" : last_value["Debug"]["value"]["D_term"],"Output" : last_value["Debug"]["value"]["Output"],"Min" : last_value["Debug"]["value"]["Min"],"Max" : last_value["Debug"]["value"]["Max"] }, "timestamp" : get_time() };
577
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
578
					//Log("Got message DEBUG");
579
				}
580
			break;	
581
			case "D_term_Out":
582
				for (var alias_name in aliases_data)
583
				{
584
					var last_value = {};
585
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
586
 
587
					if (last_value_string)
588
					{
589
						last_value = eval("(" + last_value_string + ")");
590
					}
591
 
592
					Log("Got message DEBUG");
593
 
594
					last_value["Debug"] = { "value" : { "P_term" : last_value["Debug"]["value"]["P_term"],"I_term" : last_value["Debug"]["value"]["I_term"],"D_term" : variables["D_term"],"Output" : variables["Output"],"Min" : last_value["Debug"]["value"]["Min"],"Max" : last_value["Debug"]["value"]["Max"] }, "timestamp" : get_time() };
595
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
596
					//Log("Got message DEBUG");
597
				}
598
			break;		
599
			case "OutMinMax":
600
				for (var alias_name in aliases_data)
601
				{
602
					var last_value = {};
603
					var last_value_string = Storage_GetParameter("LastValues", alias_name);
604
 
605
					if (last_value_string)
606
					{
607
						last_value = eval("(" + last_value_string + ")");
608
					}
609
 
610
					last_value["Debug"] = { "value" : { "P_term" : last_value["Debug"]["value"]["P_term"],"I_term" : last_value["Debug"]["value"]["I_term"],"D_term" : last_value["Debug"]["value"]["D_term"],"Output" : last_value["Debug"]["value"]["Output"], "Min" : variables["Min"],"Max" : variables["Max"] }, "timestamp" : get_time() };
611
					Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
612
					//Log("Got message DEBUG");
613
				}
614
			break;	
1765 linlun 615
		}
616
	}
617
}
618
Module_RegisterToOnMessage("all", PID_OnMessage);