Использование API веб-сервиса в PowerShell

Подскажите, вот здесь: http://docs.lers.ru/docs/pages/viewpage.action?pageId=3408139 актуальная информация? Методы не соответствуют методам описанным вот тут: http://docs.lers.ru/docs/pages/viewpage.action?pageId=3407987

Что-то не получается потребление по точке учета забрать, как в примере. Список точек забираю, а потребление - нет.

Нашел пример скрипта на github-е, сделал свой. И вдруг внезапно по точке учета, которая даже не на автоопросе и по которой не должно быть данных - выводятся данные. Что я делаю неправильно?

$url = “замазано

Создаем прокси класс для работы со службой

$webservice = New-WebServiceProxy -uri $url

Устанавливаем куки-контейнер, необходим для авторизации пользователя

$webservice.CookieContainer = New-Object System.Net.CookieContainer

Входим в систему ЛЭРС УЧЕТ

$response1 = $webservice.Login(‘замазано’, ‘замазано’)

Если произошла ошибка, прекращаем работу

if($response1.IsError -eq $true){
Write-Host $response1.ErrorMessage
exit
}

Получаем список точек учета

$response2 = $webservice.GetMeasurePointList()
if ($response2.MeasurePointList.Length -le 0) {
Write-Host ‘Список точек учета пуст’
exit
}
$endDate = [DateTime]::Today
$startDate = New-Object DateTime($endDate.Year, $endDate.Month, 1)
foreach ($mp in $response2.MeasurePointList)
{
Write-Host $mp.Number ‘’ $mp.FullTitle '’ $mp.Title
Write-Host $mp.systemtype
$response3 = $webservice.GetMeasurePointConsumption($mp.Number, $startDate, $endDate, “Day”)
if($response3.Data.Length -gt 0){

Выводим таблицу значений

foreach ($data_ in $response3.Data) {
Write-Host $data_.DateTime ‘: T_in=’ $data_.T_in ‘: T_out=’ $data_.T_out ‘: Q_in=’ $data_.Q_in ‘: Q_out=’ $data_.Q_out ‘: Q_delta=’ $data_.Q_delta
}
}
Write-Host ‘------------------------------------------------------------------------------’
}277 _ замазано _ Электроснабжение
Electricity
01.10.2018 0:00:00 : T_in= 45,8600006103516 : T_out= : Q_in= 0,00700000021606684 : Q_out= : Q_delta= 0,00700000021606684
02.10.2018 0:00:00 : T_in= 52,1399993896484 : T_out= : Q_in= 0,0230000000447035 : Q_out= : Q_delta= 0,0230000000447035
03.10.2018 0:00:00 : T_in= 50,3800010681152 : T_out= : Q_in= 0,0160000007599592 : Q_out= : Q_delta= 0,0160000007599592
04.10.2018 0:00:00 : T_in= 52,8199996948242 : T_out= : Q_in= 0,0199999995529652 : Q_out= : Q_delta= 0,0199999995529652
05.10.2018 0:00:00 : T_in= 49,7000007629395 : T_out= : Q_in= 0,0120000001043081 : Q_out= : Q_delta= 0,0120000001043081
06.10.2018 0:00:00 : T_in= 51,7000007629395 : T_out= : Q_in= 0,00800000037997961 : Q_out= : Q_delta= 0,00800000037997961
07.10.2018 0:00:00 : T_in= 38,2599983215332 : T_out= : Q_in= 0 : Q_out= : Q_delta= 0
08.10.2018 0:00:00 : T_in= 47,4099998474121 : T_out= : Q_in= 0,00499999988824129 : Q_out= : Q_delta= 0,00499999988824129
09.10.2018 0:00:00 : T_in= 50,1399993896484 : T_out= : Q_in= 0,0109999999403954 : Q_out= : Q_delta= 0,0109999999403954
10.10.2018 0:00:00 : T_in= 52,2700004577637 : T_out= : Q_in= 0,0179999992251396 : Q_out= : Q_delta= 0,0179999992251396
11.10.2018 0:00:00 : T_in= 51,1599998474121 : T_out= : Q_in= 0,0160000007599592 : Q_out= : Q_delta= 0,0160000007599592
12.10.2018 0:00:00 : T_in= 52,0499992370605 : T_out= : Q_in= 0,0199999995529652 : Q_out= : Q_delta= 0,0199999995529652
13.10.2018 0:00:00 : T_in= 48,939998626709 : T_out= : Q_in= 0,00899999961256981 : Q_out= : Q_delta= 0,00899999961256981
14.10.2018 0:00:00 : T_in= 37,9599990844727 : T_out= : Q_in= 0,00100000004749745 : Q_out= : Q_delta= 0,00100000004749745
15.10.2018 0:00:00 : T_in= 45,9000015258789 : T_out= : Q_in= 0,00800000037997961 : Q_out= : Q_delta= 0,00800000037997961
16.10.2018 0:00:00 : T_in= 50,310001373291 : T_out= : Q_in= 0,0140000004321337 : Q_out= : Q_delta= 0,0140000004321337
17.10.2018 0:00:00 : T_in= 49,9099998474121 : T_out= : Q_in= 0,0130000002682209 : Q_out= : Q_delta= 0,0130000002682209
18.10.2018 0:00:00 : T_in= 52,1100006103516 : T_out= : Q_in= 0,0209999997168779 : Q_out= : Q_delta= 0,0209999997168779
19.10.2018 0:00:00 : T_in= 51,2599983215332 : T_out= : Q_in= 0,0199999995529652 : Q_out= : Q_delta= 0,0199999995529652
20.10.2018 0:00:00 : T_in= 50,25 : T_out= : Q_in= 0,00899999961256981 : Q_out= : Q_delta= 0,00899999961256981
21.10.2018 0:00:00 : T_in= 31,9699993133545 : T_out= : Q_in= 0 : Q_out= : Q_delta= 0
22.10.2018 0:00:00 : T_in= 42,7400016784668 : T_out= : Q_in= 0,00400000018998981 : Q_out= : Q_delta= 0,00400000018998981
23.10.2018 0:00:00 : T_in= 50,8800010681152 : T_out= : Q_in= 0,0179999992251396 : Q_out= : Q_delta= 0,0179999992251396
24.10.2018 0:00:00 : T_in= 49,5099983215332 : T_out= : Q_in= 0,017000000923872 : Q_out= : Q_delta= 0,017000000923872
25.10.2018 0:00:00 : T_in= 31,3633346557617 : T_out= : Q_in= 0 : Q_out= : Q_delta= 0

