diff --git a/src/apps/smart_grid/SmartOpcServer.cpp b/src/apps/smart_grid/SmartOpcServer.cpp
index 0933e392239a983630a9f103e3c0d5bd984431b9..b5d5f237eaac417ad8e123d404847a87ccd63148 100644
--- a/src/apps/smart_grid/SmartOpcServer.cpp
+++ b/src/apps/smart_grid/SmartOpcServer.cpp
@@ -90,10 +90,20 @@ void SmartOpcServer::run_server()
     auto sub_production_enabled = m_server.CreateSubscription(100, subcl_production_enabled);
     sub_production_enabled->SubscribeDataChange(m_producing);
 
+    SubClientSimModeEnabled subcl_sim_mode_enabled{m_state_machine};
+    auto sub_sim_mode_enabled = m_server.CreateSubscription(100, subcl_sim_mode_enabled);
+    sub_sim_mode_enabled->SubscribeDataChange(m_sim_mode_enabled);
 
     while(true)
     {
         m_state_machine.run();
+
+        // update opc objects
+        m_time.SetValue(Variant(m_state_machine.m_model.get_time()));
+        m_excess_power.SetValue(Variant(m_state_machine.m_model.get_excess_power()));
+        m_producing.SetValue(Variant(m_state_machine.m_model.get_producing_state()));
+        m_sim_mode_enabled.SetValue(Variant(m_state_machine.is_sim_mode_enabled()));
+
         std::this_thread::sleep_for(std::chrono::seconds(1));
     }
 }
\ No newline at end of file