From 646de6abade26d33deecad545da882b36447c92f Mon Sep 17 00:00:00 2001 From: Max Winterstein Date: Tue, 29 Mar 2022 23:34:54 +0200 Subject: [PATCH] Allow to fetch location via API --- adsb-multi-portal-feeder/CHANGELOG.md | 5 +++++ adsb-multi-portal-feeder/Dockerfile | 5 ++++- adsb-multi-portal-feeder/README.md | 6 ++++++ adsb-multi-portal-feeder/config.yaml | 21 ++++++++++--------- .../export-env-from-config.sh | 11 +++++++++- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/adsb-multi-portal-feeder/CHANGELOG.md b/adsb-multi-portal-feeder/CHANGELOG.md index 516a8f9..431173c 100644 --- a/adsb-multi-portal-feeder/CHANGELOG.md +++ b/adsb-multi-portal-feeder/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## [1.0.3] - 2021-03-29 + +- Introduce magic variables (`HOMEASSISTANT_LATITUDE`, `HOMEASSISTANT_LONGITUDE`, `HOMEASSISTANT_ELEVATION`) +- Optimize config schema + ## [1.0.2] - 2021-03-29 - Fix typ0 in config template, should be `MLAT_EXACT_LON` instead `MLAT_EXACT_LONG`. diff --git a/adsb-multi-portal-feeder/Dockerfile b/adsb-multi-portal-feeder/Dockerfile index e2c0a15..3e89728 100644 --- a/adsb-multi-portal-feeder/Dockerfile +++ b/adsb-multi-portal-feeder/Dockerfile @@ -28,4 +28,7 @@ RUN mkdir -p /etc/s6-overlay/s6-rc.d/banner && \ touch /etc/s6-overlay/s6-rc.d/user/contents.d/banner && \ mv /etc/s6-overlay/s6-rc.d/banner/00-banner.sh /etc/s6-overlay/s6-rc.d/banner/script && \ chmod +x /etc/s6-overlay/s6-rc.d/banner/script && \ - sed -i '1 s/^.*$/#!\/command\/with-contenv bashio/' /etc/s6-overlay/s6-rc.d/banner/script \ No newline at end of file + sed -i '1 s/^.*$/#!\/command\/with-contenv bashio/' /etc/s6-overlay/s6-rc.d/banner/script + +# enhance timeout, as sometimes the api calls are slow (rate limited?) +ENV S6_CMD_WAIT_FOR_SERVICES_MAXTIME=30000 \ No newline at end of file diff --git a/adsb-multi-portal-feeder/README.md b/adsb-multi-portal-feeder/README.md index 13c178b..22cedf8 100644 --- a/adsb-multi-portal-feeder/README.md +++ b/adsb-multi-portal-feeder/README.md @@ -40,6 +40,12 @@ See [docker-fr24feed-piaware-dump1090](https://github.com/Thom-x/docker-fr24feed I pre-provivde the (i guess) most used workflow: Send data from USB ADB-S stick to FlightRadar24, FlightAware, ADSBexchange and Plane Finder and have a nice little web based overview as Home Assistant menu entry. +It it possible to retrive and use the location information of home assistant itself, using some magic variables, which will be replaced automatically: + +- `HOMEASSISTANT_LATITUDE` +- `HOMEASSISTANT_LONGITUDE` +- `HOMEASSISTANT_ELEVATION` + If you want to add anything else just add the corresponding environment variable as config option. You might need to press the three little dots in the upper right corner and choose `Edit in YAML`. diff --git a/adsb-multi-portal-feeder/config.yaml b/adsb-multi-portal-feeder/config.yaml index 32930e3..8685710 100644 --- a/adsb-multi-portal-feeder/config.yaml +++ b/adsb-multi-portal-feeder/config.yaml @@ -2,7 +2,7 @@ slug: adsb-multi-portal-feeder stage: experimental url: https://github.com/MaxWinterstein/homeassistant-addons/ usb: true -version: 1.0.2 +version: 1.0.3 arch: - armhf - armv7 @@ -10,7 +10,8 @@ arch: - amd64 boot: auto description: Dump1090 based feeder for FlightRadar24, FlightAware and more -hassio_api: false +hassio_api: true +homeassistant_api: true ingress: true ingress_port: 8080 init: false @@ -27,8 +28,8 @@ options: ADSBEXCHANGE_UUID: "" PLANEFINDER_SHARECODE: "" - HTML_SITE_LAT: 50.033056 - HTML_SITE_LON: 8.570556 + HTML_SITE_LAT: HOMEASSISTANT_LATITUDE + HTML_SITE_LON: HOMEASSISTANT_LONGITUDE panel_icon: mdi:airplane panel_title: ADS-B Feeder @@ -80,19 +81,19 @@ schema: # ADS-B Exchange ADSBEXCHANGE_UUID: str? ADSBEXCHANGE_STATION_NAME: str? - ADSBEXCHANGE_MLAT: str? + ADSBEXCHANGE_MLAT: bool? # Exact coordinates for MLAT - MLAT_EXACT_LAT: float? - MLAT_EXACT_LON: float? - MLAT_ALTITUDE_MSL_METERS: int? + MLAT_EXACT_LAT: match([+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|HOMEASSISTANT_LATITUDE)? + MLAT_EXACT_LON: match([+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|HOMEASSISTANT_LONGITUDE)? + MLAT_ALTITUDE_MSL_METERS: match([+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|HOMEASSISTANT_ELEVATION)? # Plane Finder PLANEFINDER_SHARECODE: str? # Dump1090 & Web UI - HTML_SITE_LAT: float? - HTML_SITE_LON: float? + HTML_SITE_LAT: match([+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|HOMEASSISTANT_LATITUDE)? + HTML_SITE_LON: match([+-]?(([1-9][0-9]*)|(0))([.,][0-9]+)?|HOMEASSISTANT_LONGITUDE)? HTML_SITE_NAME: str? HTML_DEFAULT_TRACKER: list(FlightAware|Flightradar24)? HTML_RECEIVER_STATS_PAGE_FLIGHTAWARE: url? diff --git a/adsb-multi-portal-feeder/export-env-from-config.sh b/adsb-multi-portal-feeder/export-env-from-config.sh index 48cfed3..95901fd 100644 --- a/adsb-multi-portal-feeder/export-env-from-config.sh +++ b/adsb-multi-portal-feeder/export-env-from-config.sh @@ -5,7 +5,10 @@ # # This needs to be sourced ($ source $0) - +CONFIG=$(curl -s -H "Authorization: Bearer ${SUPERVISOR_TOKEN}" -H "Content-Type: application/json" http://supervisor/core/api/config) +LAT=$(echo $CONFIG | jq '.latitude') +LON=$(echo $CONFIG | jq '.longitude') +ELE=$(echo $CONFIG | jq '.elevation') # TODO: Find a way to use bashio and source together @@ -18,6 +21,12 @@ fi # thx https://stackoverflow.com/a/48513046/635876 while read -rd $'' line do + if [[ $line == *"HOMEASSISTANT_LATITUDE" ]] || [[ $line == *"HOMEASSISTANT_LONGITUDE" ]] || [[ $line == *"HOMEASSISTANT_ELEVATION" ]]; then + line=$(echo $line | sed "s/HOMEASSISTANT_LATITUDE/$LAT/") + line=$(echo $line | sed "s/HOMEASSISTANT_LONGITUDE/$LON/") + line=$(echo $line | sed "s/HOMEASSISTANT_ELEVATION/$ELE/") + fi + # echo $line export "$line" done < <(jq -r <<<"$(cat /data/options.json)" \ 'to_entries|map("\(.key)=\(.value)\u0000")[]') \ No newline at end of file