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

Жаль, правда, что "малинка" - такая тормозная. SSL-рукопожатие у нее спокойно может аж 2 секунды длиться! Я поначалу даже не понял, почему отваливается соединение с ошибкой: а это из-за того, что я таймаут в 0.1с установил. Повысил его до 10с.
Простой баш-скрипт генерирует мастер-сертификат и сертификаты для клиента и сервера. И клиент, и сервер проверяют оба сертификата. Хотя, конечно, можно было бы так не заморачиваться, а использовать libssh…
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

April 2025

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

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 12:20 pm
Powered by Dreamwidth Studios