Najprościej przyjąć radośnie, że ADC działa liniowo (jeśli masz wersję niekalibrowaną fabrycznie, to błąd w najgorszym wypadku i tak nie powinien przekroczyć 10%, a jeśli wprowadzisz jednopunktową kalibrację to generalnie powinno być najlepiej).
Podejrzewam, że problem nie wynika z nieliniowości, tylko z szumu na wejściu (dlatego sugeruję inne filtry).
Nie wiem jakie filtry zakłada Tasmota domyślnie (pewnie jest to do wykopania z kodu źródłowego), skoro sprzęt jest ten sam a masz rozbieżne wyniki.
1 polubienie
angler
(Cezary.K)
15 Maj 2022 16:20
22
Podaję rozwiązanie pod ESP32:
sensor:
- platform: adc
id: bat
pin: GPIO39
name: "bateria"
attenuation: 11dB
filters:
- multiply: 0.963991 #mnożnik dla niwelacji różnicy wskazań 12,85 ÷ 13,33 = 0,963990998
- calibrate_polynomial:
degree: 2
datapoints:
# Map 0.0 (from sensor) to 0.0 (true value)
- 0.0 -> 0.0
- 0.593 -> 3.3
- 0.814 -> 4.53
- 1.39 -> 7.8
- 2.18 -> 12.2
- 2.28 -> 12.85
- 2.67 -> 15.15
update_interval: 5
Ważna informacja Analog to Digital Converter (ADC) - ESP32 - — ESP-IDF Programming Guide latest documentation
+----------+-------------+-----------------+
| | attenuation | suggested range |
| SoC | (dB) | (mV) |
+==========+=============+=================+
| | 0 | 100 ~ 950 |
| +-------------+-----------------+
| | 2.5 | 100 ~ 1250 |
| ESP32 +-------------+-----------------+
| | 6 | 150 ~ 1750 |
| +-------------+-----------------+
| | 11 | 150 ~ 2450 |
+----------+-------------+-----------------+
| | 0 | 0 ~ 750 |
| +-------------+-----------------+
| | 2.5 | 0 ~ 1050 |
| ESP32-S2 +-------------+-----------------+
| | 6 | 0 ~ 1300 |
| +-------------+-----------------+
| | 11 | 0 ~ 2500 |
+----------+-------------+-----------------+
1 polubienie
Wreszcie coś, co uzasadnia używanie ESP32-S2
Mozesz rozwinąć co masz na myśli? Ja potrzebuje jedynie uzyskać efekt taki żeby to co eksponuje encja z tasmoty jako np. 1224 wyświetlało sie na grafie jako 12.24 lub 12,24 jednostka „V” bo to stan napięcia UPS jest.
To u mnie nie dziala albo nie umiem zrobic….
platform: mqtt
unique_id: car-elantra-battery
state_topic: "tele/carbattery/SENSOR"
name: car_elantra_battery
unit_of_measurement: "v"
value_template: "{{ (value_json.ANALOG.Range | float / 100 | round(2) )}}"
qos: 2
Mogę - na zwykłym ESP32 nie da się mierzyć od zera
A w tej drugiej kwestii chyba za mało nawiasów (używam głównie ESPHome, a nie Tasmoty, to mnie takie problemy nie dotyczą) spróbuj jakoś tak
value_template: "{{ (((value_json.ANALOG.Range | float) / 100) | round(2)
edit: skoro wcześniej działało bez tych nawiasów, to jest zły trop
angler
(Cezary.K)
19 Luty 2023 18:58
27
Zapis platform: mqtt
jest już nieaktualny.
To co i gdzie powinienem wiec dodac do configuration.yaml żeby bylo tak jak chcę?
angler
(Cezary.K)
19 Luty 2023 20:20
29
Kiedyś miałem tak:
- platform: mqtt
name: "akumulator centrali alarmowej"
state_topic: "tele/dom_D46684/SENSOR"
unit_of_measurement: 'V'
device_class: voltage
qos: 2
value_template: "{{ (value_json.ANALOG.Range1 | float / 100 | round(2) )}}"
Obecnie idąc za dokumentacją , zrobił bym tak:
mqtt:
sensor:
- name: "akumulator centrali alarmowej"
state_topic: "tele/dom_D46684/SENSOR"
unit_of_measurement: 'V'
device_class: voltage
qos: 2
value_template: "{{ (value_json.ANALOG.Range1 | float / 100 | round(2) )}}"
Nie mam jak sprawdzić kodu, bo przeszedłem na ESPHome.
Nie działa. Kod wpisałem do configuration.yaml sprawdziłem poprawność i zrestartowalem HA. Wykres bez zmian. Macie jakieś pomysły?
PitMan:
Wykres bez zmian.
Wykres starych wartości będzie bez zmian, bo w bazie masz je złe, ale jak się sprawy mają z aktualnymi wartościami?
Narzędzia deweloperskie → szablon i tam sprawdź co generuje template.
Tak poza konkurencją (jeśli są tu tasmotowi wyjadacze, to może pomogą bardziej ), sądzę, że w samej Tasmocie można zmodyfikować wartość przed jej opublikowaniem
1 polubienie
angler
(Cezary.K)
20 Luty 2023 15:53
32
Wydaje mi się, że AdcParam7
powinien określać sposób wyświetlania napięcia.
Nie rozumiem ?
1.Tasmota przesyła Tobie “tele” a w HA masz odbiór po “mqtt” i te dane masz, to działa ?
2.Chodzi o sposób wyświetlania masz 1224 a chcesz mieć 12,24 ?
Tak dokladnie chcę widziec wartość 12,24
no to podany wyżej zapis powinien działać .
value_template: "{{ (value_json.ANALOG.Range | float / 100 | round(2)) }}"
A co zwraca szablon, sprawdzałeś ?
angler
(Cezary.K)
20 Luty 2023 16:58
36
Podejrzewam błędny topic
. Sprawdź za pomocą np. MQTTExplorer
luki25
(Łukasz Ćwik)
20 Luty 2023 17:04
37
cześć, troszke ciężko u mnie z czasem ale ja mam tak:
configuration.yaml:
mqtt:
sensor: !include mqttsensor.yaml
binary_sensor: !include mqttbinarysensor.yaml
switch: !include mqttswitch.yaml
a wpis mam w mqtt.sensor
- name: Pomiar_bateria_UPS
unique_id: Pomiar_bateria_ups
state_topic: "tele/Pomiar_bateria_ups/SENSOR"
unit_of_measurement: "v"
value_template: "{{ (value_json.ANALOG.Range | float / 100 | round(2) )}}"
qos: 2
- name: Pomiar_bateria_Peugeot
unique_id: Pomiar_bateria_Peugeot
state_topic: "tele/Pomiar_bateria_peugeot/SENSOR"
unit_of_measurement: "v"
value_template: "{{ (value_json.ANALOG.Range | float / 100 | round(2) )}}"
qos: 2
a to punkt wyjscia dla pomiarów, swróć uwage na state_topic
artpc
(artur)
20 Luty 2023 19:25
39
W konsoli Tasmota chyba parametr VoltRes
1 polubienie