# Template wartość "0" gdy niedostępny

**URL:** <https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878>\
**Category:** Home Assistant\
**Tags:** template, fronius\
**Created:** [7 Listopad 2022 08:43 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878 "2022-11-07T08:43:00Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Autor:** ![Rawqq](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/r/9de0a6/32.png) [@Rawqq](https://forum.arturhome.pl/u/Rawqq)\
**Data wpisu:** [7 Listopad 2022 08:43 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/1 "2022-11-07T08:43:00Z")

</div>

Używam poniższego czujnika szablonu.  
Jest to czujnik, który odczytuje wartość z integracji Fronius pokazujący aktualny stan produkcji z paneli.  
Integracja podaje wartości w ‘W’ ja potrzebuje w ‘kW’ gdy jest ciemno integracja zwraca wart ‘unavailable’,  
która psuje moją kartę wykresu.  
Jak mogę zapobiec wartości ‘unavailable’ i zamiast tego zapisać 0.0?

```auto
  - platform: template
    sensors:
      solarnet_power_photovoltaics_kw:
        friendly_name: "Power photovoltaics - kW"
        unit_of_measurement: 'kW'
        value_template: "{{ (states('sensor.solarnet_power_photovoltaics') | float * 0.001 ) | round(2) }}"
        icon_template: mdi:white-balance-sunny  

```

---

<div class="post-metadata">

**Autor:** ![artpc](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/artpc/32/848_2.png) [@artpc](https://forum.arturhome.pl/u/artpc)\
**Data wpisu:** [7 Listopad 2022 09:24 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/2 "2022-11-07T09:24:37Z")

</div>

Nigdy tego nie używałem ale wewnątrz `platform: template` można użyć `availability_template`

HA

```auto
availability_template template (optional, default: true)
Defines a template to get the available state of the entity. If the template either 
fails to render or returns True, "1", "true", "yes", "on", "enable", 
or a non-zero number, the entity will be available. If the template returns any 
other value, the entity will be unavailable. If not configured, the entity will always 
be available. Note that the string comparison not case sensitive; 
"TrUe" and "yEs" are allowed.

```

Przykłady: [https://community.home-assistant.io/t/availability-template-in-sensor-template/141866/1](https://community.home-assistant.io/t/availability-template-in-sensor-template/141866/1)

---

<div class="post-metadata">

**Autor:** ![macek](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/macek/32/1647_2.png) [@macek](https://forum.arturhome.pl/u/macek)\
**Data wpisu:** [7 Listopad 2022 14:28 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/3 "2022-11-07T14:28:55Z")

</div>

> [@Rawqq](#):
>
> Jak mogę zapobiec wartości ‘unavailable’ i zamiast tego zapisać 0.0?

Przede wszystkim musisz zmienić sposób zapisu tego sensora _(legacy sensor configuration format - this format still works but is no longer recommended)_ na nowy format, doczytaj dokumentację [Template - Home Assistant](https://www.home-assistant.io/integrations/template/), wtedy możesz skorzystać z takiego przykladu:

```auto
template:
  - sensor:
      - name: solarnet_power_photovoltaics_kw
        state: >
          {% if is_state('sensor.solarnet_power_photovoltaics', 'unavailable') %}
            0
          {% else %}
            {{ (states('sensor.solarnet_power_photovoltaics') | float * 0.001 ) | round(2) }}
          {% endif %}

```

Edit:  
Brakowało jednego otwarcia nawiasu (.

---

<div class="post-metadata">

**Autor:** ![Rawqq](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/r/9de0a6/32.png) [@Rawqq](https://forum.arturhome.pl/u/Rawqq)\
**Data wpisu:** [7 Listopad 2022 19:47 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/4 "2022-11-07T19:47:15Z")

</div>

Dzięki za pomoc, ale coś nadal mu nie pasuje.

```auto
Logger: homeassistant.config
Source: config.py:807 
First occurred: 20:36:03 (1 occurrences) 
Last logged: 20:36:03

Invalid config for [template]: invalid template (TemplateSyntaxError: unexpected ')') for dictionary value @ data['sensor'][0]['state']. Got "{% if is_state('sensor.solarnet_power_photovoltaics', 'unavailable') %}\n 0\n{% else %}\n {{ states('sensor.solarnet_power_photovoltaics') | float * 0.001 ) | round(2) }}\n{% endif %} ". (See /config/template.yaml, line 38).

```

W pliku to wyglada tak:

```auto
- sensor:
    - name: solarnet_power_photovoltaics_kw
      state: >
        {% if is_state('sensor.solarnet_power_photovoltaics', 'unavailable') %}
          0
        {% else %}
          {{ states('sensor.solarnet_power_photovoltaics') | float * 0.001 ) | round(2) }}
        {% endif %}   

```

---

<div class="post-metadata">

**Autor:** ![szopen](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/szopen/32/1093_2.png) [@szopen](https://forum.arturhome.pl/u/szopen)\
**Data wpisu:** [7 Listopad 2022 20:22 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/5 "2022-11-07T20:22:29Z")

</div>

Brakuje nawiasu - @macek zedytował przecież przykład  
ja bym jeszcze zamiast 0 dał 0.0

---

<div class="post-metadata">

**Autor:** ![Rawqq](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/r/9de0a6/32.png) [@Rawqq](https://forum.arturhome.pl/u/Rawqq)\
**Data wpisu:** [7 Listopad 2022 21:03 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/6 "2022-11-07T21:03:31Z")

</div>

Nie zauważyłem tej edycji, teraz wszystko jest tak jak być powinno.  
0.0 wygląda lepiej 🙂

Dziękuje za pomoc.

---

<div class="post-metadata">

**Autor:** ![szopen](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/szopen/32/1093_2.png) [@szopen](https://forum.arturhome.pl/u/szopen)\
**Data wpisu:** [7 Listopad 2022 21:13 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/7 "2022-11-07T21:13:36Z")

</div>

Tu nie chodzi o wygląd 0 jest domyślnie traktowane jako integer, a 0.0 float, no i w 2 części template zwracasz dane zmiennoprzecinkowe.

---

<div class="post-metadata">

**Autor:** ![Rawqq](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/r/9de0a6/32.png) [@Rawqq](https://forum.arturhome.pl/u/Rawqq)\
**Data wpisu:** [8 Listopad 2022 17:09 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/8 "2022-11-08T17:09:52Z")

</div>

Rozumiem,

A gdybym chciał żeby jeszcze na stan unknown też było 0.0 to tak

```auto
- sensor:
    - name: solarnet_power_photovoltaics_kw
      unit_of_measurement: 'kW'
      state: >
        {% if is_state('sensor.solarnet_power_photovoltaics', 'unavailable' , 'unknown') %}
          0.0
        {% else %}
          {{ (states('sensor.solarnet_power_photovoltaics') | float * 0.001 ) | round(2) }}
        {% endif %}  

```

---

<div class="post-metadata">

**Autor:** ![rafkan](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/rafkan/32/18_2.png) [@rafkan](https://forum.arturhome.pl/u/rafkan)\
**Data wpisu:** [8 Listopad 2022 17:59 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/9 "2022-11-08T17:59:10Z")

</div>

Powinno zadziałać:

```auto
state: >
  {% if is_state('sensor.solarnet_power_photovoltaics', 'unavailable' ) %}
          0.0
  {% elif is_state('sensor.solarnet_power_photovoltaics', 'unknown') %}
         0.0
  {% else %}
       {{ (states('sensor.solarnet_power_photovoltaics') | float * 0.001 ) | round(2) }}
  {% endif %} 

```

[/quote]

---

<div class="post-metadata">

**Autor:** ![macek](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/macek/32/1647_2.png) [@macek](https://forum.arturhome.pl/u/macek)\
**Data wpisu:** [8 Listopad 2022 18:23 UTC](https://forum.arturhome.pl/t/template-wartosc-0-gdy-niedostepny/6878/10 "2022-11-08T18:23:01Z")

</div>

> [@Rawqq](#):
>
> A gdybym chciał żeby jeszcze na stan unknown też było 0.0 to tak

```auto
{% if is_state('sensor.solarnet_power_photovoltaics', 'unavailable') or is_state('sensor.solarnet_power_photovoltaics', 'unknown') %}

```
