26

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

Добрый день, tdt66!

Спасибо за обращение, там была ошибка, а именно - ответ был бинарным, а библиотека пыталась его декодировать как utf8, из-за этого и получался "битый" zip файл. Мы поправили это и Вы можете обновить ее и попробовать снова.

Про импорт - для импорта необходимо послать запрос c content-type: multipart/form-data, на данный момент библиотека этого не позволяет.

27

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

mitu пишет:

Добрый день, tdt66!

Спасибо за обращение, там была ошибка, а именно - ответ был бинарным, а библиотека пыталась его декодировать как utf8, из-за этого и получался "битый" zip файл. Мы поправили это и Вы можете обновить ее и попробовать снова.

Про импорт - для импорта необходимо послать запрос c content-type: multipart/form-data, на данный момент библиотека этого не позволяет.

да , все работает ! спасибо .
и будет ли доработка чтобы импорт был возможен ?
иначе насколько я понимаю надо в обход импорт организовывать ?

подпись сломали .. впрочем не удивительно
28

Python библиотека для Remote Api от Gurtam

(24/03/2020 18:44:02 отредактировано mitu)

Re: Python библиотека для Remote Api от Gurtam

Добрый день, tdt66!

Да, на данный момент только в обход (про доработку - увы сказать не могу когда будет)

Но это можно быстро реализовать своими руками с помощью библиотеки requests

import requests
import wialon


def upload(api, file, unit_id):
    files = {'file': file}
    base_url = 'https://hst-api.wialon.com/wialon/ajax.html?'

    url = base_url + 'svc=exchange/import_messages&params={"itemId":%s}&sid=%s'
    r = requests.post(url % (unit_id, api.sid), files=files)
    print(r.text)


def main(token):
    api = wialon.Wialon(scheme='https', port=443)
    unit_id = YOUR_UNIT_ID
    response = api.token_login({'token': token})
    api.sid = response['eid']
    try:
        with open('filename.zip', 'rb') as f:
            upload(api, f, unit_id)
    finally:
        api.core_logout()
29

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

понял , спасибо за пример , воспользуемся ..

подпись сломали .. впрочем не удивительно
30

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

В чем преимущество использования данной либы в сравнении с обычным requests?

Independent Expert
31

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

dmytro.yaroshenko пишет:

В чем преимущество использования данной либы в сравнении с обычным requests?

Либа - просто обёртка над RemoteAPI. Из плюсов - она сохраняет сессию (sid) и автоматом подставляет её в запросы.

Если requests решает ваши задачи - используйте его.

32

Python библиотека для Remote Api от Gurtam

(23/01/2021 13:50:46 отредактировано gpe)

Re: Python библиотека для Remote Api от Gurtam

Здравствуйте.

Помогите пожалуйста отключить проверку SSL,
нужно для работы с Local серверами на которых нет сертификатов, вот ошибка:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>

Python 3.6.9
urllib3==1.22

Спасибо!

33

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

gpe пишет:

Здравствуйте.

Помогите пожалуйста отключить проверку SSL,
нужно для работы с Local серверами на которых нет сертификатов, вот ошибка:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>

Python 3.6.9
urllib3==1.22

Спасибо!

Если нет сертификатов, попробуйте обращаться по http вместо https.

34

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

shmi пишет:
gpe пишет:

Здравствуйте.

Помогите пожалуйста отключить проверку SSL,
нужно для работы с Local серверами на которых нет сертификатов, вот ошибка:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)>

Python 3.6.9
urllib3==1.22

Спасибо!

Если нет сертификатов, попробуйте обращаться по http вместо https.

На них закрыт http, только через https, изменить на Local я ничего не могу.

35

Python библиотека для Remote Api от Gurtam

(22/01/2022 19:31:16 отредактировано dmytro.yaroshenko)

Re: Python библиотека для Remote Api от Gurtam

Сделал асинхронный форк библиотеки на aiohttp
py-aiowialon

Добавил Wialon.start_poling() метод и декоратор Wialon.event_handler() для отслеживания avl_evts,
token теперь можно указать прямо при создании объекта класса Wialon

+ Установка
pip install aiohttp
pip install py-aiowialon
+ Пример использования
import asyncio
from aiowialon import Wialon, WialonEvents, WialonEvent, flags


is_init = True


