Example #1
0
 private void OnServiceInstanceDiscovered(object sender, ServiceInstanceDiscoveryEventArgs args)
 {
     if (args.ServiceInstanceName.Labels.Any(x => x.Contains("_webthing")))
     {
         _name = args.ServiceInstanceName;
     }
 }
Example #2
0
        void OnServiceInstanceDiscovered(object sender, ServiceInstanceDiscoveryEventArgs e)
        {
            try
            {
                var msg = e.Message;

                // Is it our service?
                var qsn = ServiceName + ".local";
                if (!e.ServiceInstanceName.EndsWith(qsn))
                {
                    return;
                }

                var addresses = GetAddresses(msg)
                                .Where(a => a.PeerId != LocalPeer.Id)
                                .ToArray();
                if (addresses.Length > 0)
                {
                    PeerDiscovered?.Invoke(this, new Peer {
                        Id = addresses[0].PeerId, Addresses = addresses
                    });
                }
            }
            catch (Exception ex)
            {
                log.Error("OnServiceInstanceDiscovered error", ex);
                // eat it
            }
        }
Example #3
0
        private void DeviceDiscovered(object?sender, ServiceInstanceDiscoveryEventArgs e)
        {
            var foo = e.Message;

            if (!foo.ToString().Contains("_wled"))
            {
                return;
            }

            var name = e.ServiceInstanceName.ToString();

            if (name.Contains(".local"))
            {
                name = name.Split(".")[0];
            }

            if (_ids.Contains(name))
            {
                return;
            }

            try {
                var rr = e.Message.AdditionalRecords;
                var ip = string.Empty;
                var id = string.Empty;


                foreach (var msg in rr)
                {
                    switch (msg.Type)
                    {
                    // Extract IP
                    case DnsType.A:
                        ip = msg.ToString().Split(" ").Last();
                        break;

                    // Extract Mac
                    case DnsType.TXT:
                        id = msg.ToString().Split("=")[1];
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(ip))
                {
                    var nData = new WledData(id, ip)
                    {
                        Name = name
                    };
                    ControlService.AddDevice(nData).ConfigureAwait(false);
                    _ids.Add(id);
                }
                else
                {
                    Log.Warning("Unable to get data for wled.");
                }
            } catch (Exception p) {
                Log.Warning("WLED Discovery Exception: " + p.Message);
            }
        }
Example #4
0
        private void Sd_ServiceInstanceDiscovered(object sender, ServiceInstanceDiscoveryEventArgs e)
        {
            logger.Info($"service instance '{e.ServiceInstanceName}' discovered");

            var args = GetServiceInstanceEventArgs(e);

            ServiceInstanceDiscovered?.Invoke(sender, args);
        }
Example #5
0
        private void DeviceDiscovered(object?sender, ServiceInstanceDiscoveryEventArgs e)
        {
            var foo = e.Message;

            if (!foo.ToString().Contains("_glimmr"))
            {
                return;
            }

            var name = e.ServiceInstanceName.ToString();

            if (name.Contains(".local"))
            {
                name = name.Split(".")[0];
            }

            if (_ids.Contains(name))
            {
                return;
            }

            try {
                var rr = e.Message.AdditionalRecords;
                var ip = string.Empty;
                var id = string.Empty;


                foreach (var msg in rr)
                {
                    switch (msg.Type)
                    {
                    // Extract IP
                    case DnsType.A:
                        Log.Debug("A: " + msg);
                        ip = msg.ToString().Split(" ").Last();
                        break;

                    // Extract Mac
                    case DnsType.TXT:
                        Log.Debug("TXT: " + msg);
                        id = msg.ToString().Split("mac=")[1];
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(id) && !string.IsNullOrEmpty(ip))
                {
                    var sd = DataUtil.GetSystemData();
                    if (id == sd.DeviceId)
                    {
                        return;
                    }

                    if (name == id)
                    {
                        name = "Glimmr-" + id[..3];
Example #6
0
        private void NanoleafDiscovered(object?sender, ServiceInstanceDiscoveryEventArgs e)
        {
            var name  = e.ServiceInstanceName.ToString();
            var nData = new NanoleafData {
                IpAddress = string.Empty
            };

            if (!name.Contains("nanoleafapi", StringComparison.InvariantCulture))
            {
                return;
            }

            var devName = name.Split(".")[0];

            devName    = devName[Math.Max(0, devName.Length - 3)..];
Example #7
0
        void OnServiceInstanceDiscovered(object sender, ServiceInstanceDiscoveryEventArgs e)
        {
            var msg = e.Message;

            // Is it our service?
            var qsn = ServiceName + ".local";

            if (!e.ServiceInstanceName.EndsWith(qsn))
            {
                return;
            }

            foreach (var address in GetAddresses(msg))
            {
                if (LocalPeer.Id == address.PeerId)
                {
                    continue;
                }
                PeerDiscovered?.Invoke(this, new PeerDiscoveredEventArgs {
                    Address = address
                });
            }
        }
Example #8
0
 private void Sd_ServiceInstanceDiscovered(object sender, ServiceInstanceDiscoveryEventArgs e) => ParseMessage(e.Message);