public static void StartNodesEngine()
        {
            if (Boolean.Parse(configuration["Develop:GenerateNodesJsListFileOnStart"]))
            {
                GenerateNodesJsListFile();
            }

            nodesEngine = new NodesEngine(nodesDb, nodesDataDb);
            nodesEngine.SetUpdateInterval(nodesEngineConfig.UpdateInterval);
            nodesEngine.OnLogEngineInfo  += logs.AddNodesEngineInfo;
            nodesEngine.OnLogEngineError += logs.AddNodesEngineError;
            nodesEngine.OnLogNodeInfo    += logs.AddNodeInfo;
            nodesEngine.OnLogNodeError   += logs.AddNodeError;

            if (gateway != null && nodesEngine != null)
            {
                mySensorsNodesEngine = new MySensorsNodesEngine(gateway, nodesEngine);
            }
            else
            {
                mySensorsNodesEngine = null;
            }

            uiNodesEngine = new UiNodesEngine(nodesEngine);

            if (!nodesEngineConfig.Enable)
            {
                return;
            }

            logs.AddSystemInfo("Starting nodes engine... ");
            nodesEngine.Start();

            logs.AddSystemInfo("Nodes engine started.");
        }
        private static void OnSystemControllerStarted()
        {
            nodesEngine   = SystemController.nodesEngine;
            uiNodesEngine = SystemController.uiNodesEngine;

            if (nodesEngine != null)
            {
                nodesEngine.OnRemoveAllNodesAndLinks += OnRemoveAllNodesAndLinks;
            }

            if (uiNodesEngine != null)
            {
                uiNodesEngine.OnUiNodeUpdated    += OnUiNodeUpdated;
                uiNodesEngine.OnNewUiNode        += OnNewUiNode;
                uiNodesEngine.OnRemoveUiNode     += OnRemoveUiNode;
                uiNodesEngine.OnPanelNodeUpdated += OnPanelNodeUpdated;
                uiNodesEngine.OnHideFromHomePage += OnHideFromHomePage;
            }
        }