Esempio n. 1
0
        private Dictionary <int, GpioPin> GetPins(DevicePluginConfigurationModel configuration, string configKey)
        {
            var result = new Dictionary <int, GpioPin>();

            string[] pinConfigArray = null;
            if (configuration.Properties.ContainsKey(configKey))
            {
                pinConfigArray = configuration.Properties[configKey].Split(',');
            }

            if (pinConfigArray != null)
            {
                foreach (var pinConfigValue in pinConfigArray)
                {
                    var pinPair = pinConfigValue.Split(':');
                    if (pinPair.Length == 2 &&
                        Int32.TryParse(pinPair[0], out int pinNumber) &&
                        Enum.TryParse(pinPair[1], out GpioPinDriveMode driveMode))
                    {
                        var pin = GpioController.GetDefault().OpenPin(pinNumber);
                        pin.SetDriveMode(driveMode);
                        result.Add(pinNumber, pin);
                    }
                }
            }
            return(result);
        }
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            _connectionString = configuration.Properties["ConnectionString"];

            // get all devices
            var httpClient    = new LocalHttpClient();
            var resultDevices = await httpClient.Client.GetAsync(_connectionString + "devicelist.cgi");

            if (resultDevices.IsSuccessStatusCode)
            {
                var xmlContent = await resultDevices.Content.ReadAsStringAsync();

                var xmlDocument = new XmlDocument();
                xmlDocument.LoadXml(xmlContent);
                foreach (XmlNode deviceNode in xmlDocument.DocumentElement.ChildNodes)
                {
                    var deviceType = deviceNode.Attributes.Cast <XmlAttribute>().Single(n => n.Name == "device_type");
                    var address    = deviceNode.Attributes.Cast <XmlAttribute>().Single(n => n.Name == "address");
                    var id         = deviceNode.Attributes.Cast <XmlAttribute>().Single(n => n.Name == "ise_id");

                    //.Value == "HM-LC-Bl1-FM")
                }
            }

            MessageReceiverLoop(_cancellationTokenSource.Token);
        }
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            _accountSid = configuration.Properties["AccountSid"];
            _authToken  = configuration.Properties["AuthToken"];
            _devices.Add(new TwilioSmsDevice(_accountSid, _authToken, configuration.Properties["OutgoingPhone"], configuration.Properties["ReceiverPhone"]));
        }
Esempio n. 4
0
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            var connectionString = configuration.Properties["ConnectionString"];
            var username         = configuration.Properties["Username"];
            var password         = configuration.Properties["Password"];

            // create default HttpClient used by all channels
            _httpClient = new LocalHttpClient();
            _httpClient.Client.DefaultRequestHeaders.Add("Authorization", "Basic " + Base64.EncodeTo64(username + ":" + password));

            _devices.Add(new SecvestDevice(_httpClient.Client, connectionString));
        }
Esempio n. 5
0
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            var etatouchUrl = configuration.Properties["ConnectionString"];

            var etaDevice = new EtaDevice();
            await etaDevice.InitializeAsync(new DeviceConfigurationModel()
            {
                Name       = "EtaDevice",
                Type       = "EtaDevice",
                Properties = new Dictionary <string, string> {
                    { "ConnectionString", etatouchUrl }
                }
            });

            _devices.Add(etaDevice);
        }
Esempio n. 6
0
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            var channelConfigs = configuration.Properties.Select(c => c.Key.StartsWith("channel:")).ToList();

            _mqttServer = new MqttServerFactory().CreateMqttServer(new MqttServerOptions()
            {
                ConnectionValidator = ConnectionValidator
            });
            // https://github.com/chkr1011/MQTTnet/wiki/Server
            // https://github.com/Azure/DotNetty
            // https://github.com/i8beef/HomeAutio.Mqtt.Core
            await _mqttServer.StartAsync();

            _mqttServer.ApplicationMessageReceived += MqttServerOnApplicationMessageReceived;

            _threadCancellation  = new CancellationTokenSource();
            _messageReceiverTask = MessageReceiverLoop(_threadCancellation.Token); // launch message loop in the background
        }
Esempio n. 7
0
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            try
            {
                _deviceid = configuration.Properties["DeviceId"];
                string deviceSas     = configuration.Properties["DeviceSas"];
                string iotHubAddress = configuration.Properties["IotHubAddress"];
                int    iotHubPort    = Int32.Parse(configuration.Properties["IotHubPort"]);

                // init mqtt client
                _mqttclient = new uPLibrary.Networking.M2Mqtt.MqttClient(iotHubAddress, iotHubPort, true, MqttSslProtocols.TLSv1_2);
                _mqttclient.ConnectionClosed += MqttclientOnConnectionClosed;
                _mqttclient.Connect(_deviceid, $"{iotHubAddress}/{_deviceid}/api-version=2016-11-14", deviceSas);
                _mqttclient.Subscribe(new[] { $"devices/{_deviceid}/messages/devicebound/#" }, new byte[] { 0 });
                _mqttclient.Subscribe(new[] { "$iothub/methods/POST/#" }, new byte[] { 0 });
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                //TODO Log
            }
        }
Esempio n. 8
0
 public virtual async Task InitializeAsync(DevicePluginConfigurationModel configuration)
 {
     _name = configuration.Name;
     _type = configuration.Type;
 }
Esempio n. 9
0
        public override async Task InitializeAsync(DevicePluginConfigurationModel configuration)
        {
            await base.InitializeAsync(configuration);

            _pins = GetPins(configuration, "pins");
        }