Безымянный.png

Спасибо за обращение! Действительно информация в примере несколько устарела. Мы обновили статью с примером работы на PowerShell.

Спасибо за обновление, но при выполнении
$response3 = $webservice.GetMeasurePointConsumption($mp.id, $startDate, $endDate, [LersWebserviceNamespace.DeviceDataType]::Day.value__)
возникает ошибка:
Невозможно найти тип [LersWebserviceNamespace.DeviceDataType]: убедитесь в том, что сборка, содержащая этот тип, загружена.
D: empБезИмени1.ps1:30 знак:126

  • $response3 = $webservice.GetMeasurePointConsumption($mp.id, $startDate, $endDate, [LersWebserviceNamespace.DeviceDataType] <<<< ::Day.value__)
  • CategoryInfo : InvalidOperation: (LersWebserviceNamespace.DeviceDataType:String) [], RuntimeException
  • FullyQualifiedErrorId : TypeNotFound

Вот так - отрабатывает без ошибок:
$response3 = $webservice.GetMeasurePointConsumption($mp.id, $startDate, $endDate, ‘Day’)

Я так понимаю, что выражение [LersWebserviceNamespace.DeviceDataType]::Day.value__ должно возвращать значение 64, как указано в этой дкументации.
Возможно, у вас этот код работает, потому что у вас установлен lers framework, и где-то в скрипте подключен модуль. У меня же на компьютере код не работает, хотя установлен клиент ЛЭРС - та же ошибка. Видимо, нужно что-то подключить.

Я проверил - метод GetMeasurePointConsumption работает с указанием последнего параметра в виде строкового значения.
Исправьте документацию.

Как получить интеграторы по точке учета? С помощью GetMeasurePointTotals почему-то не получается - в $response3 ничего не возвращается.

Мы проверили работоспособность скрипта на машине, на которой не установлен ЛЭРС УЧЕТ. Все прекрасно работает.
Предложенный вами вариант тоже работает. Скорее всего в PowerShell происходит автоматическая подстановка значения элемента перечисления по его имени.
Документация не требует каких либо исправлений, так как в ней все написано верно. По факту функция GetMeasurePointConsumption принимает значение элемента перечисления.

Данная ошибка вызвана скорее всего тем, что вы не указали пространство имен “LersWebserviceNamespace” при инициализации $webservice. Посмотрите внимательно обновленный пример. Лучше всего скопируйте его полностью и проверьте его работоспособность.

У нас на форуме существует правило: один вопрос - одна тема. Создайте, пожалуйста, отдельную тему по данному вопросу.

Всё, разобрался. Закрывайте тему.