Ciepłomierz - licznik impulsow

Zrobilem jescze kilka zdjec tego modulu

Nie bo niewiem jak to zrobic
A tez niewiem jak wzivic caly ten kod z telefonu bo narazie niemam dostepu do komputera

Ale to co na zdjeciu to juz jest caly kod nizej juz nic noema
Jutro moze bede mial dostem do kompa i wzuce kod

esphome:
  name: licznik-impulsow
  friendly_name: Licznik Impulsów

esp8266:
  board: esp01_1m

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "bj2hakWFhsagUJj1QDR/4535mJ4Kdvc678buwzOSYgg="

ota:
  - platform: esphome
    password: "2952b1a309011e79250e5cb20a5667e4"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Licznik-Impulsow"
    password: "AYVBP8JJEhMb"

captive_portal:
    # Example configuration entry
binary_sensor:
  - platform: gpio
    pin:
      number: GPIO14
      mode:
        input: true
    name: Cieplomierz

Nie pisz kolejnego posta pod własnym, możesz edytować i dodawać kolejne wpisy.

Zdjęcia muszą być ostre (na tyle by się bezproblemowo dało odczytać napisy na elementach) by były użyteczne
z naszego punktu widzenie to pierwsze jest najważniejsze (tj. jego lewy fragment, który się prawie załapał na zdjęciu czwartym).

Mimo nieco niewyraźnego zdjęcia stawiam na to, że te transoptory to LiteOn LTV-355T lub ich odpowiedniki


Co do YAMLa to wrócimy do tego, gdy będziesz miał warunki, bo wygląda jak ucięty w połowie, no i nie widzę byś w ogóle próbował go dostosować do moich sugestii…
Pisać z telefonu jest mega-upierdliwie, ale się da (wiem, bo czasem piszę z trasy, gdy już mam rozładowanego laptopa).

edit - doczytałem - nie zmieniałeś nic
A ponieważ nie dostosowałeś go do potrzeb, to jest normalne, że firmware nie działa jak należy, postaram się w takim razie wyskrobać coś bardziej na gotowo, szkoda, że nie próbujesz zrozumieć jak to działa…

Później tu będzie coś w miarę na gotowo - nie używam czegoś podobnego, więc wyskrobię jakąś wstępną wersję do przetestowania w praktyce
(oznaczę to gdy zrobię teraz to tymczasowa wklejka)
edit znalazłem wątek na forum na ten sam temat

Jeśli chodzi o YAML to zrobiony, może nie jest to doszlifowane, ale powinno raczej działać, wątek ^ do poczytania

substitutions:
  name: "licznik-impulsow"
  friendly_name: "Licznik Impulsów"

esphome:
  name: ${name}
  friendly_name: ${friendly_name}

esp8266:
  board: d1_mini

# Enable logging
logger:
  level: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: "bj2hakWFhsagUJj1QDR/4535mJ4Kdvc678buwzOSYgg="
  actions:
    - action: set_total
      variables:
        new_total: int
      then:
        - pulse_counter.set_total_pulses:
            id: sensor_pulse_meter
            value: !lambda 'return new_total;'
ota:
  - platform: esphome
    password: "2952b1a309011e79250e5cb20a5667e4"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Licznik-Impulsow"
    password: "AYVBP8JJEhMb"

captive_portal:

web_server:
  version: 3
  port: 80

sensor:
  - platform: pulse_counter
    pin:
      number: D5 # GPIO14
      mode:
        input: true
