diff --git a/src/driver/nbiot.be b/src/driver/nbiot.be
index a831a83ef9e79ba3c8976bbcba80e53f0bcf31f8..1b7e70fc9c1cc4f9affa1917937f6615c0b4179d 100644
--- a/src/driver/nbiot.be
+++ b/src/driver/nbiot.be
@@ -108,6 +108,7 @@ end
 class NBIoTProcedure
   var ser
   var request
+  var response
   var debug
   var done
   var aborted
@@ -117,6 +118,7 @@ class NBIoTProcedure
   def init(ser, request)
     self.ser = ser
     self.request = request
+    self.response = nil
     self.debug = false
     self.done = false
     self.aborted = false
@@ -351,7 +353,7 @@ class NBIoTNTPProcedure : NBIoTProcedure
     self.cmd_ntp = NBIoTCommand('AT+QNTP=1,\"0.at.pool.ntp.org\"\r\n', '+QNTP: 0', 10)
   end
 
-  def set_system_time(rsp)
+  def extract_timestamp(rsp)
     var rsp_args = string.split(rsp, '\"')
     var timestamp = nil
 
@@ -363,7 +365,7 @@ class NBIoTNTPProcedure : NBIoTProcedure
       end
     end
 
-    tasmota.cmd('time ' + str(timestamp['epoch'] + 3600)) # UTC + 1
+    return timestamp['epoch'] + 3600 # UTC + 1
   end
 
   def execute()
@@ -374,7 +376,7 @@ class NBIoTNTPProcedure : NBIoTProcedure
     var rsp = self.fetch_read_rsp_if_contains_expected_rsp_or_send('+QNTP: 0', 'AT+QNTP=1,\"0.at.pool.ntp.org\"\r\n')
 
     if rsp != nil
-      self.set_system_time(rsp)
+      self.response = self.extract_timestamp(rsp)
       self.done = true
     end
 
@@ -421,13 +423,19 @@ class NBIoTDriver
     self.request_queue.push(request)
   end
 
-  def init_procedure(procedure)
+  def start_procedure(procedure)
     self.procedure = procedure
   end
 
-  def finish_procedure(done)
+  def finish_procedure(aborted)
     if self.procedure.request != nil && self.procedure.request.callback != nil
-      self.procedure.request.callback(done, nil)
+      var error_code = 0
+
+      if aborted
+        error_code = -1
+      end
+
+      self.procedure.request.callback(error_code, self.procedure.response)
     end
 
     self.procedure = nil
@@ -453,13 +461,13 @@ class NBIoTDriver
       self.next_state(NBIoTDriverState.RESET)
     elif self.state == NBIoTDriverState.RESET
       if self.procedure == nil
-        self.init_procedure(NBIoTResetProcedure(self.ser))
+        self.start_procedure(NBIoTResetProcedure(self.ser))
       end
 
       self.procedure.execute()
 
       if self.procedure.is_done()
-        self.finish_procedure()
+        self.finish_procedure(false)
 
         if self.psm_disabled
           self.next_state(NBIoTDriverState.READY)
@@ -469,14 +477,14 @@ class NBIoTDriver
       end
     elif self.state == NBIoTDriverState.DISABLE_PSM
       if self.procedure == nil
-        self.init_procedure(NBIoTDisablePSMProcedure(self.ser))
+        self.start_procedure(NBIoTDisablePSMProcedure(self.ser))
       end
 
       self.procedure.execute()
 
       if self.procedure.is_done()
         self.psm_disabled = true
-        self.finish_procedure()
+        self.finish_procedure(false)
         self.next_state(NBIoTDriverState.READY)
       end
     elif self.state == NBIoTDriverState.READY
@@ -501,7 +509,7 @@ class NBIoTDriver
         end
 
         if procedure != nil
-          self.init_procedure(procedure)
+          self.start_procedure(procedure)
           self.next_state(NBIoTDriverState.BUSY)
         end
       end
@@ -513,7 +521,7 @@ class NBIoTDriver
           tasmota.log(string.format('NBT: Exceeded retries at command %s, discarding request', cmd), 2)
         end
 
-        self.finish_procedure(self.procedure.is_done())
+        self.finish_procedure(self.procedure.is_aborted())
         self.next_state(NBIoTDriverState.READY)
       else
         self.procedure.execute()
@@ -553,8 +561,8 @@ nbiot.init = def (m)
       self._driver.queue_request(request)
     end
 
-    def sync_time(callback)
-      var request = NBIoTRequest(callback)
+    def get_timestamp(callback)
+      var request = NBIoTRequest(NBIoTRequestType.NTP, callback)
 
       self._driver.queue_request(request)
     end