Skip to content

Commit 36ee8cd

Browse files
committed
more stuff
1 parent c626447 commit 36ee8cd

33 files changed

+550
-173
lines changed

lib/src/api/aha/aha_service.dart

Lines changed: 76 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import 'package:chopper/chopper.dart';
22

33
import 'models/device_list.dart';
4+
import 'models/device_stats.dart';
5+
import 'models/hkr_temperature.dart';
6+
import 'models/percentage.dart';
7+
import 'models/switch_action.dart';
8+
import 'models/temperature.dart';
49

510
part 'aha_service.chopper.dart';
611

@@ -15,34 +20,85 @@ abstract class AhaService extends ChopperService {
1520
@Get(path: '$_baseUrl=getdevicelistinfos')
1621
Future<Response<DeviceList>> getDeviceListInfos();
1722

23+
@Get(path: '$_baseUrl=getbasicdevicestats')
24+
Future<Response<DeviceStats>> getBasicDeviceStats(@Query() String ain);
25+
1826
// switches
1927

20-
// @Get(path: '$_baseUrl=getswitchlist')
21-
// Future<Response<String>> getSwitchList();
28+
@Get(path: '$_baseUrl=getswitchlist')
29+
Future<Response<List<String>>> getSwitchList();
30+
31+
@Get(path: '$_baseUrl=setswitchon')
32+
Future<Response<bool>> setSwitchOn(@Query() String ain);
33+
34+
@Get(path: '$_baseUrl=setswitchoff')
35+
Future<Response<bool>> setSwitchOff(@Query() String ain);
36+
37+
@Get(path: '$_baseUrl=setswitchtoggle')
38+
Future<Response<bool>> setSwitchToggle(@Query() String ain);
39+
40+
@Get(path: '$_baseUrl=getswitchstate')
41+
Future<Response<bool?>> getSwitchState(@Query() String ain);
42+
43+
@Get(path: '$_baseUrl=getswitchpresent')
44+
Future<Response<bool>> getSwitchPresent(@Query() String ain);
45+
46+
/// Returns the power in mW
47+
@Get(path: '$_baseUrl=getswitchpower')
48+
Future<Response<int?>> getSwitchPower(@Query() String ain);
49+
50+
/// Returns the energy in Wh
51+
@Get(path: '$_baseUrl=getswitchenergy')
52+
Future<Response<int?>> getSwitchEnergy(@Query() String ain);
53+
54+
@Get(path: '$_baseUrl=getswitchname')
55+
Future<Response<String>> getSwitchName(@Query() String ain);
56+
57+
// temperature sensors
58+
59+
@Get(path: '$_baseUrl=gettemperature')
60+
Future<Response<Temperature?>> getTemperature(@Query() String ain);
61+
62+
// thermostats
63+
64+
@Get(path: '$_baseUrl=gethkrtsoll')
65+
Future<Response<HkrTemperature?>> getHkrTSoll(@Query() String ain);
66+
67+
@Get(path: '$_baseUrl=gethkrkomfort')
68+
Future<Response<HkrTemperature?>> getHkrKomfort(@Query() String ain);
69+
70+
@Get(path: '$_baseUrl=gethkrabsenk')
71+
Future<Response<HkrTemperature?>> getHkrAbsenk(@Query() String ain);
2272

23-
// @Get(path: '$_baseUrl=setswitchon')
24-
// Future<Response<SwitchStatus>> setSwitchOn(@Query() String ain);
73+
@Get(path: '$_baseUrl=sethkrtsoll')
74+
Future<Response<void>> setHkrTSoll(
75+
@Query() String ain,
76+
@Query('param') HkrTemperature temperature,
77+
);
2578

26-
// @Get(path: '$_baseUrl=setswitchoff')
27-
// Future<Response<SwitchStatus>> setSwitchOff(@Query() String ain);
79+
// templates
2880

29-
// @Get(path: '$_baseUrl=setswitchtoggle')
30-
// Future<Response<SwitchStatus>> setSwitchToggle(@Query() String ain);
81+
// @Get(path: '$_baseUrl=gettemplatelistinfos')
82+
// Future<Response<dynamic>> getTemplateListInfos();
3183

32-
// @Get(path: '$_baseUrl=getswitchstate')
33-
// Future<Response<Optional<SwitchStatus>>> getSwitchState(
34-
// @Query() String ain,
35-
// );
84+
// @Get(path: '$_baseUrl=applytemplate')
85+
// Future<Response<void>> applyTemplate(@Query() String ain);
3686

37-
// @Get(path: '$_baseUrl=getswitchpresent')
38-
// Future<Response<SwitchStatus>> getSwitchPresent(@Query() String ain);
87+
// simple on off
3988

40-
// @Get(path: '$_baseUrl=getswitchpower')
41-
// Future<Response<Optional<double>>> getSwitchPower(@Query() String ain);
89+
@Get(path: '$_baseUrl=setsimpleonoff')
90+
Future<Response<void>> setSimpleOnOff(
91+
@Query() String ain,
92+
@Query('onoff') SwitchAction onOff,
93+
);
4294

43-
// @Get(path: '$_baseUrl=getswitchenergy')
44-
// Future<Response<Optional<double>>> getSwitchEnergy(@Query() String ain);
95+
/// Level must be [0, 255]
96+
@Get(path: '$_baseUrl=setlevel')
97+
Future<Response<void>> setLevel(@Query() String ain, @Query() int level);
4598

46-
// @Get(path: '$_baseUrl=getswitchname')
47-
// Future<Response<String>> getSwitchName(@Query() String ain);
99+
@Get(path: '$_baseUrl=setlevelpercentage')
100+
Future<Response<void>> setLevelPercentage(
101+
@Query() String ain,
102+
@Query() Percentage level,
103+
);
48104
}

