From 39de364172b12022c3eec5681abd4a9a3e491f29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=BCndler?= Date: Tue, 16 Jul 2019 09:19:47 +0200 Subject: [PATCH] Fronius component documentation (#9283) * Documentation for Fronius sensor component * Update fronius description * Fix templating error * Update doc according to new implementation * Update configuration description * Fixes * Update source/_components/fronius.markdown Co-Authored-By: nielstron * Update source/_components/fronius.markdown Co-Authored-By: nielstron * Remove last line * Simplify example * Escape yaml templates * Remove "token" that cannot start any token according to deploy * Rework description * Fix configuration strings * Fix configuration look * :pencil2: Tweaks * :pencil2: Tweak * Correct documentation * Change fronius ip to fronius url * :pencil2: Tweak * :pencil2: Use `state_attr()` --- source/_components/fronius.markdown | 98 +++++++++++++++++++++ source/images/supported_brands/fronius.png | Bin 0 -> 20670 bytes 2 files changed, 98 insertions(+) create mode 100644 source/_components/fronius.markdown create mode 100644 source/images/supported_brands/fronius.png diff --git a/source/_components/fronius.markdown b/source/_components/fronius.markdown new file mode 100644 index 00000000000..fb23ba7b51c --- /dev/null +++ b/source/_components/fronius.markdown @@ -0,0 +1,98 @@ +--- +title: "Fronius" +description: "Instructions on how to connect your Fronius Inverter to Home Assistant." +ha_category: + - Energy + - Sensor +logo: fronius.png +ha_iot_class: Local Polling +ha_release: 0.96 +--- + +The `fronius` sensor will poll a [Fronius](http://www.fronius.com/) solar inverter, battery system or smart meter and present the values as sensors (or attributes of sensors) in Home Assistant. + +## Configuration + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: fronius + resource: FRONIUS_URL + monitored_conditions: + - sensor_type: inverter +``` + +{% configuration %} +resource: + description: "The IP address of the Fronius device" + required: true + type: string +monitored_conditions: + description: "Conditions to display in the frontend" + required: true + type: list + keys: + type: + description: "The kind of device, can be one of \"inverter\", \"storage\", \"meter\", or \"power_flow\"" + required: true + type: string + scope: + description: "The device type for storage and inverter, can be either \"device\" or \"system\"" + required: false + type: string + default: "device" + device: + description: "The id of the device to poll" + required: false + default: "\"1\" for inverters and \"0\" for other devices such as storages in compliance with Fronius Specs" +{% endconfiguration %} + +## Examples + +When including more of the components that one Fronius device offers, +a list of sensors that are to be integrated can be given like below. + +```yaml +sensor: + - platform: fronius + resource: FRONIUS_IP_ADDRESS + monitored_conditions: + - sensor_type: inverter + device: 1 + - sensor_type: meter + scope: system + - sensor_type: meter + device: 3 + - sensor_type: storage + device: 0 + - sensor_type: power_flow +``` + +## Sensors configuration + +To extract more detailed values from the state of each integrated sensor and to circumvent undefined values, +it is recommended to use template sensors as an interface: + +{% raw %} +```yaml +- platform: template + sensors: + electricity_inverter1_power_netto: + unit_of_measurement: 'W' + value_template: >- + {% if states.sensor.fronius_1921684247_inverter_1.attributes.power_ac is defined -%} + {{ states_attr('sensor.fronius_1921684247_inverter_1', 'power_ac') | float | round(2) }} + {%- else -%} + 0 + {%- endif %} + electricity_autonomy: + unit_of_measurement: '%' + value_template: >- + {% if states.sensor.fronius_1921684247_power_flow.attributes.relative_autonomy is defined -%} + {{ states_attr('sensor.fronius_1921684247_power_flow', 'relative_autonomy') | float | round(2) }} + {%- else -%} + 0 + {%- endif %} +``` +{% endraw %} diff --git a/source/images/supported_brands/fronius.png b/source/images/supported_brands/fronius.png new file mode 100644 index 0000000000000000000000000000000000000000..6b44d1cb351c937098b33c4513c77be81e463f83 GIT binary patch literal 20670 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 SfI{JxEvGDSm@>0VxBdgHeas2~ literal 0 HcmV?d00001