Szablon encji odzwierciedlający stan słońca

Witam wszystkich,

Chciał bym zrobić encję która podawała by wartość dziesiętną w przedziale od 0 do 1 w zależności od stanu słońca z uługi sun.

Czyli od wschodu do południa wartość rośnie od 0 do 1 a potem spada do 0.

Naskrobałem coś takiego ale słabo mi to działa

chciał bym wykorzystać to w karcie adizanni / floor3d-card jako wejście dla parametru globalLightPower i innych automatyzacji

template:
  - sensor:
      - name: "sun lux"
        state: >
          {% set sunjson = {
              "noc": as_timestamp(state_attr('sun.sun', 'next_midnight'))-(3600 * 4),
              "poranek": as_timestamp(state_attr('sun.sun', 'next_rising')) - (24*3600),
              "teraz": as_timestamp(now()),
              "polodnieminus": as_timestamp(state_attr('sun.sun', 'next_noon')) - (24*3600),
              "polodnie": as_timestamp(state_attr('sun.sun', 'next_noon')),
              "wschod": as_timestamp(state_attr('sun.sun', 'next_setting'))
            } %}
          {% set sunkalkulacja = {
              "noc": (((sunjson.teraz - sunjson.noc)/(sunjson.noc - sunjson.polodnieminus))*-1),
              "poranek": (((sunjson.polodnie - sunjson.teraz)/(sunjson.polodnie - sunjson.wschod))*-1)
            } %}

              {% if state_attr('sun.sun', 'rising') == false -%}
                {% if sunkalkulacja.noc > 0.15 -%}
                  {{ sunkalkulacja.noc }}
                {%- else -%}
                  {{ 0.15 }}
                {%- endif %}
              {%- else -%}
                {% if sunkalkulacja.poranek > 0.15 -%}
                  {{ sunkalkulacja.poranek }}
                {%- else -%}
                  {{ 0.15 }}
                {%- endif %}
              {%- endif %}

Te parametry nie są wystarczające ?

next_dawn: 2022-11-16T05:46:22.844224+00:00
next_dusk: 2022-11-15T15:46:33.021740+00:00
next_midnight: 2022-11-15T22:46:09+00:00
next_noon: 2022-11-16T10:46:03+00:00
next_rising: 2022-11-16T06:25:20.622579+00:00
next_setting: 2022-11-15T15:07:46.704135+00:00
elevation: 17.74
azimuth: 194.9
rising: false
friendly_name: Sun

Jak ta automatyzacja ma się do aktualnego stanu na niebie, pochmurne niebo, deszcz?
Sam używam encji sun.sun do automatyzacji rolet ale w połączeniu z pogodą i azymutem słońca.

1 polubienie

Pochwal się automatyzacjami albo logiką automatyzacji.

Jeżeli odpowiada ci Automatyzacja w NR

Dla mnie to ma być wartość pomocnicza.
Znajomy nie chce czujnika zmierzchu więc chciał bym zrobić w ten sposób.

Korzystam z informacji dawanych przez sun.sun ale działa mi to fajnie po południu, a przed południem otrzymuję dziwne wartości. zamotałem się już :stuck_out_tongue:

Edit:

Ok, poradziłem sobie.

Zamieszczam kod, może komuś się przyda.

template:
  - sensor:
      - name: "sun lux"
        icon: mdi:theme-light-dark
        state: >
          {% set sunjson = {
              "noc": as_timestamp(state_attr('sun.sun', 'next_midnight'))-(3600 * 5),
              "poranek": as_timestamp(state_attr('sun.sun', 'next_rising')) - (24*3600),
              "teraz": as_timestamp(now()),
              "polodnieminus": as_timestamp(state_attr('sun.sun', 'next_noon')) - (24*3600),
              "polodnie": as_timestamp(state_attr('sun.sun', 'next_noon')),
              "wschod": as_timestamp(state_attr('sun.sun', 'next_setting'))
            } %}
          {% set sunkalkulacja = {
              "noc": (((sunjson.teraz - sunjson.noc)/(sunjson.noc - sunjson.polodnieminus))*-1),
              "poranek": (((sunjson.teraz - sunjson.wschod)/(sunjson.wschod - sunjson.polodnieminus))*-1)
            } %}

            {% if state_attr('sun.sun', 'rising') == false -%}
                {% if sunkalkulacja.noc > 0.05 -%}
                  
                  {% if states('weather.forecast_dom') == 'cloudy'-%}
                    {{ sunkalkulacja.noc * 0.8 }}
                  {% elif states('weather.forecast_dom') == 'partlycloudy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'fog' %}
                    {{ sunkalkulacja.noc * 0.7}}
                  {% elif states('weather.forecast_dom') == 'hail' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning-rainy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'pouring' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy-rainy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {%- else -%}
                    {{ sunkalkulacja.noc }}
                  {%- endif %}

                {%- else -%}
                  {{ 0.05 }}
                {%- endif %}
              {%- else -%}
                {% if sunkalkulacja.poranek > 0.05 -%}
                  {% if states('weather.forecast_dom') == 'cloudy'-%}
                    {{ sunkalkulacja.poranek * 0.6 }}
                  {% elif states('weather.forecast_dom') == 'partlycloudy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'fog' %}
                    {{ sunkalkulacja.poranek * 0.8}}
                  {% elif states('weather.forecast_dom') == 'hail' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning-rainy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'pouring' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy-rainy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {%- else -%}
                    {{ sunkalkulacja.noc }}
                  {%- endif %}
                {%- else -%}
                  {{ 0.05 }}
                {%- endif %}
              {%- endif %}
      - name: "sun precent"
        unit_of_measurement: "%"
        icon: 'mdi:theme-light-dark'
        state: >
          {% set sunjson = {
              "noc": as_timestamp(state_attr('sun.sun', 'next_midnight'))-(3600 * 5),
              "poranek": as_timestamp(state_attr('sun.sun', 'next_rising')) - (24*3600),
              "teraz": as_timestamp(now()),
              "polodnieminus": as_timestamp(state_attr('sun.sun', 'next_noon')) - (24*3600),
              "polodnie": as_timestamp(state_attr('sun.sun', 'next_noon')),
              "wschod": as_timestamp(state_attr('sun.sun', 'next_setting'))
            } %}
          {% set sunkalkulacja = {
              "noc": ((((sunjson.teraz - sunjson.noc)/(sunjson.noc - sunjson.polodnieminus))*-1) * 100),
              "poranek": ((((sunjson.teraz - sunjson.wschod)/(sunjson.wschod - sunjson.polodnieminus))*-1) * 100),
              "zaokr": 4
            } %}
            
            
              {% if state_attr('sun.sun', 'rising') == false -%}
                {% if sunkalkulacja.noc > 0 -%}
                  
                  {% if states('weather.forecast_dom') == 'cloudy'-%}
                    {{ sunkalkulacja.noc * 0.8 }}
                  {% elif states('weather.forecast_dom') == 'partlycloudy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'fog' %}
                    {{ sunkalkulacja.noc * 0.7}}
                  {% elif states('weather.forecast_dom') == 'hail' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning-rainy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'pouring' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy-rainy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy' %}
                    {{ sunkalkulacja.noc * 0.9}}
                  {%- else -%}
                    {{ sunkalkulacja.noc }}
                  {%- endif %}

                {%- else -%}
                  {{ 0 }}
                {%- endif %}
              {%- else -%}
                {% if sunkalkulacja.poranek > 0 -%}
                  {% if states('weather.forecast_dom') == 'cloudy'-%}
                    {{ sunkalkulacja.poranek * 0.6 }}
                  {% elif states('weather.forecast_dom') == 'partlycloudy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'fog' %}
                    {{ sunkalkulacja.poranek * 0.8}}
                  {% elif states('weather.forecast_dom') == 'hail' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'lightning-rainy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'pouring' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy-rainy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {% elif states('weather.forecast_dom') == 'snowy' %}
                    {{ sunkalkulacja.poranek * 0.9}}
                  {%- else -%}
                    {{ sunkalkulacja.noc }}
                  {%- endif %}
                {%- else -%}
                  {{ 0 }}
                {%- endif %}
              {%- endif %}


1 polubienie

Witam, czy na priva można prosić o ile to jeszcze aktualne flowa z obsługi rolet na podstawie pogody i azymutu słońca w NR :wink: z góry dziękuje.

zaluzje_22.json (34,0 KB)

Dzięki no to jest co chciałem. Pozdrawiam