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;

            if (nodesEngine != null)
            {
                nodesEngine.OnNewNode                += OnNewNode;
                nodesEngine.OnNodeUpdatedInEditor    += OnNodeUpdated;
                nodesEngine.OnRemoveNode             += OnRemoveNode;
                nodesEngine.OnRemoveLink             += OnRemoveLink;
                nodesEngine.OnNewLink                += OnNewLink;
                nodesEngine.OnNodeActivity           += OnNodeActivity;
                nodesEngine.OnRemoveAllNodesAndLinks += OnRemoveAllNodesAndLinks;
            }
        }
示例#3
0
        public async Task <int> SetValue(string value, string channel, string password)
        {
            NodesEngine engine = SystemController.nodesEngine;

            if (password == "")
            {
                password = null;
            }

            return(await Task.Run(() =>
            {
                if (engine == null)
                {
                    return 2;
                }

                List <ConnectionRemoteReceiverNode> receivers;

                lock (engine.nodesLock)
                    receivers = engine.GetNodes()
                                .OfType <ConnectionRemoteReceiverNode>()
                                .Where(x => x.GetChannel().ToString() == channel)
                                .ToList();

                if (!receivers.Any())
                {
                    engine.LogNodesError(
                        $"Received a value for Remote Receiver, but no receivers with channel [{channel}]");
                    return 2;
                }

                var ip = Context.Request.HttpContext.Connection.RemoteIpAddress;
                string address = ip?.ToString();

                bool received = false;

                foreach (var receiver in receivers)
                {
                    if (receiver.ReceiveValue(value, channel, password, address))
                    {
                        received = true;
                    }
                }

                return received ? 0 : 1;
            }));
        }
        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;
            }
        }
示例#5
0
 public UITimerController()
 {
     engine = SystemController.nodesEngine;
 }