def run():

    wialon_session = Wialon(host='TEST HOST', token='TEST TOKEN')

    async def add_evts_to_session():
        spec = {
            'itemsType': 'avl_unit',
            'propName': 'sys_name',
            'propValueMask': '*',
            'sortType': 'sys_name'
        }
        interval = {"from": 0, "to": 100}
        units = await wialon_session.core_search_items(spec=spec, force=1, flags=5, **interval)
        ids = [u['id'] for u in units['items']]

        spec = [
            {
                "type": "col",
                "data": ids,
                "flags": flags.ITEM_DATAFLAG_BASE + flags.ITEM_UNIT_DATAFLAG_POS,
                "mode": 0
            }
        ]
        await wialon_session.core_update_data_flags(spec=spec)

    @wialon_session.event_handler
    async def event_handler(events: WialonEvents):
        global is_init
        if is_init:
            await add_evts_to_session()
            is_init = False

        if 116106 in events.data:
            item_event: WialonEvent = events.data[116106]
            print(item_event.item, item_event.e_type, item_event.desc)

    @wialon_session.event_handler
    async def event_handler(events: WialonEvents):
        spec = {
            'itemsType': 'avl_unit',
            'propName': 'sys_name',
            'propValueMask': '*',
            'sortType': 'sys_name'
        }
        interval = {"from": 0, "to": 0}
        units = await wialon_session.core_search_items(spec=spec, force=1, flags=5, **interval)
        print(events.__dict__, units['totalItemsCount'])

    wialon_session.start_poling()


if __name__ == '__main__':
    run()
Independent Expert
36

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

Не проще ли используя threading держать сессию в рамках приложения.... И подставлять sid в запросы...

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
37

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

А в классе Виалон, желательно ещё метод получения токена, путем предоставления логина/пароля/урл_апи.

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
38

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

developer77 пишет:

А в классе Виалон, желательно ещё метод получения токена, путем предоставления логина/пароля/урл_апи.

этот метод не доступен уже очень давно, токен можно получить только через токен менеджер, через веб-форму авторизации или из уже открытой сессии, в веб-форму не возможно подставить пароль заведомо, только ввести ручками.

Independent Expert
39

Python библиотека для Remote Api от Gurtam

(22/01/2022 19:50:43 отредактировано dmytro.yaroshenko)

Re: Python библиотека для Remote Api от Gurtam

developer77 пишет:

Не проще ли используя threading держать сессию в рамках приложения.... И подставлять sid в запросы...


Проще с помощью event_handler реагировать на ивенты, если нужно отслеживать изменения в рамках одной сессии, по аналогии с тем как это делает wialon.js.

Если у вас нет необходимости следить за ивентами, то можете поддерживать сессию открытой любым удобным вам способом, вызывать avl_evts ручками, когда вам будет нужно.

Опять же зависит от того какой подход написания кода вы предпочли, мне удобнее работать с async методами объекта, чем держать запущенным еще один поток

Independent Expert
40

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

developer77 пишет:

Не проще ли используя threading держать сессию в рамках приложения.... И подставлять sid в запросы...

к примеру, для приложения на базе PyQt5 правильно будет объявить QThread и внутри него вызывать класс WIalon из wialon-python, на каком-то асинхронном фреймворке типа aiogram - лучше воспользоваться моим форком py-aiowialon

Independent Expert
41

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

dmytro.yaroshenko пишет:

Сделал асинхронный форк библиотеки на aiohttp
py-aiowialon

Добавил Wialon.start_poling() метод и декоратор Wialon.event_handler() для отслеживания avl_evts,
token теперь можно указать прямо при создании объекта класса Wialon

+ Установка
pip install aiohttp
pip install py-aiowialon
+ Пример использования
import asyncio
from aiowialon import Wialon, WialonEvents, WialonEvent, flags


is_init = True


def run():

    wialon_session = Wialon(host='TEST HOST', token='TEST TOKEN')

    async def add_evts_to_session():
        spec = {
            'itemsType': 'avl_unit',
            'propName': 'sys_name',
            'propValueMask': '*',
            'sortType': 'sys_name'
        }
        interval = {"from": 0, "to": 100}
        units = await wialon_session.core_search_items(spec=spec, force=1, flags=5, **interval)
        ids = [u['id'] for u in units['items']]

        spec = [
            {
                "type": "col",
                "data": ids,
                "flags": flags.ITEM_DATAFLAG_BASE + flags.ITEM_UNIT_DATAFLAG_POS,
                "mode": 0
            }
        ]
        await wialon_session.core_update_data_flags(spec=spec)

    @wialon_session.event_handler
    async def event_handler(events: WialonEvents):
        global is_init
        if is_init:
            await add_evts_to_session()
            is_init = False

        if 116106 in events.data:
            item_event: WialonEvent = events.data[116106]
            print(item_event.item, item_event.e_type, item_event.desc)

    @wialon_session.event_handler
    async def event_handler(events: WialonEvents):
        spec = {
            'itemsType': 'avl_unit',
            'propName': 'sys_name',
            'propValueMask': '*',
            'sortType': 'sys_name'
        }
        interval = {"from": 0, "to": 0}
        units = await wialon_session.core_search_items(spec=spec, force=1, flags=5, **interval)
        print(events.__dict__, units['totalItemsCount'])

    wialon_session.start_poling()


