diff --git a/Thermo.Active.Config/Config/recipeConfig.xml b/Thermo.Active.Config/Config/recipeConfig.xml
index c14ca594..6624568a 100644
--- a/Thermo.Active.Config/Config/recipeConfig.xml
+++ b/Thermo.Active.Config/Config/recipeConfig.xml
@@ -9,6 +9,7 @@
Dimensione X
integer
1
+ 0
2
@@ -19,6 +20,7 @@
Dimensione Y
integer
1
+ 0
3
@@ -29,6 +31,7 @@
Altezza massima
integer
1
+ 0
4
@@ -39,6 +42,7 @@
Altezza minima negativa
integer
1
+ 0
5
@@ -49,6 +53,7 @@
Altezza base
integer
1
+ 0
6
@@ -59,6 +64,21 @@
Materiale
enum
1
+ 0
+
+
+
+ 1
+
+
+
+ 2
+
+
+
+ 3
+
+
7
@@ -69,6 +89,7 @@
Dimensione X
integer
1
+ 0
8
@@ -79,6 +100,7 @@
Dimensione Y
integer
1
+ 0
9
@@ -89,6 +111,7 @@
Spessore
integer
1
+ 0
10
@@ -99,6 +122,7 @@
Tipo
enum
1
+ 0
11
@@ -109,6 +133,7 @@
Apertura X
integer
1
+ 0
12
@@ -119,6 +144,7 @@
Apertura Y
integer
1
+ 0
13
@@ -129,6 +155,7 @@
Traversini
enum
1
+ 0
14
@@ -139,6 +166,7 @@
Apertura X
integer
1
+ 0
15
@@ -149,6 +177,7 @@
Apertura Y
integer
1
+ 0
16
@@ -159,6 +188,7 @@
Altezza massima
integer
1
+ 0
17
@@ -169,6 +199,7 @@
Zona lavoro DX/SX
boolean
1
+ 0
18
@@ -179,6 +210,7 @@
Quota
integer
1
+ 0
19
@@ -189,6 +221,7 @@
Velocità discesa
integer
1
+ 0
20
@@ -199,6 +232,7 @@
Quota
integer
1
+ 0
21
@@ -209,6 +243,7 @@
Quota
integer
1
+ 0
22
@@ -219,6 +254,7 @@
Velocità salita
integer
1
+ 0
23
@@ -229,6 +265,7 @@
Quota
integer
1
+ 0
24
@@ -239,6 +276,7 @@
Velocità di rallentamento salita
integer
1
+ 0
25
@@ -249,6 +287,7 @@
Quota
integer
1
+ 0
26
@@ -259,6 +298,7 @@
Velocità di rallentamento discesa
integer
1
+ 0
27
@@ -269,6 +309,7 @@
Quota
integer
1
+ 0
28
@@ -279,6 +320,7 @@
Velocità discesa
integer
1
+ 0
29
@@ -289,6 +331,7 @@
Quota
integer
1
+ 0
30
@@ -299,6 +342,7 @@
Velocità salita
integer
1
+ 0
31
@@ -309,6 +353,7 @@
Quota
integer
1
+ 0
32
@@ -319,6 +364,7 @@
Velocità a quota intermedia
integer
1
+ 0
33
@@ -329,6 +375,7 @@
Quota
integer
1
+ 0
34
@@ -339,6 +386,7 @@
Quota
integer
1
+ 0
35
@@ -349,6 +397,7 @@
Velocità discesa
integer
1
+ 0
36
@@ -359,6 +408,7 @@
Quota
integer
1
+ 0
37
@@ -369,6 +419,7 @@
Velocità salita
integer
1
+ 0
38
@@ -379,6 +430,7 @@
Quota
integer
1
+ 0
39
@@ -389,6 +441,7 @@
Velocità di rallentamento salita
integer
1
+ 0
40
@@ -399,6 +452,7 @@
Quota
integer
1
+ 0
41
@@ -409,6 +463,7 @@
Velocità di rallentamento discesa
integer
1
+ 0
42
@@ -419,6 +474,7 @@
Tipo
enum
1
+ 0
43
@@ -429,6 +485,7 @@
Pausa ciclo
boolean
1
+ 0
44
@@ -439,6 +496,7 @@
Raffreddamento fine ciclo
boolean
1
+ 0
45
@@ -449,6 +507,7 @@
Ventilazione cassone fine ciclo
boolean
1
+ 0
46
@@ -459,6 +518,7 @@
Abilitazione
boolean
1
+ 0
47
@@ -469,6 +529,7 @@
Durata
integer
1
+ 0
48
@@ -479,6 +540,7 @@
Abilitazione
boolean
1
+ 0
49
@@ -489,6 +551,7 @@
Durata
integer
1
+ 0
50
@@ -499,6 +562,7 @@
Tipo
enum
1
+ 0
51
@@ -509,6 +573,7 @@
Durata
integer
1
+ 0
52
@@ -519,6 +584,7 @@
Abilitazione
boolean
1
+ 0
53
@@ -529,6 +595,7 @@
Ritardo discesa sollevatore
integer
1
+ 0
54
@@ -539,6 +606,7 @@
Ritardo salita sollevatore
integer
1
+ 0
55
@@ -549,6 +617,7 @@
Durata separazione lastra
integer
1
+ 0
56
@@ -559,6 +628,7 @@
Quota espulsore
integer
1
+ 0
57
@@ -569,6 +639,7 @@
Altezza bancale
integer
1
+ 0
58
@@ -579,6 +650,7 @@
Centratura X
boolean
1
+ 0
59
@@ -589,6 +661,7 @@
Centratura Y
boolean
1
+ 0
60
@@ -599,6 +672,7 @@
Controllo spessore
boolean
1
+ 0
61
@@ -609,6 +683,7 @@
Vuoto ventose
boolean
1
+ 0
62
@@ -619,6 +694,7 @@
Abilitazione Ionizzatore
boolean
1
+ 0
63
@@ -629,6 +705,7 @@
Funzione scarico pezzo manuale
boolean
1
+ 0
64
@@ -639,6 +716,7 @@
Durata massima
integer
1
+ 0
65
@@ -649,6 +727,7 @@
Abilizazione movimento
boolean
1
+ 0
66
@@ -659,6 +738,7 @@
Abilitazione riscaldo
boolean
1
+ 0
67
@@ -669,6 +749,7 @@
Oscillazione
boolean
1
+ 0
68
@@ -679,6 +760,7 @@
Durata massima
integer
1
+ 0
69
@@ -689,6 +771,7 @@
Abilitazione movimento
boolean
1
+ 0
70
@@ -699,6 +782,7 @@
Abilitazione riscaldo
boolean
1
+ 0
71
@@ -709,6 +793,7 @@
Oscillazione
boolean
1
+ 0
72
@@ -719,6 +804,7 @@
Tipo
enum
1
+ 0
73
@@ -729,6 +815,7 @@
Portata sostentamento (%)
integer
1
+ 0
74
@@ -739,6 +826,7 @@
Durata minima soffio (ms)
integer
1
+ 0
75
@@ -749,6 +837,7 @@
Ritardo sostentamento
integer
1
+ 0
76
@@ -759,6 +848,7 @@
Ritardo decompressione
integer
1
+ 0
77
@@ -769,6 +859,7 @@
Durata decompressione
integer
1
+ 0
78
@@ -779,6 +870,7 @@
Funzione "fumo"
boolean
1
+ 0
79
@@ -789,6 +881,7 @@
Abilitazione
boolean
1
+ 0
80
@@ -799,6 +892,7 @@
Setpoint (°C/10 int)
integer
1
+ 0
81
@@ -809,6 +903,7 @@
Ritardo
integer
1
+ 0
82
@@ -819,6 +914,7 @@
Inizio regolazione (°C/10)
integer
1
+ 0
83
@@ -829,6 +925,7 @@
Fine regolazione (°C/10)
integer
1
+ 0
84
@@ -839,6 +936,7 @@
Percentuale Minimo (%)
integer
1
+ 0
85
@@ -849,6 +947,7 @@
Percentuale Massimo (%)
integer
1
+ 0
86
@@ -859,6 +958,7 @@
Abilitazione Riposo
boolean
1
+ 0
87
@@ -869,6 +969,7 @@
Percentuale Riposo (%)
integer
1
+ 0
88
@@ -879,6 +980,7 @@
Inizio regolazione (°C/10)
integer
1
+ 0
89
@@ -889,6 +991,7 @@
Fine regolazione (°C/10)
integer
1
+ 0
90
@@ -899,6 +1002,7 @@
Percentuale Minimo (%)
integer
1
+ 0
91
@@ -909,6 +1013,7 @@
Percentuale Massimo (%)
integer
1
+ 0
92
@@ -919,6 +1024,7 @@
Abilitazione Riposo
boolean
1
+ 0
93
@@ -929,6 +1035,7 @@
Percentuale Riposo (%)
integer
1
+ 0
94
@@ -939,6 +1046,7 @@
Temperatura a riposo (°C/10)
integer
1
+ 0
95
@@ -949,6 +1057,7 @@
Temperatura a regime (°C/10)
integer
1
+ 0
96
@@ -959,6 +1068,7 @@
Temperatura a riposo (°C/10)
integer
1
+ 0
97
@@ -969,6 +1079,7 @@
Temperatura a regime (°C/10)
integer
1
+ 0
98
@@ -979,6 +1090,7 @@
Tipo
enum
1
+ 0
99
@@ -989,6 +1101,7 @@
Altezza bolla (mm)
integer
1
+ 0
100
@@ -999,6 +1112,7 @@
Ritardo
integer
1
+ 0
101
@@ -1009,6 +1123,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
102
@@ -1019,6 +1134,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
103
@@ -1029,6 +1145,7 @@
Scelta fotocellula
enum
1
+ 0
104
@@ -1039,6 +1156,7 @@
Portata mantenimento (%)
integer
1
+ 0
105
@@ -1049,6 +1167,7 @@
Portata manuale (%)
integer
1
+ 0
106
@@ -1059,6 +1178,7 @@
Ritardo Salita Stampo
integer
1
+ 0
107
@@ -1069,6 +1189,7 @@
Tipo
enum
1
+ 0
108
@@ -1079,6 +1200,7 @@
Ritardo
integer
1
+ 0
109
@@ -1089,6 +1211,7 @@
Durata
integer
1
+ 0
110
@@ -1099,6 +1222,7 @@
Abilitazione
boolean
1
+ 0
111
@@ -1109,6 +1233,7 @@
Ritardo
integer
1
+ 0
112
@@ -1119,6 +1244,7 @@
Durata massima
integer
1
+ 0
113
@@ -1129,6 +1255,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
114
@@ -1139,6 +1266,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
115
@@ -1149,6 +1277,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
116
@@ -1159,6 +1288,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
117
@@ -1169,6 +1299,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
118
@@ -1179,6 +1310,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
119
@@ -1189,6 +1321,7 @@
Portata manuale (%)
integer
1
+ 0
120
@@ -1199,6 +1332,7 @@
Abilitazione
boolean
1
+ 0
121
@@ -1209,6 +1343,7 @@
Ritardo
integer
1
+ 0
122
@@ -1219,6 +1354,7 @@
Durata massima
integer
1
+ 0
123
@@ -1229,6 +1365,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
124
@@ -1239,6 +1376,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
125
@@ -1249,6 +1387,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
126
@@ -1259,6 +1398,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
127
@@ -1269,6 +1409,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
128
@@ -1279,6 +1420,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
129
@@ -1289,6 +1431,7 @@
Portata manuale (%)
integer
1
+ 0
130
@@ -1299,6 +1442,7 @@
Abilitazione
boolean
1
+ 0
131
@@ -1309,6 +1453,7 @@
Ritardo
integer
1
+ 0
132
@@ -1319,6 +1464,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
133
@@ -1329,6 +1475,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
134
@@ -1339,6 +1486,7 @@
Portata manuale (%)
integer
1
+ 0
135
@@ -1349,6 +1497,7 @@
Tipo
enum
1
+ 0
136
@@ -1359,6 +1508,7 @@
Ritardo
integer
1
+ 0
137
@@ -1369,6 +1519,7 @@
Durata
integer
1
+ 0
138
@@ -1379,6 +1530,7 @@
Abilitazione
boolean
1
+ 0
139
@@ -1389,6 +1541,7 @@
Setpoint (°C/10 int)
integer
1
+ 0
140
@@ -1399,6 +1552,7 @@
Ritardo
integer
1
+ 0
141
@@ -1409,6 +1563,7 @@
Tipo
enum
1
+ 0
142
@@ -1419,6 +1574,7 @@
Ritardo
integer
1
+ 0
143
@@ -1429,6 +1585,7 @@
Durata
integer
1
+ 0
144
@@ -1439,6 +1596,7 @@
Abilitazione
boolean
1
+ 0
145
@@ -1449,6 +1607,7 @@
Quota
integer
1
+ 0
146
@@ -1459,6 +1618,7 @@
Abilitazione Oscillazione
integer
1
+ 0
147
@@ -1469,6 +1629,7 @@
Corsa Oscillazione
integer
1
+ 0
148
@@ -1479,6 +1640,7 @@
Apertura percentuale
integer
1
+ 0
149
@@ -1489,6 +1651,7 @@
Apertura percentuale
integer
1
+ 0
150
@@ -1499,6 +1662,7 @@
Apertura percentuale
integer
1
+ 0
151
@@ -1509,6 +1673,7 @@
Apertura percentuale
integer
1
+ 0
152
@@ -1519,6 +1684,7 @@
Apertura percentuale
integer
1
+ 0
153
@@ -1529,6 +1695,7 @@
Apertura percentuale
integer
1
+ 0
154
@@ -1539,6 +1706,7 @@
Apertura percentuale
integer
1
+ 0
155
@@ -1549,6 +1717,7 @@
Apertura percentuale
integer
1
+ 0
156
@@ -1559,6 +1728,7 @@
Apertura percentuale
integer
1
+ 0
157
@@ -1569,6 +1739,7 @@
Apertura percentuale
integer
1
+ 0
158
@@ -1579,6 +1750,7 @@
Apertura percentuale
integer
1
+ 0
159
@@ -1589,6 +1761,7 @@
Apertura percentuale
integer
1
+ 0
160
@@ -1599,6 +1772,7 @@
Apertura percentuale
integer
1
+ 0
161
@@ -1609,6 +1783,7 @@
Apertura percentuale
integer
1
+ 0
162
@@ -1619,6 +1794,7 @@
Apertura percentuale
integer
1
+ 0
163
@@ -1629,6 +1805,7 @@
Apertura percentuale
integer
1
+ 0
164
@@ -1639,6 +1816,7 @@
Partenza
enum
1
+ 0
165
@@ -1649,6 +1827,7 @@
Ritardo
integer
1
+ 0
166
@@ -1659,6 +1838,7 @@
Durata massima
integer
1
+ 0
167
@@ -1669,6 +1849,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
168
@@ -1679,6 +1860,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
169
@@ -1689,6 +1871,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
170
@@ -1699,6 +1882,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
171
@@ -1709,6 +1893,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
172
@@ -1719,6 +1904,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
173
@@ -1729,6 +1915,7 @@
Portata manuale (%)
integer
1
+ 0
174
@@ -1739,6 +1926,7 @@
Abilitazione
boolean
1
+ 0
175
@@ -1749,6 +1937,7 @@
Ritardo
integer
1
+ 0
176
@@ -1759,6 +1948,7 @@
Durata
integer
1
+ 0
177
@@ -1769,6 +1959,7 @@
Abilitazione
boolean
1
+ 0
178
@@ -1779,6 +1970,7 @@
Ritardo
integer
1
+ 0
179
@@ -1789,6 +1981,7 @@
Durata massima
integer
1
+ 0
180
@@ -1799,6 +1992,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
181
@@ -1809,6 +2003,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
182
@@ -1819,6 +2014,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
183
@@ -1829,6 +2025,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
184
@@ -1839,6 +2036,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
185
@@ -1849,6 +2047,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
186
@@ -1859,6 +2058,7 @@
Portata manuale (%)
integer
1
+ 0
187
@@ -1869,6 +2069,7 @@
Abilitazione
boolean
1
+ 0
188
@@ -1879,6 +2080,7 @@
Ritardo
integer
1
+ 0
189
@@ -1889,6 +2091,7 @@
Durata massima
integer
1
+ 0
190
@@ -1899,6 +2102,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
191
@@ -1909,6 +2113,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
192
@@ -1919,6 +2124,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
193
@@ -1929,6 +2135,7 @@
Setpoint 2 Portata/Tempo
integer
1
+ 0
194
@@ -1939,6 +2146,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
195
@@ -1949,6 +2157,7 @@
Setpoint 3 Portata/Tempo
integer
1
+ 0
196
@@ -1959,6 +2168,7 @@
Tipo
enum
1
+ 0
197
@@ -1969,6 +2179,7 @@
Ritardo Discesa Stampo
integer
1
+ 0
198
@@ -1979,6 +2190,7 @@
Ritardo
integer
1
+ 0
199
@@ -1989,6 +2201,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
200
@@ -1999,6 +2212,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
201
@@ -2009,6 +2223,7 @@
Portata manuale (%)
integer
1
+ 0
202
@@ -2019,6 +2234,7 @@
Abilitazione
boolean
1
+ 0
203
@@ -2029,6 +2245,7 @@
Ritardo
integer
1
+ 0
204
@@ -2039,6 +2256,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
205
@@ -2049,6 +2267,7 @@
Setpoint 1 Portata/Tempo
integer
1
+ 0
206
@@ -2059,6 +2278,7 @@
Portata manuale (%)
integer
1
+ 0
207
@@ -2069,6 +2289,7 @@
Modalità
enum
1
+ 0
208
@@ -2079,6 +2300,7 @@
Quota
integer
1
+ 0
209
@@ -2089,6 +2311,7 @@
Ritardo attivazione
integer
1
+ 0
210
@@ -2099,6 +2322,7 @@
Ritardo disattivazione
integer
1
+ 0
211
@@ -2109,6 +2333,7 @@
Modalità
enum
1
+ 0
212
@@ -2119,6 +2344,7 @@
Quota
integer
1
+ 0
213
@@ -2129,6 +2355,7 @@
Ritardo attivazione
integer
1
+ 0
214
@@ -2139,6 +2366,7 @@
Ritardo disattivazione
integer
1
+ 0
215
@@ -2149,6 +2377,7 @@
Modalità
enum
1
+ 0
216
@@ -2159,6 +2388,7 @@
Quota
integer
1
+ 0
217
@@ -2169,6 +2399,7 @@
Ritardo attivazione
integer
1
+ 0
218
@@ -2179,6 +2410,7 @@
Ritardo disattivazione
integer
1
+ 0
219
@@ -2189,6 +2421,7 @@
Modalità
enum
1
+ 0
220
@@ -2199,6 +2432,7 @@
Quota
integer
1
+ 0
221
@@ -2209,6 +2443,7 @@
Ritardo attivazione
integer
1
+ 0
222
@@ -2219,6 +2454,7 @@
Ritardo disattivazione
integer
1
+ 0
223
@@ -2229,6 +2465,7 @@
Modalità
enum
1
+ 0
224
@@ -2239,6 +2476,7 @@
Quota
integer
1
+ 0
225
@@ -2249,6 +2487,7 @@
Ritardo attivazione
integer
1
+ 0
226
@@ -2259,6 +2498,7 @@
Ritardo disattivazione
integer
1
+ 0
227
@@ -2269,6 +2509,7 @@
Modalità
enum
1
+ 0
228
@@ -2279,6 +2520,7 @@
Quota
integer
1
+ 0
229
@@ -2289,6 +2531,7 @@
Ritardo attivazione
integer
1
+ 0
230
@@ -2299,6 +2542,7 @@
Ritardo disattivazione
integer
1
+ 0
231
@@ -2309,6 +2553,7 @@
Modalità
enum
1
+ 0
232
@@ -2319,6 +2564,7 @@
Quota
integer
1
+ 0
233
@@ -2329,6 +2575,7 @@
Ritardo attivazione
integer
1
+ 0
234
@@ -2339,6 +2586,7 @@
Ritardo disattivazione
integer
1
+ 0
235
@@ -2349,6 +2597,7 @@
Modalità
enum
1
+ 0
236
@@ -2359,6 +2608,7 @@
Quota
integer
1
+ 0
237
@@ -2369,6 +2619,7 @@
Ritardo attivazione
integer
1
+ 0
238
@@ -2379,6 +2630,7 @@
Ritardo disattivazione
integer
1
+ 0
239
@@ -2389,6 +2641,7 @@
Modalità
enum
1
+ 0
240
@@ -2399,6 +2652,7 @@
Quota
integer
1
+ 0
241
@@ -2409,6 +2663,7 @@
Ritardo attivazione
integer
1
+ 0
242
@@ -2419,6 +2674,7 @@
Ritardo disattivazione
integer
1
+ 0
243
@@ -2429,6 +2685,7 @@
Modalità
enum
1
+ 0
244
@@ -2439,6 +2696,7 @@
Quota
integer
1
+ 0
245
@@ -2449,6 +2707,7 @@
Ritardo attivazione
integer
1
+ 0
246
@@ -2459,6 +2718,7 @@
Ritardo disattivazione
integer
1
+ 0
247
@@ -2469,6 +2729,7 @@
Modalità
enum
1
+ 0
248
@@ -2479,6 +2740,7 @@
Quota
integer
1
+ 0
249
@@ -2489,6 +2751,7 @@
Ritardo attivazione
integer
1
+ 0
250
@@ -2499,6 +2762,7 @@
Ritardo disattivazione
integer
1
+ 0
251
@@ -2509,6 +2773,7 @@
Modalità
enum
1
+ 0
252
@@ -2519,6 +2784,7 @@
Quota
integer
1
+ 0
253
@@ -2529,6 +2795,7 @@
Ritardo attivazione
integer
1
+ 0
254
@@ -2539,6 +2806,7 @@
Ritardo disattivazione
integer
1
+ 0
255
@@ -2549,6 +2817,7 @@
Modalità
enum
1
+ 0
256
@@ -2559,6 +2828,7 @@
Quota
integer
1
+ 0
257
@@ -2569,6 +2839,7 @@
Ritardo attivazione
integer
1
+ 0
258
@@ -2579,6 +2850,7 @@
Ritardo disattivazione
integer
1
+ 0
259
@@ -2589,6 +2861,7 @@
Modalità
enum
1
+ 0
260
@@ -2599,6 +2872,7 @@
Quota
integer
1
+ 0
261
@@ -2609,6 +2883,7 @@
Ritardo attivazione
integer
1
+ 0
262
@@ -2619,6 +2894,7 @@
Ritardo disattivazione
integer
1
+ 0
263
@@ -2629,6 +2905,7 @@
Modalità
enum
1
+ 0
264
@@ -2639,6 +2916,7 @@
Quota
integer
1
+ 0
265
@@ -2649,6 +2927,7 @@
Ritardo attivazione
integer
1
+ 0
266
@@ -2659,6 +2938,7 @@
Ritardo disattivazione
integer
1
+ 0
267
@@ -2669,6 +2949,7 @@
Modalità
enum
1
+ 0
268
@@ -2679,6 +2960,7 @@
Quota
integer
1
+ 0
269
@@ -2689,6 +2971,7 @@
Ritardo attivazione
integer
1
+ 0
270
@@ -2699,6 +2982,7 @@
Ritardo disattivazione
integer
1
+ 0
271
@@ -2709,6 +2993,7 @@
Modalità
enum
1
+ 0
272
@@ -2719,6 +3004,7 @@
Quota
integer
1
+ 0
273
@@ -2729,6 +3015,7 @@
Ritardo attivazione
integer
1
+ 0
274
@@ -2739,6 +3026,7 @@
Ritardo disattivazione
integer
1
+ 0
275
@@ -2749,6 +3037,7 @@
Modalità
enum
1
+ 0
276
@@ -2759,6 +3048,7 @@
Quota
integer
1
+ 0
277
@@ -2769,6 +3059,7 @@
Ritardo attivazione
integer
1
+ 0
278
@@ -2779,6 +3070,7 @@
Ritardo disattivazione
integer
1
+ 0
279
@@ -2789,6 +3081,7 @@
Modalità
enum
1
+ 0
280
@@ -2799,6 +3092,7 @@
Quota
integer
1
+ 0
281
@@ -2809,6 +3103,7 @@
Ritardo attivazione
integer
1
+ 0
282
@@ -2819,6 +3114,7 @@
Ritardo disattivazione
integer
1
+ 0
283
@@ -2829,6 +3125,7 @@
Modalità
enum
1
+ 0
284
@@ -2839,6 +3136,7 @@
Quota
integer
1
+ 0
285
@@ -2849,6 +3147,7 @@
Ritardo attivazione
integer
1
+ 0
286
@@ -2859,6 +3158,7 @@
Ritardo disattivazione
integer
1
+ 0
287
@@ -2869,6 +3169,7 @@
Abilitazione Termoregolatore 1
boolean
1
+ 0
288
@@ -2879,6 +3180,7 @@
Setpoint Termoregolatore 1
boolean
1
+ 0
289
@@ -2889,6 +3191,7 @@
Abilitazione Termoregolatore 2
boolean
1
+ 0
290
@@ -2899,6 +3202,7 @@
Setpoint Termoregolatore 2
boolean
1
+ 0
291
@@ -2909,6 +3213,7 @@
Abilitazione Termoregolatore 3
boolean
1
+ 0
292
@@ -2919,6 +3224,7 @@
Setpoint Termoregolatore 3
boolean
1
+ 0
293
@@ -2929,6 +3235,7 @@
Abilitazione Termoregolatore 4
boolean
1
+ 0
294
@@ -2939,6 +3246,7 @@
Setpoint Termoregolatore 4
boolean
1
+ 0
295
@@ -2949,6 +3257,7 @@
Abilitazione Termoregolatore 5
boolean
1
+ 0
296
@@ -2959,6 +3268,7 @@
Setpoint Termoregolatore 5
boolean
1
+ 0
297
@@ -2969,6 +3279,7 @@
Abilitazione Termoregolatore 6
boolean
1
+ 0
298
@@ -2979,6 +3290,7 @@
Setpoint Termoregolatore 6
boolean
1
+ 0
299
@@ -2989,6 +3301,7 @@
Abilitazione Termoregolatore 7
boolean
1
+ 0
300
@@ -2999,6 +3312,7 @@
Setpoint Termoregolatore 7
boolean
1
+ 0
301
@@ -3009,6 +3323,7 @@
Abilitazione Termoregolatore 8
boolean
1
+ 0
302
@@ -3019,6 +3334,7 @@
Setpoint Termoregolatore 8
boolean
1
+ 0
303
@@ -3029,6 +3345,7 @@
Abilitazione Termoregolatore 9
boolean
1
+ 0
304
@@ -3039,6 +3356,7 @@
Setpoint Termoregolatore 9
boolean
1
+ 0
305
@@ -3049,6 +3367,7 @@
Abilitazione Termoregolatore 10
boolean
1
+ 0
306
@@ -3059,5 +3378,6 @@
Setpoint Termoregolatore 10
boolean
1
+ 0
\ No newline at end of file
diff --git a/Thermo.Active.Config/Config/recipeConfigValidator.xsd b/Thermo.Active.Config/Config/recipeConfigValidator.xsd
index 32ac91f6..bd6fb2fa 100644
--- a/Thermo.Active.Config/Config/recipeConfigValidator.xsd
+++ b/Thermo.Active.Config/Config/recipeConfigValidator.xsd
@@ -15,6 +15,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -38,4 +53,15 @@
+
+
+
+
\ No newline at end of file
diff --git a/Thermo.Active.Config/Config/serverConfig.xml b/Thermo.Active.Config/Config/serverConfig.xml
index 925c2628..46274533 100644
--- a/Thermo.Active.Config/Config/serverConfig.xml
+++ b/Thermo.Active.Config/Config/serverConfig.xml
@@ -5,10 +5,10 @@
false
192.168.0.102
102
- Ares 37 OF
+ Thermo 2020
C:\PartPrg\
//PARTPRG:/
- 01/01/2019
+ 01/06/2020
false
false
false
diff --git a/Thermo.Active.Config/ServerConfigController.cs b/Thermo.Active.Config/ServerConfigController.cs
index 3d7afa51..f71e5398 100644
--- a/Thermo.Active.Config/ServerConfigController.cs
+++ b/Thermo.Active.Config/ServerConfigController.cs
@@ -593,7 +593,12 @@ namespace Thermo.Active.Config
Name = x.Element("name").Value,
Description = x.Element("description").Value,
Format = x.Element("format").Value,
- ScaleFactor = Convert.ToInt16(x.Element("scaleFactor").Value)
+ ScaleFactor = Convert.ToInt16(x.Element("scaleFactor").Value),
+ NumDec = Convert.ToInt16(x.Element("numDec").Value),
+ //EnumVal = new Dictionary()
+ EnumVal = x.Element("enumList") != null ? x.Element("enumList").Elements().ToDictionary(
+ y => y.Element("label").Value, y => y.Element("value").Value
+ ) : new Dictionary()
})
.ToList();
}
diff --git a/Thermo.Active.Core/ThreadsFunctions.cs b/Thermo.Active.Core/ThreadsFunctions.cs
index 80acc151..369750ae 100644
--- a/Thermo.Active.Core/ThreadsFunctions.cs
+++ b/Thermo.Active.Core/ThreadsFunctions.cs
@@ -793,10 +793,13 @@ public static class ThreadsFunctions
MessageServices.Current.Publish(SEND_THERMO_RECIPE_FULL, null, currRecipe);
+ // FIXME TODO verificare come ridurre chiamate
+
// ora gestisco la overview!
libraryError = ncAdapter.GetRecipeOverview(out Dictionary currOverview);
if (libraryError.IsError())
ManageLibraryError(libraryError);
+
MessageServices.Current.Publish(SEND_THERMO_RECIPE_OVERWIEW, null, currOverview);
}
diff --git a/Thermo.Active.Model/ConfigModels/RecipeConfigModel.cs b/Thermo.Active.Model/ConfigModels/RecipeConfigModel.cs
index 7a82cd42..44c29119 100644
--- a/Thermo.Active.Model/ConfigModels/RecipeConfigModel.cs
+++ b/Thermo.Active.Model/ConfigModels/RecipeConfigModel.cs
@@ -1,4 +1,5 @@
-using static Thermo.Active.Model.Constants;
+using System.Collections.Generic;
+using static Thermo.Active.Model.Constants;
namespace Thermo.Active.Model.ConfigModels
{
@@ -12,5 +13,7 @@ namespace Thermo.Active.Model.ConfigModels
public string Description { get; set; }
public string Format { get; set; }
public int ScaleFactor { get; set; }
+ public int NumDec { get; set; }
+ public Dictionary EnumVal { get; set; }
}
}
diff --git a/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeConfigModel .cs b/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeConfigModel .cs
index 50a89614..8fa139ed 100644
--- a/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeConfigModel .cs
+++ b/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeConfigModel .cs
@@ -1,4 +1,6 @@
-namespace Thermo.Active.Model.DTOModels.ThRecipe
+using System.Collections.Generic;
+
+namespace Thermo.Active.Model.DTOModels.ThRecipe
{
public class DTORecipeConfigModel
{
@@ -11,5 +13,7 @@
public string Format;
public string Label;
public int ScaleFactor;
+ public int NumDec;
+ public Dictionary EnumVal { get; set; }
}
}
\ No newline at end of file
diff --git a/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeParam.cs b/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeParam.cs
index b8bfddb4..4d4549c9 100644
--- a/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeParam.cs
+++ b/Thermo.Active.Model/DTOModels/ThRecipe/DTORecipeParam.cs
@@ -1,4 +1,7 @@
-namespace Thermo.Active.Model.DTOModels.ThRecipe
+using System.Collections.Generic;
+using System.Linq;
+
+namespace Thermo.Active.Model.DTOModels.ThRecipe
{
public class DTORecipeParam
{
@@ -10,6 +13,8 @@
public string UnitMeasure { get; set; }
public double ValueAct { get; set; }
public int ScaleFactor { get; set; }
+ public int NumDec { get; set; }
+ public Dictionary EnumVal { get; set; }
public override bool Equals(object obj)
{
@@ -32,6 +37,10 @@
return false;
if (ScaleFactor != item.ScaleFactor)
return false;
+ if (NumDec != item.NumDec)
+ return false;
+ if (!EnumVal.SequenceEqual(item.EnumVal))
+ return false;
return true;
}
diff --git a/Thermo.Active.NC/NcAdapter.cs b/Thermo.Active.NC/NcAdapter.cs
index 2b812a25..d494d5cb 100644
--- a/Thermo.Active.NC/NcAdapter.cs
+++ b/Thermo.Active.NC/NcAdapter.cs
@@ -1298,13 +1298,15 @@ namespace Thermo.Active.NC
{
Id = x.Id,
ScaleFactor = x.ScaleFactor,
+ NumDec = x.NumDec,
Category = x.Category.ToString(),
SubCategory_1 = x.SubCategory_1,
SubCategory_2 = x.SubCategory_2,
Name = x.Name,
Description = x.Description,
Format = x.Format,
- Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower()
+ Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower(),
+ EnumVal = x.EnumVal
}).ToList();
foreach (var item in recipeConfig)
@@ -1320,7 +1322,7 @@ namespace Thermo.Active.NC
};
// FIXME TODO impostato a true x testing
-#if true
+#if debug
currStatus = new RPStatus()
{
Visible = true,
@@ -1346,7 +1348,9 @@ namespace Thermo.Active.NC
ValueAct = paramPLC.ValueAct / item.ScaleFactor,
SetpointHMI = paramPLC.SetpointHMI / item.ScaleFactor,
SetpointPLC = paramPLC.SetpointPLC / item.ScaleFactor,
- ScaleFactor = item.ScaleFactor
+ ScaleFactor = item.ScaleFactor,
+ NumDec = item.NumDec,
+ EnumVal=item.EnumVal
};
}
else
@@ -1370,7 +1374,9 @@ namespace Thermo.Active.NC
Status = currStatus,
UnitMeasure = "",
ValueAct = 0,
- ScaleFactor = 1
+ ScaleFactor = 1,
+ NumDec = 0,
+ EnumVal= new Dictionary()
};
}
currentRecipe.Add(item.Label, currParam);
@@ -1905,13 +1911,15 @@ namespace Thermo.Active.NC
{
Id = x.Id,
ScaleFactor = x.ScaleFactor,
+ NumDec = x.NumDec,
Category = x.Category.ToString(),
SubCategory_1 = x.SubCategory_1,
SubCategory_2 = x.SubCategory_2,
Name = x.Name,
Description = x.Description,
Format = x.Format,
- Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower()
+ Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower(),
+ EnumVal = x.EnumVal
}).ToList();
RecipeCatStatus currStatus = RecipeCatStatus.Unchanged;
@@ -2012,7 +2020,7 @@ namespace Thermo.Active.NC
currVal = new DTOModulesBlock()
{
Id = item.Id,
- Label = item.Label,
+ Label = item.Label,
Type = item.Type,
Section = item.Section,
IdParam = item.IdParam,
diff --git a/Thermo.Active/Controllers/WebApi/ConfigurationController.cs b/Thermo.Active/Controllers/WebApi/ConfigurationController.cs
index 1fa44e29..97cc4f2c 100644
--- a/Thermo.Active/Controllers/WebApi/ConfigurationController.cs
+++ b/Thermo.Active/Controllers/WebApi/ConfigurationController.cs
@@ -108,13 +108,15 @@ namespace Thermo.Active.Controllers.WebApi
{
Id = x.Id,
ScaleFactor = x.ScaleFactor,
+ NumDec = x.NumDec,
Category = x.Category.ToString(),
SubCategory_1 = x.SubCategory_1,
SubCategory_2 = x.SubCategory_2,
Name = x.Name,
Description = x.Description,
Format = x.Format,
- Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower()
+ Label = $"{x.Category}_{x.SubCategory_1}_{x.SubCategory_2}_{x.Name}".Replace("__", "_").Replace("__", "_").ToLower(),
+ EnumVal = x.EnumVal
}).ToList();
return Ok(recipeConfig);
diff --git a/Thermo.Active/Listeners/SignalR/SignalRListener.cs b/Thermo.Active/Listeners/SignalR/SignalRListener.cs
index 3f658eed..2f709d79 100644
--- a/Thermo.Active/Listeners/SignalR/SignalRListener.cs
+++ b/Thermo.Active/Listeners/SignalR/SignalRListener.cs
@@ -266,7 +266,6 @@ namespace Thermo.Active.Listeners.SignalR
// comparazione
if (!item.Value.Equals(LastRecipeFullData[item.Key]))
{
- //diffData[item.Key] = item.Value;
diffData.Add(item.Key, item.Value);
}
}
@@ -284,19 +283,33 @@ namespace Thermo.Active.Listeners.SignalR
public static void SendThermoRecipeOverviewData(object recipeOver)
{
Dictionary currRecipeOver = recipeOver as Dictionary;
+ Dictionary diffData = new Dictionary();
- if (!LastRecipeOverData.SequenceEqual(currRecipeOver))
+
+ foreach (var item in currRecipeOver)
{
- LastRecipeOverData = currRecipeOver;
+ if (!LastRecipeOverData.ContainsKey(item.Key))
+ {
+ diffData.Add(item.Key, item.Value);
+ }
+ else
+ {
+ // comparazione
+ if (!item.Value.Equals(LastRecipeOverData[item.Key]))
+ {
+ diffData.Add(item.Key, item.Value);
+ }
+ }
+ }
+
+ if (diffData.Count > 0)
+ {
+ // salvo update
+ LastRecipeOverData = new Dictionary(currRecipeOver);
var context = GlobalHost.ConnectionManager.GetHubContext();
context.Clients.Group("ncData").recipeOverData(currRecipeOver);
}
- //else
- //{
- // var context = GlobalHost.ConnectionManager.GetHubContext();
- // context.Clients.Group("ncData").recipeOverData(currRecipeOver);
- //}
}
public static void SendThermoModulesData(object modules)
diff --git a/Thermo.Active/Properties/AssemblyInfo.cs b/Thermo.Active/Properties/AssemblyInfo.cs
index 5e80ead3..6f660785 100644
--- a/Thermo.Active/Properties/AssemblyInfo.cs
+++ b/Thermo.Active/Properties/AssemblyInfo.cs
@@ -30,4 +30,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("0.9.10")]
+[assembly: AssemblyVersion("0.9.12")]
diff --git a/Thermo.Active/wwwroot/config.development.json b/Thermo.Active/wwwroot/config.development.json
index 3f9529d8..34bce964 100644
--- a/Thermo.Active/wwwroot/config.development.json
+++ b/Thermo.Active/wwwroot/config.development.json
@@ -2,6 +2,6 @@
"env": "development",
"api": {
"enabled": true,
- "apiServerUrl": "http://seriate.steamware.net:9000/"
+ "apiServerUrl": "http://localhost:9000/"
}
}
\ No newline at end of file