all repos — collectd-executors @ 077d4ca4d89e9f452f9b7e5b4b845f6db053ebaa

iio-bme280.sh (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
#!/usr/bin/env bash

source /usr/local/lib/collectd/_functions.sh

ID="77"
NAME="bme280"

test_i2c_device "${ID}" "${NAME}"

TEM_ID="1"
HUM_ID="2"
BAR_ID="3"

mymqtt_init "${ID}" "${TEM_ID}" "${S_TEMP}" "BME280 TEMPERATURE"
mymqtt_init "${ID}" "${HUM_ID}" "${S_HUM}" "BME280 HUMIDITY"
mymqtt_init "${ID}" "${BAR_ID}" "${S_BARO}" "BME280 BAROMETER"

while true; do
    for sensor in /sys/bus/iio/devices/iio\:device*; do
        sensorname=$(cat "${sensor}/name")
        if [ "$sensorname" != "${NAME}" ]; then
            continue
        fi

        prefix="sensors-weather"
        suffix="-${sensorname}"
        declare -A data
        data[temperature]=$(echo "scale=2;$(cat ${sensor}/in_temp_input)/1000" | bc )
        data[pressure]=$(echo "scale=2;$(cat ${sensor}/in_pressure_input)*10/1" | bc)
        data[humidity]=$(echo "scale=0;$(cat ${sensor}/in_humidityrelative_input)/1" | bc)

        for key in "${!data[@]}"; do
            echo "PUTVAL $HOSTNAME/${prefix}/${key}${suffix} interval=$INTERVAL N:${data[$key]}"
        done

        mymqtt_update "${ID}" "${TEM_ID}" "${V_TEMP}" "${data[temperature]}"
        mymqtt_update "${ID}" "${HUM_ID}" "${V_HUM}" "${data[humidity]}"
        mymqtt_update "${ID}" "${BAR_ID}" "${V_PRESSURE}" "${data[pressure]}"

    done
    sleep "$INTERVAL"
done