Subversion Repositories HomeAutomation

Rev

Rev 2280 | 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" ];
2300 linlun 5
PID_Algos       = function() { return [ "ZIEGLER_NICHOLS_PI", "ZIEGLER_NICHOLS_PID", "TYREUS_LUYBEN_PI", "TYREUS_LUYBEN_PID", "CIANCONE_MARLIN_PI", "CIANCONE_MARLIN_PID", "AMIGOF_PI", "PESSEN_INTEGRAL_PID", "SOME_OVERSHOOT_PID", "NO_OVERSHOOT_PID" , "STOP"  ]; };
2275 linlun 6
PID_Intervals       = function() { return [ 1, 5, 10, 15, 20 ]; };
2300 linlun 7
PID_Outputs         = 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 ]; };
2300 linlun 10
PID_LookBackTimes   = function() { return [ 0, 1, 10, 100, 255 ]; };
2275 linlun 11
PID_TimeUnits       = function() { return [ "s", "ms"]; };
2280 linlun 12
PID_ControllerDirection = function() { return [ "direct", "reverse"]; };
2275 linlun 13
PID_Times       = function() { return [ 1, 5, 10, 15, 20, 40, 60]; };
14
PID_Aliases         = function() { return Module_GetAliasNames(PID_ModuleNames); };
15
PID_AvailableIds    = function() { return Module_GetAvailableIds(PID_ModuleNames); };
16
PID_SensorAliases   = function() { return Module_GetAliasNames(PID_SensorModuleNames); };
2300 linlun 17
PID_ActAliases  = function() { return Module_GetAliasNames(PID_ActModuleNames); };
1765 linlun 18
 
19
function PID_SetReportInterval(alias_name, interval)
20
{
21
    if (arguments.length < 2)
22
    {
23
        Log("\033[31mNot enough parameters given.\033[0m\n");
24
        return false;
25
    }
26
 
27
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
28
    var found = false;
29
 
30
    for (var name in aliases_data)
31
    {
32
        var variables = {"Time"     : interval };
33
 
34
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
35
        {
36
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
37
        }
38
        else
39
        {
40
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
41
        }
42
 
43
        found = true;
44
    }
45
 
46
    if (!found)
47
    {
48
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
49
        return false;
50
    }
51
 
52
    return true;
53
}
54
Console_RegisterCommand(PID_SetReportInterval, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Intervals()); });
55
 
56
 
57
function PID_setValue(alias_name, temperature)
58
{
59
    if (arguments.length < 2)
60
    {
61
        Log("\033[31mNot enough parameters given.\033[0m\n");
62
        return false;
63
    }
64
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
65
    var found = false;
66
 
67
    Log ("Called SetValue: "+temperature+"\n");
68
 
69
    for (var name in aliases_data)
70
    {
71
        var variables = {   "Value"     : temperature,
72
                    "SensorId"     : 0 };
73
 
74
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Temperature_Celsius", variables))
75
        {
76
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
77
        }
78
        else
79
        {
80
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
81
        }
82
 
83
        found = true;
84
    }
85
 
86
    if (!found)
87
    {
88
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
89
        return false;
90
    }
91
 
92
    return true;
93
}
94
Console_RegisterCommand(PID_setValue, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Temperatures());  });
95
 
