Skip to content

Commit 18e8a19

Browse files
committed
Merge commit '8de5e95e8c684315f43caee9716c6eb58dc63b09'
2 parents f728598 + 8de5e95 commit 18e8a19

File tree

5 files changed

+230
-0
lines changed

5 files changed

+230
-0
lines changed

src/_templates.tsp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,33 +47,41 @@ scalar opdataaction extends UCH;
4747

4848
/** desired temperature */
4949
@unit("°C")
50+
@maxValue(100)
5051
scalar desiredtemp extends UCH;
5152

5253
/** outside temperature */
5354
@unit("°C")
55+
@minValue(-30) @maxValue(50)
5456
scalar outsidetemp extends SCH;
5557

5658
@unit("%")
59+
@minValue(-100) @maxValue(100)
5760
scalar percent extends D2C;
5861

5962
@unit("%")
63+
@maxValue(100)
6064
scalar percent0 extends UCH;
6165

6266
@unit("%")
6367
scalar percent1 extends D1C;
6468

6569
@unit("%")
70+
@minValue(-100) @maxValue(100)
6671
scalar percent2 extends D2B;
6772

6873
@unit("%")
74+
@minValue(-100) @maxValue(100)
6975
scalar percents extends SCH;
7076

7177
/** temperature */
7278
@unit("°C")
79+
@minValue(-50) @maxValue(180)
7380
scalar temp extends D2C;
7481

7582
/** temperature */
7683
@unit("°C")
84+
@maxValue(180)
7785
scalar temp0 extends UCH;
7886

7987
/** temperature */
@@ -82,10 +90,12 @@ scalar temp1 extends D1C;
8290

8391
/** temperature */
8492
@unit("°C")
93+
@minValue(-50)
8594
scalar temp2 extends D2B;
8695

8796
/** pressure */
8897
@unit("bar")
98+
@minValue(0)
8999
scalar press extends D2B;
90100

91101
/** time */

src/main.tsp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import "./vaillant/15.160.tsp";
2222
import "./vaillant/15.350.tsp";
2323
import "./vaillant/15.370.tsp";
2424
import "./vaillant/15.392.tsp";
25+
import "./vaillant/15.vai.tsp";
2526
import "./vaillant/15.430.tsp";
2627
import "./vaillant/15.470.tsp";
2728
import "./vaillant/15.700.tsp";
@@ -62,6 +63,7 @@ import "./vaillant/84.zeo.tsp";
6263
import "./vaillant/a0.sol.hwc.tsp";
6364
import "./vaillant/a1.sol.cc.tsp";
6465
import "./vaillant/broadcast.tsp";
66+
import "./vaillant/c0.wtw.tsp";
6567
import "./vaillant/e0.omu.tsp";
6668
import "./vaillant/ec.sol.sc.tsp";
6769
import "./vaillant/ec.solsy.sc.tsp";

