diff --git a/homeassistant/components/esphome/binary_sensor.py b/homeassistant/components/esphome/binary_sensor.py
index 4e684638bb7ff1ebd23c0ea5fc01038713347b61..64506f69283cfa7a64e5eab822be380fe08ae28d 100644
--- a/homeassistant/components/esphome/binary_sensor.py
+++ b/homeassistant/components/esphome/binary_sensor.py
@@ -44,6 +44,8 @@ class EsphomeBinarySensor(EsphomeEntity, BinarySensorDevice):
             return self._entry_data.available
         if self._state is None:
             return None
+        if self._state.missing_state:
+            return None
         return self._state.state
 
     @property
diff --git a/homeassistant/components/esphome/climate.py b/homeassistant/components/esphome/climate.py
index 1dfe2184952e810bf1ee0d54bb9a16aa4f0c7840..5fed8da76ef6c24a59855ccbb0b52421c1904a02 100644
--- a/homeassistant/components/esphome/climate.py
+++ b/homeassistant/components/esphome/climate.py
@@ -138,7 +138,7 @@ class EsphomeClimateDevice(EsphomeEntity, ClimateDevice):
     @esphome_state_property
     def preset_mode(self):
         """Return current preset mode."""
-        return PRESET_AWAY if self._state.away else None
+        return PRESET_AWAY if self._state.away else PRESET_HOME
 
     @esphome_state_property
     def current_temperature(self) -> Optional[float]:
diff --git a/homeassistant/components/esphome/manifest.json b/homeassistant/components/esphome/manifest.json
index 40691c653f51b63976ae57c9b5b10a3056b01912..724946e69841acd6a51077c9236f7993f327054f 100644
--- a/homeassistant/components/esphome/manifest.json
+++ b/homeassistant/components/esphome/manifest.json
@@ -4,7 +4,7 @@
   "config_flow": true,
   "documentation": "https://www.home-assistant.io/integrations/esphome",
   "requirements": [
-    "aioesphomeapi==2.4.2"
+    "aioesphomeapi==2.5.0"
   ],
   "dependencies": [],
   "zeroconf": ["_esphomelib._tcp.local."],
diff --git a/homeassistant/components/esphome/sensor.py b/homeassistant/components/esphome/sensor.py
index b6adbf93c41ac39d772774f6510fbba03f87aaf5..e50991af6c1376ce8e47cd410f072e395f70520c 100644
--- a/homeassistant/components/esphome/sensor.py
+++ b/homeassistant/components/esphome/sensor.py
@@ -67,6 +67,8 @@ class EsphomeSensor(EsphomeEntity):
         """Return the state of the entity."""
         if math.isnan(self._state.state):
             return None
+        if self._state.missing_state:
+            return None
         return "{:.{prec}f}".format(
             self._state.state, prec=self._static_info.accuracy_decimals
         )
@@ -96,4 +98,6 @@ class EsphomeTextSensor(EsphomeEntity):
     @esphome_state_property
     def state(self) -> Optional[str]:
         """Return the state of the entity."""
+        if self._state.missing_state:
+            return None
         return self._state.state
diff --git a/requirements_all.txt b/requirements_all.txt
index c907fd879a21430c4917892fa0fdbf1f00e19184..163918f51802273b892ec00a4c27afb449841293 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -142,7 +142,7 @@ aiobotocore==0.10.2
 aiodns==2.0.0
 
 # homeassistant.components.esphome
-aioesphomeapi==2.4.2
+aioesphomeapi==2.5.0
 
 # homeassistant.components.freebox
 aiofreepybox==0.0.8
diff --git a/requirements_test_all.txt b/requirements_test_all.txt
index 2126fed9f6f075ddae10b2d95d7a996a8e681f36..90668e3eaabdd6ee00d017d783c9744c6c66b8fd 100644
--- a/requirements_test_all.txt
+++ b/requirements_test_all.txt
@@ -50,7 +50,7 @@ aioautomatic==0.6.5
 aiobotocore==0.10.2
 
 # homeassistant.components.esphome
-aioesphomeapi==2.4.2
+aioesphomeapi==2.5.0
 
 # homeassistant.components.emulated_hue
 # homeassistant.components.http