diff --git a/src/logic/database/Crud.py b/src/logic/database/Crud.py
index 5c8ffb726f9e73a76d750daea9eef57d148def21..6b765ad9da9926de66b630cf43fd3c3561e41daf 100644
--- a/src/logic/database/Crud.py
+++ b/src/logic/database/Crud.py
@@ -87,6 +87,16 @@ def create_sensor(db: Session, sensor: Schemas.SensorCreate):
     return dbSensor
 
 
+@notify_backup_service(BACKUP_SERVICE)
+def update_sensor(db: Session, sensorId: int, sensor: Schemas.SensorUpdate):
+    existingSensor = get_sensor(db, sensorId)
+    existingSensor.name = sensor.name
+    existingSensor.type = sensor.type
+    db.commit()
+    db.refresh(existingSensor)
+    return existingSensor
+
+
 @notify_backup_service(BACKUP_SERVICE)
 def delete_sensor(db: Session, sensor: Schemas.Sensor):
     db.delete(sensor)
diff --git a/src/logic/database/Schemas.py b/src/logic/database/Schemas.py
index 4a535eb659ebda2b0557b234c789fe47394a4243..7008268b7335123f22c2f014af5c2107da6f1de2 100644
--- a/src/logic/database/Schemas.py
+++ b/src/logic/database/Schemas.py
@@ -61,6 +61,11 @@ class SensorCreate(BaseModel):
     deviceId: int
 
 
+class SensorUpdate(BaseModel):
+    name: str
+    type: str
+
+
 class Sensor(SensorBase):
     id: int
     name: str
diff --git a/src/logic/routers/SensorRouter.py b/src/logic/routers/SensorRouter.py
index f5ba3bab5376c7e7625637289a1e34afef34fc4a..e408d374d20f084c153c0f33e3c839dff54935b2 100644
--- a/src/logic/routers/SensorRouter.py
+++ b/src/logic/routers/SensorRouter.py
@@ -49,6 +49,25 @@ async def create_sensor(sensor: Schemas.SensorCreate, db: Session = Depends(get_
     return Crud.create_sensor(db=db, sensor=sensor)
 
 
+@router.put('/{sensorId}', response_model=Schemas.Sensor,
+            summary='Updates a sensor',
+            responses={404: {'description': 'Sensor not found'}},
+            dependencies=[Depends(check_api_key)])
+async def update_device(sensorId: int, sensor: Schemas.SensorUpdate, db: Session = Depends(get_database)):
+    sensorToUpdate = Crud.get_sensor(db, sensorId)
+    if not sensorToUpdate:
+        raise HTTPException(status_code=404, detail='Sensor not found')
+
+    if sensorToUpdate.name != sensor.name:
+        existingSensor = Crud.get_sensor_by_name_and_device_id(db, sensor.name, sensorToUpdate.deviceId)
+        if existingSensor:
+            raise HTTPException(status_code=400,
+                                detail=f'A sensor called "{sensor.name}" already exists '
+                                       f'(ID: {existingSensor.id}) for device {sensorToUpdate.deviceId}')
+
+    return Crud.update_sensor(db=db, sensorId=sensorId, sensor=sensor)
+
+
 @router.delete('/{sensorId}', response_model=Status,
                summary='Deletes a specific sensor',
                description='All corresponding measurements will be deleted too.',