diff --git a/bundles/org.openhab.binding.miio/README.md b/bundles/org.openhab.binding.miio/README.md
index dc58dce9742..798d1be8914 100644
--- a/bundles/org.openhab.binding.miio/README.md
+++ b/bundles/org.openhab.binding.miio/README.md
@@ -340,6 +340,7 @@ Currently the miio binding supports more than 250 different models.
| Roborock Vacuum S6 | miio:vacuum | [rockrobo.vacuum.s6](#rockrobo-vacuum-s6) | Yes | |
| Roborock S6 | miio:vacuum | [roborock.vacuum.s6](#roborock-vacuum-s6) | Yes | |
| Roborock Xiaowa E Series Vacuum v2 | miio:unsupported | roborock.vacuum.e2 | No | |
+| VIOMI Internet electric water heater 1A (60L) | miio:basic | [viomi.waterheater.e1](#viomi-waterheater-e1) | Yes | Experimental support. Please report back if all channels are functional. Preferably share the debug log of property refresh and command responses |
| Viomi Cleaning Robot V-RVCLM21B | miio:basic | [viomi.vacuum.v6](#viomi-vacuum-v6) | Yes | |
| Mi Robot Vacuum-Mop P | miio:basic | [viomi.vacuum.v7](#viomi-vacuum-v7) | Yes | |
| Mi Robot Vacuum-Mop P | miio:basic | [viomi.vacuum.v8](#viomi-vacuum-v8) | Yes | |
@@ -2305,6 +2306,21 @@ e.g. `openhab:send actionCommand 'upd_timer["1498595904821", "on"]'` would enabl
| lp_autooff_delay | Number | Low Power Limit Time | |
| lp_threshold | Number | Low Power Threshold | |
+### VIOMI Internet electric water heater 1A (60L) (viomi.waterheater.e1) Channels
+
+| Channel | Type | Description | Comment |
+|------------------|---------|-------------------------------------|------------|
+| washStatus | Number | Wash Status | |
+| velocity | Number | Velocity | |
+| waterTemp | Number:Temperature | Water Temperature | |
+| targetTemp | Number:Temperature | Target Temperature | |
+| errStatus | Number | Error Status | |
+| hotWater | Number | Hot Water | |
+| needClean | Switch | Need Clean | |
+| modeType | Number | Mode | |
+| appointStart | Number | Appoint Start | |
+| appointEnd | Number | Appoint End | |
+
### Viomi Cleaning Robot V-RVCLM21B (viomi.vacuum.v6) Channels
| Channel | Type | Description | Comment |
@@ -6367,6 +6383,24 @@ Number lp_autooff_delay "Low Power Limit Time" (G_powerstrip) {channel="miio:bas
Number lp_threshold "Low Power Threshold" (G_powerstrip) {channel="miio:basic:powerstrip:lp_threshold"}
```
+### VIOMI Internet electric water heater 1A (60L) (viomi.waterheater.e1) item file lines
+
+note: Autogenerated example. Replace the id (waterheater) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
+
+```java
+Group G_waterheater "VIOMI Internet electric water heater 1A (60L)"
+Number washStatus "Wash Status" (G_waterheater) {channel="miio:basic:waterheater:washStatus"}
+Number velocity "Velocity" (G_waterheater) {channel="miio:basic:waterheater:velocity"}
+Number:Temperature waterTemp "Water Temperature" (G_waterheater) {channel="miio:basic:waterheater:waterTemp"}
+Number:Temperature targetTemp "Target Temperature" (G_waterheater) {channel="miio:basic:waterheater:targetTemp"}
+Number errStatus "Error Status" (G_waterheater) {channel="miio:basic:waterheater:errStatus"}
+Number hotWater "Hot Water" (G_waterheater) {channel="miio:basic:waterheater:hotWater"}
+Switch needClean "Need Clean" (G_waterheater) {channel="miio:basic:waterheater:needClean"}
+Number modeType "Mode" (G_waterheater) {channel="miio:basic:waterheater:modeType"}
+Number appointStart "Appoint Start" (G_waterheater) {channel="miio:basic:waterheater:appointStart"}
+Number appointEnd "Appoint End" (G_waterheater) {channel="miio:basic:waterheater:appointEnd"}
+```
+
### Viomi Cleaning Robot V-RVCLM21B (viomi.vacuum.v6) item file lines
note: Autogenerated example. Replace the id (vacuum) in the channel with your own. Replace `basic` with `generic` in the thing UID depending on how your thing was discovered.
diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java
index 92238a9c66a..aa0e6da67c4 100644
--- a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java
+++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoDevices.java
@@ -197,6 +197,7 @@ public enum MiIoDevices {
ROCKROBO_VACUUM_S6("rockrobo.vacuum.s6", "Roborock Vacuum S6", THING_TYPE_VACUUM),
ROBOROCK_VACUUM_S6("roborock.vacuum.s6", "Roborock S6", THING_TYPE_VACUUM),
ROBOROCK_VACUUM_E2("roborock.vacuum.e2", "Roborock Xiaowa E Series Vacuum v2", THING_TYPE_UNSUPPORTED),
+ VIOMI_WATERHEATER_E1("viomi.waterheater.e1", "VIOMI Internet electric water heater 1A (60L)", THING_TYPE_BASIC),
VIOMI_VACUUM_V6("viomi.vacuum.v6", "Viomi Cleaning Robot V-RVCLM21B", THING_TYPE_BASIC),
VIOMI_VACUUM_V7("viomi.vacuum.v7", "Mi Robot Vacuum-Mop P", THING_TYPE_BASIC),
VIOMI_VACUUM_V8("viomi.vacuum.v8", "Mi Robot Vacuum-Mop P", THING_TYPE_BASIC),
diff --git a/bundles/org.openhab.binding.miio/src/main/resources/database/viomi.waterheater.e1.json b/bundles/org.openhab.binding.miio/src/main/resources/database/viomi.waterheater.e1.json
new file mode 100644
index 00000000000..ba863494eb4
--- /dev/null
+++ b/bundles/org.openhab.binding.miio/src/main/resources/database/viomi.waterheater.e1.json
@@ -0,0 +1,144 @@
+{
+ "deviceMapping": {
+ "id": [
+ "viomi.waterheater.e1"
+ ],
+ "propertyMethod": "get_prop",
+ "maxProperties": 1,
+ "channels": [
+ {
+ "property": "washStatus",
+ "friendlyName": "Wash Status",
+ "channel": "washStatus",
+ "type": "Number",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_washStatus",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "velocity",
+ "friendlyName": "Velocity",
+ "channel": "velocity",
+ "type": "Number",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_velocity",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "waterTemp",
+ "friendlyName": "Water Temperature",
+ "channel": "waterTemp",
+ "type": "Number:Temperature",
+ "unit": "CELCIUS",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_temp",
+ "parameterType": "NUMBER"
+ }
+ ],
+ "category": "temperature",
+ "tags": [
+ "Measurement",
+ "Temperature"
+ ]
+ },
+ {
+ "property": "targetTemp",
+ "friendlyName": "Target Temperature",
+ "channel": "targetTemp",
+ "type": "Number:Temperature",
+ "unit": "CELCIUS",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_temp",
+ "parameterType": "NUMBER"
+ }
+ ],
+ "category": "temperature",
+ "tags": [
+ "Setpoint",
+ "Temperature"
+ ]
+ },
+ {
+ "property": "errStatus",
+ "friendlyName": "Error Status",
+ "channel": "errStatus",
+ "type": "Number",
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "hotWater",
+ "friendlyName": "Hot Water",
+ "channel": "hotWater",
+ "type": "Number",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_hotWater",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "needClean",
+ "friendlyName": "Need Clean",
+ "channel": "needClean",
+ "type": "Switch",
+ "refresh": true,
+ "actions": []
+ },
+ {
+ "property": "modeType",
+ "friendlyName": "Mode",
+ "channel": "modeType",
+ "type": "Number",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_mode",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "appointStart",
+ "friendlyName": "Appoint Start",
+ "channel": "appointStart",
+ "type": "Number",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_appointStart",
+ "parameterType": "NUMBER"
+ }
+ ]
+ },
+ {
+ "property": "appointEnd",
+ "friendlyName": "Appoint End",
+ "channel": "appointEnd",
+ "type": "Number",
+ "refresh": true,
+ "actions": [
+ {
+ "command": "set_appointEnd",
+ "parameterType": "NUMBER"
+ }
+ ]
+ }
+ ],
+ "experimental": true
+ }
+}