2275 linlun 96
function PID_setSensor(alias_name, alias_sensor)
97
{
98
    if (arguments.length < 2)
99
    {
100
        Log("\033[31mNot enough parameters given.\033[0m\n");
101
        return false;
102
    }
103
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
104
    var found = false;
105
 
106
    var sensor_aliases_data = Module_ResolveAlias(alias_sensor, PID_SensorModuleNames);
107
    var first = true;
108
    for (var sensor in sensor_aliases_data)
109
    {
110
        if (first == false)
111
        {
112
            Log("\033[31mNo sensor by the name " + alias_sensor + " were applicable for this command, or alias was a group.\033[0m\n");
113
            return false;
114
        }
115
        Log ("Called Set Sensor:\n");
116
        Log ("sensorModuleType:   " + sensor_aliases_data[sensor]["module_name"]+"\n");
117
        Log ("sensorModuleId:     " + sensor_aliases_data[sensor]["module_id"]+"\n");
118
        Log ("SensorId:           " + sensor_aliases_data[sensor]["specific"]["SensorId"]+"\n");
119
        var id = 0;
120
        switch (sensor_aliases_data[sensor]["module_name"])
121
        {
122
          case "DS18x20": id = 3; break;
123
          case "FOST02": id = 5; break;
124
          case "TC1047A": id = 17; break;
125
          case "TCN75A": id = 46; break;
126
          case "LM335": id = 51; break;
127
          case "NTC": id = 55; break;
128
          case "DHT11": id = 61; break;
129
          default:
130
            Log("\033[31mCould not resolve sensor module type.\033[0m\n");
131
            return; break;
132
        }
133
 
134
 
135
        for (var name in aliases_data)
136
        {
137
            var variables = {   "sensorModuleType"     : id,
138
                        "sensorModuleId"       : sensor_aliases_data[sensor]["module_id"],
139
                        "sensorId"     : sensor_aliases_data[sensor]["specific"]["SensorId"] };
1765 linlun 140
 
2275 linlun 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 to " + name + ".\033[0m\n");
148
            }
149
 
150
            found = true;
151
        }
152
        first = false;
153
        if (!found)
154
        {
155
            Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
156
            return false;
157
        }
158
    }
159
 
160
    if (!found)
161
    {
162
        Log("\033[31mNo sensor aliases by the name " + alias_sensor + " were applicable for this command.\033[0m\n");
163
        return false;
164
    }
165
 
166
    return true;
167
}
168
Console_RegisterCommand(PID_setSensor, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_SensorAliases());  });
169
 
170
function PID_setActuator(alias_name, alias_actuator)
171
{
172
    if (arguments.length < 2)
173
    {
174
        Log("\033[31mNot enough parameters given.\033[0m\n");
175
        return false;
176
    }
177
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
178
    var found = false;
179
 
180
    var act_aliases_data = Module_ResolveAlias(alias_actuator, PID_ActModuleNames);
181
    var first = true;
182
    for (var act in act_aliases_data)
183
    {
184
        if (first == false)
185
        {
186
            Log("\033[31mNo actuator by the name " + alias_actuator + " were applicable for this command, or alias was a group.\033[0m\n");
187
            return false;
188
        }
189
        Log ("Called Set Actuator:\n");
190
        Log ("actModuleType:   " + act_aliases_data[act]["module_name"]+"\n");
191
        Log ("actModuleId:     " + act_aliases_data[act]["module_id"]+"\n");
192
        Log ("actId:           " + act_aliases_data[act]["specific"]["Channel"]+"\n");
193
        var id = 0;
194
        switch (act_aliases_data[act]["module_name"])
195
        {
196
          case "hwPWM": id = 13; break;
197
          case "softPWM": id = 21; break;
198
          case "SlowPWM": id = 19; break;
199
          case "PCAPWM": id = 29; break;
200
          default:
201
            Log("\033[31mCould not resolve actuator module type.\033[0m\n");
202
            return; break;
203
        }
204
 
205
 
206
        for (var name in aliases_data)
207
        {
208
            var variables = {   "actuatorModuleType"     : id,
209
                        "actuatorModuleId"       : act_aliases_data[act]["module_id"],
210
                        "actuatorId"             : act_aliases_data[act]["specific"]["Channel"] };
211
 
212
            if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ACTUATOR", variables))
213
            {
214
                Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
215
            }
216
            else
217
            {
218
                Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
219
            }
220
 
221
            found = true;
222
        }
223
        first = false;
224
        if (!found)
225
        {
226
            Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
227
            return false;
228
        }
229
    }
230
 
231
    if (!found)
232
    {
233
        Log("\033[31mNo actuator aliases by the name " + alias_actuator + " were applicable for this command.\033[0m\n");
234
        return false;
235
    }
236
 
237
    return true;
238
}
239
Console_RegisterCommand(PID_setActuator, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_ActAliases());  });
240
 
