diff --git a/lib/entity_class/stateful_widgets.dart b/lib/entity_class/stateful_widgets.dart index d6e5adf..2b72abf 100644 --- a/lib/entity_class/stateful_widgets.dart +++ b/lib/entity_class/stateful_widgets.dart @@ -28,12 +28,33 @@ class _SwitchStateWidgetState extends State { @override Widget build(BuildContext context) { final entityModel = EntityModel.of(context); - return Switch( - value: entityModel.entity.assumedState == 'on', - onChanged: ((switchState) { - _setNewState(switchState, entityModel.entity); - }), - ); + final entity = entityModel.entity; + if ((entity.attributes["assumed_state"] == null) || (entity.attributes["assumed_state"] == false)) { + return Switch( + value: entity.assumedState == 'on', + onChanged: ((switchState) { + _setNewState(switchState, entity); + }), + ); + } else { + return Row( + children: [ + IconButton( + onPressed: () => _setNewState(false, entity), + icon: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:flash-off")), + color: entity.assumedState == 'on' ? Colors.black : Colors.blue, + iconSize: Entity.iconSize, + ), + IconButton( + onPressed: () => _setNewState(true, entity), + icon: Icon(MaterialDesignIcons.createIconDataFromIconName("mdi:flash")), + color: entity.assumedState == 'on' ? Colors.blue : Colors.black, + iconSize: Entity.iconSize + ) + ], + ); + } + } } diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index affcf51..3d40d28 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -192,7 +192,6 @@ class HomeAssistant { _handleMessage(String message) { var data = json.decode(message); - TheLogger.log("Debug","[Received] => ${data['type']}"); if (data["type"] == "auth_required") { _sendAuthMessageRaw('{"type": "auth","$_authType": "$_password"}'); } else if (data["type"] == "auth_ok") { @@ -210,10 +209,11 @@ class HomeAssistant { } else if (data["id"] == _userInfoMessageId) { _parseUserInfo(data); } else if (data["id"] == _currentMessageId) { - TheLogger.log("Debug","Request id:$_currentMessageId was successful"); + TheLogger.log("Debug","[Received] => Request id:$_currentMessageId was successful"); } } else if (data["type"] == "event") { if ((data["event"] != null) && (data["event"]["event_type"] == "state_changed")) { + TheLogger.log("Debug","[Received] => ${data['type']}.${data["event"]["event_type"]}: ${data["event"]["data"]["entity_id"]}"); _handleEntityStateChange(data["event"]["data"]); } else if (data["event"] != null) { TheLogger.log("Warning","Unhandled event type: ${data["event"]["event_type"]}");