LINUX.ORG.RU

Сервер с БД для Orange Pi с опросом датчиков по UART (RS485) и GUI.

 , ,


0

2

Здравствуйте. Есть несколько датчиков. Они с разными адресами сидят на шине RS485 (витая пара) и ждут когда к ним обратится мастер. Интервал опроса 200 мСек. Через обычный COM порт.

На данный момент есть приложение под Windows, написанное мною на Delphi, которое опрашивает датчики через COM порт и отдает через AJAX данные на вэб страницу. Всё сделано при помощи стандартных компонентов Delphi 7. Но меня это не устраивает.

Цель:

  • Маленькая железка с минимум энергопотребления, 24/7, подключенная в домашний роутер. Настройка железки только через браузер (пример: страница настройки роутера).

Что хочу:

  • Обратились по IP адресу сервера (IP/setup) - открылась страница с надписью: «датчики отсутствуют» и кнопка «добавить»;
  • Нажали кнопку «добавить» - открылась страница где указываем адрес датчика, его тип и т.д. Нажимаем «ок»;
  • Перешли по IP адресу сервера (уже без setup) - открылась страница где видим: датчик1 (параметр1, параметр2);
  • Обратились по IP адресу сервера (IP/setup) - открылась страница с надписью: «список -> датчики», в списке уже есть один датчик и кнопка «добавить»;
  • Периодически сохраняем данные в базу. И по адресу IP/log появляется страница, где можно выбрать временной интервал и один из параметров, нажать ОК и увидеть график изменения этого параметра.

Как хочу:

  • Сервер отправляет запрос в UART (0xAB 0xCD 0xEF 0xAB 0xCD 0xEF);
  • Получает ответ (0xEF 0xCD 0xAB 0xEF 0xCD 0xAB);
  • Достаем нужные данные (0xEF 0xCD), держим их в буффере;
  • Когда пользователь набрал в адресной строке IP сервера -> отобразили данные (0xEF 0xCD);
  • Обновляем их через ajax, при этом не забываем опрашивать по UART остальные устройства. С интервалом 100-200 мСек увеличивая адрес (по кругу).

Помогите найти подробный проект с исходным кодом. Простой, понятный. Чтобы было отдельно общение по UART (RS485) и отдельно WEB. И как вообще написать такой WEB GUI ? Нигде не нашел конкретных примеров. Подойдет ли Orange pi zero для этого?

На Orange pi планирую установить lazarus и попробовать скомпилировать код из delphi (pascal) под Linux. Даже если что то скомпилируется, то вопрос по базе и WEB GUI остается открытый. Или бросить эту затею? Linux не знаю. Пишу прошивки под микроконтроллеры. Нужен пример кода, где его писать, что открыть и т.д. Спасибо.

P.S. На делфи я сделал форму: [img]https://c.radikal.ru/c36/1803/52/03449b0bd373t.jpg[/img]

По таймеру делаю запрос через COM порт, получаю ответ, заношу данные в таблицу. При ajax запросе отдаю данные из этой таблицы т.к. они всегда актуальны.



Последнее исправление: mr_smit (всего исправлений: 3)

С чего ты взял что есть готовые проекты под столь чудовищно специфичные задачи? В чем проблема написать заново такой примитивный проект? И зачем так беспомощно держаться за дельфи?

И с логикой добавления датчиков у тебя жуткий колхоз. Надо модно и молодежно делать.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

С чего ты взял что есть готовые проекты

Мне нужен не сколько проект, сколько пример кода.

И зачем так беспомощно держаться за дельфи?

Это единственное в чем я немного умею писать под ОС.

Надо модно и молодежно делать.

Как именно? Пример? Я не смог найти ни одного толкового примера. Какую IDE мне запустить? Как организовать взаимодействие COM порта, базы и WEB GUI ?

mr_smit
() автор топика

Ну так посмотри в лазаре что там с интернетовскими компонентами, Synapse вроде были сервера http

ilovewindows ★★★★★
()

На Orange pi планирую установить lazarus и попробовать скомпилировать код из delphi (pascal) под Linux

лазарус умеет кросс-компиляцию искаропки. навскидку не вспомню, есть ли там арм, ппц64 помню точно был

anonymous
()

Что за протокол? Если есть возможность сменить протокол на общепринятый (модбас, например) и установить scadabr - всё что нужно там есть.

Можно ещё другие foss скады потыкать.

anonymous
()
Ответ на: комментарий от anonymous

Протокол самописный. В принципе могу переписать прошивку и на modbus. Но мне интересно хотя бы простейший вариант реализовать самому.

Я посмотрел исходники Rapid Scada, но там без вариантов... Слишком сложно для меня. Поэтому и спрашивал какой нибудь понятный кусок кода и какому компилятору его скормить. Чтобы тикал таймер, с каждым тиком отправлялся запрос. А при наборе IP адреса в формате json отправлялись данные. Тут главное не понятно как эти промежуточные данные хранить. Ведь, как я понимаю, сам html файл может быть подгружен откуда угодно. Даже просто расшарен на устройстве! Как таковой сервер то и не нужен. Читаем данные, обновляем буффер, по запросу выдаем json строчку. Всё! Вот я и ищу этот простой и понятный идеал.

mr_smit
() автор топика
Ответ на: комментарий от mr_smit

Я мечтаю получить ответ вида:

Товарищ, тут всё просто. Включай Orange Pi. Вот видишь справа значок такой сиреневый, кликай по нему. Открылось? Отлично. Нажми вот эту кнопку. Скопируй туда вот этот кусок кода:

read write read write read write

тут мы делаем запрос в COM порт и читаем ответ. Отображаем результат на форме. Первый этап. Теперь берем вот эту библиотеку и по нажатию кнопки у нас запустится сервер который будет ждать пока подключится клиент.

И т.д. и т.п. Вот таких мануалов я не нашел. Видимо линуксойдами рождаются.

mr_smit
() автор топика
Ответ на: комментарий от mr_smit

Товарищ, тут всё просто. Включай Orange Pi. Вот видишь справа значок такой сиреневый, кликай по нему. Открылось? Отлично. Нажми вот эту кнопку. Скопируй туда вот этот кусок кода:

Нет там такого. Всё в консоли, всё через vim.

burato ★★★★★
()
Ответ на: комментарий от burato

Нет там такого. Всё в консоли, всё через vim.

В моём варианте прельщает то, что я могу сделать любой красивый web интерфейс с помощью HTML и jQuerry. А все SCADA системы не блещут изысканностью графики. Бесплатные тем более.

Ладно. Запилю modbus, попробую поиграться с какой нибудь бесплатной скадой. Во вопрос остается открытым, если вдруг кто встретит какое нибудь описание чего то подобного, буду рад.

mr_smit
() автор топика
Ответ на: комментарий от mr_smit

красивый web интерфейс с помощью HTML и jQuerry

В чём проблема? Поднимешь apache2 и php будет тебе и ajax, и jquerry и javascript и всё, что захочешь.

УМВР.

burato ★★★★★
()
Ответ на: комментарий от mr_smit

Уарт на ораньж пае есть, я его на приём не настраивал, но он работает.

burato ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.