BETA: receive data from 433Mhz weather stations and upload it to Azure Iot Hub
248
A simple script that will receive events from a RTL433 SDR and forward it to Azure IOT hub
Author: Maarten van Achte Version 0.16: build upon maartenva_rtl433_2_mqtt
Use these variable when creating a container to specify the MQTT broker settings, set RTL433 frequency and other parameters ENV AZURE_HOST="" -> MQTT host DNS or IP
ENV AZURE_DEVICE_ID=""
-> Azure IOT device ID
ENV AZURE_SAS_TOKEN=""
-> Azure Sas Token ( https://github.com/Microsoft/vscode-azure-iot-toolkit/wiki/Generate-SAS-Token-for-IoT-Hub )
ENV RTL_FREQ="433805000"
-> you can set the frequency the program listens to
ENV RTL_PARAM="-G -a"
-> used to provided extra parameters to RTL433, see: https://github.com/merbanan/rtl_433#running
example: -R 44
ENV MOSQUITTO_PARAM=""
-> add extra parameters to mosquito client (example: -d for debug info)
ENV WIND_SENSOR="AlectoV1 Wind Sensor"
-> filter dat input for this kind of sensor. See RTL433 for more information ( https://github.com/merbanan/rtl_433#running ) or use RTL433 -a to analyse incomming data
ENV TEMP_SENSOR="AlectoV1 Temperature Sensor"
-> filter dat input for this kind of sensor. See RTL433 for more information ( https://github.com/merbanan/rtl_433#running ) or use RTL433 -a to analyse incomming data
ENV RAIN_SENSOR="AlectoV1 Rain Sensor"
-> filter dat input for this kind of sensor. See RTL433 for more information ( https://github.com/merbanan/rtl_433#running ) or use RTL433 -a to analyse incomming data
ENV RAIN_INTERVAL="30"
-> Rain meter outputs a lot data even when there is no rain. Only upload every X packets if rain data is the same
#!/bin/bash
#set -x
export LANG=C PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
declare -i count declare -i lastrain
count=$RAIN_INTERVAL lastrain=0
/usr/local/bin/rtl_433 -F json -f $RTL_FREQ $RTL_PARAM | while read line
do
model=$(echo $line | jq -r '.model')
id=$(echo $line | jq -r '.id')
temperature=$(echo $line | jq -r '.temperature_C')
humidity=$(echo $line | jq -r '.humidity')
rain=$(echo $line | jq -r '.rain_total')
speed=$(echo $line | jq -r '.wind_speed')
gust=$(echo $line | jq -r '.wind_gust')
wind=$(echo $line | jq -r '.wind_direction')
battery=$(echo $line | jq -r '.battery')
echo $line
echo "Model: $model"
echo "Id: $id"
echo "Temperature: $temperature"
echo "Humidity: $humidity"
echo "rain_total: $rain"
echo "wind_direction: $wind"
echo "wind_speed: $speed"
echo "wind_gust: $gust"
echo "Battery: $battery"
# temp + humidity
if [ "$model" == "$TEMP_SENSOR" ]
then
/usr/bin/mosquitto_pub $MOSQUITTO_PARAM -h $AZURE_HOST -i $AZURE_DEVICE_ID -V mqttv311 -u "$AZURE_HOST/$AZURE_DEVICE_ID/?api-version=2018-06-30" -p 8883 -P "$AZURE_SAS_TOKEN" -t "devices/$AZURE_DEVICE_ID/messages/events/" --capath /etc/ssl/certs/ -m "TEMP_SENSOR:temp=$temperature&humidity=$humidity&battery=$battery"
echo "TEMP_SENSOR:temp=$temperature&humidity=$humidity&battery=$battery"
fi
#wind
if [ "$model" == "$WIND_SENSOR" ]
then
/usr/bin/mosquitto_pub $MOSQUITTO_PARAM -h $AZURE_HOST -i $AZURE_DEVICE_ID -V mqttv311 -u "$AZURE_HOST/$AZURE_DEVICE_ID/?api-version=2018-06-30" -p 8883 -P "$AZURE_SAS_TOKEN" -t "devices/$AZURE_DEVICE_ID/messages/events/" --capath /etc/ssl/certs/ -m "WIND_SENSOR:speed=$speed&direction=$wind&gust=$gust&battery=$battery"
echo "WIND_SENSOR:speed=$speed&direction=$wind&gust=$gust&battery=$battery"
fi
#rain
if [ "$model" == "$RAIN_SENSOR" ]
then
#check if rain data is same as previous data
if [ "$rain" == "$lastrain" ]
then
if [ "$count" eq 0 ]
then
count=$RAIN_INTERVAL
echo "Old rain data"
echo "RAIN_SENSOR:rain=$rain&battery=$battery"
fi
if [ "$count" eq $RAIN_INTERVAL ]
then
/usr/bin/mosquitto_pub $MOSQUITTO_PARAM -h $AZURE_HOST -i $AZURE_DEVICE_ID -V mqttv311 -u "$AZURE_HOST/$AZURE_DEVICE_ID/?api-version=2018-06-30" -p 8883 -P "$AZURE_SAS_TOKEN" -t "devices/$AZURE_DEVICE_ID/messages/events/" --capath /etc/ssl/certs/ -m "RAIN_SENSOR:rain=$rain&battery=$battery"
echo "Publish recurring rain data"
echo "RAIN_SENSOR:rain=$rain&battery=$battery"
fi
let "count--"
else
lastrain=$rain
/usr/bin/mosquitto_pub $MOSQUITTO_PARAM -h $AZURE_HOST -i $AZURE_DEVICE_ID -V mqttv311 -u "$AZURE_HOST/$AZURE_DEVICE_ID/?api-version=2018-06-30" -p 8883 -P "$AZURE_SAS_TOKEN" -t "devices/$AZURE_DEVICE_ID/messages/events/" --capath /etc/ssl/certs/ -m "RAIN_SENSOR:rain=$rain&battery=$battery"
echo "Publish new rain data"
echo "RAIN_SENSOR:rain=$rain&battery=$battery"
fi
echo "Rain count= $count"
echo "Last rain= $lastrain"
fi
echo "____________________________"
done
Content type
Image
Digest
Size
171.2 MB
Last updated
over 7 years ago
docker pull maartenva/rtl433_mqtt_2_azure:0.21