Jun. 30th, 2023

eddy_em: (Default)
Таки сотворил адского монстра - сетевое управление GPIO на Raspberry Pi. Условно делю гребенку пополам: нечетные номера — выходы, четные — входы. Каждому выходу соответствует определенный вход, что конфигурируется парой массивов в исходниках. Как только состояние входа изменяется, сервер отсылает всем клиентам "UPxx" или "DOWNxx" (смотря на то, была кнопка отпущена или нажата). Аналогично делает клиент - отсылает серверу те же сообщения.
Если же клиент или сервер получают эти сообщения, по таблице ищется соответствующая выходная нога. Если она находится, партнеру отправляется ответ "OK" и нога меняет свое состояние (UP - нуль, DOWN - 1). Если возникает ошибка, отправляется ответ "FAIL".
Соответственно, жамкнул вахтер кнопку - релюшка включилась. Отпустил - выключилась... Ну и в ответку могут присылаться всякие вещи, чтобы светодиодиками мигать и пищалкой пищать.
Сервер разворачиваем на одноплатнике со стороны шлагбаума, клиент - в "коробочке" с кнопками у вахтера. Заодно можно будет дистанционно открывать/закрывать, вызывая клиента с ключами -C "команда" (это можно делать с любого компьютера).

Жаль, правда, что "малинка" - такая тормозная. SSL-рукопожатие у нее спокойно может аж 2 секунды длиться! Я поначалу даже не понял, почему отваливается соединение с ошибкой: а это из-за того, что я таймаут в 0.1с установил. Повысил его до 10с.
Простой баш-скрипт генерирует мастер-сертификат и сертификаты для клиента и сервера. И клиент, и сервер проверяют оба сертификата. Хотя, конечно, можно было бы так не заморачиваться, а использовать libssh…

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 06:03 am
Powered by Dreamwidth Studios