diff --git a/homeassistant/components/sensor/bbox.py b/homeassistant/components/sensor/bbox.py
index a5c01a48d0da6f652f38d16706a28dcf2b608ba9..3689e94b05dc51fce96b26cc264216bcc1126d83 100644
--- a/homeassistant/components/sensor/bbox.py
+++ b/homeassistant/components/sensor/bbox.py
@@ -10,12 +10,12 @@ from datetime import timedelta
 import requests
 import voluptuous as vol
 
+import homeassistant.helpers.config_validation as cv
 from homeassistant.components.sensor import PLATFORM_SCHEMA
 from homeassistant.const import (
     CONF_NAME, CONF_MONITORED_VARIABLES, ATTR_ATTRIBUTION)
 from homeassistant.helpers.entity import Entity
 from homeassistant.util import Throttle
-import homeassistant.helpers.config_validation as cv
 
 REQUIREMENTS = ['pybbox==0.0.5-alpha']
 
@@ -23,7 +23,7 @@ _LOGGER = logging.getLogger(__name__)
 
 BANDWIDTH_MEGABITS_SECONDS = 'Mb/s'  # type: str
 
-CONF_ATTRIBUTION = "Powered by Bouygues Telecom"
+ATTRIBUTION = "Powered by Bouygues Telecom"
 
 DEFAULT_NAME = 'Bbox'
 
@@ -65,7 +65,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
     for variable in config[CONF_MONITORED_VARIABLES]:
         sensors.append(BboxSensor(bbox_data, variable, name))
 
-    add_devices(sensors)
+    add_devices(sensors, True)
 
 
 class BboxSensor(Entity):
@@ -81,8 +81,6 @@ class BboxSensor(Entity):
         self.bbox_data = bbox_data
         self._state = None
 
-        self.update()
-
     @property
     def name(self):
         """Return the name of the sensor."""
@@ -107,7 +105,7 @@ class BboxSensor(Entity):
     def device_state_attributes(self):
         """Return the state attributes."""
         return {
-            ATTR_ATTRIBUTION: CONF_ATTRIBUTION,
+            ATTR_ATTRIBUTION: ATTRIBUTION,
         }
 
     def update(self):
diff --git a/homeassistant/components/sensor/bh1750.py b/homeassistant/components/sensor/bh1750.py
index b98ba85f8c05965626f0f71452379a208850b03f..0c538a6cfcceb101200a27f1c1fee44d0348a7b2 100644
--- a/homeassistant/components/sensor/bh1750.py
+++ b/homeassistant/components/sensor/bh1750.py
@@ -92,10 +92,10 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None):
 
     dev = [BH1750Sensor(sensor, name, SENSOR_UNIT,
                         config.get(CONF_MULTIPLIER))]
