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

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

Testy zakończone.
Rozbierznosc 2% czyli żadna :slightly_smiling_face::slightly_smiling_face:
Dziękuję @Stravi oraz @Tomasz i @Cezary.K :slightly_smiling_face:

@Stravi kod działa genialnie.
Teraz można spać spokojnie. :slightly_smiling_face:


1 polubienie

Kraszewsky napisał:

Rozbieżnosc 2% czyli żadna

Od dwóch miesięcy testuję 2 liczniki wody postawione na ESP32 Tasmota dzięki korepetycjom od Cezary.K (jeszcze raz bardzo dziękuję Ci za poświęcony czas i cierpliwość) i nie jestem zadowolony, bo 2% błąd zawsze na + przekłada się na dobowe przekłamanie zużycia o 3 do 4 litrów na każdym z nich. Próbowałem dopasować parametr CounterDebounce w szerokim zakresie od 50 do 2500 ale stwierdziłem brak quasi-liniowej zależności dokładności pomiaru od ustawień tego parametru. W przypadku węgla wygląda to ok. ale w przypadku wody chcąc wykorzystać dane do info o potencjalnym wycieku już tak fajnie nie jest bo wyciek 1 l a małego kubełka wody robi różnicę. Na razie nie mam pomysłów na pozbycie się błędów zliczania.


ZWU

Mój licznik nie służy temu aby wykonywać na podstawie niego obliczenia zużycia więc może dlatego mi to nie przeszkadza. :slightly_smiling_face:
Poprostu po co chodzić i sprawdza.
Można usłyszeć stosowny komunikat oraz powiadomienie odnośnie zasobnika :slightly_smiling_face:

@Kraszewsky wcześniej pisałeś że
template wskazuje 74%, a emodul.pl 72%
teraz template wskazuje 14%, a emodul.pl 12%

Czyli stały błąd, który pewnie można wyeliminować znajdując punkt w którym zaczyna on występować.
Aczkolwiek rozumiem że to nic nie wniesie do Twojego przypadku użycia - błąd jest jak najbardziej akceptowalny.
@begginer niestety nie wiem o co chodzi z Twoim licznikiem. Widzę 2 liczby:
68400
328153
Inny rząd wielkości, nie wiem jak je porównywać itd. Natomiast wierzę że @Cezary.K pomagał jak umiał :slight_smile:
Z Tasmota nie pomogę, bo nie używam i nie mam doświadczenia za bardzo. Natomiast z EspHome lub właśnie template w HA mogę pomóc, ale musisz rozpisać szczegółowo problem. Myślę że najlepiej w osobnym wątku.

1 polubienie

Mam pytanie bo nie mogę znaleźć odpowiedzi nigdzie.
Jeżeli chce podłączyć zamiast hc-sr04 czujnik
JSN-SR04T to muszę podłączyć go podłączyć zgodnie z tym schematem ?

Oczywiście hc-sr04 padł w zbiorniku stąd zmiana :slightly_smiling_face: