private void _edgeAgent_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            switch (e.Type)
            {
            case MessageType.WriteValue:
                WriteValueCommand wvcMsg = ( WriteValueCommand )e.Message;
                foreach (var device in wvcMsg.DeviceList)
                {
                    Console.WriteLine("DeviceId: {0}", device.Id);
                    foreach (var tag in device.TagList)
                    {
                        Console.WriteLine("TagName: {0}, Value: {1}", tag.Name, tag.Value.ToString());
                        if (device.Id == "Device1" && tag.Name == "DTag1")
                        {
                            if (this.txtDTag1Value.InvokeRequired)
                            {
                                BeginInvoke((MethodInvoker) delegate()
                                {
                                    txtDTag1Value.Text = tag.Value.ToString();
                                });
                            }
                            // resend the new value to cloud
                            EdgeData     data = new EdgeData();
                            EdgeData.Tag dTag = new EdgeData.Tag()
                            {
                                DeviceId = "Device1",
                                TagName  = "DTag1",
                                Value    = tag.Value
                            };
                            data.TagList.Add(dTag);
                            data.Timestamp = DateTime.Now;
                            bool result = _edgeAgent.SendData(data).Result;
                        }
                    }
                }
                break;

            /*case MessageType.WriteConfig:
             *  break;*/
            case MessageType.ConfigAck:
                ConfigAck cfgAckMsg = ( ConfigAck )e.Message;
                MessageBox.Show(string.Format("Upload Config Result: {0}", cfgAckMsg.Result.ToString()));
                break;
            }
        }
        private void _edgeAgent_MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            switch (e.Type)
            {
            case MessageType.WriteValue:
                WriteValueCommand wvcMsg = (WriteValueCommand)e.Message;
                foreach (var device in wvcMsg.DeviceList)
                {
                    foreach (var tag in device.TagList)
                    {
                        if (tag.Value.GetType() == typeof(JObject))
                        {
                            //Array Tag
                            JObject arrayTag = JObject.Parse(tag.Value.ToString());
                            string  index    = arrayTag.First.Path;
                            var     value    = arrayTag.First.First;
                            Console.WriteLine("TagName: {0}, Index: {1}, Value: {2}", tag.Name, index, value.ToString());
                        }
                        else
                        {
                            //Non-Array Tag
                            Console.WriteLine("TagName: {0}, Value: {1}", tag.Name, tag.Value.ToString());
                        }
                    }
                }
                break;

            /*case MessageType.WriteConfig:
             *  break;*/
            case MessageType.TimeSync:      // when received this message
                TimeSyncCommand tscMsg = (TimeSyncCommand)e.Message;
                Console.WriteLine("UTC Time: {0}", tscMsg.UTCTime.ToString());
                break;

            case MessageType.ConfigAck:
                ConfigAck cfgAckMsg = (ConfigAck)e.Message;
                MessageBox.Show(string.Format("Upload Config Result: {0}", cfgAckMsg.Result.ToString()));
                break;
            }
        }
Example #3
0
        /*
         * private bool _sendData(EdgeData data)
         * {
         *  try
         *  {
         *      return true;
         *  }
         *  catch (Exception ex)
         *  {
         *      //_logger.Error( ex.ToString() );
         *      return false;
         *  }
         * }
         *
         * private bool _sendDeviceStatus(EdgeDeviceStatus deviceStatus)
         * {
         *  try
         *  {
         *      return true;
         *  }
         *  catch (Exception ex)
         *  {
         *      //_logger.Error( ex.ToString() );
         *      return false;
         *  }
         * }
         */
        private void mqttClient_MessageReceived(object sender, MqttApplicationMessageReceivedEventArgs e)
        {
            try
            {
                if (MessageReceived == null)
                {
                    return;
                }

                string payload = Encoding.UTF8.GetString(e.ApplicationMessage.Payload);
                //_logger.Info( "Recieved Message: {0}", payload );

                JObject jObj = JObject.Parse(payload);
                if (jObj == null || jObj["d"] == null)
                {
                    return;
                }

                dynamic obj = jObj as dynamic;
                if (jObj["d"]["Cmd"] != null)
                {
                    switch ((string)obj.d.Cmd)
                    {
                    case "WV":
                        WriteValueCommand wvcMsg = new WriteValueCommand();
                        foreach (JProperty devObj in obj.d.Val)
                        {
                            WriteValueCommand.Device device = new WriteValueCommand.Device();
                            device.Id = devObj.Name;
                            int iArryaTag = 0;
                            foreach (JProperty tagObj in devObj.Value)
                            {
                                WriteValueCommand.Tag tag = new WriteValueCommand.Tag();
                                tag.Name  = tagObj.Name;
                                tag.Value = tagObj.Value;
                                device.TagList.Add(tag);
                                iArryaTag++;
                            }
                            if (iArryaTag == 0)        //not array type
                            {
                                WriteValueCommand.Tag tag = new WriteValueCommand.Tag();
                                tag.Name  = devObj.Name;
                                tag.Value = devObj.Value;
                                device.TagList.Add(tag);
                            }
                            wvcMsg.DeviceList.Add(device);
                        }
                        //message = JsonConvert.DeserializeObject<WriteValueCommandMessage>( payload );
                        MessageReceived(sender, new MessageReceivedEventArgs(MessageType.WriteValue, wvcMsg));
                        break;

                    case "WC":
                        //MessageReceived( sender, new MessageReceivedEventArgs( MessageType.WriteConfig, message ) );
                        break;

                    case "TSyn":
                        TimeSyncCommand tscMsg       = new TimeSyncCommand();
                        DateTime        miniDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                        tscMsg.UTCTime = miniDateTime.AddSeconds(obj.d.UTC.Value);
                        MessageReceived(sender, new MessageReceivedEventArgs(MessageType.TimeSync, tscMsg));
                        break;

                    case "DOn":
                        DataOnCommand donMsg = new DataOnCommand();
                        MessageReceived(sender, new MessageReceivedEventArgs(MessageType.DataOn, donMsg));
                        break;
                    }
                }
                else if (jObj["d"]["Cfg"] != null)
                {
                    ConfigAck ackMsg = new ConfigAck();
                    ackMsg.Result = Convert.ToBoolean(obj.d.Cfg.Value);
                    MessageReceived(this, new MessageReceivedEventArgs(MessageType.ConfigAck, ackMsg));
                }
                else if (jObj["d"]["Con"] != null)
                {
                    WAKernelRun = true;
                    //ConnectAck ackMsg = new ConnectAck();
                    //ackMsg.Result = Convert.ToBoolean(obj.d.Con.Value);
                    //MessageReceived(this, new MessageReceivedEventArgs(MessageType.ConnectAck, ackMsg));
                }
                else if (jObj["d"]["DsC"] != null)
                {
                    WAKernelRun = false;
                }
            }
            catch (Exception ex)
            {
                //_logger.Error( ex.ToString() );
                Console.WriteLine(ex.ToString());
            }
        }