예제 #1
0
        /// <summary>
        /// Event handler to receive notice that the device has disconnected
        /// </summary>
        /// <param name="sender">Sender</param>
        /// <param name="e">Event args including the device info</param>
        private void _bleManager_DeviceDisconnectedEvent(object sender, DeviceEventArgs e)
        {
            DeviceInfo device = FindDeviceInfo(e.Device);

            Log(string.Format("Device {0} [{1}] disconnected", device != null ? device.Name : e.Device.Name, e.Device.Address));

            if (device != null)
            {
                DeviceDisconnectEvent?.Invoke(this, new DeviceInfoEventArgs(device));

                _localDisconnectionSuccess?.Invoke(this, new DeviceInfoEventArgs(device));
                _localDisconnectionSuccess = null;
            }
        }
예제 #2
0
        public async Task Handle(MqttClientDisconnectedEvent message, IMessageHandlerContext context)
        {
            _logger.Info($"ClientDisconnectedMessage recived. DETAILS:\n{message.ToString()}");

            var devices = await this._mqttClientManager.GetDevicesByMqttClientAsync(message.client_id);

            foreach (var device in devices)
            {
                var @event = new DeviceDisconnectEvent
                {
                    mqtt_client_id = device.mqtt_client_id,
                    serial_number  = device.serial_number,
                    type_text      = device.type_text
                };

                await context.Publish(@event);
            }

            //await this._mqttClientManager.ChangeDevicesStatusAsync(false, message.client_id);
        }
        public override DeviceEvent ParseDeviceEvent(MqttApplicationMessageReceivedEventArgs eventArgs)
        {
            var payload = eventArgs.ApplicationMessage.Payload;

            if (payload == null || payload.Length == 0)
            {
                return(null);
            }

            var payloadStr = Encoding.UTF8.GetString(eventArgs.ApplicationMessage.Payload);

            if (this.IsValidJson(payloadStr))
            {
                DeviceDisconnectEvent message = JsonConvert.DeserializeObject <DeviceDisconnectEvent>(payloadStr);

                if (string.IsNullOrEmpty(message.mqtt_client_id))
                {
                    message.mqtt_client_id = eventArgs.ClientId;
                }

                return(message);
            }
            return(null);
        }
예제 #4
0
 protected virtual void OnDeviceDisconnectEvent(BleGattDevice dev)
 {
     DeviceDisconnectEvent?.Invoke(dev);
 }
예제 #5
0
 public virtual void OnDeviceDisconnectEvent(bool status)
 {
     DeviceDisconnectEvent?.Invoke(status);
 }