Liczniki wody, ekogroszku, gazu, energii -Licznik impulsów (AISpeaker - Home Assistant)

podałeś że 120cm - 0%
czyli twoje 29,667cm to około 25% czyli = 29,667cm : 25% = 1,18668

"{{ 100 - (states('sensor.temperatura_piec_sr04_distance_2')|float(2) / 1.18)| round(0) }}"

czytaj tak:

= 100% - (29,667 : 1,18668)% = 100% - 25% = 75%

to co podał @stravi to wyjdzie to samo

{{ (1 - states('sensor.temperatura_piec_sr04_distance_2') / 120) * 100 }}

= (1 - (29,667 : 120))*100 = 75%

1 polubienie

Podaj przykłady wartości pomiaru i jakie powinny być wyniki.
Ja założyłem że działa to w tą stronę:
120cm → 0%
90cm → 25%
60cm → 50%
30cm → 75%
0cm → 100%

1 polubienie

100% - 5cm
50% - 55 cm
0% -105 cm

Byłem jeszcze raz zmierzyć zbiornik i omyłkowo zmierzyłem żmijkę. Dlatego wyszło 120cm.

To moja propozycja jest taka:

{{ ((1 - (states('sensor.temperatura_piec_sr04_distance_2') - 5 )/ 100) * 100 )| round(0) }}

Objaśnienie parametrów w razie poprawek:

{{ ((1 - (<pomiar> - <min_wartosc> )/ <max_minus_min>) * 100 )| round(0) }}

Wrzucam cały wpis.
Encja jest niedostępna.


 - sensors:
     zasobnik_piec:
       friendly_name: "Zasobnik piec"
       unit_of_measurement: '%'
       value_template: "{{ ((1 - (states('sensor.temperatura_piec_sr04_distance_2') - 5 )/ 100) * 100 )| round(0) }}"

Zapis wygląda poprawnie. W logach powinieneś mieć błąd. Możliwe że jakiś znacznik skopiowany z forum dostał złe kodowanie.

Nie ma żadnego błędu.
Skopiowałem formułe od @Tomasz i dałem parametr 1.0 zamiast 1.18 i ruszyło. :slightly_smiling_face:
Dziękuję wszystkim za pomoc.
A Ty @Stravi pisałeś że masz gorączkę więc odpoczywaj. Zdrowia.
I jeszcze raz dziękuję za pomoc wszystkim.
Dziś w nocy wydrukuje się poprawiona obudowa do czujnika to wrzucę foto :slightly_smiling_face:

1 polubienie

@Stravi i @Tomasz proszę o pomoc. :slightly_smiling_face:

W czasie testów wyszło że jednak sensor musi być zdefiniowany trochę inaczej.
Mianowicie
0cm-15cm – 100%

60cm - 15%

70cm- 0%

Rozumiem że w przedziale przelicznik to

100% - 15% każdy cm to 1,8%
W myśl wzoru 85% : 45cm = 1,8

I przedział od 15%-0%
15% : 10 cm = 1,5

Czy wogole jest możliwy taki zapis ?

Da się, chociaż odnoszę wrażenie że to naciągana teoria. Tam jest jakiś lej, nieregularny kształt na początku i końcu? Jesteś w w stanie uzasadnić ten wzór?
Wieczorem usiądę przy laptopie to coś napiszę.

Dokładnie.
Zbiornik w dolnej części ma lej.
Do tego ekogroszek obsypuje się w dość specyficzny sposób.
Poparte to jest pomiarami tego jak obniża się poziom w zasobniku.
Sam się zdziwiłem ale tak jest :slightly_smiling_face:

Myślałem też o tym ale musiałbym zmodyfikować konstrukcje wsporcza zbiornika tak aby wstawić tam czujnik tensometryczny.

Do tego czujnik tensometryczny kosztuje ponad 150 PLN + wzmacniacz.
Póki co próbuje z czujnikiem odległości. :slightly_smiling_face:

