RUS
  • RUS
  • ENG

API сервиса Spodes to electro 5

Последние изменения: 05.09.2025

Содержание:


Запрос версии ПО:

Тип запроса: GET. Пример: <адрес_УСПД>/spodes_to_electro5/version

{
    "msg_type": "version"
}

Запрос серого списка ПУ:

Тип запроса: GET. Пример: <адрес_УСПД>/spodes_to_electro5/gray_list_meters

{
    "msg_type": "get_gray_list"
}

Запрос списка заданий ПУ:

Тип запроса: GET. Пример: <адрес_УСПД>/spodes_to_electro5/tasks

{
    "msg_type": "get_tasks"
}

Установка серого списка ПУ

Состав информации для ввода пользователем для серого списка ПУ:
Номер счетчика,
пароль высокого уровня для подключения к счетчику,
адрес счетчика (если 0 – то высчитываю сам),

Тип запроса: POST. Пример: <адрес_УСПД>/spodes_to_electro5/gray_list_meters

Пример json для установки серого списка счетчиков:

{
    "msg_type": "set_gray_list",
    "data": {
        "gray_list_meters": [
            {
                "modem_id":123456,
                "password":"qwerty123456",
                "meter_address":1625,
                "ip":"127.0.0.1",
                "port":100
},
            {
                "modem_id":7890,
                "password":"qwerty7890",
                "meter_address":2222,
                "ip":"127.0.0.1",
                "port":500
}
        ]
    }
} 

Удаление ПУ из серого списка

Тип запроса: DELETE. Пример: <адрес_УСПД>/spodes_to_electro5/gray_list_meters

{
    "msg_type": "delete_from_gray_list",
    "data": {
        "gray_list_meters": [
            123456,
            7890
]
    }
}

Установка заданий опроса ПУ

Задания для опроса хранятся в файле meters_tasks.xml на УСПД рядом с исполняемым файлом софта. 

Тип запроса: POST. Пример: <адрес_УСПД>/spodes_to_electro5/tasks

«comment for json» – чисто для комментариев в примере. Присылать его не нужно.

Пример json для установки заданий счетчиков:

{
    "msg_type": "set_tasks",
    "data": {
        "meters_tasks": [
            {
                "task_id": 1,
                "priority": 0,
                "execution_type": 2,
                "meter_ids":[
                    123456
],
                "meter_scripts": [
                    {
                        "comment for json": "service_id может быть: get, set, action. index - или индекс атрибута, или индекс метода, если service_id = action",
                        "service_id": "get",
                        "class_id": 7,
                        "obis": "1.0.98.1.0.255",
                        "index": 3,
                        "value":{
                            "comment for json": "(опциональный) новое значение атрибута/параметра метода. var_type - тип переменной, согласно DLMS, val - значение атрибута/параметра.",
                            "var_type": 16,
                            "val": 100
},
                        "range_descriptor":{
                            "comment for json": "описание селективной выборки по диапазону, если собираемый объект принадлежит классу General Profile [ИК:7, вер.:1];(опциональный).",
                            "from_value":{
                                "var_type": 16,
                                "val": 100
},
                            "to_value":{
                                "var_type": 16,
                                "val": 150
},
                            "selected_values":[
                                {
                                    "comment for json": "Capture_Object_Definition",
                                    "class_id": 7,
                                    "obis": "1.0.98.1.0.255",
                                    "index": 3,
                                    "data_index": 0
}
                            ]
                        },
                        "entry_descriptor":{
                            "comment for json": "описание селективной выборки по записям, если собираемый объект принадлежит классу General Profile. [ИК:7, вер.:1];(опциональный).",
                            "from_entry": 0,
                            "to_entry": 100,
                            "from_selected_value": 1,
                            "to_selected_value": 1000
}
                    }
                ],
                "execution_time_dates":[
                    {
                        "date": "30.11.2023",
                        "time": "15:30"
                    },
                    {
                        "comment for json": "Дата может отсутствовать, время должно быть всегда",
                        "time": "16:00"
                    }
                ]
            }
        ]
    }
}

