ЭЛЕКТРОНИКА Сервис на Python

demosspro

✩✩✩✩✩✩✩
22 Сен 2021
1
0
Требуется исполнитель :
Локация не важна - главное знать питон и минимальную его работув среде linux.
-
Надо изготовить :

Сервис на python3 для управления внешними устройствами по TCP\IP с функциями приема, отправки команд и обработки ответов от них.
Состав системы:
Технические средства управления системой -клиенты (1-100 штук)
Управляемые устройства системы (TV, приставки, усилители и прочее специализированное оборудование) – хосты (1- 200 штук)
Сервер linux (armbian на основе debian bullseye) 4х1.4GHz \ 1GB ram \ 16GB eMMC
Сервис на python3 обрабатывающий команды клиентов, управляющий хостами, gpio, принимающий ответы.

Состав задачи:
- Имеются технические средства управления (клиенты) умеющие подключаться посредством tcp\ip \ udp \ rs232 к сервису для передачи ему команд управления формата
tv1#vol_up и запрашивающие у него с периодичностью 100-1000мс массив данных состояния управляемой системы.
  • Имеются хост системы в виде телевизоров, усилителей и прочих устройств принимающих внешние команды управления посредством tcp\ip\udp пакета или rs232 консоли, реле (3 реле и 4 кнопки на GPIO). Спецификация протокола получаемых команд и ответов на них прилагается.
  • Имеется специализированный сервер на основе debian с python 3.9 для размещения сервиса, конфигурационных файлов.
  • Конфигурационные файлы:
-- init.cfg
Содержит перечень настроек для инициализации и запуска сервиса (например, порты)
Init tcp 23001
Init udp 23001
Relay1 1
-- clients.cfg
Содержит перечень клиентов присылающих команды и запрашивающих массив ответов.
Pan1 10.0.255.123:55001
Pan2 10.0.255.124:55002
Pan3 ttyusb2 57600 (клиент на rs232 на скорости 57600)

--device.cfg
Содержит перечень хостов, протокол, ip, порт и дополнительный параметр для управления
Tv1 tcp 10.0.255.71:9993
Tv2 tcp 10.0.255.72:9993
Amp1 udp 10.0.255.31:8234
Amp2 tcp 10.0.255.32:8234
Ast ttyusb1 115200 (rs232 и скорость)
Relay1 gpio 452 (реле на gpio 452, 0 –выключить, 1 – включить)

--%name%.cmd
Содержит список команд для каждого типа устройства для сопоставления с командами от клиентов и теми, что нужно отправить хосту

Tv.cmd
vol_up = “*SCIRCC0000000000000030\n”

amp.cmd
in1_vol_up = {A5, C3, 3C, 5A, FF, 36, 05, 04, 01, 01, 00, 0A, EE}
Описание предполагаемого процесса управления
После запуска сервера происходит загрузка сервиса.
При инициализации сервис считывает из конфигурационных файлов информацию. Все хранится в оперативной памяти во избежание износа emmc
Устанавливаются соединения с хостами, соединения с клиентами, загружаются списки команд для устройств, происходит опрос оборудования для заполнения массива первичными значениями. Сервис переходит в рабочий режим.
Клиенты производят опрос сервиса и выставляют индикацию в соответствии с полученной информацией от сервиса.
Система готова к работе
Оператор(ы) производит нажатие кнопки или другого элемента управления на клиенте.
Клиент посылает команду формата «имя устройства # команда на исполнение»
Tv1#vol_up
Сервис принимает команду от клиента, в соответствии с конфигурацией, считанной из файлов и посылает на нужный ip port ту команду, которая закреплена за ее кратким именем.
10.0.255.71:9993 “*SCIRCC0000000000000030\n”
Хост исполняет команду, повысив уровень громкости на 1.
Хост отправляет ответ об успешном исполнении команды.
Хост отправляет ответ - новый уровень громкости.
Сервис принимает ответ от хоста и в соответствии с правилами обработки заносит нужное значение в нужный элемент массива answers={}
Клиент запрашивает массив answers[] для обновления индикации.
Обновление индикации на клиенте.

Особенности реализации:
Некоторые хосты умеют работать только с единственным соединением по tcp\ip
Клиенты умеют работать с udp и c tcp\ip а так же слать команды через rs232.
Возможно разделение кода на модули, для улучшения возможностей модификации, дополнения кода (например, обработчик ответов).
Наименьшая из доступных задержек управления.
-
Планируемый бюджет : 5000руб +
-
Сроки
: месяц
Оплата :на карту
Для связи : ЛС
Если заинтересованы - пишите - скину документацию по хостам. Даю удаленный доступ в систему для разработки и тестов
Сам я написал пару скриптов на LUA и python но сделать это все в рамках одного сервиса - тут мозгов не хватает немного. Оперативки маловато)
 
Изменено: