Я думаю, что ваша проблема в том, что grep использует некоторую буферизацию вывода. Попробуйте
tail -f file | stdbuf -o0 grep my_pattern
, он установит режим буферизации вывода grep в небуферизованный.
Существует множество способов управления устройствами. Я использую малину для включения и выключения компьютера через веб-интерфейс. Я подключил реле к выводам GPIO и подключил кнопку питания к материнской плате компьютера, чтобы запустить через реле.
Веб-интерфейс работает с использованием php. Итак, простой пример скрипта, работающего на php, который заставляет реле делать щелчок, выглядит следующим образом:
shell_exec('/usr/local/bin/gpio -g mode 17 out');
shell_exec('/usr/local/bin/gpio -g write 17 1');
usleep(500000);
shell_exec('/usr/local/bin/gpio -g write 17 0');
Сценарий устанавливает вывод 17 для вывода, затем включает напряжение на выводе, ждет полсекунды, затем выключает напряжение. Реле подключено к заземлению и выводу 17 на GPIO, конечно.
Имейте в виду, что это очень простой пример использования GPIO из php без каких-либо библиотек.
Один простой способ сделать это заключается в следующем:
1) развернуть MQTT-брокер в публичном облаке или использовать бесплатный общедоступный брокер, такой как iot.eclipse.org, если безопасность данных не имеет значения
2) Внедрить на веб-сайте MQTT-клиент javascript, который может подписываться и публиковать темы MQTT на брокере
3) Внедрить другой клиент на raspberry pi на выбранном вами языке и связать это с вашими устройствами
Если вы хотите, чтобы ваши данные были зашифрованы, вы также можете настроить безопасность транспортного уровня с помощью сертификатов OpenSSL