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

Opiszę dzisiaj jak zrobić licznik impulsów. Ja wykorzystuję go do liczenia ilości zużytej wody, oraz odczytu stanu licznika wody. Kolejny licznik pokazuje zużycie ekogroszku w kg w ciagu dnia, tygodnia, miesiąca i roku.
Najpierw sprzęt. Ja używam Wemos d1. Wykorzystałem GPIO12 (D6) oraz GPIO13 (D7) z racji, że są blisko pinu z napięciem 3,3V. Ten pin potrzebujemy do stworzenia pull up (poczytajcie w internetach), czyli łączymy pin 3,3v rezystorem 4,7 kom z wejściem D6 i drugim rezystorem z wejściem D7. U mnie wygląda to tak
image
Do pomiaru ilości wody założyłem za głownym licznikiem wody, dodatkowy licznik taki jak na zdjęciu. Kupiłem na Allegro za jakies 70zł. Ma on wyjście impulsowe (1 impuls na 1l wody). Wystają z niego 2 przewody. Jeden podpinamy do wejścia wemosa D6, a drugi do masy oczywiście też w wemosie.
image

Drugi mój licznik to ilość zużytego ekogroszku w podajniku pieca.Mam podajnik tłokowy, więc założyłem wyłącznik krańcowy
image
w takim miejscu, że gdy tłok się wysuwa to na chwilę dotyka krańcówkę, która przepuszcza impuls. Z wyłacznika krańcowego podłączamy przedowy do D7 i masy. Potrzebujemy jeszcze zasilanie 5V. Mozemy podpiąć łądowarkę na micro USB (Wemos na port microUSB), lub dołożyć mały transformatorek AC-DC 230V na 5V.
image

Sprzęt mamy ogarnięty, to teraz soft. Wgrywamy kablem przez micro USB soft z https://powiedz.co/ota/ Gniazdo. Aby zaczął rozgłaszać sieć zwieramy na jakies 5s do masy wyjście D3(GPIO0). Po dodaniu do bramki wchodzimy na moduł po jego nr IP i dalej w konfiguracja -konfiguracja modułu, wybieramy modył Generic (18), klikamy zapisz, wchodzimy jeszcze raz i wybieramy dla D6 i D7 Licznik
image

Zapisujemy i na głownym menu mamy już widoczne liczniki
image
Wchodzimy teraz w konsolę i wpisujemy:
CounterType 0 będzie zliczał ilość impulsów, a nie czas trwania impulsu. Tak naprawdę jest to domyślnie ustawione.
Ważne polecenie to CounterDebounce które niweluje nam odbicia, czyli gdy impuls trwa za długo może go policzyć kilka razy. Ustawiamy jak długo może trwać nasz impuls. Z racji, że to ustawienie jest globalne dla wszystkich liczników na urządzeniu to musimy iść na kompromis. Mój impuls od licznika wody trwa jakies 100ms, ale od podajnika ekogroszku około 2s. Nie ustawimy na 2s, bo mogą nam się nie zliczać wszystkie impulsy od licznika wody, więc ja wpisałem CounterDebounce 300 przez co woda liczy się dobrze, ale każde podanie ekogroszku liczy się jako 2 impulsy (wciśnięcie krańcówki i odpuszczenie). Załatwimy ten problem już w samej bramce.
Jeżeli chcemy ustawić stan licznika np. wody to służy do tego polecenie Counter Counter 75284 ustawi nam taki stan licznika. Jeżeli chcemy zrezetować to poprostu wpisujemy Counter 0.
Na module mamy już wszystko.
Przechodzimy do bramki Aj-Speaker. Liczniki nam wykryło i wszystko pięknie, ale co nam po samych odczytach. Co mi po ilości podań podajnika i to liczonych podwójnie albo stanu licznika wody. Bardziej mnie interesuje ile kg ekogroszku poszło mi w tym tygodniu, albo ile wody w danym miesiącu lub nawet dniu (napełnianie basenu). No to do dzieła.
Najpierw zajmijmy się przerobieniem impulsów od podajnika ekogroszku na kg. W moim przypadku 4 podania to 1 kg ekogroszku. Licznik impulsy liczy 2 na jedno podanie, więc 1kg to 8 impulsów. Wchodzimy w plik sensor.yaml i dodajemy wpis:

  • platform: mqtt
    name: “Ekogroszek”
    state_topic: “Liczniki_DC0AF2/tele/SENSOR”
    value_template: “{{value_json[‘COUNTER’].C1 |float / 8 }}”
    unit_of_measurement: “kg”

state_topic bierzemy z konsoli


szukamy wiersza z topic/tele/SENSOR

