Во-первых, я не программист, но мне удалось сделать несколько вещей в прошлом. Гораздо больше хакера, чем что-либо.Нужен скрипт для анализа файла, а затем конвертировать в сообщение mqtt
Я использую Mochad для связи с моим приемником X10, и я хочу взять вывод из Mochad, проанализировать несколько фрагментов из него, а затем отправить его как сообщение MQTT, чтобы я мог использовать его с моим центром домашней автоматизации. Помощник. Вот как выглядит выход Мочада:
[email protected]pberrypi:~ $ nc localhost 1099
12/30 17:37:18 Rx RF HouseUnit: B3 Func: On
12/30 17:37:19 Rx RF HouseUnit: B4 Func: Off
12/30 17:37:21 Rx RF HouseUnit: B6 Func: On
12/30 17:37:23 Rx RF HouseUnit: B6 Func: On
12/30 17:37:24 Rx RF HouseUnit: B7 Func: Off
12/30 17:37:25 Rx RF HouseUnit: B8 Func: On
12/30 17:37:27 Rx RF HouseUnit: B2 Func: On
Отметьте, что я использую net cat для просмотра этих данных. Новая строка добавляется только при обнаружении сигнала X10. Я хотел бы захватить значения HouseUnit (ex B3) и значения Func (ex On). Я могу сделать это легко с awk, но я не могу понять, как это сделать из вывода netcat.
После этих двух значений или разобран, я хотел бы опубликовать их MQTT сообщений как это:
mosquitto_pub -t /X10/B3 -m On
После этого процедура будет ждать другого сообщение и просто продолжать делать эту процедуру для каждого нового полученного сообщения от Мочада.
Есть ли простой способ сделать это с помощью сценария командной строки? Я написал для циклов, которые могут делать такие вещи, но я изо всех сил пытаюсь получить вывод чистой кошки в цикл for.
Я делаю все это на RaspberryPi3 с HASSBian дистрибутивом (Raspbian изменен для домашнего помощника). Любая помощь приветствуется.
EDIT Кому-нибудь еще может помочь? Большое спасибо!
Спасибо за это, но я не получаю никаких сообщений или сообщений, отправленных с этим. – dinki
отлично работает, если я использую nc для записи файла с таким же выходом в версию nc, которая прослушивает порт в качестве входа, поскольку у меня нет одного и того же источника данных. например 'nc -l localhost 1099 | awk .... 'и' nc localhost 1099
hardillb
Я попытался добавить параметр -l, и я все еще ничего не получаю. Есть ли простой способ устранить эту проблему? – dinki