Zrobiłem to na Template, bo tego się powinno używać do tworzenia sensorów.

  - name: Zasobnik piec
    unit_of_measurement: '%'
    state: >-
        {% if states.sensor.temperatura_piec_sr04_distance_2.state | int >= 0 and states.sensor.temperatura_piec_sr04_distance_2.state | int <= 15 %}
          100
        {% elif states.sensor.temperatura_piec_sr04_distance_2.state | int > 15 and states.sensor.temperatura_piec_sr04_distance_2.state | int < 60 %}
          {{ (((60 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 45 ) * 85 + 15) | round(0) }}
        {% else %}
          {{ (((70 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 10 ) * 15) | round(0) }}
        {% endif %}
Error loading /data/data/pl.sviete.dom/files/home/AIS/configuration.yaml: while parsing a block mapping
in "/data/data/pl.sviete.dom/files/home/AIS/templates.yaml", line 9, column 3
expected <block end>, but found '-'
in "/data/data/pl.sviete.dom/files/home/AIS/templates.yaml", line 15, column 3

Konfiguracja niepoprawna, wkleiłem całość do pliku templates

Poprawiłem jedną literówkę.
Jeśli nie ruszy to podaj co jest w liniach 9 i 15.

Cały plik Templates :slight_smile:

i błąd

Error loading /data/data/pl.sviete.dom/files/home/AIS/configuration.yaml: mapping values are not allowed here
in "/data/data/pl.sviete.dom/files/home/AIS/templates.yaml", line 16, column 26
- sensor:
  - name: Stan Moes
    state: '{{ state_attr("climate.termostat", "heat") }}'

- sensor:
  - name: Temperatura Moes
    state: "{{ state_attr('climate.termostat', 'local_temperature') }}"

- sensors:
    zasobnik_piec:
      friendly_name: "Zasobnik piec"
      unit_of_measurement: '%'
      value_template: "{{ 100 - (states('sensor.temperatura_piec_sr04_distance_2')|float(2) / 0.95)| round(0) }}"   

- name: Zasobnik piec2
      unit_of_measurement: '%'
      state: >-
        {% if states.sensor.temperatura_piec_sr04_distance_2.state | int >= 0 and states.sensor.temperatura_piec_sr04_distance_2.state | int <= 15 %}
          100
        {% elif states.sensor.temperatura_piec_sr04_distance_2.state | int > 15 and states.sensor.temperatura_piec_sr04_distance_2.state | int < 60 %}
          {{ (((60 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 45 ) * 85 + 15) | round(0) }}
        {% else %}
          {{ (((70 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 10 ) * 15) | round(0) }}
        {% endif %}

poprawiłem plik na taki i konfiguracja poprawna


- sensor:
  - name: Stan Moes
    state: '{{ state_attr("climate.termostat", "heat") }}'

- sensor:
  - name: Temperatura Moes
    state: "{{ state_attr('climate.termostat', 'local_temperature') }}"

- sensors:
    zasobnik_piec:
      friendly_name: "Zasobnik piec"
      unit_of_measurement: '%'
      value_template: "{{ 100 - (states('sensor.temperatura_piec_sr04_distance_2')|float(2) / 0.95)| round(0) }}"   

- sensors:
    zasobnik_piec2:
      friendly_name: "Zasobnik piec2"
      unit_of_measurement: '%'
      state: >-
        {% if states.sensor.temperatura_piec_sr04_distance_2.state | int >= 0 and states.sensor.temperatura_piec_sr04_distance_2.state | int <= 15 %}
          100
        {% elif states.sensor.temperatura_piec_sr04_distance_2.state | int > 15 and states.sensor.temperatura_piec_sr04_distance_2.state | int < 60 %}
          {{ (((60 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 45 ) * 85 + 15) | round(0) }}
        {% else %}
          {{ (((70 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 10 ) * 15) | round(0) }}
        {% endif %}

w logach pojawił się taki błąd.
Encji brak

Logger: homeassistant.components.template.config
Source: components/template/config.py:89
Integration: Template ([documentation](https://www.home-assistant.io/integrations/template), [issues](https://github.com/home-assistant/home-assistant/issues?q=is%3Aissue+is%3Aopen+label%3A%22integration%3A+template%22))
First occurred: 21:44:41 (1 occurrences)
Last logged: 21:44:41

The entity definition format under template: differs from the platform configuration format. See https://www.home-assistant.io/integrations/template#configuration-for-trigger-based-template-sensors

Sprawdź tak:

- sensor:
  - name: Stan Moes
    state: '{{ state_attr("climate.termostat", "heat") }}'

  - name: Temperatura Moes
    state: "{{ state_attr('climate.termostat', 'local_temperature') }}"

  - name: Zasobnik piec
    unit_of_measurement: '%'
    state: "{{ 100 - (states('sensor.temperatura_piec_sr04_distance_2')|float(2) / 0.95)| round(0) }}"   

  - name: Zasobnik piec2
    unit_of_measurement: '%'
    state: >-
        {% if states.sensor.temperatura_piec_sr04_distance_2.state | int >= 0 and states.sensor.temperatura_piec_sr04_distance_2.state | int <= 15 %}
          100
        {% elif states.sensor.temperatura_piec_sr04_distance_2.state | int > 15 and states.sensor.temperatura_piec_sr04_distance_2.state | int < 60 %}
          {{ (((60 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 45 ) * 85 + 15) | round(0) }}
        {% else %}
          {{ (((70 - states('sensor.temperatura_piec_sr04_distance_2') | int) / 10 ) * 15) | round(0) }}
        {% endif %}
1 polubienie

Konfiguracja prawidłowa :slightly_smiling_face::slightly_smiling_face:

Teraz testy.
Sensor sie pojawił.
Zbiornik średnio starcza na tydzień więc teraz cierpliwość wskazana :slightly_smiling_face::slightly_smiling_face:

Dziękuję za pomoc.

Jak wszystko się sprawdzi potwierdze aby kod został dla kolejnych użytkowników :slightly_smiling_face:

1 polubienie

Jak tam pomiary?
W sumie to te % chyba możesz przeliczyć na kg, kg na kWh i zrobić wykres zużycia z utilitymeter.

1 polubienie

Póki co jest super :slight_smile:
Zasobnik piec2 to Twój skrypt.
Oficjalna aplikacja emodul.pl pokazuje 72 %
Jest naprawdę dobrze :slight_smile:
image