Esempio n. 1
0
        async Task <ICoapClient> CreateClient(PythonDictionary parameters)
        {
            var host     = Convert.ToString(parameters.get("host", string.Empty));
            var port     = Convert.ToInt32(parameters.get("port", 5684));
            var protocol = Convert.ToString(parameters.get("protocol", "dtls"));
            var identity = Convert.ToString(parameters.get("identity", string.Empty));
            var key      = Convert.ToString(parameters.get("key", string.Empty));
            var timeout  = Convert.ToInt32(parameters.get("timeout", 5000));

            var connectOptionsBuilder = new CoapClientConnectOptionsBuilder()
                                        .WithHost(host)
                                        .WithPort(port);

            if (protocol == "dtls")
            {
                connectOptionsBuilder.WithDtlsTransportLayer(o => o.WithPreSharedKey(identity, key));
            }

            var connectOptions = connectOptionsBuilder.Build();

            var coapClient = new CoapFactory().CreateClient();

            using (var cancellationTokenSource = new CancellationTokenSource(timeout))
            {
                await coapClient.ConnectAsync(connectOptions, cancellationTokenSource.Token).ConfigureAwait(false);
            }

            return(coapClient);
        }
Esempio n. 2
0
        static async Task Main()
        {
            var coapFactory = new CoapFactory();

            coapFactory.DefaultLogger.RegisterSink(new CoapNetLoggerConsoleSink());

            using var coapClient = coapFactory.CreateClient();

            Console.WriteLine("< CONNECTING...");

            var connectOptions = new CoapClientConnectOptionsBuilder()
                                 .WithHost("GW-B8D7AF2B3EA3.fritz.box")
                                 .WithHost("127.0.0.1")
                                 .WithDtlsTransportLayer(o =>
                                                         o.WithPreSharedKey("727360dd-d27a-4ca0-9be8-f626de849d7a", "7x3A1gqWvu9cBGD7"))
                                 .Build();

            using (var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10)))
            {
                await coapClient.ConnectAsync(connectOptions, cancellationTokenSource.Token);
            }

            var request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("15001")
                          .Build();

            using (var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10)))
            {
                var response = await coapClient.RequestAsync(request, cancellationTokenSource.Token);

                PrintResponse(response);
            }
        }
Esempio n. 3
0
 public async Task Connect_Invalid_Host()
 {
     using (var coapClient = new CoapFactory().CreateClient())
     {
         await coapClient.ConnectAsync(new CoapClientConnectOptions()
         {
             Host = "invalid_host"
         }, CancellationToken.None);
     }
 }
Esempio n. 4
0
        public async Task Connect_Valid_Host_With_Invalid_Port_Dtls()
        {
            using (var coapClient = new CoapFactory().CreateClient())
            {
                var options = new CoapClientConnectOptionsBuilder()
                              .WithHost("127.0.0.1")
                              .WithPort(5555)
                              .WithDtlsTransportLayer(o =>
                {
                    o.WithPreSharedKey("a", "b");
                })
                              .Build();

                await coapClient.ConnectAsync(options, CancellationToken.None);
            }
        }
Esempio n. 5
0
        public async Task Timeout_When_No_Response_Received()
        {
            using (var coapClient = new CoapFactory().CreateClient())
            {
                var options = new CoapClientConnectOptionsBuilder()
                              .WithHost("127.0.0.1")
                              .WithPort(5555)
                              .Build();

                await coapClient.ConnectAsync(options, CancellationToken.None);

                var request = new CoapRequestBuilder()
                              .WithMethod(CoapRequestMethod.Get)
                              .Build();

                await coapClient.RequestAsync(request, CancellationToken.None);
            }
        }
Esempio n. 6
0
        static async Task Main(string[] args)
        {
            using (var coapClient = new CoapFactory().CreateClient())
            {
                var gateway = new Gateway(coapClient, new GatewaySettings {
                    GatewayIp = IPAddress.Parse("192.168.0.51"), Secret = "MR2PcuQSzcaDvVrp"
                });

                var credentials = await gateway.AuthenticateAsync();

                await gateway.ConnectAsync(credentials);

                await foreach (var device in gateway.GetDevices())
                {
                    Console.WriteLine(device.Name);
                    device.SetClient(coapClient);
                    await device.Observe();
                }

                Console.ReadLine();
            }
        }
Esempio n. 7
0
        static async Task Main()
        {
            var optionBuilder = new CoapMessageOptionFactory();

            var coapClient = new CoapFactory().CreateClient();

            Console.WriteLine("CONNECTING...");

            var request = new CoapRequest
            {
                Method = CoapRequestMethod.Get,
                Uri    = "15001"
            };

            await coapClient.ConnectAsync(new CoapClientConnectOptions
            {
                Host           = "192.168.1.228",
                Port           = 5684,
                TransportLayer = new UdpWithDtlsCoapTransportLayer()
                {
                    Credentials = new PreSharedKey
                    {
                        Identity = Encoding.ASCII.GetBytes("IDENTITY"),
                        Key      = Encoding.ASCII.GetBytes("lqxbBH6o2eAKSo5A")
                    }
                }
            }, CancellationToken.None);

            var response = await coapClient.Request(request, CancellationToken.None);

            Console.WriteLine("DATA RECEIVED");

            Console.WriteLine("Code = " + response.StatusCode);
            Console.WriteLine("Payload = " + Encoding.ASCII.GetString(response.Payload.ToArray()));

            Console.ReadLine();
        }
Esempio n. 8
0
        static async Task Main2()
        {
            var coapFactory = new CoapFactory();

            coapFactory.DefaultLogger.RegisterSink(new CoapNetLoggerConsoleSink());

            using (var coapClient = coapFactory.CreateClient())
            {
                Console.WriteLine("< CONNECTING...");

                var connectOptions = new CoapClientConnectOptionsBuilder()
                                     .WithHost("coap.me")
                                     .Build();

                await coapClient.ConnectAsync(connectOptions, CancellationToken.None).ConfigureAwait(false);

                // separate

                var request = new CoapRequestBuilder()
                              .WithMethod(CoapRequestMethod.Get)
                              .WithPath("separate")
                              .Build();

                var response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                // hello

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("hello")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                // broken

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("broken")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                // secret

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("secret")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                // large-create

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("large-create")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                // location1/location2/location3

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("location1/location2/location3")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                // large

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("large")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None);

                PrintResponse(response);

                await Task.Delay(TimeSpan.FromSeconds(10));
            }
        }
Esempio n. 9
0
        static async Task Main()
        {
            //await Main2();

            //Console.WriteLine("Press any key to exit.");
            //Console.ReadLine();

            var coapFactory = new CoapFactory();

            coapFactory.DefaultLogger.RegisterSink(new CoapNetLoggerConsoleSink());

            using (var coapClient = coapFactory.CreateClient())
            {
                Console.WriteLine("< CONNECTING...");

                var connectOptions = new CoapClientConnectOptionsBuilder()
                                     .WithHost("GW-B8D7AF2B3EA3.fritz.box")
                                     .WithDtlsTransportLayer(o =>
                                                             o.WithPreSharedKey("IDENTITY", "lqxbBH6o2eAKSo5A"))
                                     .Build();

                using (var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10)))
                {
                    await coapClient.ConnectAsync(connectOptions, cancellationTokenSource.Token).ConfigureAwait(false);
                }

                var request = new CoapRequestBuilder()
                              .WithMethod(CoapRequestMethod.Get)
                              .WithPath("15001")
                              .Build();

                var response = await coapClient.RequestAsync(request, CancellationToken.None).ConfigureAwait(false);

                PrintResponse(response);

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Get)
                          .WithPath("15001/65550")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None).ConfigureAwait(false);

                PrintResponse(response);

                request = new CoapRequestBuilder()
                          .WithMethod(CoapRequestMethod.Put)
                          .WithPath("15001/65550")
                          .WithPayload("{\"3311\": [{\"5850\": 1}]}")
                          .Build();

                response = await coapClient.RequestAsync(request, CancellationToken.None).ConfigureAwait(false);

                PrintResponse(response);

                var observeOptions = new CoapObserveOptionsBuilder()
                                     .WithPath("15001/65550")
                                     .WithResponseHandler(new ResponseHandler())
                                     .Build();

                var observeResponse = await coapClient.ObserveAsync(observeOptions, CancellationToken.None).ConfigureAwait(false);

                PrintResponse(observeResponse.Response);

                Console.WriteLine("Observed messages for lamp!");

                Console.WriteLine("Press any key to unobserve.");
                Console.ReadLine();

                await coapClient.StopObservationAsync(observeResponse, CancellationToken.None).ConfigureAwait(false);

                Console.WriteLine("Press any key to exit.");
                Console.ReadLine();
            }
        }