Ejemplo n.º 1
0
        public async static Task PushIndicators(DateTime from, DateTime to, string cfgFileName)
        {
            EquipmentConnectorCfg[] cfg;

            using (var xmlFile = new FileStream(cfgFileName, FileMode.Open)) {
                using (var xmlReader = XmlReader.Create(xmlFile)) {
                    var xmlSerializer = new XmlSerializer(typeof(EquipmentConnectorCfg[]));
                    cfg = (EquipmentConnectorCfg[])xmlSerializer.Deserialize(xmlReader);
                }
            }

            using (var client = new DpaRestClient(LinkConfig.DPA.BaseUrl)) {
                await client.Login(LinkConfig.DPA.UserName, LinkConfig.DPA.Password);

                foreach (var equipmentCfg in cfg)
                {
                    foreach (var indicatorCfg in equipmentCfg.Indicators)
                    {
                        using (var connector = LinkConfig.Connectors.CreateConnector(indicatorCfg.Connector, $"{equipmentCfg.Name} / {indicatorCfg.Name}")) {
                            var values = await client.GetIndicatorValues(indicatorCfg.ID, from, to);

                            connector.Push(equipmentCfg, indicatorCfg, values);
                        }
                    }
                }
            }
        }
        public async static Task SetValue(long equipmentId, string url, string value)
        {
            using (var client = new DpaRestClient(LinkConfig.DPA.BaseUrl)) {
                await client.Login(LinkConfig.DPA.UserName, LinkConfig.DPA.Password);

                await client.WriteVariable(equipmentId, new DriverWriteItem { Url = url, Values = new string[] { value } });

                Console.WriteLine("OK");
            }
        }
        public async static Task GetEquipment()
        {
            using (var client = new DpaRestClient(LinkConfig.DPA.BaseUrl)) {
                await client.Login(LinkConfig.DPA.UserName, LinkConfig.DPA.Password);

                var equipment = await client.GetEquipment();

                Console.WriteLine(JsonSerializer.Serialize(equipment, new JsonSerializerOptions {
                    WriteIndented = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
                }));
            }
        }
        public async static Task CreateIndicators(string fileName)
        {
            using (var client = new DpaRestClient(LinkConfig.DPA.BaseUrl)) {
                await client.Login(LinkConfig.DPA.UserName, LinkConfig.DPA.Password);

                var equipment = await client.GetEquipment();

                var cfg = CreateCfg(client, equipment);

                using (var xmlFile = new FileStream(fileName, FileMode.Create)) {
                    using (var xmlWriter = XmlWriter.Create(xmlFile, new XmlWriterSettings {
                        Indent = true
                    })) {
                        var xmlSerializer = new XmlSerializer(typeof(EquipmentConnectorCfg[]));
                        xmlSerializer.Serialize(xmlWriter, cfg);
                    }
                }
            }
        }
        private static EquipmentConnectorCfg[] CreateCfg(DpaRestClient client, Equipment[] equipment)
        {
            var progressBarOptions = new ProgressBarOptions {
                ProgressCharacter   = '─',
                ProgressBarOnBottom = true,
                ForegroundColor     = ConsoleColor.White,
                BackgroundColor     = ConsoleColor.DarkGray,
                ForegroundColorDone = ConsoleColor.Gray
            };

            using (var progressBar = new ProgressBar(equipment.Length, "", progressBarOptions)) {
                var cfg = equipment
                          .Select(async(Equipment equipmentInstance) => {
                    var equipmentCfg = await CreateEquipmentConnectorCfg(client, equipmentInstance);
                    progressBar.Tick(equipmentCfg.Name);
                    return(equipmentCfg);
                })
                          .Select(action => action.Result)
                          .ToArray();

                return(cfg);
            }
        }
        private static async Task <EquipmentConnectorCfg> CreateEquipmentConnectorCfg(DpaRestClient client, Equipment equipment)
        {
            var cfg = new EquipmentConnectorCfg {
                ID             = equipment.ID,
                Name           = equipment.Name,
                DepartmentName = equipment.DepartmentName
            };

            var indicators = await client.GetIndicators(equipment);

            cfg.Indicators = indicators
                             .Select(ind => new IndicatorConnectorCfg {
                ID          = ind.ID,
                Name        = ind.Name,
                ModuleName  = ind.ModuleName,
                Device      = ind.Device,
                DeviceClass = ind.DeviceClass,
                Connector   = "connectorName"
            })
                             .ToArray();

            return(cfg);
        }