diff --git a/src/blueprints/Routes.py b/src/blueprints/Routes.py
index 81dc5d8fffaaf6c85aeed0815035845a93ed341c..5141120ae5c2558cbe750ef0e2622c824e8691fb 100644
--- a/src/blueprints/Routes.py
+++ b/src/blueprints/Routes.py
@@ -35,20 +35,27 @@ def construct_blueprint(settings):
     def postSensorData(deviceName):
         try:
             parameters = RequestValidator.validate(request, DeviceParameters.get_values())
+            database = Database(settings['database']['databasePath'])
+
+            if not database.get_device(deviceName):
+                database.add_device(deviceName)
+            device = database.get_device(deviceName)
+
             sensors = parameters[DeviceParameters.SENSORS.value]
             for sensor in sensors:
                 sensorParams = RequestValidator.validate_parameters(sensor,
                                                                     SensorParameters.get_values(),
                                                                     f'sensor "{sensor}"')
-                database = Database(settings['database']['databasePath'])
-                database.add_device_if_not_exists(deviceName)
-                device = database.get_device(deviceName)
-                database.add_or_update_sensor(device,
-                                              sensorParams['name'],
-                                              sensorParams['type'],
-                                              sensorParams['value'])
-                return jsonify(database.get_device("0182"))
 
+                sensorName = sensorParams[SensorParameters.NAME.value]
+                sensorType = sensorParams[SensorParameters.TYPE.value]
+                sensorValue = sensorParams[SensorParameters.VALUE.value]
+
+                sensor = database.get_sensor(device[0], sensorName)
+                if sensor:
+                    database.update_sensor(device, sensorName, sensorType, sensorValue)
+                else:
+                    database.add_sensor(device, sensorName, sensorType, sensorValue)
         except ValidationError as e:
             return e.response, 400
 
diff --git a/src/logic/Database.py b/src/logic/Database.py
index 6774059723cb2646983bd352c6efa82cc33c89d0..91ba76e1d02d0f4c60ecb366b8a406dd45ef76b3 100644
--- a/src/logic/Database.py
+++ b/src/logic/Database.py
@@ -42,11 +42,7 @@ class Database:
             cursor = connection.execute(f'SELECT * FROM {self.TABLE_DEVICE} WHERE name = "{deviceName}"')
             return cursor.fetchone()
 
-    def add_device_if_not_exists(self, deviceName: str):
-        if self.get_device(deviceName):
-            LOGGER.debug(f'Device "{deviceName}" already exists')
-            return
-
+    def add_device(self, deviceName: str):
         with self.__get_connection() as connection:
             LOGGER.debug(f'Inserting new device "{deviceName}"')
             connection.execute(f'INSERT INTO {self.TABLE_DEVICE}(name) VALUES(?)', (deviceName,))
@@ -56,24 +52,22 @@ class Database:
             cursor = connection.execute(f'SELECT * FROM {self.TABLE_SENSOR} ORDER BY device_id, name')
             return cursor.fetchall()
 
-    def get_sensor(self, deviceName: str, name: str):
-        device = self.get_device(deviceName)
-        if not device:
-            return None
-
+    def get_sensor(self, deviceID: int, name: str):
         with self.__get_connection() as connection:
             cursor = connection.execute(f'SELECT * FROM {self.TABLE_SENSOR} WHERE device_id = ? AND name = ?',
-                                        (device[0], name))
+                                        (deviceID, name))
             return cursor.fetchone()
 
-    def add_or_update_sensor(self, device: Tuple[int, str], name: str, sensorType: str, value: str):
-        sensor = self.get_sensor(device[1], name)
+    def add_sensor(self, device: Tuple[int, str], name: str, sensorType: str, value: str):
+        with self.__get_connection() as connection:
+            LOGGER.debug(f'Inserting new sensor "{name}" for device "{device[1]}" '
+                         f'(type: "{sensorType}", value: "{value}")')
+            connection.execute(f'INSERT INTO {self.TABLE_SENSOR}(name, device_id, type, value) VALUES(?, ?, ?, ?)',
+                               (name, device[0], sensorType, value))
+
+    def update_sensor(self, device: Tuple[int, str], name: str, sensorType: str, value: str):
+        LOGGER.debug(f'Updating sensor "{name}" for device "{device[1]}" '
+                     f'(type: "{sensorType}", value: "{value}")')
         with self.__get_connection() as connection:
-            if sensor:
-                LOGGER.debug(f'Updating sensor "{name}" for device "{device[1]}" (type: "{sensorType}", value: "{value}")')
-                connection.execute(f'UPDATE {self.TABLE_SENSOR} SET value = ? WHERE device_id = ? AND name = ?',
-                                   (value, device[0], name))
-            else:
-                LOGGER.debug(f'Inserting new sensor "{name}" for device "{device[1]}" (type: "{sensorType}", value: "{value}")')
-                connection.execute(f'INSERT INTO {self.TABLE_SENSOR}(name, device_id, type, value) VALUES(?, ?, ?, ?)',
-                                   (name, device[0], sensorType, value))
+            connection.execute(f'UPDATE {self.TABLE_SENSOR} SET value = ? WHERE device_id = ? AND name = ?',
+                               (value, device[0], name))