Skip to content

Commit e225245

Browse files
committed
rework #503 and combine with #429 as well as own findings
1 parent 750284e commit e225245

4 files changed

Lines changed: 208 additions & 0 deletions

File tree

src/main.tsp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import "./vaillant/15.160.tsp";
1313
import "./vaillant/15.350.tsp";
1414
import "./vaillant/15.370.tsp";
1515
import "./vaillant/15.392.tsp";
16+
import "./vaillant/15.vai.tsp";
1617
import "./vaillant/15.430.tsp";
1718
import "./vaillant/15.470.tsp";
1819
import "./vaillant/15.700.tsp";
@@ -53,6 +54,7 @@ import "./vaillant/84.zeo.tsp";
5354
import "./vaillant/a0.sol.hwc.tsp";
5455
import "./vaillant/a1.sol.cc.tsp";
5556
import "./vaillant/broadcast.tsp";
57+
import "./vaillant/c0.wtw.tsp";
5658
import "./vaillant/e0.omu.tsp";
5759
import "./vaillant/ec.sol.sc.tsp";
5860
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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ scalar day extends BDY;
3939
scalar daysel extends UCH;
4040

4141
/** days */
42+
@maxValue(60)
4243
scalar days extends UCH;
4344

4445
/** time */
@@ -62,6 +63,7 @@ scalar minutes0 extends UCH;
6263

6364
/** minutes */
6465
@unit("min")
66+
@maxValue(1440)
6567
scalar minutes2 extends UIN;
6668

6769
/** minutes */

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)