#       pullup: true # jest rezystor
#       inverted: true # powinno działać bez tego
    on_value:
      then:
        - light.turn_on: kontrolka
        - delay: 0.5s
        - light.turn_off: kontrolka
    name: Moc
    id: sensor_pulse_meter # Optional ID
    unit_of_measurement: 'W'
    device_class: power
    state_class: measurement
    accuracy_decimals: 0
    internal_filter: 26ms
    internal: true # przy tak niskiej stałej impulsowej licznika i minutowym okresie zliczania ten pomiar nie ma sensu
    filters:
      - multiply: 60000 # zgodnie z wzorem (60s / stała licznika w imp./kWh) * (1000W / 1kW)
    total:
      name: Ciepłomierz energia 
      unit_of_measurement: 'kWh'
      state_class: total_increasing
      device_class: energy
  - platform: total_daily_energy # może tu się przyda do czegoś ta obliczona moc
    name: Ciepłomierz energia dzienna z całkowania mocy
    id: sensor_total_daily_energy
    power_id: sensor_pulse_meter
    unit_of_measurement: 'kWh'
    state_class: total_increasing
    device_class: energy
    accuracy_decimals: 3
    filters:
      # Multiplication factor from W to kW is 0.001
      - multiply: 0.001
  - platform: uptime
    name: "${name} Uptime"
    filters:
      - lambda: return x / 3600;
    unit_of_measurement: "h"
  - platform: adc
    pin: VCC
    name: "${name} napięcie zasilania MCU"
    entity_category: diagnostic
    web_server:
      sorting_weight: 10
  - platform: wifi_signal
    name: "${name} sygnał WiFi"
    update_interval: 60s


time:
  - platform: sntp
    timezone: Europe/Warsaw
    servers:
      - 0.pl.pool.ntp.org
      - 1.pl.pool.ntp.org
      - 2.pl.pool.ntp.org
    id: sntp_time

switch:
  - platform: restart
    name: "${name} Restart"
    entity_category: config
    web_server:
      sorting_weight: 60

binary_sensor:
  - platform: status
    name: "${name} Node Status"
    id: system_status

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "${name} IP Adres"
    ssid:
      name: "${name} SSID"
    bssid:
      name: "${name} BSSID"
    mac_address:
      name: "${name} MAC-adres"
    scan_results:
      name: "${name} Ostatni skan"
    dns_address:
      name: "${name} DNS"

light:
  - platform: status_led
    name: Kontrolka LED # przy poprawnnej pracy błyska raz na minutę oraz sygnalizuje ostrzeżenia i błedy opisane tam https://esphome.io/components/status_led
    id: kontrolka
    pin: 
      number: GPIO02
      inverted: true
    internal: true # to eliminuje niepotrzebny przełącznik


Ogniwa za bardzo nie widać, więc odpowiadam na czuja i na podstawie doświadczenia (bo na żadnym zdjęciu nie załapały się żadne ważne fragmenty)
Aha co najważniejsze - jest tam widoczny kod 07 304 (co się rozszyfrowuje w formacie używanym przez Saft jako YY DDD, gdzie YY to rok, a DDD dzień w roku)
to jest data produkcji 31 października 2007, więc to ogniwo “przepracowało” już 17 lat

Co do bateryjki to na 99% jest Saft LS-14250 w chemii Li-SOCl2 z wyprowadzeniami osiowymi (sorry za wszystkie linki z jednego sklepu, ale nie chciało mi się szukać po innych)

http://www.batimex.pl/towar.php?idtowaru=5487
zastępczo można też użyć EVE ER14250

http://www.batimex.pl/towar.php?idtowaru=2306
(albo jakąś inną technologicznie zgodną)

http://www.batimex.pl/towar.php?idtowaru=6501

w załączniku karty katalogowe w/w ogniw (na wypadek gdyby zniknęły ze strony sklepu) i transoptora
ls-14250+ltv-355.zip (2,6 MB)

Próbuję tylko ze ja tego nie rozumie,te linki co mi wyslales to juz chyba 10x czytalem i tego ni rozumie
Co do ciplomierza to kupulem go 3 lata temu sprzedajacy twierdzil ze cieplomierz jest po serwisie i na nowe baterie
Za kazdym razem jak resetowalem licznik impulsów zamel to przez 2-5godzin licznik normalnie pokazywal impulsy (to modul w cipelomierzu powinien byc ok )do puki zamel nie stracil polaczenia i sie wylaczyl
Jutro zrobie jescze lepsze zdjecia

