Skip to content

Commit e17f3d1

Browse files
authored
Merge pull request #190 from goldenm-software/development
Add Zigbee support and new render widgets
2 parents 3a132cc + c778729 commit e17f3d1

9 files changed

Lines changed: 192 additions & 22 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 3.8.10
4+
5+
- Added new fields on `InboundProtocol` and `Model` to support Zigbee and ConfIoT related configurations
6+
37
## 3.8.9
48

59
- Added new value `NFE_CHANGED` in `AtsPurchaseOrderStatus` enum

lib/src/inbound/inbound.g.dart

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/inbound/src/enums.dart

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ enum ConfigSource {
8181
/// [unknown] refers that the command definition is unknown.
8282
/// Layrz API Definition: `UNKNOWN`
8383
@JsonValue('UNKNOWN')
84-
unknown;
84+
unknown
85+
;
8586

8687
@override
8788
String toString() => toJson();
@@ -181,6 +182,10 @@ enum OperationMode {
181182
@JsonValue('PERIPHERAL')
182183
peripheral,
183184

185+
/// Zigbee operation mode
186+
@JsonValue('ZIGBEE')
187+
zigbee,
188+
184189
/// [unknown] is the default value for the operation mode.
185190
@JsonValue('UNKNOWN')
186191
unknown,

lib/src/models/models.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ library;
22

33
import 'package:collection/collection.dart';
44
import 'package:freezed_annotation/freezed_annotation.dart';
5+
import 'package:layrz_icons/layrz_icons.dart';
56
import 'package:layrz_models/layrz_models.dart';
67

78
part 'models.freezed.dart';
@@ -11,3 +12,4 @@ part 'src/model.dart';
1112
part 'src/hw_model.dart';
1213
part 'src/firmware_build.dart';
1314
part 'src/firmware_branch.dart';
15+
part 'src/widget.dart';

lib/src/models/models.freezed.dart

Lines changed: 30 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/models/models.g.dart

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/src/models/src/model.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ abstract class Model with _$Model {
4848

4949
/// [firmwares] is the list of firmwares for the model.
5050
@Default([]) List<FirmwareBuild> firmwares,
51+
52+
/// The icon of the model, if not exists, you must render the protocol icon
53+
@IconOrNullConverter() LayrzIcon? icon,
54+
55+
/// Indicates the rendering widget, useful to render visually the kind of device
56+
@JsonKey(unknownEnumValue: RenderWidget.unknown) @Default(RenderWidget.unknown) RenderWidget widget,
5157
}) = _Model;
5258

5359
factory Model.fromJson(Map<String, dynamic> json) => _$ModelFromJson(json);

lib/src/models/src/widget.dart

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
part of '../models.dart';
2+
3+
@JsonEnum(alwaysCreate: true)
4+
enum RenderWidget {
5+
/// Renders a Thermometer
6+
@JsonValue('THERMOMETER')
7+
thermometer,
8+
9+
/// Renders a Humidity display
10+
@JsonValue('HUMIDITY')
11+
humidity,
12+
13+
/// Renders a Pressure display
14+
@JsonValue('PRESSURE')
15+
pressure,
16+
17+
/// Renders an Illuminance display
18+
@JsonValue('ILLUMINANCE')
19+
illuminance,
20+
21+
/// Renders an Air Quality / CO2 display
22+
@JsonValue('AIR_QUALITY')
23+
airQuality,
24+
25+
/// Renders a Battery level display
26+
@JsonValue('BATTERY')
27+
battery,
28+
29+
/// Renders a Link Quality (LQI) display
30+
@JsonValue('LINK_QUALITY')
31+
linkQuality,
32+
33+
/// Renders a read-only binary state indicator
34+
@JsonValue('BINARY_SENSOR')
35+
binarySensor,
36+
37+
/// Renders a Switch
38+
@JsonValue('SWITCH')
39+
switch_,
40+
41+
/// Renders a Dimmer slider
42+
@JsonValue('DIMMER')
43+
dimmer,
44+
45+
/// Renders a Color Temperature slider
46+
@JsonValue('COLOR_TEMPERATURE')
47+
colorTemperature,
48+
49+
/// Renders a Thermostat Setpoint slider
50+
@JsonValue('SETPOINT')
51+
setpoint,
52+
53+
/// Renders a Fan Speed slider
54+
@JsonValue('FAN_SPEED')
55+
fanSpeed,
56+
57+
/// Renders an RGB/RGBW Color Picker
58+
@JsonValue('COLOR_PICKER')
59+
colorPicker,
60+
61+
/// Renders a Mode Selector (e.g. heat/cool/auto)
62+
@JsonValue('MODE_SELECTOR')
63+
modeSelector,
64+
65+
/// Renders a Scene Selector
66+
@JsonValue('SCENE_SELECTOR')
67+
sceneSelector,
68+
69+
/// Renders a Cover/Blind control (open, close, stop, position)
70+
@JsonValue('COVER')
71+
cover,
72+
73+
/// Renders a Lock/Unlock control
74+
@JsonValue('LOCK')
75+
lock,
76+
77+
/// Renders a Power display (Watts)
78+
@JsonValue('POWER_METER')
79+
powerMeter,
80+
81+
/// Renders an Energy display (kWh)
82+
@JsonValue('ENERGY_METER')
83+
energyMeter,
84+
85+
/// Renders a Voltage display (V)
86+
@JsonValue('VOLTAGE')
87+
voltage,
88+
89+
/// Renders a Current display (A)
90+
@JsonValue('CURRENT')
91+
current,
92+
93+
/// Unknown render widget
94+
@JsonValue('UNKNOWN')
95+
unknown,
96+
;
97+
98+
@override
99+
String toString() => toJson();
100+
String toJson() => _$RenderWidgetEnumMap[this] ?? 'UNKNOWN';
101+
102+
static RenderWidget fromJson(String json) {
103+
final found = _$RenderWidgetEnumMap.entries.firstWhereOrNull((e) => e.value == json);
104+
return found?.key ?? RenderWidget.unknown;
105+
}
106+
}

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
description: Layrz API models for Dart/Flutter. This package contains the models
22
used by the Layrz API.
33
name: layrz_models
4-
version: "3.8.9"
4+
version: "3.8.10"
55
repository: https://github.com/goldenm-software/layrz_models
66

77
environment:

0 commit comments

Comments
 (0)