コード例 #1
0
        private void btnSet_Click(object sender, EventArgs e)
        {
            TreeNode node = tvSensors.SelectedNode;

            if (node != null)
            {
                if (node.Level == 2)
                {
                    TreeNode sensorNode = node.Parent;
                    Sensor   sensor     = sensorNode.Tag as Sensor;
                    string   deviceType = "";

                    if (sensor.SensorDeviceType == SensorDeviceType.Door)
                    {
                        deviceType = "Door";
                    }

                    if (sensor.SensorDeviceType == SensorDeviceType.Credential)
                    {
                        deviceType = "Credential";
                    }

                    SafeInvoke(() =>
                    {
                        SensorServiceClient.SignalReceived(sensor.DeviceToken, deviceType, sensor.Name, node.Text);
                    });
                }
            }
        }
コード例 #2
0
        private void tvDoors_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            e.Node.TreeView.SelectedNode = e.Node;
            if (MouseButtons.Right == e.Button && null != e.Node.Parent)
            {
                string enumName = treeNodeNameToEnumTypeName(e.Node.Name);

                if (!string.IsNullOrEmpty(enumName))
                {
                    var enumType = Type.GetType("SMC.Proxies." + enumName);
                    var dialog   = new DoorStateFlagChangeComboBox(e.Node, Enum.GetNames(enumType));

                    var deviceToken = e.Node.Parent.Name;
                    var sensorName  = e.Node.Name;

                    dialog.SelectedValueChanged += (o, args) =>
                    {
                        if (-1 != dialog.SelectedIndex)
                        {
                            var newValue = (string)dialog.Items[dialog.SelectedIndex];
                            e.Node.Text = e.Node.Name + ": " + newValue;
                            SafeInvoke(() =>
                            {
                                SensorServiceClient.SignalReceived(deviceToken, "Door", sensorName, newValue);
                            });
                        }
                    };
                }
            }
        }
コード例 #3
0
        public void Start()
        {
            //We have to listen on the same port number to get the broadcast msgs

            UdpClient simpleSocket = new UdpClient(7000);

            //Listening to all IP's in our network, the port number does not matter, it will be overriden above
            IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);

            // Getting into the loop:

            while (true)
            {
                //Define the "predicted" max size of data to be received "4000" is more than enough
                byte[] databuffer = new byte[4000];

                //Listening on the socket with ref ip => can be overriden!
                databuffer = simpleSocket.Receive(ref remoteEndPoint);

                String encodedText = Encoding.ASCII.GetString(databuffer);
                Console.WriteLine("Received data from sensor: \nPlain data\n" + encodedText);

                int    light;
                int    temp;
                String timestamp;

                //Listening to JSON & XML

                TextReader reader = new StringReader(encodedText);
                String     str1   = reader.ReadLine();
                String     str2   = reader.ReadLine();
                String     str3   = reader.ReadLine();

                light     = Convert.ToInt32(str1.Split(' ')[1]);
                temp      = Convert.ToInt32(str2.Split(' ')[1]);
                timestamp = str3.Split(' ')[1];

                Console.WriteLine($"Received data from sensor: \nJSON and XML:\nlight={light}\ntemperature={temp}\ntimestamp={timestamp}\n");

                using (SensorServiceClient azureClient = new SensorServiceClient("BasicHttpBinding_ISensorService"))
                {
                    azureClient.StoreData(new SensorData
                    {
                        Light       = Convert.ToByte(light),
                        Temperature = Convert.ToByte(temp),
                        TimeStamp   = timestamp
                    });
                }
            }
        }
コード例 #4
0
        public static void Start()
        {
            IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);

            UdpClient simpleSocket = new UdpClient(5000);
            UdpClient jsonSocket   = new UdpClient(5001);
            UdpClient xmlSocket    = new UdpClient(5002);

            while (true)
            {
                //PLAIN
                Byte[] plainBuffer = simpleSocket.Receive(ref ep);

                String encodedText = Encoding.ASCII.GetString(plainBuffer);

                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine($"{encodedText}\n");

                //JSON
                Byte[] jsonBuffer  = jsonSocket.Receive(ref ep);
                String encodedJson = Encoding.ASCII.GetString(jsonBuffer);

                Measurement jsonMeasurement = JsonConvert.DeserializeObject <Measurement>(encodedJson);

                Console.ForegroundColor = ConsoleColor.Magenta;
                Console.WriteLine($"{jsonMeasurement}");
                Console.WriteLine();


                try
                {
                    SensorServiceClient azureClient = new SensorServiceClient(SensorServiceClient.EndpointConfiguration.BasicHttpBinding_ISensorService);

                    SensorData sensorData = new SensorData {
                        Id          = jsonMeasurement.Id,
                        Light       = jsonMeasurement.Light,
                        Temperature = jsonMeasurement.Temperature,
                        Timestamp   = jsonMeasurement.Timestamp
                    };

                    azureClient.StoreDataAsync(sensorData);
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Error calling Azure service {e.Message}", ConsoleColor.Cyan);
                    break;
                }

                try
                {
                    TwitterHandler.InitAuth();

                    if (jsonMeasurement.Temperature <= 40)
                    {
                        var tweet = $"All good! Go back to sleep! Lights seems normal and the current temperature is {jsonMeasurement.Temperature} °C #keasysint";
                        TwitterHandler.Alarm(tweet);
                    }
                    else if (41 <= jsonMeasurement.Temperature && jsonMeasurement.Temperature <= 100)
                    {
                        var tweet = $"Something is not right, please ask for feedback and report to Captain Holt! Current temperature is {jsonMeasurement.Temperature} °C! Address Refnumber: {jsonMeasurement.Id} #keasysint";
                        TwitterHandler.Alarm(tweet);
                    }
                    else if (100 < jsonMeasurement.Temperature)
                    {
                        var tweet = $"ALARM! The roof is on fire!! The temperature is {jsonMeasurement.Temperature} °C! Go to the designated address ! Reported at {jsonMeasurement.Timestamp}, hurry up! #keasysint";
                        TwitterHandler.Alarm(tweet);
                    }
                }
                catch (Exception exc)
                {
                    Console.WriteLine($"Error calling Twitter service {exc.Message}", ConsoleColor.Cyan);
                    break;
                }



                //XML

                Byte[] xmlBuffer  = xmlSocket.Receive(ref ep);
                String encodedXml = Encoding.ASCII.GetString(xmlBuffer);

                var m = XmlDeserializeFromString <Measurement>(encodedXml);

                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"{m}");
                Console.WriteLine();
            }
        }