Ogólne: Korekta odczytu temperatury i wilgotności (AI-Speaker - Home Assistant)

Jeżeli chodzi o korektę pomiaru temperatury, to od wersji softu 7.1.2 możliwa jest korekta w konsoli na module.
Należy wejść na nasz moduł po adresie IP i w konsoli wpisać polecenie TempOffset oraz wartość korekty np TempOffset -5 oznacza, że czujnik temperatury będzie podawał pomiar o 5 niżej.
Jeżeli chcemy przywrócić oryginalny pomiar wpisujemy TempOffset off

EDIT 23.03.2020
Od wersji softu 8.2 jest już możliwa korekta wilgotności w konsoli w taki sam sposób jak opisany wyżej z tym, że w konsoli należy wpisać polecenie HumOffset
źródło:
https://github.com/arendst/Tasmota/pull/7934
więc poniższe nie aktualne :wink:

Jeżeli chodzi o korektę pomiaru wilgotności to musimy stworzyć wirtualny sensor bazujący na sensorze który chcemy korygować.
Opis:

Na bramce, w folderze AIS:

  • w pliku configuration.yaml robimy wpis:
    sensor: !include sensor.yaml

  • tworzymy plik sensor.yaml i dodajemy do niego następując wpis:

    • platform: template
      sensors:
      sun_state:
      friendly_name: “Garderoba”
      unit_of_measurement: “%”
      value_template: >-
      {{ (states.sensor.sonoff_garderoba_am2301_humidity.state | float - 3.8) | round(1) }}

tak to wygląda prawidłowo sformatowane, nie wiem czemu ale mam cały czas problem z tekstem sformatowanym na forum

następnie w kodzie podmieniamy:
sensor.sonoff_garderoba_am2301_humidity = nasz sensor bazowy, na podstawie której tworzymy wirtualny sensor
float - to wartość o ile korygujemy nasz sensor
round - to ilość wyświetlanych miejsc po przecinku nowego sensora
** friendly_name** - własna nazwa nowego sensora
Efekt poniżej, czyli pierwszy bazowy (zawyża pomiar o 3,8), drugi to nasz wirtualny sensor.

dfsad

Do rozwiązania jest tylko jeden drobny problem, po resecie bramki utworzony sensor pokazuje przez chwilę wartość korekty. Dzieje się to dlatego, że bazowy sensor jeszcze się nie załadował do bramki więc korektę odejmuje od 0. Tak to wygląda na wykresie.
eqw
Każdy pik na wykresie to reset bramki :slight_smile:
Ktoś ma pomysł jak to rozwiązać ?

Korekta jest mi potrzebna, gdyż po kalibracji czujników DHT21/22 okazało się że nie które zawyżają pomiar o 15% !!

3 polubienia

nie wiedziałem, że jest taka opcja - bardzo ciekawe. Dzięki za info :slight_smile:

Rozwiązałem problem dla wilgotności “regułą” w konsoli Tasmoty. Ja do testów dodałem 20%, Ty odejmij.
Robimy tak:
w konsoli wpisujemy poniższą regułę

Rule1
on tele-AM2301#humidity do backlog var1 %value%; add1 20; event sendtemp endon
on event#sendtemp do publish TWOJ TOPIC/stat/humidity %var1% endon

zamiast słowa TWOJ TOPIC wpisz topic jaki widzisz w konsoli
image
teraz jeszcze aktywujemy regułę komendą Rule1 1
Do brokera MQTT teraz idzie jeszcze jakby dodatkowy sensor tylko, że ze skorygowaną wartością.
Nowy sensor musimy dodać ręczenie do AIS poprzez dodanie poniższego wpisu w pliku sensor.yaml
- platform: mqtt
name: “wilgotnosc2”
state_topic: “Sypialnia_grzejnik_F98FEA/stat/humidity”
value_template: “{{ value | round(0) }}”
unit_of_measurement: “%”

Możemy do naszej karty dodać nowy sensor z odpowiednio skorygowaną wartością.
image
Nie pokazuje wartości po przecinku, bo ograniczyłem to wpisem round(0).

1 polubienie

próbuje zrobić ale coś nie działa :frowning:
zrobiłem
Rule1
on tele-AM2301#humidity do backlog var1 %value%; add1 -4; event sendtemp endon
on event#sendtemp do publish Sonoff_Basic_Sypialnia_TV_CDB405/stat/humidity %var1% endon
efekt konsoli prawidłowy


następnie dodałem wpis w sensor.yaml
b

a efekt taki:

c
moja wersja asystenta 0.104.3b4
a u Ciebie ?

W końcu doszedłem czemu mi nie działało, skopiowałem powyższe, a wstawiłeś to jako tekst nie sformatowany i zrobiły się inne " i dlatego nie szło do bramki :slight_smile:
winno być tak:
- platform: mqtt
name: "wilgotnosc2"
state_topic: "Sonoff_Basic_Sypialnia_TV_CDB405/stat/humidity"
value_template: "{{ value | round(1) }}"
unit_of_measurement: "%"

teraz jest OK :+1:

Czym to się różni, bo teraz to ja nie widzę :slight_smile:

delikatnie się różnią ", spójrz :face_with_monocle::
image

Średniki, czy co tam jest nie tak?

SharedScreenshot

1 polubienie

Witam. Chcę trochę odświeżyć temat.
po zrobieniu korekcji

  • platform: template
    sensors:
    humidity_wewnetrzna_poprawiona_state:
    friendly_name: “Wilg. wew”
    unit_of_measurement: “%”
    value_template: >-
    {{ (states.sensor.czujka_temp_pokojowej_humidity.state | float + 5) | round(0) }}

otrzymuje taki bład

  • TemplateError(‘ValueError: Template error: float got invalid input ‘unknown’ when rendering template ‘{{ (states.sensor.czujka_temp_pokojowej_humidity.state | float + 5) | round(0) }}’ but no default was specified’) while processing template ‘Template(“{{ (states.sensor.czujka_temp_pokojowej_humidity.state | float + 5) | round(0) }}”)’ for attribute ‘_attr_native_value’ in entity ‘sensor.humidity_wewnetrzna_poprawiona_state’

Może ktoś podpowie w czym jest problem?

Template otrzymuje stan nieznany zamiast wartości liczbowej, więc najpierw sprawdź czy źródło ma wartość.

No i zamiast float powinno być float(0) (ewentualnie zamiast 0 wstaw tam jakąś spodziewaną wartość lub wręcz jakąś nieprawdopodobną by łatwo wychwycić nieprawidłowość w działaniu).

float(0) i po tym korekcję którą chce zroboc. Czy tak?

Tak, ale najpierw by wypadało sprawdzić czy dysponujesz danymi wejściowymi, bo unknown nie jest liczbą.
Dodatkowo zapisałbym 5 jako 5.0 skoro to float, a nie int.
Niestety jak wielu też “nie czuję” template’ów :stuck_out_tongue_winking_eye:

Dziękuje za podpowiedz i wyjaśnienie