-    _LOGGER.info("Setup of BH1750 light sensor at %s in mode %s is complete.",
+    _LOGGER.info("Setup of BH1750 light sensor at %s in mode %s is complete",
                  i2c_address, operation_mode)
 
-    async_add_devices(dev)
+    async_add_devices(dev, True)
 
 
 class BH1750Sensor(Entity):
diff --git a/homeassistant/components/sensor/bloomsky.py b/homeassistant/components/sensor/bloomsky.py
index 62769dc049486c101815b4fc93eae0fc0c1b1a05..660cb5ede6e02542d0fbfaaedc23e04698a99fd4 100644
--- a/homeassistant/components/sensor/bloomsky.py
+++ b/homeassistant/components/sensor/bloomsky.py
@@ -51,7 +51,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
 
     for device in bloomsky.BLOOMSKY.devices.values():
         for variable in sensors:
-            add_devices([BloomSkySensor(bloomsky.BLOOMSKY, device, variable)])
+            add_devices(
+                [BloomSkySensor(bloomsky.BLOOMSKY, device, variable)], True)
 
 
 class BloomSkySensor(Entity):
@@ -64,7 +65,7 @@ class BloomSkySensor(Entity):
         self._sensor_name = sensor_name
         self._name = '{} {}'.format(device['DeviceName'], sensor_name)
         self._unique_id = 'bloomsky_sensor {}'.format(self._name)
-        self.update()
+        self._state = None
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/broadlink.py b/homeassistant/components/sensor/broadlink.py
index 97b34b0c881fcae319eb34e9aae2bb557b298c6a..d23236c2df8845cd39a65dfb05ed62390673df48 100644
--- a/homeassistant/components/sensor/broadlink.py
+++ b/homeassistant/components/sensor/broadlink.py
@@ -50,20 +50,19 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
 # pylint: disable=unused-argument
 def setup_platform(hass, config, add_devices, discovery_info=None):
     """Set up the Broadlink device sensors."""
+    host = config.get(CONF_HOST)
     mac = config.get(CONF_MAC).encode().replace(b':', b'')
     mac_addr = binascii.unhexlify(mac)
-    broadlink_data = BroadlinkData(
-        config.get(CONF_UPDATE_INTERVAL),
-        config.get(CONF_HOST),
-        mac_addr, config.get(CONF_TIMEOUT))
+    name = config.get(CONF_NAME)
+    timeout = config.get(CONF_TIMEOUT)
+    update_interval = config.get(CONF_UPDATE_INTERVAL)
+
+    broadlink_data = BroadlinkData(update_interval, host, mac_addr, timeout)
 
     dev = []
     for variable in config[CONF_MONITORED_CONDITIONS]:
-        dev.append(BroadlinkSensor(
-            config.get(CONF_NAME),
-            broadlink_data,
-            variable))
-    add_devices(dev)
+        dev.append(BroadlinkSensor(name, broadlink_data, variable))
+    add_devices(dev, True)
 
 
 class BroadlinkSensor(Entity):
@@ -76,7 +75,6 @@ class BroadlinkSensor(Entity):
         self._type = sensor_type
         self._broadlink_data = broadlink_data
         self._unit_of_measurement = SENSOR_TYPES[sensor_type][1]
-        self.update()
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/comed_hourly_pricing.py b/homeassistant/components/sensor/comed_hourly_pricing.py
index 4f6e0953e54975c14907a7479e273cf1263b5868..c6a4a38c3b205cd5b42e8e15317d45a3a3bf43d6 100644
--- a/homeassistant/components/sensor/comed_hourly_pricing.py
+++ b/homeassistant/components/sensor/comed_hourly_pricing.py
@@ -54,7 +54,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
             variable[CONF_SENSOR_TYPE], variable[CONF_OFFSET],
             variable.get(CONF_NAME)))
 
-    add_devices(dev)
+    add_devices(dev, True)
 
 
 class ComedHourlyPricingSensor(Entity):
diff --git a/homeassistant/components/sensor/comfoconnect.py b/homeassistant/components/sensor/comfoconnect.py
index c953ee5326042f146e640741c50fb519a590afd0..9df28d861ee93d75a4bd0138f672ee421a82c802 100644
--- a/homeassistant/components/sensor/comfoconnect.py
+++ b/homeassistant/components/sensor/comfoconnect.py
@@ -24,7 +24,7 @@ SENSOR_TYPES = {}
 
 
 def setup_platform(hass, config, add_devices, discovery_info=None):
-    """Setup the ComfoConnect fan platform."""
+    """Set up the ComfoConnect fan platform."""
     from pycomfoconnect import (
         SENSOR_TEMPERATURE_EXTRACT, SENSOR_HUMIDITY_EXTRACT,
         SENSOR_TEMPERATURE_OUTDOOR, SENSOR_HUMIDITY_OUTDOOR,
@@ -92,8 +92,6 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
 
     add_devices(sensors, True)
 
-    return
-
 
 class ComfoConnectSensor(Entity):
     """Representation of a ComfoConnect sensor."""
diff --git a/homeassistant/components/sensor/dht.py b/homeassistant/components/sensor/dht.py
index 6056322cc24522d3dfcc6f7cd977693087367b28..8fa34d50137f801f76b8e8b11c9ff02340dd15dc 100644
--- a/homeassistant/components/sensor/dht.py
+++ b/homeassistant/components/sensor/dht.py
@@ -86,7 +86,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
     except KeyError:
         pass
 
-    add_devices(dev)
+    add_devices(dev, True)
 
 
 class DHTSensor(Entity):
@@ -104,7 +104,6 @@ class DHTSensor(Entity):
         self.humidity_offset = humidity_offset
         self._state = None
         self._unit_of_measurement = SENSOR_TYPES[sensor_type][1]
-        self.update()
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/eliqonline.py b/homeassistant/components/sensor/eliqonline.py
index b28a4f4ea0df842684241e3856fb77b8193e962f..5da52272fb12fbdf7c79190800780d407d7cb1dc 100644
--- a/homeassistant/components/sensor/eliqonline.py
+++ b/homeassistant/components/sensor/eliqonline.py
@@ -49,11 +49,10 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
         _LOGGER.debug("Probing for access to ELIQ Online API")
         api.get_data_now(channelid=channel_id)
     except OSError as error:
-        _LOGGER.error("Could not access the ELIQ Online API. "
-                      "Is the configuration valid? %s", error)
+        _LOGGER.error("Could not access the ELIQ Online API: %s", error)
         return False
 
-    add_devices([EliqSensor(api, channel_id, name)])
+    add_devices([EliqSensor(api, channel_id, name)], True)
 
 
 class EliqSensor(Entity):
@@ -65,7 +64,6 @@ class EliqSensor(Entity):
         self._state = STATE_UNKNOWN
         self._api = api
         self._channel_id = channel_id
-        self.update()
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/fedex.py b/homeassistant/components/sensor/fedex.py
index 0e7d9dcad769983d6c1692a08f01cef1d4e0be89..5874e8ce48708738f206808668c0a60df3a12d77 100644
--- a/homeassistant/components/sensor/fedex.py
+++ b/homeassistant/components/sensor/fedex.py
@@ -36,8 +36,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
     vol.Required(CONF_USERNAME): cv.string,
     vol.Required(CONF_PASSWORD): cv.string,
     vol.Optional(CONF_NAME): cv.string,
-    vol.Optional(CONF_UPDATE_INTERVAL, default=timedelta(seconds=1800)): (
-        vol.All(cv.time_period, cv.positive_timedelta)),
+    vol.Optional(CONF_UPDATE_INTERVAL, default=timedelta(seconds=1800)):
+        vol.All(cv.time_period, cv.positive_timedelta),
 })
 
 
@@ -45,6 +45,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
 def setup_platform(hass, config, add_devices, discovery_info=None):
     """Set up the Fedex platform."""
     import fedexdeliverymanager
+
+    name = config.get(CONF_NAME)
+    update_interval = config.get(CONF_UPDATE_INTERVAL)
+
     try:
         cookie = hass.config.path(COOKIE)
         session = fedexdeliverymanager.get_session(
@@ -54,8 +58,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
         _LOGGER.exception("Could not connect to Fedex Delivery Manager")
         return False
 
-    add_devices([FedexSensor(
-        session, config.get(CONF_NAME), config.get(CONF_UPDATE_INTERVAL))])
+    add_devices([FedexSensor(session, name, update_interval)], True)
 
 
 class FedexSensor(Entity):
@@ -68,7 +71,6 @@ class FedexSensor(Entity):
         self._attributes = None
         self._state = None
         self.update = Throttle(interval)(self._update)
-        self.update()
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/hp_ilo.py b/homeassistant/components/sensor/hp_ilo.py
index 2e578c64cd2bc21e9eafe76a37d245ce4a7f6cd4..016d68b3b0ee9d28ee08ee183693c43ed53f48a3 100644
--- a/homeassistant/components/sensor/hp_ilo.py
+++ b/homeassistant/components/sensor/hp_ilo.py
@@ -89,7 +89,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
             unit_of_measurement=monitored_variable[CONF_UNIT_OF_MEASUREMENT])
         devices.append(new_device)
 
-    add_devices(devices)
+    add_devices(devices, True)
 
 
 class HpIloSensor(Entity):
