eldis

package module
v0.0.0-...-6af2b40 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2023 License: MIT Imports: 13 Imported by: 0

README

Библиотека для чтения показаний приборов учета энергоресурса через API АИИС ЭЛДИС.

Библиотека позволяет:

  • получать список приборов учета энергоресурса, связанных с учетной записью пользователя АИИС ЭЛДИС;
  • читать архивы нормализованных (прошедших достоверизацию, то есть проверку на наличие некорректных и/или отсутствующих показаний и периодов отклонений в нормальной работе прибора) показаний;
  • читать архивы "сырых" показаний, т.е. показаний в том виде, в котором они получены непосредственно от прибора учета

Всё это необходимо, если вам нужно интегрировать свою информационную систему с АИИС ЭЛДИС и/или использовать свою реализацию алгоритмов достоверизации показаний приборов учета.

Использование

import "github.com/vitpelekhaty/go-eldis/v2"

Интерфейс Connection

Интерфейс обеспечивает низкоуровневое взаимодействие с API АИИС ЭЛДИС.

Пример чтения списка приборов учета в формате JSON:

package main

import (
	"bytes"
	"context"
	"fmt"
	"log"
	
	"github.com/vitpelekhaty/go-eldis/v2"
	"github.com/vitpelekhaty/go-eldis/v2/responses"
)

func main() {
	...
	conn, err := eldis.Connect(context.Background(), rawURL, eldis.Credentials{Username: username, Password: password, AccessToken: accessToken})
	
	if err != nil {
		log.Fatal(err)
	}

	defer func() {
		_ = conn.Close(context.Background())
	}()

	b, err := conn.ListForDevelopment(context.Background())

	if err != nil {
		log.Fatal(err)
	}

	sb := responses.Extract(responses.SectionListForDevelopment, bytes.NewBuffer(b))

	fmt.Print(string(sb))
}

Пакет responses

Пакет нужен для извлечения и разбора блоков архивов показаний из ответа API АИИС ЭЛДИС, чтения отдельных полей показаний и т.п.

Пример ниже демонстрирует чтение часового архива "сырых" показаний по точке учета (тепловому вводу прибора учета):

package main

import (
	"bytes"
	"context"
	"log"
	
	"github.com/vitpelekhaty/go-eldis/v2"
	"github.com/vitpelekhaty/go-eldis/v2/responses"
	"github.com/vitpelekhaty/go-eldis/v2/responses/readings/raw"
)

