Bash script - как я могу объединить строку с переменной и использовать ее как сообщение для MQTT

Я пытаюсь создать сценарий в bash, чтобы повторно опубликовать 1 сообщение MQTT для 3 виртуальных датчиков в Domoticz. У меня возникла проблема при создании части сообщения для команды mossquito_pub

#!/bin/bash
# This script subscribes to a MQTT topic using mosquitto_sub.
# On each message received, you can execute whatever you want.

while true  # Keep an infinite loop to reconnect when connection lost/broker unavailable
do
    mosquitto_sub -h "192.168.1.30" -t "tele/tasmota_D875F9/SENSOR" | while read -r payload
    do
        # Here is the callback to execute whenever you receive a message:
        str="${payload}"
        voltage1= echo $str | cut -f 22 -d ','|  tr -dc '0-9'
        echo $voltage1
        mosquitto_pub -h 192.168.1.30 -p 1883 -t 'domoticz/in' -m  '{"idx" : 33, "nvalue" : 0, "svalue" : "$voltage1" }'
        voltage2= echo $str | cut -f 23 -d ','|  tr -dc '0-9'
        echo $voltage2
        mosquitto_pub -h 192.168.1.30 -p 1883 -t 'domoticz/in' -m  '{"idx" : 34, "nvalue" : 0, "svalue" : "$voltage2" }'
        voltage3= echo $str | cut -f 24 -d ','|  tr -dc '0-9'
        echo $voltage3
        mosquitto_pub -h 192.168.1.30 -p 1883 -t 'domoticz/in' -m  '{"idx" : 35, "nvalue" : 0, "svalue" : "$voltage3" }'
    done

    sleep 10  # Wait 10 seconds until reconnection
done # &  # Discomment the & to run in background (but you should rather run THIS script in background)


    sleep 10  # Wait 10 seconds until reconnection
done # &  # Discomment the & to run in background (but you should rather run THIS script in background)

В настоящее время вывод эха терминала:

230
231
233

Сообщение передано:

2020-12-01 13:51:27.952 MQTT: Topic: domoticz/in, Message: {"idx" : 33, "nvalue" : 0, "svalue" : "$voltage1" }
2020-12-01 13:51:28.057 MQTT: Topic: domoticz/in, Message: {"idx" : 34, "nvalue" : 0, "svalue" : "$voltage2" }
2020-12-01 13:51:28.161 MQTT: Topic: domoticz/in, Message: {"idx" : 35, "nvalue" : 0, "svalue" : "$voltage3" }

Мне нужны переменные voltage1, voltage2, voltage3 должны быть заменены их значениями, как они видны в выводе терминального эха, включая кавычки впереди и сразу после.

Пожалуйста, помогите мне.

0 ответов

Другие вопросы по тегам