@@ -111,8 +111,6 @@ class HpIloSensor(Entity):
         self._state = None
         self._state_attributes = None
 
-        self.update()
-
         _LOGGER.debug("Created HP ILO sensor %r", self)
 
     @property
diff --git a/homeassistant/components/sensor/imap.py b/homeassistant/components/sensor/imap.py
index dc772df48c01d7782542489cfed8644f5ce2e807..849f3fd810070e2ef0a6f8518b05e5f294d615ac 100644
--- a/homeassistant/components/sensor/imap.py
+++ b/homeassistant/components/sensor/imap.py
@@ -38,7 +38,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
         config.get(CONF_PORT))
 
     if sensor.connection:
-        add_devices([sensor])
+        add_devices([sensor], True)
     else:
         return False
 
@@ -55,7 +55,6 @@ class ImapSensor(Entity):
         self._port = port
         self._unread_count = 0
         self.connection = self._login()
-        self.update()
 
     def _login(self):
         """Login and return an IMAP connection."""
diff --git a/homeassistant/components/sensor/imap_email_content.py b/homeassistant/components/sensor/imap_email_content.py
index 64f10ad64a77638a6c8ba3469a01c9b79cb7345e..f4d4db201e50c185d43dcb40f062f78ce8e94fac 100644
--- a/homeassistant/components/sensor/imap_email_content.py
+++ b/homeassistant/components/sensor/imap_email_content.py
@@ -53,7 +53,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
         config.get(CONF_SENDERS), value_template)
 
     if sensor.connected:
-        add_devices([sensor])
+        add_devices([sensor], True)
     else:
         return False
 
diff --git a/homeassistant/components/sensor/ios.py b/homeassistant/components/sensor/ios.py
index 7bfe2dbd62afae26de2d1cfed91be4dde891d969..c73e76ca752361aef5a7029d741eee56c9169cc2 100644
--- a/homeassistant/components/sensor/ios.py
+++ b/homeassistant/components/sensor/ios.py
@@ -27,7 +27,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
         for sensor_type in ('level', 'state'):
             dev.append(IOSSensor(sensor_type, device_name, device))
 
-    add_devices(dev)
+    add_devices(dev, True)
 
 
 class IOSSensor(Entity):
@@ -41,7 +41,6 @@ class IOSSensor(Entity):
         self.type = sensor_type
         self._state = None
         self._unit_of_measurement = SENSOR_TYPES[sensor_type][1]
-        self.update()
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/netatmo.py b/homeassistant/components/sensor/netatmo.py
index 44d0732921c8cf6f5bff2411f75860ebf5fda66c..8ace931a8cc8b43a077f644efdf71e213b35669b 100644
--- a/homeassistant/components/sensor/netatmo.py
+++ b/homeassistant/components/sensor/netatmo.py
@@ -95,7 +95,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
     except lnetatmo.NoDevice:
         return None
 
-    add_devices(dev)
+    add_devices(dev, True)
 
 
 class NetAtmoSensor(Entity):
@@ -115,7 +115,6 @@ class NetAtmoSensor(Entity):
         self.module_id = module_id[1]
         self._unique_id = "Netatmo Sensor {0} - {1} ({2})".format(
             self._name, module_id, self.type)
-        self.update()
 
     @property
     def name(self):
diff --git a/homeassistant/components/sensor/nut.py b/homeassistant/components/sensor/nut.py
index 2ebc83724ba280634d85befac9c211973d151bd0..2228a8eab60078bf1aae622a4f7dc85c876361ab 100644
--- a/homeassistant/components/sensor/nut.py
+++ b/homeassistant/components/sensor/nut.py
@@ -170,7 +170,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
                       "Cannot continue setup: %s", err)
         return False
 
-    add_entities(entities)
+    add_entities(entities, True)
 
 
 class NUTSensor(Entity):
@@ -182,7 +182,7 @@ class NUTSensor(Entity):
         self.type = sensor_type
         self._name = "{} {}".format(name, SENSOR_TYPES[sensor_type][0])
         self._unit = SENSOR_TYPES[sensor_type][1]