if __name__ == '__main__':
    run()

а зачем ? виалон же однопоточное изделие . нельзя одновременно несколько запросов делать иначе БАН !

подпись сломали .. впрочем не удивительно
42

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

Почему.....

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
43

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

tdt66 пишет:

а зачем ? виалон же однопоточное изделие . нельзя одновременно несколько запросов делать иначе БАН !

А как-же batch-запросы?

44

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

Да и sid можно сменить и слать несколько параллельных запросов

gps-report.ru
Разработка приложений для Wialon
Мы расширяем возможности мониторинга!
Telegram: @dire77
45

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

SanderAMC пишет:
tdt66 пишет:

а зачем ? виалон же однопоточное изделие . нельзя одновременно несколько запросов делать иначе БАН !

А как-же batch-запросы?

в чем проблема бача и однопоточности ?

подпись сломали .. впрочем не удивительно
46

Python библиотека для Remote Api от Gurtam

(13/12/2023 23:56:05 отредактировано kenesg12)

Re: Python библиотека для Remote Api от Gurtam

Всем привет!
Создаю следующий скрипт для отправки команды на ТС. В настройках ТС команды созданы, запрос unit/get_command_definition_data отрабатывает и возвращает список добавленных команд. На самом сайте команды отправляются и корректно выполняются на устройствах, а вот через api не хочет работать. Делаю так:

    param = {"itemId": 27602522, "commandName": "output_off", "linkType": "tcp", "param": "1|", "timeout": 15}
    try:
        r = wialon_api.unit_exec_cmd(param)
        print(r)
    except WialonError as e:
        print(e)

Но возвращает ошибку error: 5
Что я делаю не так?

  • Python библиотека для Remote Api от Gurtam
47

Python библиотека для Remote Api от Gurtam

Re: Python библиотека для Remote Api от Gurtam

kenesg12 пишет:

Всем привет!
Создаю следующий скрипт для отправки команды на ТС. В настройках ТС команды созданы, запрос unit/get_command_definition_data отрабатывает и возвращает список добавленных команд. На самом сайте команды отправляются и корректно выполняются на устройствах, а вот через api не хочет работать. Делаю так:

    param = {"itemId": 27602522, "commandName": "output_off", "linkType": "tcp", "param": "1|", "timeout": 15}
    try:
        r = wialon_api.unit_exec_cmd(param)
        print(r)
    except WialonError as e:
        print(e)

Но возвращает ошибку error: 5
Что я делаю не так?


UP! UP! UP!
Ребята помогите пожалуйста, любая информация, направьте, очень прошу!

48

Python библиотека для Remote Api от Gurtam

(16/12/2023 18:59:33 отредактировано kalaschnikow)

Re: Python библиотека для Remote Api от Gurtam

Сорри, если не в тему - я ни в Пайтоне, ни в Wialon SDK библиотеке ничего не понимаю - но в качестве идеи (вдруг поможет):

https://sdk.wialon.com/wiki/en/pro/remo … t/exec_cmd

Там вроде речь о "unit/exec_cmd", а не "unit_exec_cmd".

И еще идея: покрути значение param. Что-то оно подозрительное какое-то smile Да и называется в документации "cmdParam", а не просто "param".

49

Python библиотека для Remote Api от Gurtam

(16/12/2023 19:03:21 отредактировано kenesg12)

Re: Python библиотека для Remote Api от Gurtam

kalaschnikow пишет:

Сорри, если не в тему - я ни в Пайтоне, ни в Wialon SDK библиотеке ничего не понимаю - но в качестве идеи (вдруг поможет):

https://sdk.wialon.com/wiki/en/pro/remo … t/exec_cmd

Там вроде речь о "unit/exec_cmd", а не "unit_exec_cmd".

И еще идея: покрути значение param. Что-то оно подозрительное какое-то smile

Спасибо за ответ. По поводу "unit/exec_cmd" ошибок нет, это особенность библиотеки "python-wialon", там нужно писать именно так как я указал.
Да я тоже подозреваю что в параметрах, но где и как? CmdParam или param зависит от типа версии wialon, в моей именно param, иначе сразу сообщает в самом ответе, что название параметра неверное и нужно указать именно param.  Вроде все остальное  перепробовал.
Прошу помочь!

50

Python библиотека для Remote Api от Gurtam

(16/12/2023 20:46:31 отредактировано kalaschnikow)

Re: Python библиотека для Remote Api от Gurtam

Конечно, лучше всего программеры с Гуртам могли бы помочь, но... похоже пока придется без них.

Ты намекал, что мол "пешком команда выполняется". Пришли что выполняется собссно. Какие команды с какими параметрами и т.д.

Как я уже говорил, я не спецулист, но может просто у тебя "глаз замылился" и вдргу я (или кто-то другой)  что-нибудь увижу...