src/vaillant/15.vai.tsp

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
import "@ebusd/ebus-typespec";
2+
import "./_templates.tsp";
3+
using Ebus;
4+
using Ebus.Num;
5+
using Ebus.Dtm;
6+
using Ebus.Str;
7+
namespace Vaillant;
8+
9+
// @zz(0x15)
10+
namespace Vai {
11+
// ,VAI00,0124,0020015281 189
12+
13+
/** room temperature */
14+
@ext(0, 0)
15+
model RoomTemp is Register<tempsensor>;
16+
17+
/** ventilation mode */
18+
@ext(0x24, 0)
19+
model Mode is Register<mcmode>;
20+
21+
/** temporary high duration */
22+
@ext(0x58, 0)
23+
model HighDuration is Register<minutes2>;
24+
25+
/** cooling days */
26+
@ext(0x36, 0)
27+
model CoolDays is Register<days>;
28+
29+
@values(Values_CoolState)
30+
scalar coolState extends UCH;
31+
32+
/** cooling status */
33+
@ext(0xa, 0)
34+
model CoolState is ReadonlyRegister<coolState>;
35+
36+
/** party mode */
37+
@ext(0x32, 0)
38+
model Party is ReadonlyRegister<onoff>;
39+
40+
/** eco mode */
41+
@ext(0x4f, 0)
42+
model EcoMode is Register<onoff>;
43+
44+
model ecountil {
45+
@maxLength(1) ign: IGN;
46+
value: time2;
47+
}
48+
/** save mode until */
49+
@ext(0x50, 0)
50+
model EcoModeUntil is Register<ecountil>;
51+
52+
/** time suffixed with 0x00 */
53+
model timesuf {
54+
value: time;
55+
@maxLength(1) @constValue(0) ign: IGN;
56+
}
57+
58+
/** time */
59+
@ext(0x2c, 0)
60+
model Time is Register<timesuf>;
61+
62+
/** date suffixed with 0x00 */
63+
model datesuf {
64+
value: date;
65+
@maxLength(1) @constValue(0) ign: IGN;
66+
}
67+
68+
/** date */
69+
@ext(0x2d, 0)
70+
model Date is Register<datesuf>;
71+
72+
@unit("m3/h")
73+
@maxValue(400)
74+
scalar volumeflowrate extends UIN;
75+
76+
/** ventilation level in level 2 (day) */
77+
@ext(0x17, 0)
78+
model NormalFlow is Register<volumeflowrate>;
79+
80+
/** ventilation level in level 1 (night) */
81+
@ext(0x18, 0)
82+
model ReducedFlow is Register<volumeflowrate>;
83+
84+
/** ventilation level in level high */
85+
@ext(0x4a, 0)
86+
model IntenseFlow is Register<volumeflowrate>;
87+
88+
/** ventilation level in level bypass */
89+
@ext(0x48, 0)
90+
model BypassFlow is Register<volumeflowrate>;
91+
92+
/** ventilation level in level holiday */
93+
@ext(0x49, 0)
94+
model HolidayFlow is Register<volumeflowrate>;
95+
96+
/** filter days */
97+
@ext(0x46, 0)
98+
model FilterDays is Register<days>;
99+
100+
model filterdays {
101+
@maxValue(180)
102+
value: UIN;
103+
}
104+
105+
/** days between two filter change alarms */
106+
@ext(0x45, 0)
107+
model FilterDaysAlarm is Register<filterdays>;
108+
109+
/** total yield */
110+
@ext(0x4d, 0)
111+
model Yield is Register<energy>;
112+
113+
enum Values_CoolState {
114+
heat: 1,
115+
cool: 2,
116+
}
117+
118+
}

src/vaillant/_templates.tsp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,27 @@ alias MF = 0xb5; // Ebus.Id.Values_manufacturers.Vaillant
1010

1111
/** temperature */
1212
@unit("°C")
13+
@minValue(-50)
1314
scalar temps extends SCH;
1415

1516
/** temperature */
1617
@unit("°C")
18+
@minValue(-50) @maxValue(180)
1719
scalar temps2 extends SIN;
1820

1921
/** temperature */
2022
@unit("°C")
23+
@minValue(-50) @maxValue(180)
2124
scalar tempv extends EXP;
2225

2326
/** pressure */
2427
@unit("bar")
28+
@minValue(0) @maxValue(70)
2529
scalar press extends FLT;
2630

2731
/** pressure */
2832
@unit("bar")
33+
@minValue(0) @maxValue(70)
2934
scalar pressv extends EXP;
3035

3136
/** percentage */
@@ -47,6 +52,7 @@ scalar daysel extends UCH;
4752
scalar daysel2 extends UCH;
4853

4954
/** days */
55+
@maxValue(60)
5056
scalar days extends UCH;
5157

5258
/** time */
@@ -70,6 +76,7 @@ scalar minutes0 extends UCH;
7076

7177
/** minutes */
7278
@unit("min")
79+
@maxValue(1440)
7380
scalar minutes2 extends UIN;
7481

7582
/** minutes */
@@ -120,6 +127,7 @@ scalar seconds2 extends UIN;
120127
scalar seconds4 extends ULG;
121128

122129
@unit("K")
130+
@minValue(-450) @maxValue(450)
123131
scalar calibration extends D2C;
124132

125133
@unit("K")
@@ -133,6 +141,7 @@ scalar calibration1 extends D1C;
133141
scalar calibrations extends SCH;
134142

135143
@unit("K")
144+
@minValue(-450) @maxValue(450)
136145
scalar calibrationv extends EXP;
137146

