Просмотр полной версии : Утилита модификации экспорта json в OwenCloud - переименование параметров
Доброго дня
При экспорте сетевых Slave переменных в файл json для импорта в облаке OwenCloud экспорт несколько странный - в описании параметра стоит символьное имя переменной, а в обозначении параметра маловразумительная комбинация буквы "P" и Modbus-адреса.
В то же время при экспорте сетевых переменных в cvs файл доступны как настоящее описание переменной (комментарии), так и символьное имя переменной.
По хорошему, когда переменные описываются в облаке руками - заполнение ограничивается комментарием и символьным именем.
Может быть кто-нибудь тоже не в восторге от штатного импорта в облако и он сделал утилиту модификации json с заполнением всего двух полей из файла экспорта cvs?
Поделитесь, пожалуйста.
Не может быть, чтобы всех устраивает такое положение дел...
Покажу примеры
вот результат экспорта из OwenLogic с последующим импортом в OwenCloud
84232
а это результат набора переменных в OwenCloud руками
84233
И в дальнейшем - при обработке в облаке программой, событиями - удобнее сверяться с символами, уже знакомыми из собственной программы в ПР, чем странными безликими, без возможности редактирования этих полей названиями P16365, P16445 и прочим
Неужели я одинок в странных желаниях?
А типа варианта сделать импорт из csv в облаке нет?
з.ы. ну нет у меня облака, вернее есть, но так и не прикрутил ничего.
Я так понимаю, экспорт в json из Овен Лоджик это через какое-то расширение сделан для тех ПР, которые с сетевым портом, или для любых?
Просто для ПР200 у себя вижу только в csv
И переименовать в ваши имена в облаке нет возможности?
Да, json формируется расширением, импорт в облако только из json.
cvs - для чего-то другого (я скриптом переставляю поля, меняю кодировку и получаю импорт для панели Weintek - 200-300 тегов описываю в Weintek за 30 секунд).
Я бы принял и такой импорт, если бы оставалась возможность редактирования в облаке - быстро импортировать, продемонстрировать работоспособность и постепенно переработать теги в спокойной обстановке. Но нет такой возможности - менять можно только описание, а этого мало. Вот только что перепроверил.
а выложите в архиве json и csv от одного и того же прибора.
Видимо писали все это разные люди, особенно любители json в Овене :)
Скрипт я сделаю - там несложно - замена подстроки в строке по таблице замен с предварительным выделением диапазона строк, относящихся к одному тегу.
Но, вдруг у кого-то уже есть готовый на распространённом языке (bat с sed/awk/gred, или python, или ps1).
Вероятно, сделаю на FreePascal.
Ну раз никто не ответил, видимо придется самим.
а выложите в архиве json и csv от одного и того же прибора.
Видимо писали все это разные люди, особенно любители json в Овене :)
Прикладываю.
json там вполне сериализуется. Кроме поля code что-то требуется менять? code точно можно менять, насколько помню, только проверка нужна, чтобы оно не повторялось.
Предполагаю менять два поля - "code" и "name".
А json можно открыть в Exel или LibOo? Я бы открыл и json и cvs и скопировал столбцами, потом сохранил json.
json это просто текстовый файл по сути, с определенным синтаксисом. тут либо действительно скриптами но надо же из двух файлов делать. так как в json нет того, что есть в csv/
я бы загружал json файл через сереализацию, потом csv для замены нужных полей и сохранял бы новый json файл.
на C# это не трудно сделать в принципе. Учитывая, что Owen Logic написан на NET6 то доставлять ничего не требуется, оно там и так все стоит.
"code": "rVar1",
"read_function": "3",
"write_function": "16",
"address": "4000",
"device_format": "float",
"register_least_byte_first": false,
"least_register_first": true,
"measure": "none",
"precision": 0,
"multiplier": "1.0000000",
"bitmask_enabled": false,
"bitmask_value": null,
"name": {
"ru-RU": "Давление в трубе",
"en-US": "rVar1"
},
"in_operative": true,
"in_configuration": false,
"in_manageable": false,
"in_parameters": true,
"in_tables": false,
"in_graphs": false,
"in_events": false,
"category": "7b6a7ee2-a4ab-40d9-a343-7aafae3ac237"
Я правильно понимаю, что этого достаточно? потому что я там и другое увидел, например в csv на переменной nVar1 указано что она BitMask, а в json у нее "bitmask_enabled": false, "bitmask_value": null,
ну и как всегда, мусора по самые уши, если кто покажет, как в json не писать переменные с false и чтобы при этом не падала сериализация, плюс в карму... :)
AlexCrane
10.06.2025, 09:36
Делаю сейчас такую утилиту, но пока сделал как у овен - в code пишу P и номер регистра. Добавлю чтобы можно было добавлять имя переменной, смотрится конечно лучше.
AlexCrane о, на чем пишите ?
AlexCrane
10.06.2025, 09:42
AlexCrane о, на чем пишите ?
На древнем Delphi 6.
Тут понадобилось 400 регистров в облако загнать и что то мне взгрустнулось. Решил что быстрее утилиту напишу.
упс, тут не подскажу. Если там есть сериализация json то принцип идеи могу пояснить.
ну вроде есть - https://nweb42.com/books/delphi/rabota-s-json-dannymi/
суть. шаг 1 - загружаем наш json, который выдало расширение.
шаг 2, загружаем наш csv и идем по нему циклом, забирая имена и коды, которые нам нужны и меняем в загруженном json (опять же для простоты пользуем Linq запросы, если они есть в Delphi)
шаг 3 - выгружаем новый json сериализацией.
типа всё :) в случае с C# надо правильно создать классы и указать список классов для сериализации и обратно. В Delphi так понимаю создать объект и список этих объектов.
AlexCrane
10.06.2025, 09:53
Использую экспортированные сетевые переменные в csv, и конвертирую в json
а tag id берете откуда?, остальное там вроде стандартно
"category": "7b6a7ee2-a4ab-40d9-a343-7aafae3ac237" - вот этот вот id присваивает расширение. Или оно тоже для OL типа стандартное значение имеет ?
AlexCrane
10.06.2025, 09:56
а tag id берете откуда?, остальное там вроде стандартно
"category": "7b6a7ee2-a4ab-40d9-a343-7aafae3ac237" - вот этот вот id присваивает расширение. Или оно тоже для OL типа стандартное значение имеет ?
И с пустой категорией вроде нормально импортировалось, проверю еще раз конечно, а то поздно ночью писал прогу.
ну если с пустой работает, то и json загружать не надо, просто подготовить классы(объекты) и после чтения csv создавать список классов и сериализовать в json.
AlexCrane
10.06.2025, 22:54
Тестовая версия утилиты конвертации CSV файла в JSON OwenCloud. Вроде все режимы проверил.
Крупные Json у меня OwenCloud не смог переварить, только частями.
Что надо поправить в королевстве для русского языка ?
ну и у меня пустота, непонятно как этим пользоваться из-за отсутствия русского. Покажите готовый json хотя бы после создания.
AlexCrane
11.06.2025, 08:17
Что надо поправить в королевстве для русского языка ?
ну и у меня пустота, непонятно как этим пользоваться из-за отсутствия русского. Покажите готовый json хотя бы после создания.
Open Regional and Language Options in Control Panel.
On the Advanced tab, under Language for non-Unicode programs, click the language version of non-Unicode programs that will be used.
Win10 Pro с ноутом, настройки все по умолчанию, как-то с другими программами проблем никогда не было, но я понял про какие настройки вы говорите, поищу их.
Русский появился в следующих версиях в приложении, но в самом поле только после изменения настроек.. в Win10 там стоял у меня Русский, но надо было еще галочку включить. Для отображения в текстовом поле на русском.
Но конвертации в json не происходит. Пример из поста 9. никакой самодеятельности, только тот, что выложен :)
AlexCrane
11.06.2025, 10:40
Для поста №9 нужно установить начальную строку 2 (нестандартный csv)
На скрине настройки
И результат прикрепил
ок, по всем этим окошечкам и настройкам кратенькое описание добавить.
Ну и пусть у кого облако есть потренируются :)
у меня не сработало, поставив 2 как на скрине, похоже у вас перенеслось то, что в Тесте забито. На автомате не сработало. И что значит нестандартный csv? я так понял это из ОЛ сохранен csv
блин, типа сперва надо выбрать и тестом пройтись, только потом конвертировать. А типа сразу никак? :) вот чтобы не думать...
AlexCrane
11.06.2025, 12:26
ок, по всем этим окошечкам и настройкам кратенькое описание добавить.
Ну и пусть у кого облако есть потренируются :)
у меня не сработало, поставив 2 как на скрине, похоже у вас перенеслось то, что в Тесте забито. На автомате не сработало. И что значит нестандартный csv? я так понял это из ОЛ сохранен csv
блин, типа сперва надо выбрать и тестом пройтись, только потом конвертировать. А типа сразу никак? :) вот чтобы не думать...
Да, делал универсальную, что бы можно было из любого CSV, поэтому выбирать ручками, тест нужен лишь чтобы проверить правильность (вот тут нужно указать начальную строку для теста).
Перезалил программу в посту 22https://owen.ru/forum/showthread.php?t=41462&page=3&p=465851&viewfull=1#post465851. Добавил описание немного.
Главное, чтобы FPavel был в восторге :)
Спасибо!!!
В облаке ещё не проверял, а так генерацию проверил - всё очень здОрово - можно для всех ПР использовать (cvs для сетевых переменных очень разный для разных ПР и по составу полей и по их порядку).
И на перспективу тоже актуальность не потеряется - в каждой версии OwenLogic формат cvs меняется.
Как понимаю, если поле комментария в cvs пустое (а оно может таковым оказаться) - формируется уникальная строка описания с использованием номера регистра Modbus.
Спасибо!
AlexCrane
20.06.2025, 12:54
Убрал ошибки и перекомпилировал в современной ide чтобы не было проблем с кодировками, плюсом добавил генерацию dev для Owen OPC Server
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot