rtlamr improvements

This commit is contained in:
Bogdan Vlaicu
2020-05-06 19:43:14 -04:00
parent ece8576037
commit bd83d3e267
4 changed files with 42 additions and 55 deletions
-11
View File
@@ -11,8 +11,6 @@ FROM $BUILD_FROM
ENV LANG C.UTF-8 ENV LANG C.UTF-8
MAINTAINER bvlaicu
LABEL Description="This image is used to start a script that will monitor for RF events on 433Mhz (configurable) and send the data to an MQTT server" LABEL Description="This image is used to start a script that will monitor for RF events on 433Mhz (configurable) and send the data to an MQTT server"
# #
@@ -40,15 +38,6 @@ RUN mkdir -p ${GOPATH}/src ${GOPATH}/bin
RUN go get github.com/bemasher/rtlamr RUN go get github.com/bemasher/rtlamr
#
# Define an environment variable
#
# Use this variable when creating a container to specify the MQTT broker host.
ENV MQTT_HOST="hassio.local"
ENV MQTT_USER="guest"
ENV MQTT_PASS="guest"
ENV MQTT_TOPIC="homeassistant/sensor/rtl433"
ADD ./run.sh /run.sh ADD ./run.sh /run.sh
CMD cd / && chmod +x /run.sh && /run.sh CMD cd / && chmod +x /run.sh && /run.sh
+32 -34
View File
@@ -1,56 +1,54 @@
# RTLAMR to MQTT Bridge hass.io addon # RTLAMR to MQTT Bridge hass.io addon
A hass.io addon for a software defined radio tuned to listen for 433MHz RF transmissions and republish the data via MQTT A hass.io addon for a software defined radio tuned to listen for 433MHz RF transmissions and republish the data via MQTT
This hassio addon is based on biochemguy's (non-docker) setup: https://community.home-assistant.io/t/get-your-smart-electric-water-and-gas-meter-scm-readings-into-home-assistant-with-a-rtl-sdr
This addon is based on the addon from jdeath here: https://github.com/jdeath/RTLAMR2MQQT This addon is based on the addon from jdeath here: https://github.com/jdeath/RTLAMR2MQQT
which in tturn is based on James Fry' project here: https://github.com/james-fry/hassio-addons/tree/master/rtl4332mqtt which is based on biochemguy's (non-docker) setup: https://community.home-assistant.io/t/get-your-smart-electric-water-and-gas-meter-scm-readings-into-home-assistant-with-a-rtl-sdr
which in turn is based on James Fry' project here: https://github.com/james-fry/hassio-addons/tree/master/rtl4332mqtt
which was based on Chris Kacerguis' project here: https://github.com/chriskacerguis/honeywell2mqtt, which was based on Chris Kacerguis' project here: https://github.com/chriskacerguis/honeywell2mqtt,
which is in turn based on Marco Verleun's rtl2mqtt image here: https://github.com/roflmao/rtl2mqtt which is in turn based on Marco Verleun's rtl2mqtt image here: https://github.com/roflmao/rtl2mqtt
## Usage ## Configuration
1) Install the addon. Do this by downloading this repository and adding in a folder under /addons/ (eg. /addons/rtlamr2mqtt) Add-on configuration example:
2) Use addon configuration to configure: ```yaml
- mqtt_host mqtt_host: hassio.local
- mqtt_user mqtt_user: mqtt
- mqtt_password mqtt_password: '!secret mqtt_password'
- msgType msg_type: all
- ids meter_ids: '1487813232,15527764'
```
3) Copy rtl2mqtt.sh to your hass.io config dir in a subdir called rtlamr2mqtt. ### Option: `mqtt_user`
i.e.
.../config/rtlamr2mqtt/rtl2mqtt.sh
This allows you to edit the start script if you need to make any changes
NOTE that some people have reported issues using samba to copy the script. For some reason it does not get copied to the container on start up of the addon. If you see this issue, please scp the script to your hassio config folder, or ssh in and edit the file locally with vi/nano. The `mqtt_host` option defines the hostname or ip of the MQTT server
### Option: `mqtt_user`
4) Start the addon The `mqtt_user` option defines the username for the MQTT server
### Option: `mqtt_password`
The `mqtt_password` option defines the password for the MQTT server
### Option: `msg_type`
The `msg_type` option defines the comma-separated list of message types to receive all, scm, scm+, idm, netidm, r900 and r900bcd
Default value: all
### Option: `meter_ids`
The `meter_ids` option defines the comma-separated list of meter ids to be processed
Optional. If not provided, all found meters will be processed
## MQTT Data ## MQTT Data
Data to the MQTT server is based on biochemguy setup: readings/$DEVICEID/meter_reading Topic: rtlamr/<METER_ID>/meter_reading
## Hardware ## Hardware
This has been tested and used with the following hardware (you can get it on Amazon) This add-on has been tested and used with the following hardware
- NooElec NESDR Nano 2+ Tiny Black RTL-SDR USB - NooElec NESDR Nano 2+ Tiny Black RTL-SDR USB
- RTL-SDR Blog R820T2 RTL2832U 1PPM TCXO SMA Software Defined Radio
## Troubleshooting
If you see this error:
> Kernel driver is active, or device is claimed by second instance of librtlsdr.
> In the first case, please either detach or blacklist the kernel module
> (dvb_usb_rtl28xxu), or enable automatic detaching at compile time.
Then run the following command on the host
```bash
sudo rmmod dvb_usb_rtl28xxu rtl2832
```
+5 -5
View File
@@ -1,6 +1,6 @@
{ {
"name": "RTLAMR to MQTT Bridge", "name": "RTLAMR to MQTT Bridge",
"version": "0.1.2", "version": "0.1.3",
"slug": "rtlamr", "slug": "rtlamr",
"description": "RF to MQTT Bridge based on RTL_SDR/RTL_433 for RTL2832U based DVB-T USB tuners", "description": "RF to MQTT Bridge based on RTL_SDR/RTL_433 for RTL2832U based DVB-T USB tuners",
"url": "https://github.com/bvlaicu/home-assistant-addons/tree/master/rtlamr", "url": "https://github.com/bvlaicu/home-assistant-addons/tree/master/rtlamr",
@@ -26,15 +26,15 @@
"mqtt_host": "hassio.local", "mqtt_host": "hassio.local",
"mqtt_user": "", "mqtt_user": "",
"mqtt_password": "", "mqtt_password": "",
"msgType": "all", "msg_type": "all",
"ids": "" "meter_ids": ""
}, },
"schema": "schema":
{ {
"mqtt_host": "str", "mqtt_host": "str",
"mqtt_user": "str", "mqtt_user": "str",
"mqtt_password": "str", "mqtt_password": "str",
"msgType": "list(all|scm|scm+|idm|netidm|r900|r900bcd)", "msg_type": "str",
"ids":"str?" "meter_ids":"str?"
} }
} }
+5 -5
View File
@@ -5,14 +5,14 @@ PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
echo "/usr/local/lib64/" > /etc/ld.so.conf echo "/usr/local/lib64/" > /etc/ld.so.conf
export LD_LIBRARY_PATH=/usr/local/lib64/ export LD_LIBRARY_PATH=/usr/local/lib64/
touch /var/log/rtl_433.log # touch /var/log/rtl_433.log
CONFIG_PATH=/data/options.json CONFIG_PATH=/data/options.json
MQTT_HOST="$(jq --raw-output '.mqtt_host' $CONFIG_PATH)" MQTT_HOST="$(jq --raw-output '.mqtt_host' $CONFIG_PATH)"
MQTT_USER="$(jq --raw-output '.mqtt_user' $CONFIG_PATH)" MQTT_USER="$(jq --raw-output '.mqtt_user' $CONFIG_PATH)"
MQTT_PASS="$(jq --raw-output '.mqtt_password' $CONFIG_PATH)" MQTT_PASS="$(jq --raw-output '.mqtt_password' $CONFIG_PATH)"
MQTT_MSGTYPE="$(jq --raw-output '.msgType' $CONFIG_PATH)" MQTT_MSGTYPE="$(jq --raw-output '.msg_type' $CONFIG_PATH)"
MQTT_IDS="$(jq --raw-output '.ids' $CONFIG_PATH)" MQTT_IDS="$(jq --raw-output '.meter_ids' $CONFIG_PATH)"
# Start the listener and enter an endless loop # Start the listener and enter an endless loop
@@ -50,9 +50,9 @@ while true; do
do do
VAL="$(echo $line | jq --raw-output '.Message.Consumption' | tr -s ' ' '_')" # replace ' ' with '_' VAL="$(echo $line | jq --raw-output '.Message.Consumption' | tr -s ' ' '_')" # replace ' ' with '_'
DEVICEID="$(echo $line | jq --raw-output '.Message.ID' | tr -s ' ' '_')" METERID="$(echo $line | jq --raw-output '.Message.ID' | tr -s ' ' '_')"
MSGTYPE="$(echo $line | jq --raw-output '.Type' | tr -s ' ' '_')" MSGTYPE="$(echo $line | jq --raw-output '.Type' | tr -s ' ' '_')"
MQTT_PATH="rtlamr/$DEVICEID/meter_reading" MQTT_PATH="rtlamr/$METERID/reading"
# Create file with touch /var/log/rtl_433.log if logging is needed # Create file with touch /var/log/rtl_433.log if logging is needed
[ -w /var/log/rtl_433.log ] && echo $line >> /var/log/rtl_433.log [ -w /var/log/rtl_433.log ] && echo $line >> /var/log/rtl_433.log