138147
@unit("°min")
@@ -233,6 +242,7 @@ model presssensor {
233242

234243
/** pressure */
235244
@unit("mbar")
245+
@maxValue(70000)
236246
scalar pressm extends ULG;
237247

238248
/** pressure */
@@ -244,6 +254,7 @@ scalar uin100 extends UIN;
244254

245255
/** Heating curve */
246256
@divisor(100)
257+
@maxValue(500)
247258
scalar curve extends UIN;
248259

249260
/** phase 1 state */
@@ -458,9 +469,11 @@ scalar rcmode extends UIN;
458469
scalar rcmode2 extends UIN;
459470

460471
/** index of a time slot */
472+
@maxValue(20)
461473
scalar slotIndex extends UCH;
462474

463475
/** number of slots on a day */
476+
@maxValue(24)
464477
scalar slotCount extends UCH;
465478

466479
/** number of slots per weekday */
@@ -485,6 +498,7 @@ model slotTimeFrame {
485498
/** desired temperature of a slot */
486499
@unit("°C")
487500
@divisor(10)
501+
@maxValue(1000)
488502
scalar slotTemp extends UIN;
489503

490504
/** complete slot for writing with target temperature */

src/vaillant/c0.wtw.tsp

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import "@ebusd/ebus-typespec";
2+
import "./_templates.tsp";
3+
import "./errors_inc.tsp";
4+
using Ebus;
5+
using Ebus.Num;
6+
using Ebus.Dtm;
7+
using Ebus.Str;
8+
namespace Vaillant;
9+
10+
@zz(0xc0)
11+
namespace Wtw {
12+
// ,WTW04,0124,1000535200 190
13+
14+
/** room temperature */
15+
@ext(0, 0)
16+
model RoomTemp is Register<tempsensor>;
17+
18+
/** Supply air inlet temperature */
19+
@ext(1, 0)
20+
model AirInletTemp is ReadonlyUpdateRegister<tempsensor>;
21+
22+
/** Supply air outlet temperature */
23+
@ext(0x2, 0)
24+
model AirOutletTemp is ReadonlyUpdateRegister<tempsensor>;
25+
26+
/** Exhaust air inlet temperature */
27+
@ext(0x3, 0)
28+
model ExhaustAirInletTemp is ReadonlyUpdateRegister<tempsensor>;
29+
30+
/** Exhaust air outlet temperature */
31+
@ext(0x4, 0)
32+
model ExhaustAirOutletTemp is ReadonlyUpdateRegister<tempsensor>;
33+
34+
@values(Values_bypass)
35+
scalar bypass extends UCH;
36+
37+
enum Values_bypass {
38+
auto: 0,
39+
off: 1,
40+
on: 2,
41+
}
42+
43+
/** Bypass status */
44+
@ext(0xa, 0)
45+
model BypassValve is Register<bypass>;
46+
47+
// @unit("m3/h")
48+
// @divisor(3.333) // todo not possible to have this divisor yet (900=270qm/h, 166=50qm/h), thus using l/s instead
49+
@unit("l/s")
50+
@divisor(12) // 900=75l/s, 166=13.8l/s, factor to get qm/h is 3.6
51+
@minValue(166) @maxValue(900) @step(5)
52+
scalar ventilation extends UIN;
53+
54+
/** ventilation level */
55+
@ext(0x15, 0)
56+
model Ventilation is Register<ventilation>;
57+
58+
/** volume flow correction */
59+
@ext(0x20, 0)
60+
model FlowCorrection is Register<D1B>;
61+
62+
/** bypass position */
63+
@ext(0x9, 0)
64+
model BypassPos is ReadonlyUpdateRegister<percent0>;
65+
66+
/** frost protection */
67+
@ext(0x47, 0)
68+
model FrostProtection is Register<onoff>;
69+
70+
/** filter days */
71+
@ext(0x46, 0)
72+
model FilterDays is UpdateRegister<days>;
73+
74+
/** days between two filter change alarms */
75+
@ext(0x45, 0)
76+
model FilterDaysAlarm is ReadonlyUpdateRegister<days>;
77+
78+
/** total yield */
79+
@ext(0x4d, 0)
80+
model Yield is UpdateRegister<energy>;
81+
82+
/** included parts */
83+
union _includes {
84+
Errors_inc,
85+
}
86+
}

0 commit comments

Comments
 (0)