Ja nie twierdzę, że moduł komunikacji nie działa, często takie ogniwa wytrzymują znacznie dłużej niż 10 lat (wystarczy zmierzyć napięcie - powinno być w okolicach 3.3V-3.5V, jeśli jest mniejsze niż 3.0V to ogniwo do natychmiastowej wymiany), ale patrząc tylko po dacie produkcji to jest pora na wymianę, nowe ogniwo to kilkanaście zł więc nawet razem z przesyłką to nie będzie majątek (przy obecnych cenach ogniw i przesyłek zwykle zamawiam razem ogniwa które planuję użyć w najbliższych miesiącach lub nawet latach jeśli chodzi np. o CR2032 które od przyzwoitych producentów mają 10 lat trwałości od wyprodukowania), mam nadzieję, że masz kogoś przytomnego kto w razie czego wymieni ogniwo.

Sam ciepłomierz może i ma nowe ogniwo? (przecież tam nie zaglądałeś, a ja nie mam w ręce takiego żeby sobie go obejrzeć, ale skoro pracuje po wyjęciu modułu komunikacji, to ma skądś zasilanie?) tu jest tylko moduł komunikacyjny i moim zdaniem od 18 lat nikt tam niczego nie ruszał, choć te zdjęcia nie są wystarczające do oceny, ale mając w ręku sam będziesz w stanie ocenić czy to było lutowane w innym czasie niż reszta czy nie.

Jescze raz zrobilem zdjecia
Wyglada na to ze bateria nie byla wymieniana pokazuje 3,3V ale zamowie nowa

Co do ogniwa to zgadłem jak widać (LST14250 to starszy model o nieco mniejszej pojemności), natomiast w kwestii zasadniczej, czyli jego wymiany proponuję na czas wymiany najpierw zapewnić bezprzerwowe zasilanie układu (bo nie wiem czy MCU ma zapisane istotne dane konfiguracyjne we flashu, czy jedynie w SRAM), czyli dolutować zewnętrzne zasilanie rzędu 3.0V-3.5V w innym miejscu płytki niż jest lutowane ogniwo (w przypadku tego wyższego raczej przez diodę by nie doprowadzić do intensywnego ładowania ogniwa).


Może coś tu jeszcze skrobnę jeśli coś ciekawego wypatrzę na zdjęciach. (nie obiecuję)
edit - jednak jest coś ciekawego - układ RTC (zegar) PCF8563, czyli trzeba zapewnić to bezprzerwowe zasilanie przy wymianie ogniwa (choć ciekawe jak wskazania mu się rozjechały po tylu latach pracy)

a rezonatory to pewnie TXC 9HT2 (obecnie już nie produkowane)
TXC9HT2.zip (1,1 MB)
najbliższy współczesny model to 9HT7
http://txccrystal.com/crystal.html
można znaleźć ścisłe odpowiedniki innych producentów (nie wiem czy nadal produkowane, ale istnieją w magazynach światowych hurtowni)


YAML masz gotowy gdzieś-tam wyżej (na tyle na ile byłem w stanie go przygotować na sucho i bez testów, ale się waliduje i kompiluje, a tokeny są takie jak podałeś czyli nawet da się wgrać jako OTA jeśli podmienisz zawartość swojego YAMLa).
pomysły miałem bardziej ambitne (nie udało się ich zrealizować, ale trochę diagnostyki dla samego ESP masz wrzucone, a sam projekt maksymalnie dostosowałem do płytki ze zdjęcia gdzieś wyżej), ale nie mam czasu na ewentualne dopieszczanie projektu.

Teraz kwestia sprzętowa - może się tak zdarzyć, że napięcie odkładające się na tym tranzystorze transoptora będzie jednak zbyt wysokie do wyzwalania układu w logice 3.3V - w/g danych katalogowych jest to typowo 0.8V maksymalnie 1V, podczas gdy gwarantowane wykrycie przez ESP8266 stanu niskiego jest dla napięć niższych od 0.825V.

Za to można nieco “naciągnąć” napięcia w dół - równocześnie z mocnym pullupem wpinając słaby pulldown = rezystor prowadzący do tego samego GPIO i do masy (rezystor 4k7 jako słaby pulldown powinien być OK dla pullupu 1k, ale gdyby to nie wystarczyło można spróbować nieco mniejszych wartości jak 4k3, 3k9, 3k6, 3k3 ale nie mniej niż 3k0 przy czym 3k0 jest wartością krytycznie niską, bo może występować już problem z prawidłowym wykrywaniem stanu wysokiego, który jest gwarantowany dla napięć wyższych od 2.475V) oczywiście w odniesieniu do zasilania równo 3.3V (dla innych napięć Vcc oczywiście dzielnik rezystorowy będzie nadal działał proporcjonalnie, ale przecież napięcie VCE tranzystora się istotnie nie zmieni!).