241
 
2280 linlun 242
function PID_setParameters(alias_name, KP,KI,KD,Time,Unit,ControllerDirection)
1765 linlun 243
{
244
    if (arguments.length < 6)
245
    {
246
        Log("\033[31mNot enough parameters given.\033[0m\n");
247
        return false;
248
    }
249
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
250
    var found = false;
251
 
252
    for (var name in aliases_data)
253
    {
2280 linlun 254
        var variables = {   "K_P"           : KP,
255
                    "K_I"           : KI,
256
                    "K_D"           : KD,
257
                    "RegulatorTime"         : Time,
258
                    "TimeUnit"          : Unit };
259
        var variables_P_I = {   "K_P"           : KP,
260
                    "K_I"           : KI };
261
        var variables_D_T = {   "K_D"           : KD,
262
                    "ControllerDirection"   : ControllerDirection,
263
                    "RegulatorTime"         : Time,
264
                    "TimeUnit"          : Unit };
1765 linlun 265
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER", variables))
266
        {
267
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
268
            Log("\033[32mK_P = " + KP + "K_I = " + KI + "K_D = " + KD + "RegTime = " + Time + "Unit = " + Unit + ".\033[0m\n");
269
        }
270
        else
271
        {
272
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
273
        }
274
 
2271 linlun 275
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_P_I", variables_P_I))
276
        {
277
            Log("\033[32mK_P = " + KP + "K_I = " + KI + ".\033[0m\n");
278
        }
279
        else
280
        {
281
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
282
        }
283
 
284
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_D_T", variables_D_T))
285
        {
2280 linlun 286
            Log("\033[32mK_D = " + KD + " RegTime = " + Time + " Unit = " + Unit + " Direction = " + ControllerDirection +".\033[0m\n");
2271 linlun 287
        }
288
        else
289
        {
290
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
291
        }
292
 
1765 linlun 293
        found = true;
294
    }
295
 
296
    if (!found)
297
    {
298
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
299
        return false;
300
    }
301
 
302
    return true;
303
}
2280 linlun 304
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 305
 
2275 linlun 306
 
307
function PID_setOutputMaxMin(alias_name, Max,Min)
308
{
309
    if (arguments.length < 3)
310
    {
311
        Log("\033[31mNot enough parameters given.\033[0m\n");
312
        return false;
313
    }
314
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
315
    var found = false;
316
 
317
    for (var name in aliases_data)
318
    {
319
        var variables = {   "Min"     : Min,
320
                    "Max"     : Max };
321
 
322
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "OutMinMax", variables))
323
        {
324
            Log("\033[32mMin = " + Min + "Max = " + Max + ".\033[0m\n");
325
        }
326
        else
327
        {
328
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
329
        }
330
 
331
        found = true;
332
    }
333
 
334
    if (!found)
335
    {
336
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
337
        return false;
338
    }
339
 
340
    return true;
341
}
2300 linlun 342
Console_RegisterCommand(PID_setOutputMaxMin, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Outputs(), PID_Outputs()); });
2275 linlun 343
 
1765 linlun 344
function PID_getConfiguration(alias_name)
345
{
346
    if (arguments.length < 1)
347
    {
348
        Log("\033[31mNot enough parameters given.\033[0m\n");
349
        return false;
350
    }
351
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
352
    var found = false;
353
 
354
    for (var name in aliases_data)
355
    {
356
        var variables = {};
357
 
358
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_SENSOR", variables))
359
        {
360
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
361
        }
362
        else
363
        {
364
            Log("\033[31mFailed to send command 1 to " + name + ".\033[0m\n");
365
        }
366
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ACTUATOR", variables))
367
        {
368
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
369
        }
370
        else
371
        {
372
            Log("\033[31mFailed to send command 2 to " + name + ".\033[0m\n");
373
        }
374
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER", variables))
375
        {
376
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
377
        }
378
        else
379
        {
380
            Log("\033[31mFailed to send command 3 to " + name + ".\033[0m\n");
381
        }
382
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "Report_Interval", variables))
383
        {
384
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
385
        }