func main() {
	...
	conn, err := eldis.Connect(context.Background(), rawURL, eldis.Credentials{Username: username, Password: password, AccessToken: accessToken})
	
	if err != nil {
		log.Fatal(err)
	}

	defer func() {
		_ = conn.Close(context.Background())
	}()

	b, err := conn.RawReadings(context.Background(), pointID, eldis.HourArchive, from, to)

	if err != nil {
		log.Fatal(err)
	}
	
	// извлекаем из ответа API данные блока "сырых" показаний
	sb := responses.Extract(responses.SectionRaw, bytes.NewBuffer(b))

	// выполняем чтение строк архива "сырых" показаний
	ctx, cancelFunc := context.WithCancel(context.Background())
	defer cancelFunc()
	
	items, err := raw.Parse(ctx, bytes.NewReader(sb))

	if err != nil {
		log.Fatal(err)
	}

	for item := range items {
		// если прочитанный элемент не содержит ошибку разбора
		if !item.IsError() {
			DoSomething(item)
		} else {
			log.Print(item.E)
			cancelFunc()
		}
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Connection

type Connection struct {
	// OnUnhandledError событие появления ошибки внутри соединения, которая не передается вызывающей стороне, но может
	// записана в лог вызывающей стороной
	OnUnhandledError UnhandledErrorFunc
	// contains filtered or unexported fields
}

Connection соединение с API ЭЛДИС

func NewConnection

func NewConnection(client *http.Client) (*Connection, error)

NewConnection возвращает новое соединение с API ЭЛДИС

func (*Connection) Close

func (c *Connection) Close() error

Close закрывает соединение с API ЭЛДИС

func (*Connection) CloseWithContext

func (c *Connection) CloseWithContext(ctx context.Context) error

CloseWithContext закрывает соединение с API ЭЛДИС

func (*Connection) Connected

func (c *Connection) Connected() bool

Connected возвращает статус соединения с API ЭЛДИС

func (*Connection) DataNormalized

func (c *Connection) DataNormalized(regPointID string, archive archive.DataArchive, from, to RequestTime,
	dateType date.Type, flags ...Flag) ([]byte, error)

DataNormalized вызывает метод /api/v2/data/normalized для получения нормализованных (после достоверизации) показаний на точке учета

func (*Connection) DataNormalizedWithContext

func (c *Connection) DataNormalizedWithContext(ctx context.Context, regPointID string, archive archive.DataArchive,
	from, to RequestTime, dateType date.Type, flags ...Flag) ([]byte, error)

DataNormalizedWithContext вызывает метод /api/v2/data/normalized для получения нормализованных (после достоверизации) показаний на точке учета

func (*Connection) ListForDevelopment

func (c *Connection) ListForDevelopment(flags ...Flag) ([]byte, error)

ListForDevelopment вызывает метод /api/v2/tv/listForDevelopment API для получения списка доступных точек учета

func (*Connection) ListForDevelopmentWithContext

func (c *Connection) ListForDevelopmentWithContext(ctx context.Context, flags ...Flag) ([]byte, error)

ListForDevelopmentWithContext вызывает метод /api/v2/tv/listForDevelopment API для получения списка доступных точек учета

func (*Connection) Open

func (c *Connection) Open(rawURL string, withAuth WithAuthOption) error

Open открывает соединение с API ЭЛДИС

func (*Connection) OpenWithContext

func (c *Connection) OpenWithContext(ctx context.Context, rawURL string, withAuth WithAuthOption) error

OpenWithContext открывает соединение с API ЭЛДИС

func (*Connection) RawData

func (c *Connection) RawData(regPointID string, archive archive.DataArchive, from,
	to RequestTime, flags ...Flag) ([]byte, error)

RawData вызывает метод /api/v2/data/rawData для получения "сырых" показаний на точке учета

func (*Connection) RawDataWithContext

func (c *Connection) RawDataWithContext(ctx context.Context, regPointID string, archive archive.DataArchive, from,
	to RequestTime, flags ...Flag) ([]byte, error)

RawDataWithContext вызывает метод /api/v2/data/rawData для получения "сырых" показаний на точке учета

func (*Connection) UOMList

func (c *Connection) UOMList(flags ...Flag) ([]byte, error)

UOMList вызывает метод /api/v2/uom/list API для получения списка единиц измерения

func (*Connection) UOMListWithContext

func (c *Connection) UOMListWithContext(ctx context.Context, flags ...Flag) ([]byte, error)

UOMListWithContext вызывает метод /api/v2/uom/list API для получения списка единиц измерения

type ConnectionOption

type ConnectionOption func(c *Connection)

ConnectionOption параметр соединения с API ЭЛДИС

type Flag

type Flag byte

Flag тип флага выполнения методов API

const (
	// CompressedResponse использовать сжатие тела ответа API
	CompressedResponse Flag = iota
	// UseCompressedResponseFlagInHeader использовать параметр compressed-response в заголовке запроса
	UseCompressedResponseFlagInHeader
)

type InternalError

type InternalError struct {
	// RawURL адрес метода API
	RawURL string
	// Method HTTP метод
	Method string
	// Status состояние ошибки
	Status *response.Message
	// Err внутренняя ошибка API
	Err error
}

InternalError внутренняя ошибка АИСКУТЭ ЭЛДИС при обработке запроса

func (*InternalError) Error

func (e *InternalError) Error() string

type MethodCallError

type MethodCallError struct {
	// RawURL адрес метода API
	RawURL string
	// Method HTTP-метод
	Method string
	// Err ошибка вызова метода
	Err error
}

MethodCallError ошибка вызова метода API

func (*MethodCallError) Error

func (e *MethodCallError) Error() string

type RequestTime

type RequestTime time.Time

RequestTime описывает формат времени, принятый в запросах к АИСКУТЭ ЭЛДИС

func (*RequestTime) String

func (rt *RequestTime) String() string

String возвращает строковое представление типа RequestTime

type UnhandledErrorFunc

type UnhandledErrorFunc func(err error)

UnhandledErrorFunc обработчик появления ошибки внутри соединения с API ЭЛДИС

type WithAuthOption

type WithAuthOption ConnectionOption

WithAuthOption тип параметра соединения для авторизации клиента к API ЭЛДИС

func WithAuth

func WithAuth(username, password, key string) WithAuthOption

WithAuth обязательный параметр соединения для авторизации клиента к API ЭЛДИС

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL