From a114c7fa9b6d3e11ac5685133820fc5b445f8cca Mon Sep 17 00:00:00 2001 From: Malte Franken Date: Sat, 22 Sep 2018 16:10:18 +0930 Subject: [PATCH] GeoJSON platform (#6316) * new geo json platform for the geo location component * added iot class; removed `scan_interval` and mention default in the description instead --- .../geo_location.geo_json_events.markdown | 57 ++++++++++++++++++ source/_components/geo_location.markdown | 2 +- .../images/supported_brands/geo_location.png | Bin 0 -> 15711 bytes 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 source/_components/geo_location.geo_json_events.markdown create mode 100644 source/images/supported_brands/geo_location.png diff --git a/source/_components/geo_location.geo_json_events.markdown b/source/_components/geo_location.geo_json_events.markdown new file mode 100644 index 00000000000..3be0ccc2fb2 --- /dev/null +++ b/source/_components/geo_location.geo_json_events.markdown @@ -0,0 +1,57 @@ +--- +layout: page +title: "GeoJSON Events" +description: "Instructions on how to integrate GeoJSON feeds into Home Assistant." +date: 2018-09-19 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: geo_location.png +ha_category: Geo Location +ha_iot_class: "Cloud Polling" +ha_release: "0.79" +--- + +The `geo_json_events` platform lets you integrate GeoJSON feeds. It retrieves events from a feed and shows information of those events filtered by distance to Home Assistant's location. +All entries in the GeoJSON feed must define a `geometry` which typically is a point or polygon with geo coordinates. In addition, this platform will look for a `title` key in the entry's `properties` and use that as the entity's name. + +Entities are generated, updated and removed automatically with each update from the GeoJSON feed. Each entity defines latitude and longitude and will be shown on the map automatically. The distance in kilometers is available as the state of each entity. + +The data is updated every 5 minutes. + +## {% linkable_title Configuration %} + +To integrate a GeoJSON feed, add the following lines to your `configuration.yaml`. This is an example configuration showing [earthquake data provided by the U.S. Geological Survey](https://earthquake.usgs.gov/earthquakes/feed/v1.0/geojson.php). + +```yaml +# Example configuration.yaml entry +geo_location: + - platform: geo_json_events + url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson +``` + +{% configuration %} +url: + description: Full URL of the GeoJSON feed. + required: true + type: string +radius: + description: The distance in kilometers around the Home Assistant's coordinates in which events are considered. + required: false + type: string + default: 20km +{% endconfiguration %} + +## {% linkable_title Advanced Configuration Example %} + +When integrating several GeoJSON feeds, it may be useful to distinguish the entities of different feeds. The easiest way to do that is by defining an [`entity_namespace`](/docs/configuration/platform_options/#entity-namespace/) for each platform which will prefix each entity ID with the defined value. + +```yaml +# Example configuration.yaml entry +geo_location: + - platform: geo_json_events + url: https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson + radius: 250 + entity_namespace: 'usgs_earthquakes' +``` diff --git a/source/_components/geo_location.markdown b/source/_components/geo_location.markdown index 2990c019514..c77243971a8 100644 --- a/source/_components/geo_location.markdown +++ b/source/_components/geo_location.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -ha_category: Other +logo: geo_location.png ha_release: "0.78" --- diff --git a/source/images/supported_brands/geo_location.png b/source/images/supported_brands/geo_location.png new file mode 100644 index 0000000000000000000000000000000000000000..a8fab0f913329b027b3ae4d32c31c68d4d1d3637 GIT binary patch literal 15711 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