386
        else
387
        {
388
            Log("\033[31mFailed to send command 4 to " + name + ".\033[0m\n");
389
        }
2271 linlun 390
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_P_I", variables))
391
        {
392
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
393
        }
394
        else
395
        {
396
            Log("\033[31mFailed to send command 5 to " + name + ".\033[0m\n");
397
        }
398
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PARAMETER_D_T", variables))
399
        {
400
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
401
        }
402
        else
403
        {
404
            Log("\033[31mFailed to send command 6 to " + name + ".\033[0m\n");
405
        }
2275 linlun 406
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "OutMinMax", variables))
407
        {
408
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
409
        }
410
        else
411
        {
2300 linlun 412
            Log("\033[31mFailed to send command 7 to " + name + ".\033[0m\n");
2275 linlun 413
        }
2300 linlun 414
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "RUN_AUTOTUNE", variables))
415
        {
416
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
417
        }
418
        else
419
        {
420
            Log("\033[31mFailed to send command 8 to " + name + ".\033[0m\n");
421
        }
422
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_AUTOTUNE_NOISE_STEP", variables))
423
        {
424
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
425
        }
426
        else
427
        {
428
            Log("\033[31mFailed to send command 9 to " + name + ".\033[0m\n");
429
        }
430
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PID_START_VALUE", variables))
431
        {
432
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
433
        }
434
        else
435
        {
436
            Log("\033[31mFailed to send command 9 to " + name + ".\033[0m\n");
437
        }
438
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ONOFF_REGULATOR", variables))
439
        {
440
            //Log("\033[32mCommand sent successfully to " + name + ".\033[0m\n");
441
        }
442
        else
443
        {
444
            Log("\033[31mFailed to send command 9 to " + name + ".\033[0m\n");
445
        }
446
 
1765 linlun 447
        found = true;
448
    }
449
 
450
    if (!found)
451
    {
452
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
453
        return false;
454
    }
455
 
456
    return true;
457
}
458
Console_RegisterCommand(PID_getConfiguration, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases()); });
459
 
2300 linlun 460
 
461
 
462
function PID_startAutoTune(alias_name, Algo ,lookbacktime)
463
{
464
    if (arguments.length < 3)
465
    {
466
        Log("\033[31mNot enough parameters given.\033[0m\n");
467
        return false;
468
    }
469
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
470
    var found = false;
471
 
472
    for (var name in aliases_data)
473
    {
474
        var variables= {    "Method"            : Algo,
475
                    "LookBackTime"          : lookbacktime };
476
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "RUN_AUTOTUNE", variables))
477
        {
478
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
479
            Log("\033[32mMethod = " + Algo + "LookBackTime = " + lookbacktime + ".\033[0m\n");
480
        }
481
        else
482
        {
483
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
484
        }
485
 
486
        found = true;
487
    }
488
 
489
    if (!found)
490
    {
491
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
492
        return false;
493
    }
494
 
495
    return true;
496
}
497
Console_RegisterCommand(PID_startAutoTune, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Algos(), PID_LookBackTimes()); });
498
 
499
function PID_AutoTuneNoiceStep(alias_name, NoiseBand ,OutputStep)
500
{
501
    if (arguments.length < 3)
502
    {
503
        Log("\033[31mNot enough parameters given.\033[0m\n");
504
        return false;
505
    }
506
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
507
    var found = false;
508
 
509
    for (var name in aliases_data)
510
    {
511
        var variables= {    "NoiseBand"             : NoiseBand,
512
                    "OutputStep"            : OutputStep };
513
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_AUTOTUNE_NOISE_STEP", variables))
514
        {
515
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
516
            Log("\033[32mNoiseBand = " + NoiseBand + "OutputStep = " + OutputStep + ".\033[0m\n");
517
        }
518
        else
519
        {
520
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
521
        }
522
 
523
        found = true;
524
    }
525
 
526
    if (!found)
527
    {
528
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
529
        return false;
530
    }
531
 
532
    return true;
533
}
534
Console_RegisterCommand(PID_AutoTuneNoiceStep, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Constants(), PID_Constants()); });
535
 
