diff --git a/.coveragerc b/.coveragerc
index 0b4306633e90f78c428301a2dfaf83b56159c7ba..9ec3d70699075161ca79cee7e8d9832da7484102 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -477,6 +477,7 @@ omit =
     homeassistant/components/sensor/xbox_live.py
     homeassistant/components/sensor/yweather.py
     homeassistant/components/sensor/zamg.py
+    homeassistant/components/shiftr.py
     homeassistant/components/spc.py
     homeassistant/components/switch/acer_projector.py
     homeassistant/components/switch/anel_pwrctrl.py
diff --git a/homeassistant/components/shiftr.py b/homeassistant/components/shiftr.py
new file mode 100644
index 0000000000000000000000000000000000000000..42c455acd49300ca1e577c89e17a4cb984e28fd6
--- /dev/null
+++ b/homeassistant/components/shiftr.py
@@ -0,0 +1,77 @@
+"""
+Support for Shiftr.io.
+
+For more details about this component, please refer to the documentation at
+https://home-assistant.io/components/shiftr/
+"""
+import logging
+
+import voluptuous as vol
+
+import homeassistant.helpers.config_validation as cv
+from homeassistant.const import (
+    CONF_PASSWORD, CONF_USERNAME, EVENT_STATE_CHANGED,
+    EVENT_HOMEASSISTANT_STOP)
+from homeassistant.helpers import state as state_helper
+
+REQUIREMENTS = ['paho-mqtt==1.2.3']
+
+_LOGGER = logging.getLogger(__name__)
+
+DOMAIN = 'shiftr'
+
+SHIFTR_BROKER = 'broker.shiftr.io'
+
+CONFIG_SCHEMA = vol.Schema({
+    DOMAIN: vol.Schema({
+        vol.Required(CONF_USERNAME): cv.string,
+        vol.Required(CONF_PASSWORD): cv.string,
+    }),
+}, extra=vol.ALLOW_EXTRA)
+
+
+def setup(hass, config):
+    """Initialize the Shiftr.io MQTT consumer."""
+    import paho.mqtt.client as mqtt
+    conf = config[DOMAIN]
+    username = conf.get(CONF_USERNAME)
+    password = conf.get(CONF_PASSWORD)
+
+    client_id = 'HomeAssistant'
+    port = 1883
+    keepalive = 600
+
+    mqttc = mqtt.Client(client_id, protocol=mqtt.MQTTv311)
+    mqttc.username_pw_set(username, password=password)
+    mqttc.connect(SHIFTR_BROKER, port=port, keepalive=keepalive)
+
+    def stop_shiftr(event):
+        """Stop the Shiftr.io MQTT component."""
+        mqttc.disconnect()
+
+    hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, stop_shiftr)
+
+    def shiftr_event_listener(event):
+        """Listen for new messages on the bus and sends them to Shiftr.io."""
+        state = event.data.get('new_state')
+        topic = state.entity_id.replace('.', '/')
+
+        try:
+            _state = state_helper.state_as_number(state)
+        except ValueError:
+            _state = state.state
+
+        try:
+            mqttc.publish(topic, _state, qos=0, retain=False)
+
+            if state.attributes:
+                for attribute, data in state.attributes.items():
+                    mqttc.publish(
+                        '/{}/{}'.format(topic, attribute), str(data), qos=0,
+                        retain=False)
+        except RuntimeError:
+            pass
+
+    hass.bus.listen(EVENT_STATE_CHANGED, shiftr_event_listener)
+
+    return True
diff --git a/requirements_all.txt b/requirements_all.txt
index 2aeb6f1d42fc005b4099a2599ea4c736ddea794e..77719422c0ba10268877467b0ed80d5086b3321b 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -419,6 +419,7 @@ openhomedevice==0.4.2
 orvibo==1.1.1
 
 # homeassistant.components.mqtt
+# homeassistant.components.shiftr
 paho-mqtt==1.2.3
 
 # homeassistant.components.media_player.panasonic_viera
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 49b6f2ae2f5d37c76432f75dae4064d4593d5f96..d1b226eda3eeada0e249d036e0f6206dd1c983ec 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -72,6 +72,7 @@ libsoundtouch==0.3.0
 mficlient==0.3.0
 
 # homeassistant.components.mqtt
+# homeassistant.components.shiftr
 paho-mqtt==1.2.3
 
 # homeassistant.components.device_tracker.aruba