Subversion Repositories HomeAutomation

Rev

Rev 2280 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

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