all repos — collectd-executors @ 30845fee8bed5c53d79b73601d27bfa9abbcf5c4

iio-si1145.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="60"
NAME="si1145"

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

UV_ID="1"
IR_ID="2"
LI_ID="3"

mymqtt_init "${ID}" "${UV_ID}" "${S_UV}" "SI1145 UV"
mymqtt_init "${ID}" "${IR_ID}" "${S_LIGHT_LEVEL}" "SI1145 IR"
mymqtt_init "${ID}" "${LI_ID}" "${S_LIGHT_LEVEL}" "SI1145 LIGHT"

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[ir]=$(cat ${sensor}/in_intensity_ir_raw)
        data[light]=$(cat ${sensor}/in_intensity_raw)
        data[uv]=$(cat ${sensor}/in_uvindex_raw)

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

        mymqtt_update "${ID}" "${UV_ID}" "${V_UV}" "${data[uv]}"
        mymqtt_update "${ID}" "${IR_ID}" "${V_LEVEL}" "${data[ir]}"
        mymqtt_update "${ID}" "${LI_ID}" "${V_LEVEL}" "${data[light]}"

    done
    sleep "$INTERVAL"
done