diff --git a/homeassistant/components/ios.py b/homeassistant/components/ios.py index c5ffc34864c..bac5bb59d96 100644 --- a/homeassistant/components/ios.py +++ b/homeassistant/components/ios.py @@ -8,6 +8,7 @@ import asyncio import os import json import logging +import datetime import voluptuous as vol from voluptuous.humanize import humanize_error @@ -20,6 +21,8 @@ from homeassistant.core import callback from homeassistant.components.http import HomeAssistantView +from homeassistant.remote import JSONEncoder + from homeassistant.const import (HTTP_INTERNAL_SERVER_ERROR, HTTP_BAD_REQUEST) @@ -55,6 +58,8 @@ ATTR_TEXT_INPUT_BEHAVIOR = "textInput" BEHAVIORS = [ATTR_DEFAULT_BEHAVIOR, ATTR_TEXT_INPUT_BEHAVIOR] +ATTR_LAST_SEEN_AT = "lastSeenAt" + ATTR_DEVICE = "device" ATTR_PUSH_TOKEN = "pushToken" ATTR_APP = "app" @@ -192,7 +197,7 @@ def _save_config(filename, config): """Save configuration.""" try: with open(filename, "w") as fdesc: - fdesc.write(json.dumps(config)) + fdesc.write(json.dumps(config, cls=JSONEncoder)) except (IOError, TypeError) as error: _LOGGER.error("Saving config file failed: %s", error) return False @@ -285,7 +290,7 @@ class iOSIdentifyDeviceView(HomeAssistantView): try: req_data = yield from request.json() except ValueError: - return self.json_message('Invalid JSON', HTTP_BAD_REQUEST) + return self.json_message("Invalid JSON", HTTP_BAD_REQUEST) try: data = IDENTIFY_SCHEMA(req_data) @@ -293,6 +298,8 @@ class iOSIdentifyDeviceView(HomeAssistantView): return self.json_message(humanize_error(request.json, ex), HTTP_BAD_REQUEST) + data[ATTR_LAST_SEEN_AT] = datetime.datetime.now() + name = data.get(ATTR_DEVICE_ID) CONFIG_FILE[ATTR_DEVICES][name] = data