-        self.update()
+        self._state = None
 
     @property
     def name(self):
@@ -207,7 +207,7 @@ class NUTSensor(Entity):
     @property
     def device_state_attributes(self):
         """Return the sensor attributes."""
-        attr = {}
+        attr = dict()
         attr[ATTR_STATE] = self.opp_state()
         return attr
 
diff --git a/homeassistant/components/sensor/octoprint.py b/homeassistant/components/sensor/octoprint.py
index 035799429f537a8048f163b1ed4207761eb2c39c..e3a06e583704b795ad8568116a9a570b96b176a7 100644
--- a/homeassistant/components/sensor/octoprint.py
+++ b/homeassistant/components/sensor/octoprint.py
@@ -60,7 +60,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
                 name, SENSOR_TYPES[octo_type][3], SENSOR_TYPES[octo_type][0],
                 SENSOR_TYPES[octo_type][1])
             devices.append(new_sensor)
-    add_devices(devices)
+    add_devices(devices, True)
 
 
 class OctoPrintSensor(Entity):
@@ -82,8 +82,6 @@ class OctoPrintSensor(Entity):
         self.api_endpoint = endpoint
         self.api_group = group
         self.api_tool = tool
-        # Set initial state
-        self.update()
         _LOGGER.debug("Created OctoPrint sensor %r", self)
 
     @property
diff --git a/homeassistant/components/sensor/ohmconnect.py b/homeassistant/components/sensor/ohmconnect.py
index cb1a1d3d2603d22176017dae1062bcf925e2df92..ff465b3617c2e3588c960184d16cd7275c9bec5f 100644
--- a/homeassistant/components/sensor/ohmconnect.py
+++ b/homeassistant/components/sensor/ohmconnect.py
@@ -37,7 +37,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
     name = config.get(CONF_NAME)
     ohmid = config.get(CONF_ID)
 
-    add_devices([OhmconnectSensor(name, ohmid)])
+    add_devices([OhmconnectSensor(name, ohmid)], True)
 
 
 class OhmconnectSensor(Entity):
@@ -48,7 +48,6 @@ class OhmconnectSensor(Entity):
         self._name = name
         self._ohmid = ohmid
         self._data = {}
-        self.update()
 
     @property
     def name(self):
@@ -80,4 +79,4 @@ class OhmconnectSensor(Entity):
                 self._data[child.tag] = child.text
         except requests.exceptions.ConnectionError:
             _LOGGER.error("No route to host/endpoint: %s", url)
-            self.data = {}
+            self._data = {}
diff --git a/homeassistant/components/sensor/openevse.py b/homeassistant/components/sensor/openevse.py
index f3b12506c844355bd65e0d7abbea3a09a7174c36..6ded982eea17961109598c84760a62a1692be02b 100644
--- a/homeassistant/components/sensor/openevse.py
+++ b/homeassistant/components/sensor/openevse.py
@@ -49,7 +49,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
     for variable in monitored_variables:
         dev.append(OpenEVSESensor(variable, charger))
 
-    add_devices(dev)
+    add_devices(dev, True)
 
 
 class OpenEVSESensor(Entity):
diff --git a/homeassistant/components/sensor/openexchangerates.py b/homeassistant/components/sensor/openexchangerates.py
index 63c57048b1d52366e8999a40650096a957f24262..741ffa2842d2fabb5cf44b2db044d0cd0610df67 100644
--- a/homeassistant/components/sensor/openexchangerates.py
+++ b/homeassistant/components/sensor/openexchangerates.py
@@ -55,7 +55,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
         return False
 
     rest.update()
-    add_devices([OpenexchangeratesSensor(rest, name, quote)])
+    add_devices([OpenexchangeratesSensor(rest, name, quote)], True)
 
 
 class OpenexchangeratesSensor(Entity):
@@ -66,7 +66,7 @@ class OpenexchangeratesSensor(Entity):
         self.rest = rest
         self._name = name
         self._quote = quote
-        self.update()
+        self._state = None
 
     @property
     def name(self):