diff --git a/lib/entity_class/climate_entity.class.dart b/lib/entity_class/climate_entity.class.dart index 796c590..662f53d 100644 --- a/lib/entity_class/climate_entity.class.dart +++ b/lib/entity_class/climate_entity.class.dart @@ -3,9 +3,9 @@ part of '../main.dart'; class _ClimateEntityWidgetState extends _EntityWidgetState { List _operationList = []; - double _temperature; - String _operationMode; - bool _awayMode; + double _temperature1 = 0.0; + String _operationMode = ""; + bool _awayMode = false; bool _showPending; bool _changedHere; double _temperatureStep = 0.2; @@ -27,7 +27,12 @@ class _ClimateEntityWidgetState extends _EntityWidgetState { } void _resetVars() { - _temperature = widget.entity.attributes['temperature']; + var temp1 = widget.entity.attributes['temperature'] ?? widget.entity.attributes['target_temp_low']; + if (temp1 is int) { + _temperature1 = temp1.toDouble(); + } else if (temp1 is double) { + _temperature1 = temp1; + } _operationMode = widget.entity.attributes['operation_mode']; _awayMode = widget.entity.attributes['away_mode'] == "on"; _showPending = false; @@ -46,20 +51,20 @@ class _ClimateEntityWidgetState extends _EntityWidgetState { } void _temperatureUp() { - _temperature += _temperatureStep; + _temperature1 += _temperatureStep; _setTemperature(); } void _temperatureDown() { - _temperature -= _temperatureStep; + _temperature1 -= _temperatureStep; _setTemperature(); } void _setTemperature() { setState(() { - _temperature = double.parse(_temperature.toStringAsFixed(1)); + _temperature1 = double.parse(_temperature1.toStringAsFixed(1)); _changedHere = true; - eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_temperature", widget.entity.entityId,{"temperature": "${_temperature.toStringAsFixed(1)}"})); + eventBus.fire(new ServiceCallEvent(widget.entity.domain, "set_temperature", widget.entity.entityId,{"temperature": "${_temperature1.toStringAsFixed(1)}"})); _resetStateTimer(); }); } @@ -94,7 +99,7 @@ class _ClimateEntityWidgetState extends _EntityWidgetState { _buildAdditionalControls() { if (_changedHere) { - _showPending = (_temperature != widget.entity.attributes['temperature']); + _showPending = (_temperature1 != widget.entity.attributes['temperature']); _changedHere = false; } else { _resetTimer?.cancel(); @@ -112,7 +117,7 @@ class _ClimateEntityWidgetState extends _EntityWidgetState { children: [ Expanded( child: Text( - "$_temperature", + "$_temperature1", style: TextStyle( fontSize: largeFontSize, color: _showPending ? Colors.red : Colors.black diff --git a/lib/entity_class/select_entity.class.dart b/lib/entity_class/select_entity.class.dart index 1fc2aea..0d53a16 100644 --- a/lib/entity_class/select_entity.class.dart +++ b/lib/entity_class/select_entity.class.dart @@ -11,15 +11,15 @@ class _SelectEntityWidgetState extends _EntityWidgetState { @override Widget _buildActionWidget(BuildContext context) { + Widget ctrl; _listOptions.clear(); if (widget.entity.attributes["options"] != null) { widget.entity.attributes["options"].forEach((value){ _listOptions.add(value.toString()); }); } - return Expanded( - //width: Entity.INPUT_WIDTH, - child: DropdownButton( + if (_listOptions.isNotEmpty) { + ctrl = DropdownButton( value: widget.entity.state, items: this._listOptions.map((String value) { return new DropdownMenuItem( @@ -30,7 +30,13 @@ class _SelectEntityWidgetState extends _EntityWidgetState { onChanged: (_) { setNewState(_); }, - ), + ); + } else { + ctrl = Text('---'); + } + return Expanded( + //width: Entity.INPUT_WIDTH, + child: ctrl, ); } } \ No newline at end of file diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index c44390d..b38e76c 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -309,8 +309,9 @@ class HomeAssistant { void _handleEntityStateChange(Map eventData) { //TheLogger.log("Debug", "New state for ${eventData['entity_id']}"); - _entities.updateState(eventData); - eventBus.fire(new StateChangedEvent(eventData["entity_id"], null, false)); + Map data = Map.from(eventData); + _entities.updateState(data); + eventBus.fire(new StateChangedEvent(data["entity_id"], null, false)); } void _parseConfig(Map data) { diff --git a/lib/main.dart b/lib/main.dart index ba98b9f..da9e207 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -36,7 +36,7 @@ part 'card_class.dart'; EventBus eventBus = new EventBus(); const String appName = "HA Client"; -const appVersion = "0.2.5.33"; +const appVersion = "0.2.5.34"; String homeAssistantWebHost; diff --git a/lib/view_class.dart b/lib/view_class.dart index 78ee287..50eb073 100644 --- a/lib/view_class.dart +++ b/lib/view_class.dart @@ -121,8 +121,8 @@ class ViewWidgetState extends State { return result; } - List _buildBadges(BuildContext context, List badges) { - List result = []; + List _buildBadges(BuildContext context, List badges) { + List result = []; badges.forEach((Entity entity) { result.add(entity.buildWidget(context, EntityWidgetType.badge)); }); diff --git a/pubspec.yaml b/pubspec.yaml index 057e966..c55fdeb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: hass_client description: Home Assistant Android Client -version: 0.2.5+33 +version: 0.2.5+34 environment: sdk: ">=2.0.0-dev.68.0 <3.0.0"