lib/src/api/aha/models/alert.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66
import 'timestamp.dart';
77

88
part 'alert.freezed.dart';

lib/src/api/aha/models/avm_button.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66
import 'percentage.dart';
77

88
part 'avm_button.freezed.dart';

lib/src/api/aha/models/button.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66
import 'timestamp.dart';
77

88
part 'button.freezed.dart';

lib/src/api/aha/models/color_control.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
44
import 'package:xml/xml.dart';
55
import 'package:xml_annotation/xml_annotation.dart' as xml;
66

7-
import '../../util/xml_serializable.dart';
7+
import '../../util/xml_convertible.dart';
88
import 'level_control.dart';
99

1010
part 'color_control.freezed.dart';
@@ -36,8 +36,8 @@ abstract class ColorControl with _$ColorControl implements IXmlSerializable {
3636
@xml.XmlAttribute(name: 'current_mode')
3737
@Default(ColorControlMode.unknown)
3838
ColorControlMode currentMode,
39-
@xml.XmlElement() @visibleForTesting String? hue,
40-
@xml.XmlElement() @visibleForTesting String? saturation,
39+
@xml.XmlElement() @visibleForOverriding String? hue,
40+
@xml.XmlElement() @visibleForOverriding String? saturation,
4141
@xml.XmlElement(name: 'temperature') int? temperatureKelvin,
4242
}) = _ColorControl;
4343

lib/src/api/aha/models/device.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66
import 'alert.dart';
77
import 'avm_button.dart';
88
import 'button.dart';

lib/src/api/aha/models/device_list.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66
import 'device.dart';
77

88
part 'device_list.freezed.dart';
@@ -27,7 +27,7 @@ abstract class DeviceList with _$DeviceList implements IXmlConvertible {
2727
@xml.XmlAttribute(name: 'fwversion') @Default('') String fwVersion,
2828
@xml.XmlElement(name: Device.deviceElementName) List<Device>? devices,
2929
@xml.XmlElement(name: Device.groupElementName)
30-
@visibleForTesting
30+
@visibleForOverriding
3131
List<Device>? rawGroups,
3232
}) = _DeviceList;
3333

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import 'package:freezed_annotation/freezed_annotation.dart';
2+
import 'package:xml/xml.dart';
3+
import 'package:xml_annotation/xml_annotation.dart' as xml;
4+
5+
import '../../util/xml_convertible.dart';
6+
7+
import 'stats.dart';
8+
import 'stats_group.dart';
9+
10+
part 'device_stats.freezed.dart';
11+
part 'device_stats.g.dart';
12+
13+
@Freezed(makeCollectionsUnmodifiable: false)
14+
@xml.XmlSerializable()
15+
abstract class DeviceStats with _$DeviceStats implements IXmlConvertible {
16+
static const elementName = 'devicestats';
17+
18+
static const invalid = DeviceStats();
19+
20+
@xml.XmlSerializable(createMixin: true)
21+
@xml.XmlRootElement(name: DeviceStats.elementName)
22+
@With.fromString(r'_$_$_DeviceStatsXmlSerializableMixin')
23+
const factory DeviceStats({
24+
@xml.XmlElement() StatsGroup<StatsUnitCelsius>? temperature,
25+
@xml.XmlElement() StatsGroup<StatsUnitPercent>? humidity,
26+
@xml.XmlElement() StatsGroup<StatsUnitVolt>? voltage,
27+
@xml.XmlElement() StatsGroup<StatsUnitWatt>? power,
28+
@xml.XmlElement() StatsGroup<StatsUnitWattHours>? energy,
29+
}) = _DeviceStats;
30+
31+
factory DeviceStats.fromXmlElement(XmlElement element) =>
32+
_$_$_DeviceStatsFromXmlElement(element);
33+
}

lib/src/api/aha/models/group_info.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66

77
part 'group_info.freezed.dart';
88
part 'group_info.g.dart';
@@ -17,7 +17,7 @@ abstract class GroupInfo with _$GroupInfo implements IXmlSerializable {
1717
const factory GroupInfo({
1818
@xml.XmlElement(name: 'masterdeviceid') @Default(0) int masterDeviceId,
1919
@xml.XmlElement(name: 'members')
20-
@visibleForTesting
20+
@visibleForOverriding
2121
@Default('')
2222
String rawMembers,
2323
}) = _GroupInfo;

lib/src/api/aha/models/hkr.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
22
import 'package:xml/xml.dart';
33
import 'package:xml_annotation/xml_annotation.dart' as xml;
44

5-
import '../../util/xml_serializable.dart';
5+
import '../../util/xml_convertible.dart';
66
import 'hkr_temperature.dart';
77
import 'next_change.dart';
88
import 'percentage.dart';

0 commit comments

Comments
 (0)