Skip to content

Instantly share code, notes, and snippets.

@denibertovic
Created September 21, 2022 12:52
Show Gist options
  • Save denibertovic/703ad2c6e80d0184b641b6ee12166962 to your computer and use it in GitHub Desktop.
Save denibertovic/703ad2c6e80d0184b641b6ee12166962 to your computer and use it in GitHub Desktop.
A script that puts aranet4 sensor data into Prometheus' textfile collector format
#!/run/current-system/sw/bin/bash
TEXTFILE_COLLECTOR_DIR="/opt/prometheus/textfilecollector"
FILE_DATA="${TEXTFILE_COLLECTOR_DIR}/aranet4-sensor-data.prom"
FILE_DATA_NEW="/tmp/aranet4-sensor-data-new"
SENSOR_MAC="xx:yy:xx:yy:xx:yy"
SENSOR_NAME="aranet4"
EXIT_CODE=1
until [ ${EXIT_CODE} -eq 0 ]; do
echo "Getting ${SENSOR_NAME} data... "
RAW_DATA=$(timeout 30 aranetctl "${SENSOR_MAC}")
DATA_TEMP_TIMESTAMP=$(date +%s)
EXIT_CODE=$?
if [ ${EXIT_CODE} -ne 0 ]; then
echo "failed, waiting 5 seconds before trying again"
sleep 5
fi
done
echo "RAW DATA:"
echo "${RAW_DATA}"
SENSOR_CO2=`echo "${RAW_DATA}" | grep "CO2:" | cut -d' ' -f14`
SENSOR_TEMP=`echo "${RAW_DATA}" | grep "Temperature:" | cut -d' ' -f6`
SENSOR_HUMID=`echo "${RAW_DATA}" | grep "Humidity:" | cut -d' ' -f9`
SENSOR_PRESSURE=`echo "${RAW_DATA}" | grep "Pressure:" | cut -d' ' -f9`
SENSOR_BATT=`echo "${RAW_DATA}" | grep "Battery:" | cut -d' ' -f10`
rm -f "${FILE_DATA_NEW}"
echo "Parsed data:"
echo "=================================="
echo "CO2: ${SENSOR_CO2}"
echo "Temperature: ${SENSOR_TEMP}"
echo "Humidity: ${SENSOR_HUMID}"
echo "Pressure: ${SENSOR_PRESSURE}"
echo "Battery Level: ${SENSOR_BATT}"
echo "=================================="
echo "aranet4_co2{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${SENSOR_CO2}" >> "${FILE_DATA_NEW}"
echo "aranet4_temperature{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${SENSOR_TEMP}" >> "${FILE_DATA_NEW}"
echo "aranet4_humidity{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${SENSOR_HUMID}" >> "${FILE_DATA_NEW}"
echo "aranet4_pressure{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${SENSOR_PRESSURE}" >> "${FILE_DATA_NEW}"
echo "aranet4_battery{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${SENSOR_BATT}" >> "${FILE_DATA_NEW}"
echo "aranet4_co2_updated{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${DATA_TEMP_TIMESTAMP}" >> "${FILE_DATA_NEW}"
echo "aranet4_temperature_updated{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${DATA_TEMP_TIMESTAMP}" >> "${FILE_DATA_NEW}"
echo "aranet4_humidity_updated{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${DATA_TEMP_TIMESTAMP}" >> "${FILE_DATA_NEW}"
echo "aranet4_pressure_updated{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${DATA_TEMP_TIMESTAMP}" >> "${FILE_DATA_NEW}"
echo "aranet4_battery_updated{sensor=\"${SENSOR_NAME}\",mac=\"${SENSOR_MAC}\"} ${DATA_TEMP_TIMESTAMP}" >> "${FILE_DATA_NEW}"
mkdir -p "${TEXTFILE_COLLECTOR_DIR}"
rm "${FILE_DATA}"
mv "${FILE_DATA_NEW}" "${FILE_DATA}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment