Как программно добавить IP подключение к точке учета?

Раздел для разработчиков по взаимодействию с ЛЭРС УЧЕТ, созданию собственных внешних модулей, экспорту/импорту данных и т.д.

Модератор: Модераторы

Закрыто
Анатольевич
Сообщения: 17
Зарегистрирован: 06 июн 2019, 10:52

Как программно добавить IP подключение к точке учета?

Сообщение Анатольевич » 19 ноя 2019, 16:29

Доброго времени суток! Программным способом создаю IP подключения в объекте учета:

Код: Выделить всё

        private static async Task NewIPConnectionAsync(House house, string ip, ushort port, string title, string pollportname)
        {
            try
            {
                house.RefreshAsync(NodeInfoFlags.PollConnections);
                System.Threading.Thread.Sleep(500);

                if (house.PollConnections.FirstOrDefault<Lers.Poll.PollConnection>(x => x.Title == title) == null)
                {
                    Lers.Poll.PollConnection poll = house.PollConnections.CreateNew(Lers.Poll.CommunicationLink.Ip, title);
                    Lers.Poll.PollPort[] ppp = await SERVER.PollPorts.GetListAsync();

                    poll.ConnectionTimeout = 4;
                    poll.InternetHost = ip;
                    poll.InternetPort = port;
                    poll.Protocol = 0;
                    poll.PollPortId = ppp.FirstOrDefault<Lers.Poll.PollPort>(x => x.Title == pollportname).Id;
                    
                    house.PollConnections.Add(poll);
                    
                    house.SaveAsync();
                    Log("В доме " + house.Title + " было успешно создано IP подключение " + title + " " + ip);
                    System.Threading.Thread.Sleep(500);
                }
                else
                {
                    Log("IP Подключение с таким именем [" + title + "] уже существует!", 1);
                }
            }
            catch(Exception e)
            {                
                Log( "Не удалось создать IP подключение " + title + " в доме " + house.Title, 1);
                Log(e.Message, 2);
                Log(e.StackTrace, 3);
            }
        }
Создаю точку учета тепла в жилом помещении:

Код: Выделить всё

        private static bool CreateHeaterPoint(Room room, string sn, string mbus, string Ipconnection)
        {
            bool reslt = false;
            try
            {
                CommunalMeasurePoint point = room.NewMeasurePoint("Теплоснабжение", SystemType.Heat);
                point.Comment = "Точка учета теплоснабжения счетчик: " + GetDeviceBySn(sn).Model.Title + " sn:" + sn;
                point.Device = GetDeviceBySn(sn);
                point.DeviceBinding.Channels.FlowChannelNumber = 1;
                point.DeviceBinding.Channels.ReturnChannelNumber = 2;
                
                point.Device.NetworkAddress = mbus;
                point.Device.SaveAsync();
                
                point.SaveAsync();
                reslt = true;

                Log("Точка учета теплоснабжения для квартиры №" + room.Title + " была успешно создана!");
            }
            catch (Exception e)
            {
                Log("Не удалось создать точку учета Теплоснабжения в квартире №" + room.Title, 1);
                Log(e.Message, 1);
                Log(e.StackTrace, 3);
            }
            return reslt;
        }
Как мне указать IP подключение для этой точки учета из созданных мной ранее по параметру string ipconecction?
connection.PNG
Иван Славный
Инженер техподдержки
Инженер техподдержки
Сообщения: 6894
Зарегистрирован: 02 мар 2016, 05:45

Re: Как программно добавить IP подключение к точке учета?

Сообщение Иван Славный » 20 ноя 2019, 03:51

В подключении класса Lers.Poll.PollConnection есть метод SetEquipmentList с помощью которого вы можете задать список оборудования, которое вы можете опросить через это оборудование. То есть вы привязываете список оборудования к подключению и связываете каждый экземпляр оборудования со своими точкам учета. Тем самым вы связываете подключение и точку учета между собой через экземпляр оборудования.
20 и 21 июля 2020. IX обучающий семинар в Москве. Подробнее ...
Анатольевич
Сообщения: 17
Зарегистрирован: 06 июн 2019, 10:52

Re: Как программно добавить IP подключение к точке учета?

Сообщение Анатольевич » 20 ноя 2019, 14:05

Можно небольшой пример работы метода SetEquipmentList ? Я так понимаю он работает со списком IEnumerable оборудования которое необходимо подключить к созданному (PollConnection). Как мне добавить в IEnumerable<Equipment> только то оборудование которое необходимо подключить скажем к "Соединение-1"? Или нужно все делать по частям: 1) Добавляем дом -> Добавляем подключение -> Добавляем оборудование которое будет работать с подключением -> Получаем список оборудования в доме (IEnumerable<Equipment> equipmentList = house.Equipment) -> Засовываем его в SetEquipmentList -> Создаем помещения -> Создаем точки учета с уже привязанным к PollConnection оборудованием?
Анатольевич
Сообщения: 17
Зарегистрирован: 06 июн 2019, 10:52

Re: Как программно добавить IP подключение к точке учета?

Сообщение Анатольевич » 20 ноя 2019, 16:15

Все разобрался...

Код: Выделить всё

        public static void ZERGOOD(string sn)
        {
            House house = GetHouseByTitle("Дом Б");
            house.Refresh(NodeInfoFlags.PollConnections);
            Lers.Poll.PollConnection pollConnection = house.PollConnections.FirstOrDefault<Lers.Poll.PollConnection>(x => x.Title == "Соединение1");
            IEnumerable<Equipment> equipmentList = new Equipment[] { GetDeviceBySn(sn)};
            pollConnection.SetEquipmentList(equipmentList);
            house.SaveAsync();
        }
Работает как для вновь создаваемой точки так и для уже созданной.
Закрыто