cześć,
Panowie potrzebuje pomocy. Próbuje zrobić licznik wody zgodnie z
Build a cheap water usage sensor using ESPhome and a proximity sensor - PieterBrinkman.com
ale pojawia się to
o co chodzi???
cześć,
Panowie potrzebuje pomocy. Próbuje zrobić licznik wody zgodnie z
Build a cheap water usage sensor using ESPhome and a proximity sensor - PieterBrinkman.com
ale pojawia się to
o co chodzi???
pulse_counter
- to jest do ESPHome config a nie do HA.
sensor:
- platform: pulse_counter
pin: GPIO12
update_interval : 6s
name: "water pulse"
id: water_pulse
- platform: pulse_meter
pin: GPIO12
name: "Water Pulse Meter"
unit_of_measurement: "liter/min"
icon: "mdi:water"
total:
name: "Water Total"
unit_of_measurement: "liter"
- platform: pulse_meter
pin: GPIO12
name: "Water Pulse Meter"
unit_of_measurement: "liter/min"
icon: "mdi:water"
total:
name: "Water Meter Total"
unit_of_measurement: "m³"
id: water_meter_total
accuracy_decimals: 3
device_class: water
state_class: total_increasing
filters:
- multiply: 0.001
- platform: template
name: "Water Usage Liter"
id: water_flow_rate
accuracy_decimals: 1
unit_of_measurement: "l/min"
icon: "mdi:water"
lambda: return (id(water_pulse).state * 10);
update_interval: 6s
^^ to powinno być w yaml do ESPHome a nie HA.
bardzo dziękuje ESP dla mnie to coś nowego
Inny problem - nie zlicza impulsów, dioda na czujniku przy odkręconej wodzie zapala się i gaśnie natomiast HA nie rejestruje impulsów ktoś tak miał i może pomóc ??
Zrobiłem ten sam projekt i po prostu musisz dać czasu systemowi;) Ja dałem ogólnie ciała, bo pod zły “zegar” podstawiłem czujnik i zliczać mi zlicza ale złe wartości. Do tego muszę znaleźć jakąś nakładkę na licznik aby to wyglądało jakoś estetycznie, bo póki co wygląda dość “laboratoryjnie”
Panowie nie mam nic w wartościach poniżej
konfiguracja jak powyżej
Odkopię temat, bo już dłuższy czas walczę z konfiguracją pod licznik impulsowy dla wodomierza i nie znajduję rozwiązania.
Moja konfiguracja dla ESPHome poniżej. Zaczerpnięta z materiałów linkowanych w tym temacie. Modyfikacja kodu pod płytkę HW-622 (esp-12e), impulsy prawidłowo podawane na GPIO5.
substitutions:
devicename: "hw-622"
upper_devicename: "licznik wody"
esphome:
name: $devicename
platform: ESP8266
board: esp12e
# Enable logging
logger:
# baud_rate: 0
# Enable Home Assistant API
api:
# Enable over the air updates
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# fast_connect: on
# see: https://esphome.io/components/time.html
time:
- platform: homeassistant
id: homeassistant_time
# Enable Web server
web_server:
port: 80
text_sensor:
- platform: version
name: "${devicename} - Version"
icon: mdi:cube-outline
- platform: wifi_info
ip_address:
name: IP Address
captive_portal:
switch:
- platform: gpio
pin: GPIO4
name: "zawór wodomierz"
id: relay
icon: mdi:pipe-valve
# internal: true
binary_sensor:
- platform: status
name: "${devicename} - Status"
device_class: connectivity
sensor:
- platform: pulse_counter
pin:
number: GPIO5
mode:
input: true
pullup: true
update_interval : 6s
name: "water pulse"
id: water_pulse
- platform: pulse_meter
pin:
number: GPIO5
mode:
input: true
pullup: true
name: "Water Pulse Meter"
unit_of_measurement: "l/min"
icon: "mdi:water"
total:
name: "Water Total"
unit_of_measurement: "litr"
- platform: pulse_meter
pin:
number: GPIO5
mode:
input: true
pullup: true
name: "Water Pulse Meter"
unit_of_measurement: "l/min"
icon: "mdi:water"
total:
name: "Water Meter Total"
unit_of_measurement: "m³"
id: water_meter_total
accuracy_decimals: 3
device_class: water
state_class: total_increasing
filters:
- multiply: 0.001
- platform: template
name: "Water Usage Liter"
id: water_flow_rate
accuracy_decimals: 1
unit_of_measurement: "l/min"
icon: "mdi:water"
lambda: return (id(water_pulse).state * 10);
update_interval: 6s
- platform: wifi_signal
name: sygnał WiFi
update_interval: 60s
- platform: uptime
name: "Uptime"
Nie mam pojęcia dlaczego nie otrzymuję żadnych wartości dla Water Total
oraz Water Usage Liter
. @Robert80 - znalazłeś rozwiązanie?
Płytka jest o tyle ciekawa, że pozwala mi na zasilanie 12VDC i podpięcie czujnika indukcyjnego o tym napięciu przez gotowe wejście z transoptorem. Dodatkowo jest na pokładzie przekaźnik, który planuję wykorzystać do siłownika zaworu.
EDIT:
Mam trop:
Może warto zobaczyć jak to robią inni, np. GitHub - klaasnicolaas/home-assistant-glow: ⚡ The power of energy measurements in your house z wykorzystaniem impulsów.
Dzięki za link, lubię proste rozwiązania i jeszcze bardziej takie, które rozumiem jak działają. Poniżej spełniający moje oczekiwania kod dla sensora (mała hybryda podpatrzonych konfiguracji) :
sensor:
- platform: pulse_meter
name: "Przepływ wody"
pin:
number: GPIO5
# inverted: true
mode:
input: true
pullup: true
internal_filter_mode: PULSE
unit_of_measurement: "l/min."
accuracy_decimals: 0
icon: "mdi:gauge"
internal_filter: 100ms
timeout: 1min
total:
id: water_usage_total
name: "Woda zużycie total"
icon: "mdi:water"
unit_of_measurement: "m³"
accuracy_decimals: 3
device_class: water
state_class: total_increasing
filters:
- multiply: 0.001
Mam średni przepływ i zużycie total na bazie, którego mogę stworzyć pomocników i korzystać z zakładki Energia. Encja przepływu l/min do wykorzystania w automatyzacjach.
Licznik wody według twojego rozwiązania działa idealnie.
Zaimplementowałem ten sam kod do licznika gazu. Zużycie zlicza, ale problem jest w chwilowym. Różnica jest taka, że jeden impuls w liczniku gazu to 10 litrów a nie jeden litr, więc zamiast np. 30 pokazuje 3. Gdzie dodać mnożnik?
Jeśli mówisz o YAMLu post wyżej
filters:
- multiply: 0.01
Tak jak uprzedził mnie @szopen - zmieniasz multiply
. Licznik impulsów przepracował miesiąc i odczyty w HA są tożsame ze wskazaniem wodomierza. Odczyt z sensora total stworzonego w ESPHome zeruje się po restarcie ESP, dlatego w samym HA, na jego bazie dodałem pomocnika “licznik mediów” bez cyklu zerowania i wówczas otrzymujemy encję, która zwiększa się zawsze przyrostowo, niezależnie od zachowania sensora po restarcie urządzenia ESP.
Następnym etapem będzie montaż jakiegoś elektrozaworu.
Dzięki panowie, za podpowiedzi, ale chyba coś schrzaniłem, bo teraz mam ciągle odczyt zerowy.
wklejam poniżej config esphome:
- platform: pulse_meter
name: "Przepływ gazu"
pin:
number: D6
mode:
input: true
pullup: true
internal_filter_mode: PULSE
unit_of_measurement: "l/min."
accuracy_decimals: 0
icon: "mdi:gauge"
internal_filter: 100ms
timeout: 1min
filters:
- multiply: 0.010
total:
id: gas_usage_total
name: "Gaz"
icon: "mdi:fire"
unit_of_measurement: "m³"
accuracy_decimals: 3
device_class: gas
state_class: total_increasing
filters:
- multiply: 0.010
Może to jedno zero ma znaczenie?
Jak dla mnie to nie kumam, czemu jest 2x
Jeśli się coś dzieli przez 100 i ma to dać wartość właściwą, a potem jeszcze raz dzieli przez 100 to wychodzi 1% wartości oczekiwanej.
W sumie to nie wiem skąd to pierwsze dzielenie, skoro w kodzie @angler na którym jak piszesz się wzorowałeś (copy+paste?) jest tylko raz dzielenie przez 1000 (w formie mnożenia przez 1/1000), co jak twierdziłeś daje wynik zaniżony 10-krotnie.
Poprawiłem w/g waszych uwag. Bez zmian. Zastanawia mnie jeszcze timeout. Czy w ogóle potrzebna ta definicja, skoro z tego co gdzieśtam doczytałem i tak jest domyślnie 60 sekund
5 minut
Proponuję zawsze zaczynać analizę od zajrzenia do aktualnej dokumentacji
metr sześcienny ma 1000 litrów, spróbuj przeanalizować samodzielnie na podstawie dokumentacji jak powinieneś skonfigurować w swoich warunkach tą integrację.
Super. Znowu po angielsku… i po kiego wała mi niemiecki, rosyjski i hiszpański na poziomie C1. Dobra, wrzucę w translatora
Rosyjski wbrew pozorom jest bardzo użyteczny, przynajmniej w dziedzinach, którymi zajmuje się to forum oraz w wielu pokrewnych. Natomiast, hmm, angielski jest językiem “międzynarodowym” przynajmniej od połowy XX wieku, w tym jest kluczowy w technice czy elektronice, nie mówiąc już o technologiach informatycznych.
Edit - haha potwierdzenie moich słów w innym wątku, gdzie jest post sprzed chwili
Zgadzam się z tobą. A czasy są jakie są
Mam i działa. Zlicza co trzeba bez błędów.
- platform: pulse_meter
name: "Przepływ gazu"
pin:
number: D6
# inverted: true
mode:
input: true
pullup: true
internal_filter_mode: PULSE
unit_of_measurement: "l/min."
accuracy_decimals: 0
icon: "mdi:gauge"
internal_filter: 50ms
timeout: 5min
filters:
- multiply: 10
total:
id: gas_usage_total
name: "Gaz"
icon: "mdi:fire"
unit_of_measurement: "m³"
accuracy_decimals: 3
device_class: gas
state_class: total_increasing
filters:
- multiply: 0.01