Po ponownym uruchomieniu bramki mamy coś takiego image
Z wodą nic nie mieszamy, bo liczy prawidłowo.
Teraz zrobimy podziały na dni, tygodnie, miesiące i lata.
w pliku configuration.yaml dodajemy wpis

 utility_meter:
  dzienny_licznik_ekogroszku:
    source: sensor.ekogroszek
    cycle: daily
  tygodniowy_licznik_ekogroszku:
    source: sensor.ekogroszek
    cycle: weekly
  miesieczny_licznik_ekogroszku:
    source: sensor.ekogroszek
    cycle: monthly
  roczny_licznik_ekogroszku:
    source: sensor.ekogroszek
    cycle: yearly
  dzienny_licznik_wody:
    source: sensor.liczniki_counter_c2
    cycle: daily
  tygodniowy_licznik_wody:
    source: sensor.liczniki_counter_c2
    cycle: weekly
  miesieczny_licznik_wody:
    source: sensor.liczniki_counter_c2
    cycle: monthly
  roczny_licznik_wody:
    source: sensor.liczniki_counter_c2
    cycle: yearly

domyślne sensory jakie nam powstały to sensor.liczniki_counter_c1 i sensor.liczniki_counter_c2. Dla ekogroszku zmieniliśmy sensor na sensor.ekogroszek i tego używamy. Dla wody nic nie ruszaliśmy więc używamy domyślnego.
Efekt końcowy
image
Ja dla ekogroszku zmieniłem jeszcze żeby rok zaczynał mi się od września, a nie od stycznia, tak aby cały sezon grzewczy się łapał jako rok. robimy to w konfiguracja - dostosowywanie, szukamy roczny_licznik_ekogroszku i ustawiamy tak
image
Co do gazu to w liczniku to w tej wystającej części od dołu jest klapka, którą można otworzyć i zamontować tam mały kontaktron.
image
Ja osobiście nie mam gazu, ale widziałem kiedyś jak ktoś wydrukował sobie taki kwadracik i w środku umieścił taki mały kontaktron.

image

Jeżeli chodzi o licznik energii to możęmy przy liczniku założyć fotodiodę lub fotorezystor, który zlicza ilość mignięć diody licznikowej.

8 polubień

Witaj @Cino111
Chciałbym wykorzystać Twój projekt do pomiaru zużycia energii elektrycznej przez pompę ciepła. Zamówiłem już Wemos d1. Czy możesz mi podpowiedzieć co i gdzie w jolce mam dopisać abym miał pomiar dzienny, tygodniowy, miesięczny i roczny ?

To akurat przedstawił Tomasz:

Ok @Cezary.K
Ale ja chcę wykorzystać pomysł @Cino111 licznik impulsów zbudowany na Wemos d1 i liczniku trójfazowym (https://allegro.pl/oferta/licznik-energii-elektrycznej-3f-orno-or-we-520-mid-8916100685?bi_s=ads&bi_m=listing%3Adesktop%3Aquery&bi_c=MWY2ODU4MDItYjVlYS00MzcyLWI0MmQtY2Y2NjkyOGQ4YmVjAA&bi_t=ape&referrer=proxy&emission_unit_id=2dd1e71a-8d7b-4060-b678-00ae50c8ec1a)
Żeby mi pokazywał zużycie tak jak pisałem wyżej.

To jest dokładnie to co wyżej napisałem image
Dopisujesz to do configuration.yaml
Wpisujesz swój sensor zliczający impulsy zamiast ekogroszek.

Drodzy forumowicze, czy macie jakiś pomysł na reset usługi UTILITY METER ? W trakcie testów nabiłem sobie impulsów w liczniku wody i mam kosmiczne wskazania. Jak to zresetować do zera w naszej bramce?

Może przez kalibrację?
image

Ustawienia i

Jak by ktoś sprzętowo szukał inspiracji i chciał zliczać impulsy diody LED. Polecam fotorezystor z komparatorem.

A o czym świadczy taki komunikat?

image

@Cezary.K Moim zdaniem to oznacza, że encja została zrobiona przez Ciebie ręcznie w pliku konfiguracyjnym i nie można jej edytować.

1 polubienie

@Cino111
Jak już wcześniej pisałem chcę wykorzystać Twój projekt do liczenia energii zużycia pompy ciepła. Zakupiłem wemos d1 programuje go z https://powiedz.co/ota/. Po zaprogramowaniu chcę go dodać do bramki i tu jest problem, nie mogę go dodać jako nowe urządzenie. Może nie tym programuję.

Zwarłeś D3 (Gpio0) do G(masy) na 5sekund? Powinien wtedy nadawać wifi. Łączysz się i konfigurujesz na adresie 192.168.4.1

Może plik minimal potrzebny na początek?

kindziol mam deja vu?
Wpisz z palca całą konfigurację MQTT w module i sam się doda do bramki.

Witam.
Mam dwa wemos i dziwne bo po zaprogramowaniu żaden z nich nie nadaje wifi.

Podłącz pod USB do komputera i po porcie szeregowym będziesz wiedział co się dzieje.

Mam takie informacje:

Czy wgrałeś plik minimal?

Już jest oki. Dodałem ręcznie i już jest z Jolką. Teraz powalczę z ustawieniami.
Dzięki
A jeżeli chcę ustawić stan licznika na 000065.15 to jak wydać polecenie. I jeszcze jedno moje pytanie, jeżeli mój licznik ma 800 impulsów na jeden kilowat to jakie wysłać polecenie z konsoli.