536
 
537
function PID_ConfigStartValue(alias_name, Factor, Offset)
538
{
539
    if (arguments.length < 3)
540
    {
541
        Log("\033[31mNot enough parameters given.\033[0m\n");
542
        return false;
543
    }
544
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
545
    var found = false;
546
 
547
    for (var name in aliases_data)
548
    {
549
        var variables= {    "Factor"            : Factor,
550
                    "Offset"            : Offset};
551
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_PID_START_VALUE", variables))
552
        {
553
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
554
            Log("\033[32mFactor = " + Factor+ "Offset = " + Offset+ ".\033[0m\n");
555
        }
556
        else
557
        {
558
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
559
        }
560
 
561
        found = true;
562
    }
563
 
564
    if (!found)
565
    {
566
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
567
        return false;
568
    }
569
 
570
    return true;
571
}
572
Console_RegisterCommand(PID_ConfigStartValue, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Constants(), PID_Constants()); });
573
 
574
function PID_ConfigOnOff(alias_name, OnValue, OffValue, OuterRange, InnerRange)
575
{
576
    if (arguments.length < 5)
577
    {
578
        Log("\033[31mNot enough parameters given.\033[0m\n");
579
        return false;
580
    }
581
    var aliases_data = Module_ResolveAlias(alias_name, PID_ModuleNames);
582
    var found = false;
583
 
584
    for (var name in aliases_data)
585
    {
586
        var variables= {    "OnValue"           : OnValue,
587
                    "OffValue"          : OffValue,
588
                    "OuterRange"            : OuterRange,
589
                    "InnerRange"            : InnerRange};
590
        if (Module_SendMessage(aliases_data[name]["module_name"], aliases_data[name]["module_id"], "CONFIG_ONOFF_REGULATOR", variables))
591
        {
592
            Log("\033[32mCommand sent successfully to " + name + ".\033[0m");
593
            Log("\033[32mOnValue = " + OnValue+ "OffValue= " + OffValue+ "OuterRange= " + OuterRange+ "InnerRange= " + InnerRange+ ".\033[0m\n");
594
        }
595
        else
596
        {
597
            Log("\033[31mFailed to send command to " + name + ".\033[0m\n");
598
        }
599
 
600
        found = true;
601
    }
602
 
603
    if (!found)
604
    {
605
        Log("\033[31mNo aliases by the name " + alias_name + " were applicable for this command.\033[0m\n");
606
        return false;
607
    }
608
 
609
    return true;
610
}
611
Console_RegisterCommand(PID_ConfigOnOff, function(arg_index, args) { return Console_StandardAutocomplete(arg_index, args, PID_Aliases(), PID_Temperatures(), PID_Temperatures(), PID_Outputs(), PID_Outputs()); });
612
 
613
 
614
 
1765 linlun 615
function PID_OnMessage(module_name, module_id, command, variables)
616
{
617
    if (in_array(PID_ModuleNames, module_name))
618
    {
619
        var aliases_data = Module_LookupAliases({
620
            "module_name" : module_name,
621
            "module_id"   : module_id,
622
            "group"       : false
623
        });
624
 
625
        switch (command)
626
        {
627
            case "DEBUG":
628
                for (var alias_name in aliases_data)
629
                {
630
                    var last_value = {};
631
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
632
 
633
                    if (last_value_string)
634
                    {
635
                        last_value = eval("(" + last_value_string + ")");
636
                    }
637
 
2076 linlun 638
                    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 639
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
640
                    //Log("Got message DEBUG");
641
                }
642
            break;
643
            case "CONFIG_SENSOR":
644
                for (var alias_name in aliases_data)
645
                {
646
                    var last_value = {};
647
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
648
 
649
                    if (last_value_string)
650
                    {
651
                        last_value = eval("(" + last_value_string + ")");
652
                    }
653
 
2076 linlun 654
                    last_value["Sensor"] = { "value" : { "sensorModuleType" : variables["sensorModuleType"],"sensorModuleId" : variables["sensorModuleId"],"sensorId" : variables["sensorId"] }, "timestamp" : get_time() };
1765 linlun 655
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
656
                }
657
            break;
658
            case "CONFIG_ACTUATOR":
659
                for (var alias_name in aliases_data)
660
                {
661
                    var last_value = {};
662
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
663
 
664
                    if (last_value_string)
665
                    {
666
                        last_value = eval("(" + last_value_string + ")");
667
                    }
668
 
2076 linlun 669
                    last_value["Actuator"] = { "value" : { "actuatorModuleType" : variables["actuatorModuleType"],"actuatorModuleId" : variables["actuatorModuleId"],"actuatorId" : variables["actuatorId"] }, "timestamp" : get_time() };
1765 linlun 670
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
671
                }
672
            break;
673
            case "CONFIG_PARAMETER":
674
                for (var alias_name in aliases_data)
675
                {
676
                    var last_value = {};
677
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
678
 
679
                    if (last_value_string)
680
                    {
681
                        last_value = eval("(" + last_value_string + ")");
682
                    }
683
 
2076 linlun 684
                    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 685
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
686
                }
687
            break;
688
            case "PID_STATUS":
689
                for (var alias_name in aliases_data)
690
                {
691
                    var last_value = {};
692
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
693
 
694
                    if (last_value_string)
695
                    {
696
                        last_value = eval("(" + last_value_string + ")");
697
                    }
698
 
2076 linlun 699
                    last_value["PID_status"] = { "value" : { "Measurment" : variables["Measurment"],"Reference" : variables["Reference"],"PWM" : variables["PWM"],"Sum" : variables["Sum"] }, "timestamp" : get_time() };
1765 linlun 700
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
701
                }
2280 linlun 702
    //Log("PID status: mea:" + this.Measurment + " ref:" + this.Reference + " pwm:" + this.PWM/100 + " sum:" + this.Sum + "\n");
1765 linlun 703
                //this.callEvent("newValue", canMessage.getData("Id"));
704
 
705
    //var self = this;
706
    //  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+"");
707
            break;
708
            case "Temperature_Celsius":
709
                for (var alias_name in aliases_data)
710
                {
711
                    var last_value = {};
712
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
713
 
714
                    if (last_value_string)
715
                    {
716
                        last_value = eval("(" + last_value_string + ")");
717
                    }
718
 
2076 linlun 719
                    last_value["Reference"] = { "value" : variables["Value"], "timestamp" : get_time() };
1765 linlun 720
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
721
                }  
722
                break;
723
            case "Report_Interval":
724
                this.myReportInterval = canMessage.getData("Time");
725
                break;
2280 linlun 726
 
727
            case "CONFIG_PARAMETER_P_I":
728
                for (var alias_name in aliases_data)
729
                {
730
                    var last_value = {};
731
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
732
 
733
                    if (last_value_string)
734
                    {
735
                        last_value = eval("(" + last_value_string + ")");
736
                    }
737
 
2300 linlun 738
                    last_value["Parameters"] = { "value" : {
739
                        "K_P" : variables["K_P"],
740
                        "K_I" : variables["K_I"],
741
                        "K_D" : last_value["Parameters"]["value"]["K_D"],
742
                        "ControllerDirection" : last_value["Parameters"]["value"]["ControllerDirection"],
743
                        "TimeUnit" : last_value["Parameters"]["value"]["TimeUnit"],
744
                        "RegulatorTime" : last_value["Parameters"]["value"]["RegulatorTime"],
745
                        "OnValue" : last_value["Parameters"]["value"]["OnValue"],
746
                        "OffValue" : last_value["Parameters"]["value"]["OffValue"] ,
747
                        "OuterRange" : last_value["Parameters"]["value"]["OuterRange"] ,
748
                        "InnerRange" : last_value["Parameters"]["value"]["InnerRange"] ,
749
                        "Factor" : last_value["Parameters"]["value"]["Factor"] ,
750
                        "Offset" : last_value["Parameters"]["value"]["Offset"]
751
                        }, "timestamp" : get_time() };
2280 linlun 752
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
2300 linlun 753
                    //Log("Stored PI");
2280 linlun 754
                }  
2300 linlun 755
                break;
2280 linlun 756
            case "CONFIG_PARAMETER_D_T":
757
                for (var alias_name in aliases_data)
758
                {
759
                    var last_value = {};
760
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
761
 
762
                    if (last_value_string)
763
                    {
764
                        last_value = eval("(" + last_value_string + ")");
765
                    }
2300 linlun 766
                    last_value["Parameters"] = { "value" : {
767
                        "K_P" : last_value["Parameters"]["value"]["K_P"],
768
                        "K_I" : last_value["Parameters"]["value"]["K_I"],
769
                        "K_D" : variables["K_D"],
770
                        "ControllerDirection" : variables["ControllerDirection"],
771
                        "TimeUnit" : variables["TimeUnit"],
772
                        "RegulatorTime" : variables["RegulatorTime"],
773
                        "OnValue" : last_value["Parameters"]["value"]["OnValue"],
774
                        "OffValue" : last_value["Parameters"]["value"]["OffValue"] ,
775
                        "OuterRange" : last_value["Parameters"]["value"]["OuterRange"] ,
776
                        "InnerRange" : last_value["Parameters"]["value"]["InnerRange"] ,
777
                        "Factor" : last_value["Parameters"]["value"]["Factor"] ,
778
                        "Offset" : last_value["Parameters"]["value"]["Offset"]  
779
                        }, "timestamp" : get_time() };
2280 linlun 780
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
2300 linlun 781
                    //Log("Stored DT for "+ alias_name);
2280 linlun 782
                }  
2300 linlun 783
                break;
784
            case "CONFIG_ONOFF_REGULATOR":
785
                for (var alias_name in aliases_data)
786
                {
787
                    var last_value = {};
788
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
789
 
790
                    if (last_value_string)
791
                    {
792
                        last_value = eval("(" + last_value_string + ")");
793
                    }
794
                    last_value["Parameters"] = { "value" : {
795
                        "K_P" : last_value["Parameters"]["value"]["K_P"],
796
                        "K_I" : last_value["Parameters"]["value"]["K_I"],
797
                        "K_D" : last_value["Parameters"]["value"]["K_D"],
798
                        "ControllerDirection" : last_value["Parameters"]["value"]["ControllerDirection"],
799
                        "TimeUnit" : last_value["Parameters"]["value"]["TimeUnit"],
800
                        "RegulatorTime" : last_value["Parameters"]["value"]["RegulatorTime"],
801
                        "OnValue" : variables["OnValue"],
802
                        "OffValue" : variables["OffValue"] ,
803
                        "OuterRange" : variables["OuterRange"] ,
804
                        "InnerRange" : variables["InnerRange"] ,
805
                        "Factor" : last_value["Parameters"]["value"]["Factor"] ,
806
                        "Offset" : last_value["Parameters"]["value"]["Offset"]
807
                        }, "timestamp" : get_time() };
808
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
809
                    //Log("Stored DT for "+ alias_name);
810
                }  
811
                break;
812
            case "CONFIG_PID_START_VALUE":
813
                for (var alias_name in aliases_data)
814
                {
815
                    var last_value = {};
816
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
817
 
818
                    if (last_value_string)
819
                    {
820
                        last_value = eval("(" + last_value_string + ")");
821
                    }
822
                    last_value["Parameters"] = { "value" : {
823
                        "K_P" : last_value["Parameters"]["value"]["K_P"],
824
                        "K_I" : last_value["Parameters"]["value"]["K_I"],
825
                        "K_D" : last_value["Parameters"]["value"]["K_D"],
826
                        "ControllerDirection" : last_value["Parameters"]["value"]["ControllerDirection"],
827
                        "TimeUnit" : last_value["Parameters"]["value"]["TimeUnit"],
828
                        "RegulatorTime" : last_value["Parameters"]["value"]["RegulatorTime"],
829
                        "OnValue" : last_value["Parameters"]["value"]["OnValue"],
830
                        "OffValue" : last_value["Parameters"]["value"]["OffValue"] ,
831
                        "OuterRange" : last_value["Parameters"]["value"]["OuterRange"] ,
832
                        "InnerRange" : last_value["Parameters"]["value"]["InnerRange"] ,
833
                        "Factor" : variables["Factor"] ,
834
                        "Offset" : variables["Offset"]
835
                        }, "timestamp" : get_time() };
836
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
837
                    //Log("Stored DT for "+ alias_name);
838
                }  
839
                break;
2280 linlun 840
            case "P_I_term":
841
                for (var alias_name in aliases_data)
842
                {
843
                    var last_value = {};
844
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
845
 
846
                    if (last_value_string)
847
                    {
848
                        last_value = eval("(" + last_value_string + ")");
849
                    }
850
 
851
                    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() };
852
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
853
                    //Log("Got message DEBUG");
854
                }
855
            break; 
856
            case "D_term_Out":
857
                for (var alias_name in aliases_data)
858
                {
859
                    var last_value = {};
860
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
861
 
862
                    if (last_value_string)
863
                    {
864
                        last_value = eval("(" + last_value_string + ")");
865
                    }
866
 
2300 linlun 867
                    //Log("Got message DEBUG");
2280 linlun 868
 
869
                    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() };
870
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
871
                    //Log("Got message DEBUG");
872
                }
873
            break;     
874
            case "OutMinMax":
875
                for (var alias_name in aliases_data)
876
                {
877
                    var last_value = {};
878
                    var last_value_string = Storage_GetParameter("LastValues", alias_name);
879
 
880
                    if (last_value_string)
881
                    {
882
                        last_value = eval("(" + last_value_string + ")");
883
                    }
884
 
2300 linlun 885
                    last_value["Debug"] = { "value" : {
886
                        "P_term" : last_value["Debug"]["value"]["P_term"],
887
                        "I_term" : last_value["Debug"]["value"]["I_term"],
888
                        "D_term" : last_value["Debug"]["value"]["D_term"],
889
                        "Output" : last_value["Debug"]["value"]["Output"],
890
                        "Min" : variables["Min"],
891
                        "Max" : variables["Max"]
892
                        },"timestamp" : get_time() };
2280 linlun 893
                    Storage_SetParameter("LastValues", alias_name, JSON.stringify(last_value));
894
                    //Log("Got message DEBUG");
895
                }
896
            break; 
1765 linlun 897
        }
898
    }
899
}
900
Module_RegisterToOnMessage("all", PID_OnMessage);
2300 linlun 901
/*PID={"rrd":{"file":"/var/www/CANgraph/PID.rrd","Period_s":"10"}, "rrdNames":{"Pterm":{"Module":"PID","data":"Debug","value":"P_term"},"Iterm":{"Module":"PID","data":"Debug","value":"I_term"}."Dterm":{"Module":"PID","data":"Debug","value":"D_term"},"KP":{"Module":"PID","data":"Parameters","value":"K_P"},"KI":{"Module":"PID","data":"Parameters","value":"K_I"},"KD":{"Module":"PID","data":"Parameters","value":"K_D"},"out":{"Module":"PID","data":"Debug","value":"Output"},"ref":{"Module":"PID","data":"Reference","value":"value"},"in":{"Module":"PID","data":"PID_status","value":"Measurment"}}}*/