Zamiana charakteru podłączenia na typu pulldown (z mojego schemaciku gdzieś na górze) w tej kwestii nic nie zmieni, bo będzie dokładnie ten sam problem napięcia VCE. Ale na początek proponuję test bez dodatkowego rezystora.

Dziękuję za pomoc i napisanie kodu.
Dziś go wzuciłem.
Teraz jakieś testy, jak to działa, i się odezwę.
Jeszcze raz wielkie dzięki.
Witam lucznik zczytuje impulsy
Tylko ze jakos tak dzienie od 24 do 18 ma jakis bardzo maly wzrost a od 18 do 24 bardo duzo nalicza kwh .a pompa pracyje niej wiedej jednakowo



A jest jescze taka mozluwosc dopisac do wemosa te kwh ktore sa w cieplomierzu

Jednak ten licznik impulsoe cos zle pokazuje
Dzisiaj pokazal powyzej 200kwh a to raczej niemozliwe

Stawiam na to, że źródłem mogą być zakłócenia, ale masz licznik z wyświetlaczem to spisuj jego wskazania o konkretnych godzinach i porównuj wskazania.

Nie wiem co ma pompa do tego (akurat większe zużycie energii cielnej w nocy nocy niż w dzień wydaje mi się normalne - przecież to zależy do różnicy temperatur, ale najlepiej zajrzyj w stare wykresy z zamela i porównaj).

to było to jedno z ambitnych zadań, ale nie mam czasu na eksperymenty - wstępny kod jest wrzucony zgodnie z dokumentacją (wydaje mi się, że powinna być do tego usługa w HA)

raczej niemożliwe, zakładam, że przyczyną może być praca na granicy rozpoznawania stanu logicznego (taki “urok” logiki niskonapięciowej - wejściowy układ pośredniczący powinien być bardziej rozbudowany) spróbuj z tym dodatkowym rezystorem tak jak pisałem u góry, myślę że warto zacząć od razu z grubej rury 3k3.

Dalej zle pokazuje
Np. Pompa nie pracuje na cieplomierzu brak pr?eplywu a wemos nalicza impulsy

Mam teraz założony rezystor 3k3.

Ponieważ nie widzę szans na diagnostykę, a naliczanie nieistniejących impulsów może wynikać z zakłóceń, to sugeruję nowy egzemplarz Zamela.

tu masz jeden z wielu przykładów gdzie świetnie było widać wpływ zakłóceń przy niskonapięciowej logice

kolejny przykład

Z taką jakością odpowiedzi

to nikt sobie nie poradzi.

Oczywiście można domyślnie zakładać, że zrobiłeś to jak sugerowałem

ale doświadczenie mam takie, że mimo tego, że się staram każdą najmniejszą pierdołę opisywać dokładnie, to ludzie i tak robią inaczej jeśli nie rozumieją w pełni tego co robią… dlatego wymagam odpowiedzi przynajmniej tak długich jak moje podpowiedzi i pytania.

zajrzałeś chociaż w wątek, który sugerowałem?

2 polubienia

Przeanalizuj mój ciepłomierz zrealizowany w oparciu o przepływomierz z ali.

Do zniwelowania zakłóceń ze sprężarki (falownika ?) pompy ciepła zasiliłem przepływkę napięciem 12V. Do konwersji napięć wykorzystałem popularną płytkę z pc817. Jeżeli chodzi o mcu, to lepszym wyborem jest esp32 i wykorzystanie sprzętowego licznika pcnt. Pulse Counter Sensor — ESPHome

Po stronie esp używam sprzętowego pullupa, ale być może przez to mam problemy z dokładnością pomiaru impulsów co widać poniżej. W wolnej chwili spróbuję ogarnąć ten temat do końca.