Удаление заданий опроса ПУ

Тип запроса: DELETE. Пример: <адрес_УСПД>/spodes_to_electro5/tasks

{
    "msg_type": "delete_tasks",
    "data": {
        "task_ids": [
            1,
            2,
            3
]
    }
}

Запрос статусов выполнения команды переключения реле

Тип запроса: GET. Пример: <адрес_УСПД>/spodes_to_electro5/relay_execute_status

{
  "msg_type": "get_relay_execute_status"
}

В ответ приходит json с массивом статусов выполнения команды переключения реле вида:

{
    "relay_execute_status": [
        {
            "attempts_connection_to_meter": 1,
            "begin_execute_task": "20.02.2024 14:22:34",
            "end_execute_task": "0",
            "meter_id": "123456",
            "status": 1,
            "task_id": 1
},
        {
            "attempts_connection_to_meter": 2,
            "begin_execute_task": "20.02.2024 14:22:34",
            "end_execute_task": "20.02.2024 14:22:35",
            "meter_id": "56789",
            "status": 0,
            "task_id": 2
}
    ]
}

Запрос статусов выполнения команды смена пароля в ПУ

Тип запроса: GET. Пример: <адрес_УСПД>/spodes_to_electro5/change_meter_password_execute_status

{
    "msg_type": "get_change_meter_password_execute_status"
}

В ответ приходит json с массивом статусов выполнения команды переключения реле вида:

{
    "change_meter_password_execute_status": [
        {
            "attempts_connection_to_meter": 1,
            "begin_execute_task": "20.02.2024 14:22:34",
            "end_execute_task": "0",
            "meter_id": "123456",
            "status": 1,
            "task_id": 1
},
        {
            "attempts_connection_to_meter": 2,
            "begin_execute_task": "20.02.2024 14:22:34",
            "end_execute_task": "20.02.2024 14:22:35",
            "meter_id": "56789",
            "status": 0,
            "task_id": 2
}
    ]
}

Запрос статусов выполнения команды на смену тарифного расписания в ПУ

Тип запроса: GET. Пример:
<адрес_УСПД>/spodes_to_electro5/change_tariff_execute_status

{
    "msg_type": "get_change_tariff_execute_status"
}

В ответ приходит json с массивом статусов выполнения команды переключения реле вида:

{
    "change_tariff_execute_status": [
        {
            "attempts_connection_to_meter": 1,
            "begin_execute_task": "20.02.2024 14:22:34",
            "end_execute_task": "0",
            "meter_id": "123456",
            "status": 1,
            "task_id": 1
},
        {
            "attempts_connection_to_meter": 2,
            "begin_execute_task": "20.02.2024 14:22:34",
            "end_execute_task": "20.02.2024 14:22:35",
            "meter_id": "56789",
            "status": 0,
            "task_id": 2
}
    ]
}

Запрос всех статусов выполнения заданий

Тип запроса: GET. Пример:
<адрес_УСПД>/spodes_to_electro5/task_execute_statuses

{
    "msg_type": "get_task_execute_statuses"
}


В ответ приходит json с массивом статусов выполнения заданий вида:

{
    "task_execute_statuses": [
        {
            "attempts_connection_to_meter": 6,
            "begin_execute_task": "27.06.2024 09:49:35",
            "end_execute_task": "27.06.2024 09:49:48",
            "meter_id": "9787879",
            "status": 6,
            "task_id": 1625
},
        {
            "attempts_connection_to_meter": 6,
            "begin_execute_task": "27.06.2024 09:49:35",
            "end_execute_task": "27.06.2024 09:49:47",
            "meter_id": "9775601",
            "status": 6,
            "task_id": 5712
}
    ]
}

Ключ – номер ПУ, значение массив статусов для этого ПУ.

Помогла ли вам статья?