diff --git a/de_otau.cpp b/de_otau.cpp
index 7286abc9dd..31df10edaa 100644
--- a/de_otau.cpp
+++ b/de_otau.cpp
@@ -23,6 +23,7 @@
 #define OTAU_QUERY_NEXT_IMAGE_REQUEST_CMD_ID 0x01
 #define OTAU_IMAGE_BLOCK_REQUEST_CMD_ID      0x03
 #define OTAU_IMAGE_PAGE_REQUEST_CMD_ID       0x04
+#define OTAU_UPGRADE_END_REQUEST_CMD_ID      0x06
 
 #define DONT_CARE_FILE_VERSION                 0xFFFFFFFFUL
 
@@ -89,6 +90,23 @@ void DeRestPluginPrivate::otauDataIndication(const deCONZ::ApsDataIndication &in
 
             lightNode->setSwBuildId(version);
             updateEtag(lightNode->etag);
+
+            // read real sw build id
+            lightNode->setLastRead(READ_SWBUILD_ID, idleTotalCounter);
+            lightNode->enableRead(READ_SWBUILD_ID);
+            lightNode->setNextReadTime(READ_SWBUILD_ID, queryTime);
+            queryTime = queryTime.addSecs(5);
+        }
+    }
+    else if ((ind.clusterId() == OTAU_CLUSTER_ID) && (zclFrame.commandId() == OTAU_UPGRADE_END_REQUEST_CMD_ID))
+    {
+        LightNode *lightNode = getLightNodeForAddress(ind.srcAddress(), ind.srcEndpoint());
+
+        if (lightNode)
+        {
+            lightNode->setLastRead(READ_SWBUILD_ID, idleTotalCounter);
+            lightNode->enableRead(READ_SWBUILD_ID);
+            lightNode->setNextReadTime(READ_SWBUILD_ID, queryTime.addSecs(120));
         }
     }