# Licznik kontrakton ESP-01S

**URL:** <https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913>\
**Category:** Home Assistant\
**Tags:** state\_class, device\_class, esphome\
**Created:** [28 Luty 2022 17:08 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913 "2022-02-28T17:08:12Z")\
**Posts on this page:** 7\
**Page:** 3

<div class="post-metadata">

**Autor:** ![Marcin.KnD](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@Marcin.KnD](https://forum.arturhome.pl/u/Marcin.KnD)\
**Data wpisu:** [3 Marzec 2022 11:40 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/42 "2022-03-03T11:40:50Z")

</div>

Słuchaj. Wrzuciłem na próbę coś takiego:

```auto
sensor:
  - platform: pulse_counter
    pin: GPIO0
    name: "Water Usage"
    update_interval: 10s
    unit_of_measurement: 'gal'
    filters:
      # reports in pulses/min, so divide by 6 and by 64 pulses per gallon
      multiply: 0.0026041667

```

Sensor rejestrował przy otwartym obwodzie (zakładam przez pullup programowy), przy połączeniu do masy lub Vcc nie rejestrował. Więc cosik robi. Teraz muszę jeszcze coś pokombinować żeby działało odwrotnie 😅

Jutro będę się jeszcze bawił, coś takiego znalazłem:

```auto

sensor:

platform: pulse_counter
id: water_pulse
pin:
number: GPIO3
mode: INPUT
internal: true
name: “Pulse Counter”
update_interval: 1s
filters:

lambda: |-
static float total_pulses = 0.0;
total_pulses += x * 1 / 60.0;
id(lifetime_counter).publish_state(total_pulses / 17);
return x ;
platform: template
id: lifetime_counter
name: “Water Total”
unit_of_measurement: “L”

platform: template
name: “Water Flow Rate”
id: water_flow_rate
accuracy_decimals: 1
unit_of_measurement: “L/min”
icon: “mdi:water”
lambda: return (id(water_pulse).state /17);
update_interval: 3s

```

Myślę że powinno działać po podłączeniu kontraktonu do GPIO3 i VCC

---

<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:** [3 Marzec 2022 12:35 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/43 "2022-03-03T12:35:16Z")

</div>

Pewnie zadziała, ale wcięcia całkiem wywiało z tego YAMLa, więc będziesz miał nieco rzeźby by go poprawić.

Po pełnej dokumentacji nie chciało mi się rzeźbić, ale masz to  
[https://tttapa.github.io/ESP8266/Chap04%20-%20Microcontroller.html](https://tttapa.github.io/ESP8266/Chap04%20-%20Microcontroller.html)  
więc jednak można włączyć wewnętrzny pullup, a zatem prościej będzie wpiąć kontaktron między GPIO a masę.  
PS sugeruję wpiąć rezystor 330R (lub nieco więcej) szeregowo z kontaktronem (tzn. musu nie ma, ale ja bym tak zrobił by mieć święty spokój i się nie zastanawiać czy w stanach nieustalonych się coś spieprzy, czy nie i to bez kopania po tej dokumentacji producenta, do której chyba nikt nie zagląda).

I wyjaśnienie czemu akurat taka wartość - obciążalność wyjścia (tak - rozpatruję to GPIO jako wyjście, mimo, że użytkowo będzie wejściem) to 12mA, mamy 3,3V, więc by nie popłynął prąd większy od 12mA wystarczyłoby 275omów, a 330omów to najbliższa wyższa od obliczonej wartość w szeregu E12 (można by jeszcze zrobić jakąś prostą symulację “worst case”, ale nie przesadzajmy, przy 3,6V też tyle wystarczy)

---

<div class="post-metadata">

**Autor:** ![Marcin.KnD](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@Marcin.KnD](https://forum.arturhome.pl/u/Marcin.KnD)\
**Data wpisu:** [3 Marzec 2022 12:36 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/44 "2022-03-03T12:36:17Z")

</div>

To nie problem… Jutro się pobawię dam znać:

działa 🙂 ale teraz walczę z sensorem i czegoś mi brakuje

pomożesz jakoś ta składnie ogarnąć? . mój wodomierz to Bmeters GSD8 T50

1 puls/1 litr

```auto
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO3
      inverted: true
      mode:
        input: true
        pullup: true
    name: pulse_meter
    id: pulse_meter
  
sensor:
  - platform: template
    name: "pulse_sensor"
    id: "pulse_sensor"
    accuracy_decimals: 0
    lambda: |-
          if (id(pulse_meter).state == true) {
            return 1 ; 
          } else {
            return 0;
          }
    update_interval: 50ms
  - platform: template
    name: "Zużucie wody"
    id: "zuzycie_wody"
    state_class: "total_increasing"
    accuracy_decimals: 0
    icon: "mdi:water"
    unit_of_measurement: "L"
    lambda: |-
          if (id(pulse_sensor).state == 1) {
            return {id(zuzycie_wody).state ++} ; 
          } else {
            return {};
          }
          
    update_interval: 1s

```

---

<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:** [4 Marzec 2022 17:45 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/45 "2022-03-04T17:45:07Z")

</div>

Wrzuć kompletny kod (nawet jeśli się teraz nie kompiluje), to może linter podpowie coś w sprawie błędów (tak te podpowiedzi niekoniecznie wskazują faktyczne błędy, ale zawsze jednak trochę coś tam podpowiedzą), a takie wrzucanie kodu (czy jak wolisz skecza, bo to w sumie konfig, a nie realny kod) po kawałku to trochę takie rzucanie ewentualnemu próbującemu pomóc kłód pod nogi…  
Zanim się zabrałem za

> [@Marcin.KnD](#):
>
> ale złe wartosci pokazuje.

to zawartość posta się zmieniła, a ciekaw byłem jaka jest kwestia z tymi wartościami, bo pożydziłeś informacji - była za dużo za mało, jakaś reguła, czy może całkiem od czapy, kiedyś (nie wiem czy nie przez chwilę) w tym wątku był kod do licznika w wersji amerykańskiej - liczącego w galonach

Ogarnięcie składni polega na… skorzystaniu z dokumentacji.

---

<div class="post-metadata">

**Autor:** ![Marcin.KnD](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@Marcin.KnD](https://forum.arturhome.pl/u/Marcin.KnD)\
**Data wpisu:** [4 Marzec 2022 18:09 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/46 "2022-03-04T18:09:50Z")

</div>

Nie nie. Wszystkie sensory typu pulsem counter  
liczą imp/min. A mnie chodzi bo sumę impulsów, bo 1 imp 1 litr. Nie potrzebuję niczego więcej. Bo w Home Asistant sobie w utility meter zobie.

Ten kod co jest zwraca mi tylko 0 lub 1 ale nie potrafię zliczyć impulsów, chodzi mi o sume, wiex generalnie tylko coś muszę grzejnąć w ostatniej części

---

<div class="post-metadata">

**Autor:** ![RobinI30](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/robini30/32/5835_2.png) [@RobinI30](https://forum.arturhome.pl/u/RobinI30)\
**Data wpisu:** [4 Marzec 2022 18:45 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/47 "2022-03-04T18:45:04Z")

</div>

> [@Marcin.KnD](#):
>
> Wszystkie sensory typu pulsem counter  
> liczą imp/min

Guzik prawda… nie definiujesz **update\_interval** więc defaultowo wynosi 60s więc tylko Ci sią wydaje.  
jesli go zmienisz będziesz miał np 1imp/sek.  
Używasz kontaktronu więc brakuje deboucing tzn … **internal\_filter** na poziomie 100ms , defaultowe 13us to stanowczo za mało.

---

<div class="post-metadata">

**Autor:** ![Marcin.KnD](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/m/f04885/32.png) [@Marcin.KnD](https://forum.arturhome.pl/u/Marcin.KnD)\
**Data wpisu:** [4 Marzec 2022 18:50 UTC](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913/48 "2022-03-04T18:50:11Z")

</div>

ale ja nie chce mieć 1 imp /sek, tylko sumę impulsów

już doszedłem i działa 🙂

```auto
sensor:
  - platform: pulse_counter
    pin: 
      number: GPIO2
      inverted: false
      mode:
        input: true
        pullup: true
    state_class: "measurement"
    accuracy_decimals: 3
    unit_of_measurement: 'm³/h'
    icon: "mdi:water"
    name: 'Water Meter House'
    internal_filter: 100ms
    update_interval: 60s
    filters:
      - multiply: 0.006
    total:
      unit_of_measurement: 'm³'
      name: 'Total Water House'
      accuracy_decimals: 3
      filters:
      - multiply: 0.001
      

```

@szopen @RobinI30 dzięki za pomoc

[Poprzednia strona](https://forum.arturhome.pl/t/licznik-kontrakton-esp-01s/4913.md?page=2)
