Last active
September 2, 2024 07:41
-
-
Save iamhowardtheduck/45196ddc89cf53216a642b0509a8cc24 to your computer and use it in GitHub Desktop.
Home-Assistant_Data_Ingestion_for_Elasticsearch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Comprises of the following and to be installed in this order: | |
| # - Index template for field mapping | |
| # - DevTool command for index creation | |
| # - Ingest pipelines for conditional parsing (1 main and 16 conditional) | |
| # - Logstash pipeline to query Home-Assistant states via an API; use this link to obtain your authorization from your Home-Assistant instance: | |
| # -- https://developers.home-assistant.io/docs/api/rest/ -- | |
| # - A lot of blood, sweat, and tears (not really, this was fun!) ☺ | |
| ### INDEX TEMPLATE ### (updated: 20220928) | |
| PUT _index_template/home-assistant | |
| { | |
| "template": { | |
| "mappings": { | |
| "properties": { | |
| "weather.forecast.pressure_unit": { | |
| "type": "keyword" | |
| }, | |
| "media_player.name": { | |
| "type": "keyword" | |
| }, | |
| "sun.next_noon": { | |
| "type": "date" | |
| }, | |
| "sun.next_rising": { | |
| "type": "date" | |
| }, | |
| "climate.target_temp_low": { | |
| "type": "long" | |
| }, | |
| "climate.state": { | |
| "type": "keyword" | |
| }, | |
| "weather.temperature_unit": { | |
| "type": "keyword" | |
| }, | |
| "sensor.restored": { | |
| "type": "boolean" | |
| }, | |
| "light.brightness": { | |
| "type": "long" | |
| }, | |
| "update.latest_version": { | |
| "type": "keyword" | |
| }, | |
| "media_player.supported_features": { | |
| "type": "long" | |
| }, | |
| "light.min_mireds": { | |
| "type": "long" | |
| }, | |
| "light.xy_color": { | |
| "type": "half_float" | |
| }, | |
| "sun.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "select.name": { | |
| "type": "keyword" | |
| }, | |
| "update.type": { | |
| "type": "keyword" | |
| }, | |
| "weather.forecast.temperature": { | |
| "type": "long" | |
| }, | |
| "weather.visibility_unit": { | |
| "type": "keyword" | |
| }, | |
| "weather.wind_bearing": { | |
| "coerce": true, | |
| "index": true, | |
| "ignore_malformed": false, | |
| "store": false, | |
| "type": "half_float", | |
| "doc_values": true | |
| }, | |
| "weather.forecast.precipitation_unit": { | |
| "type": "keyword" | |
| }, | |
| "climate.min_temp": { | |
| "type": "long" | |
| }, | |
| "climate.preset_mode": { | |
| "type": "keyword" | |
| }, | |
| "update.in_progress": { | |
| "type": "boolean" | |
| }, | |
| "switch.name": { | |
| "type": "keyword" | |
| }, | |
| "media_player.state": { | |
| "type": "keyword" | |
| }, | |
| "weather.temperature": { | |
| "coerce": true, | |
| "index": true, | |
| "ignore_malformed": false, | |
| "store": false, | |
| "type": "long", | |
| "doc_values": true | |
| }, | |
| "climate.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "update.installed_version": { | |
| "type": "keyword" | |
| }, | |
| "climate.max_temp": { | |
| "type": "long" | |
| }, | |
| "sun.name": { | |
| "type": "keyword" | |
| }, | |
| "weather.forecast.timestamp": { | |
| "type": "date" | |
| }, | |
| "light.max": { | |
| "type": "long" | |
| }, | |
| "light.state": { | |
| "type": "keyword" | |
| }, | |
| "zone.passive": { | |
| "type": "boolean" | |
| }, | |
| "person.state": { | |
| "type": "keyword" | |
| }, | |
| "last.changed": { | |
| "type": "date" | |
| }, | |
| "select.options": { | |
| "type": "keyword" | |
| }, | |
| "script.state": { | |
| "type": "keyword" | |
| }, | |
| "switch.ip": { | |
| "type": "ip" | |
| }, | |
| "sensor.level": { | |
| "type": "keyword" | |
| }, | |
| "binary_sensor.name": { | |
| "type": "keyword" | |
| }, | |
| "climate.dehumidify_setpoint": { | |
| "type": "long" | |
| }, | |
| "weather.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "automation.last.triggered": { | |
| "type": "date" | |
| }, | |
| "weather.description": { | |
| "type": "text" | |
| }, | |
| "light.supported_features": { | |
| "type": "long" | |
| }, | |
| "sun.next_dusk": { | |
| "type": "date" | |
| }, | |
| "sun.azimuth": { | |
| "coerce": true, | |
| "index": true, | |
| "ignore_malformed": false, | |
| "store": false, | |
| "type": "float", | |
| "doc_values": true | |
| }, | |
| "light.supported_color_modes": { | |
| "type": "keyword" | |
| }, | |
| "binary_sensor.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "sensor.name": { | |
| "type": "keyword" | |
| }, | |
| "person.name": { | |
| "type": "keyword" | |
| }, | |
| "select.state": { | |
| "type": "keyword" | |
| }, | |
| "weather.forecast.humidity": { | |
| "type": "long" | |
| }, | |
| "event.action": { | |
| "type": "keyword" | |
| }, | |
| "light.max_mireds": { | |
| "type": "long" | |
| }, | |
| "@timestamp": { | |
| "type": "date" | |
| }, | |
| "climate.max_humidity": { | |
| "type": "long" | |
| }, | |
| "last.updated": { | |
| "type": "date" | |
| }, | |
| "climate.fan_modes": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "weather.visibility": { | |
| "type": "long" | |
| }, | |
| "light.step": { | |
| "type": "long" | |
| }, | |
| "sun.elevation": { | |
| "type": "float" | |
| }, | |
| "light.color_temp": { | |
| "type": "long" | |
| }, | |
| "update.supported_features": { | |
| "type": "long" | |
| }, | |
| "update.url": { | |
| "type": "text" | |
| }, | |
| "climate.hvac_action": { | |
| "type": "keyword" | |
| }, | |
| "weather.condition": { | |
| "type": "keyword" | |
| }, | |
| "weather.forecast.location": { | |
| "type": "keyword" | |
| }, | |
| "person.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "climate.supported_features": { | |
| "type": "long" | |
| }, | |
| "script.name": { | |
| "type": "keyword" | |
| }, | |
| "zone.radius": { | |
| "type": "long" | |
| }, | |
| "event.reason": { | |
| "type": "keyword" | |
| }, | |
| "weather.forecast.wind_bearing": { | |
| "coerce": true, | |
| "index": true, | |
| "ignore_malformed": false, | |
| "store": false, | |
| "type": "float", | |
| "doc_values": true | |
| }, | |
| "weather.wind_speed": { | |
| "type": "float" | |
| }, | |
| "climate.target_temp_high": { | |
| "type": "long" | |
| }, | |
| "switch.description": { | |
| "type": "text" | |
| }, | |
| "light.effect_list": { | |
| "type": "keyword" | |
| }, | |
| "climate.name": { | |
| "type": "keyword" | |
| }, | |
| "person.user_name": { | |
| "type": "keyword" | |
| }, | |
| "light.mode": { | |
| "type": "keyword" | |
| }, | |
| "update.auto": { | |
| "type": "boolean" | |
| }, | |
| "event.original": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": false, | |
| "store": false, | |
| "type": "text" | |
| }, | |
| "weather.forecast.condition": { | |
| "type": "keyword" | |
| }, | |
| "script.supported_features": { | |
| "type": "long" | |
| }, | |
| "sensor.measurement": { | |
| "type": "keyword" | |
| }, | |
| "light.color_mode": { | |
| "type": "keyword" | |
| }, | |
| "light.dynamics": { | |
| "type": "keyword" | |
| }, | |
| "sensor.description": { | |
| "type": "text" | |
| }, | |
| "light.rgb_color": { | |
| "type": "long" | |
| }, | |
| "update.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "sensor.type": { | |
| "type": "keyword" | |
| }, | |
| "climate.current_temperature": { | |
| "type": "long" | |
| }, | |
| "light.min": { | |
| "type": "long" | |
| }, | |
| "sun.next_dawn": { | |
| "type": "date" | |
| }, | |
| "script.mode": { | |
| "type": "keyword" | |
| }, | |
| "weather.forecast.pressure": { | |
| "type": "long" | |
| }, | |
| "climate.hvac_modes": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "weather.forecast.precipitation": { | |
| "type": "long" | |
| }, | |
| "automation.name": { | |
| "type": "keyword" | |
| }, | |
| "light.name": { | |
| "type": "keyword" | |
| }, | |
| "automation.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "sun.rising": { | |
| "type": "boolean" | |
| }, | |
| "zone.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "automation.current": { | |
| "type": "keyword" | |
| }, | |
| "binary_sensor.status": { | |
| "type": "keyword" | |
| }, | |
| "climate.humidity": { | |
| "type": "long" | |
| }, | |
| "sensor.ip": { | |
| "type": "ip" | |
| }, | |
| "zone.name": { | |
| "type": "keyword" | |
| }, | |
| "light.effect": { | |
| "type": "keyword" | |
| }, | |
| "sensor.supported_features": { | |
| "type": "keyword" | |
| }, | |
| "update.picture": { | |
| "type": "text" | |
| }, | |
| "event.module": { | |
| "eager_global_ordinals": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "keyword", | |
| "split_queries_on_whitespace": false, | |
| "index_options": "docs", | |
| "doc_values": true | |
| }, | |
| "sensor.state": { | |
| "type": "keyword" | |
| }, | |
| "sensor.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "light.ip": { | |
| "type": "ip" | |
| }, | |
| "automation.state": { | |
| "type": "keyword" | |
| }, | |
| "zone.editable": { | |
| "type": "boolean" | |
| }, | |
| "weather.forecast.templow": { | |
| "type": "long" | |
| }, | |
| "media_player.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "climate.preset_modes": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "climate.target_temp_step": { | |
| "type": "long" | |
| }, | |
| "update.state": { | |
| "type": "keyword" | |
| }, | |
| "light.hs_color": { | |
| "type": "half_float" | |
| }, | |
| "weather.forecast.wind_speed": { | |
| "type": "half_float" | |
| }, | |
| "sun.next_midnight": { | |
| "type": "date" | |
| }, | |
| "weather.wind_speed_unit": { | |
| "type": "keyword" | |
| }, | |
| "light.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "select.ip": { | |
| "type": "ip" | |
| }, | |
| "climate.fan_mode": { | |
| "type": "keyword" | |
| }, | |
| "media_player.sources": { | |
| "type": "keyword" | |
| }, | |
| "person.editable": { | |
| "type": "boolean" | |
| }, | |
| "sun.state": { | |
| "eager_global_ordinals": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "keyword", | |
| "split_queries_on_whitespace": false, | |
| "index_options": "docs", | |
| "doc_values": true | |
| }, | |
| "person.user_id": { | |
| "type": "keyword" | |
| }, | |
| "sun.next_setting": { | |
| "type": "date" | |
| }, | |
| "button.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "climate.current_humidity": { | |
| "type": "long" | |
| }, | |
| "select.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "script.id": { | |
| "eager_global_ordinals": false, | |
| "index_phrases": false, | |
| "fielddata": false, | |
| "norms": false, | |
| "index": true, | |
| "store": false, | |
| "type": "text", | |
| "index_options": "positions" | |
| }, | |
| "sensor.dimensions": { | |
| "type": "keyword" | |
| }, | |
| "event.dataset": { | |
| "type": "keyword" | |
| } | |
| } | |
| } | |
| }, | |
| "index_patterns": [ | |
| "dev*", | |
| "dev-home-assistant*", | |
| "home-assistant*" | |
| ], | |
| "composed_of": [] | |
| } | |
| ### DEVTOOL COMMAND ### | |
| PUT home-assistant-000001 | |
| { | |
| "aliases": { | |
| "home-assistant":{ | |
| "is_write_index": true | |
| } | |
| } | |
| } | |
| ### INGEST PIPELINES ### | |
| ## MAIN PIPELINE ## | |
| PUT _ingest/pipeline/home-assistant | |
| { | |
| "processors": [ | |
| { | |
| "set": { | |
| "field": "geopoint", | |
| "value": "{{latitude}},{{longitude}}", | |
| "ignore_failure": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": "geopoint", | |
| "ignore_missing": true, | |
| "if": "ctx.geopoint == ','", | |
| "description": "Removes empty geopoint field" | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "attributes.icon", | |
| "attributes.release_summary", | |
| "attributes.latitude", | |
| "attributes.longitude", | |
| "event.name.original" | |
| ], | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "grok": { | |
| "ignore_failure": true, | |
| "field": "entity_id", | |
| "patterns": [ | |
| "(?<event.module>[^\\.]+)\\.%{GREEDYDATA:message}" | |
| ], | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_light", | |
| "if": "ctx.event?.module == 'light'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_number", | |
| "if": "ctx.event?.module == 'number'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_automation", | |
| "if": "ctx.event?.module == 'automation'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_sensor", | |
| "if": "ctx.event?.module == 'sensor'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_select", | |
| "if": "ctx.event?.module == 'select'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_button", | |
| "if": "ctx.event?.module == 'button'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_switch", | |
| "if": "ctx.event?.module == 'switch'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_update", | |
| "if": "ctx.event?.module == 'update'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_binary_sensor", | |
| "if": "ctx.event?.module == 'binary_sensor'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_weather", | |
| "if": "ctx.event?.module == 'weather'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_media_player", | |
| "if": "ctx.event?.module == 'media_player'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_climate", | |
| "if": "ctx.event?.module == 'climate'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_person", | |
| "if": "ctx.event?.module == 'person'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_sun", | |
| "if": "ctx.event?.module == 'sun'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_script", | |
| "if": "ctx.event?.module == 'script'" | |
| } | |
| }, | |
| { | |
| "pipeline": { | |
| "name": "home-assistant_zone", | |
| "if": "ctx.event?.module == 'zone'" | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| ## CONDITIONAL PIPELINES ## | |
| 1 | |
| PUT _ingest/pipeline/home-assistant_zone | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "zone.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.editable", | |
| "target_field": "zone.editable", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "zone.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.passive", | |
| "target_field": "zone.passive", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.radius", | |
| "target_field": "zone.radius", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "zone.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "entity_id", | |
| "message" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 2 | |
| PUT _ingest/pipeline/home-assistant_script | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "script.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.current", | |
| "target_field": "script.supported_features", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "script.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.mode", | |
| "target_field": "script.mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "script.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "entity_id", | |
| "message" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 3 | |
| PUT _ingest/pipeline/home-assistant_sun | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "sun.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.azimuth", | |
| "target_field": "sun.azimuth", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.elevation", | |
| "target_field": "sun.elevation", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "sun.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.next_dawn", | |
| "target_field": "sun.next_dawn", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.next_dusk", | |
| "target_field": "sun.next_dusk", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.next_midnight", | |
| "target_field": "sun.next_midnight", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.next_noon", | |
| "target_field": "sun.next_noon", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.next_rising", | |
| "target_field": "sun.next_rising", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.next_setting", | |
| "target_field": "sun.next_setting", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.rising", | |
| "target_field": "sun.rising", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "sun.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "entity_id", | |
| "message" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 4 | |
| PUT _ingest/pipeline/home-assistant_person | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "person.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.editable", | |
| "target_field": "person.editable", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "person.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.id", | |
| "target_field": "person.user_name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.user_id", | |
| "target_field": "person.user_id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "person.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 5 | |
| PUT _ingest/pipeline/home-assistant_climate | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "climate.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.attribution", | |
| "target_field": "sensor.description", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.current_humidity", | |
| "target_field": "climate.current_humidity", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.current_temperature", | |
| "target_field": "climate.current_temperature", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.dehumidify_setpoint", | |
| "target_field": "climate.dehumidify_setpoint", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.fan_mode", | |
| "target_field": "climate.fan_mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.fan_modes", | |
| "target_field": "climate.fan_modes", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "climate.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.humidity", | |
| "target_field": "climate.humidity", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.hvac_action", | |
| "target_field": "climate.hvac_action", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.hvac_modes", | |
| "target_field": "climate.hvac_modes", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.max_humidity", | |
| "target_field": "climate.max_humidity", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.max_temp", | |
| "target_field": "climate.max_temp", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.min_temp", | |
| "target_field": "climate.min_temp", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.preset_mode", | |
| "target_field": "climate.preset_mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.preset_modes", | |
| "target_field": "climate.preset_modes", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.supported_features", | |
| "target_field": "climate.supported_features", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.target_temp_high", | |
| "target_field": "climate.target_temp_high", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.target_temp_low", | |
| "target_field": "climate.target_temp_low", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.target_temp_step", | |
| "target_field": "climate.target_temp_step", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "climate.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 6 | |
| PUT _ingest/pipeline/home-assistant_media_player | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.device_class", | |
| "target_field": "event.dataset", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "media_player.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.source_list", | |
| "target_field": "media_player.sources", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.supported_features", | |
| "target_field": "media_player.supported_features", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "media_player.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "media_player.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 7 | |
| PUT _ingest/pipeline/home-assistant_weather | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.forecast.templow", | |
| "target_field": "weather.forecast.templow", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "weather.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.attribution", | |
| "target_field": "weather.description", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.forecast.condition", | |
| "target_field": "weather.forecast.condition", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "weather.forecast.datetime", | |
| "target_field": "weather.forecast.timestamp", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.forecast.precipitation", | |
| "target_field": "weather.forecast.precipitation", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.forecast.temperature", | |
| "target_field": "weather.forecast.temperature", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.forecast.wind_bearing", | |
| "target_field": "weather.forecast.wind_bearing", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.forecast.wind_speed", | |
| "target_field": "weather.forecast.wind_speed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "weather.forecast.location", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.humidity", | |
| "target_field": "weather.forecast.humidity", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.precipitation_unit", | |
| "target_field": "weather.forecast.precipitation_unit", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.pressure", | |
| "target_field": "weather.forecast.pressure", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.pressure_unit", | |
| "target_field": "weather.forecast.pressure_unit", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.temperature", | |
| "target_field": "weather.temperature", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.temperature_unit", | |
| "target_field": "weather.temperature_unit", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.visibility", | |
| "target_field": "weather.visibility", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.visibility_unit", | |
| "target_field": "weather.visibility_unit", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.wind_bearing", | |
| "target_field": "weather.wind_bearing", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.wind_speed", | |
| "target_field": "weather.wind_speed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.wind_speed_unit", | |
| "target_field": "weather.wind_speed_unit", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "weather.condition", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 8 | |
| PUT _ingest/pipeline/home-assistant_update | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.entity_picture", | |
| "target_field": "update.picture", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "update.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.auto_update", | |
| "target_field": "update.auto", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.in_progress", | |
| "target_field": "update.in_progress", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.installed_version", | |
| "target_field": "update.installed_version", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.latest_version", | |
| "target_field": "update.latest_version", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.release_url", | |
| "target_field": "update.url", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.supported_features", | |
| "target_field": "update.supported_features", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.title", | |
| "target_field": "update.type", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "event.action", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "update.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "message", | |
| "target_field": "event.dataset", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": "entity_id", | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 9 | |
| PUT _ingest/pipeline/home-assistant_switch | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.attribution", | |
| "target_field": "switch.description", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "switch.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.ip_address", | |
| "target_field": "switch.ip", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "switch.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "entity_id", | |
| "message" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 10 | |
| PUT _ingest/pipeline/home-assistant_button | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.device_class", | |
| "target_field": "event.dataset", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "event.action", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "button.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "event.reason", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "entity_id", | |
| "message" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 11 | |
| PUT _ingest/pipeline/home-assistant_select | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "select.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.ip_address", | |
| "target_field": "select.ip", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.options", | |
| "target_field": "select.options", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "select.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "select.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 12 | |
| PUT _ingest/pipeline/home-assistant_light | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.hs_color", | |
| "target_field": "light.hs_color", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.rgb_color", | |
| "target_field": "light.rgb_color", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.brightness", | |
| "target_field": "light.brightness", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.color_mode", | |
| "target_field": "light.color_mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.effect", | |
| "target_field": "light.effect", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.effect_list", | |
| "target_field": "light.effect_list", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.supported_color_modes", | |
| "target_field": "light.supported_color_modes", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.supported_features", | |
| "target_field": "light.supported_features", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.xy_color", | |
| "target_field": "light.xy_color", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.max_mireds", | |
| "target_field": "light.max_mireds", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.min_mireds", | |
| "target_field": "light.min_mireds", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.dynamics", | |
| "target_field": "light.dynamics", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.color_temp", | |
| "target_field": "light.color_temp", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "light.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "light.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "light.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.mode", | |
| "target_field": "light.mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.ip_address", | |
| "target_field": "light.ip", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 13 | |
| PUT _ingest/pipeline/home-assistant_number | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.max", | |
| "target_field": "light.max", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.min", | |
| "target_field": "light.min", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.step", | |
| "target_field": "light.step", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.mode", | |
| "target_field": "light.mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "light.effect", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "light.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "light.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.ip_address", | |
| "target_field": "light.ip", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ] | |
| } | |
| 14 | |
| PUT _ingest/pipeline/home-assistant_sensor | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "sensor.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "sensor.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.device_class", | |
| "target_field": "sensor.type", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.level", | |
| "target_field": "sensor.level", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.restored", | |
| "target_field": "sensor.restored", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.state_class", | |
| "target_field": "sensor.dimensions", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.supported_features", | |
| "target_field": "sensor.supported_features", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.unit_of_measurement", | |
| "target_field": "sensor.measurement", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.attribution", | |
| "target_field": "sensor.description", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "sensor.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.ip_address", | |
| "target_field": "sensor.ip", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 15 | |
| PUT _ingest/pipeline/home-assistant_automation | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "automation.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.current", | |
| "target_field": "automation.current", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.id", | |
| "target_field": "automation.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.last_triggered", | |
| "target_field": "automation.last.triggered", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.mode", | |
| "target_field": "automation.mode", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "automation.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "message", | |
| "context.id", | |
| "entity_id" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| 16 | |
| PUT _ingest/pipeline/home-assistant_binary_sensor | |
| { | |
| "processors": [ | |
| { | |
| "rename": { | |
| "field": "attributes.device_class", | |
| "target_field": "binary_sensor.status", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.attribution", | |
| "target_field": "sensor.description", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "attributes.friendly_name", | |
| "target_field": "binary_sensor.name", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "state", | |
| "target_field": "binary_sensor.state", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "context.id", | |
| "target_field": "binary_sensor.id", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_changed", | |
| "target_field": "last.changed", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "rename": { | |
| "field": "last_updated", | |
| "target_field": "last.updated", | |
| "ignore_missing": true | |
| } | |
| }, | |
| { | |
| "remove": { | |
| "field": [ | |
| "entity_id", | |
| "message" | |
| ], | |
| "ignore_missing": true | |
| } | |
| } | |
| ], | |
| "on_failure": [ | |
| { | |
| "set": { | |
| "field": "_index", | |
| "value": "failed-{{_index}}" | |
| } | |
| } | |
| ] | |
| } | |
| ### LOGSTASH PIPELINE ### | |
| input { | |
| http_poller { | |
| urls => { | |
| states => { | |
| url => "http://home-assistant:8123/api/states" | |
| method => get | |
| headers => { | |
| "Content-Type" => "application/json" | |
| "Authorization" => "Bearer PUT_YOUR_BEARER_AUTHORIZATION_HERE" | |
| } | |
| } | |
| } | |
| request_timeout => 59 | |
| schedule => {"every" => "30s"} | |
| codec => "json" | |
| } | |
| } | |
| filter { | |
| if [attributes][forecast] { | |
| mutate { rename => {"[attributes][forecast]" => "[weather][forecast]"}} | |
| split { field => "[weather][forecast]" } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment