Czesc wszystkim.
Czy ktos update_towal tuya integracja do tuya v2?
Po update home assistance do 2021.10
Integracja nie MA opcji konfiguracja I nie moge dostosowac wartosci termostatow tuya do rzeczywistych danych z aplikacji tuya.
W starej integracji byla opcja umożliwiajaca korekcje pokazywanych temperatur o jakis wspolczynnik. Bez tego home assistant jakos mnozyl wartosc temperatur przez 2.
Ponadto teraz nie ma opcji wlacz/wylacz termostat. Moze ktos z Was wie jak sobie z tym poradzic?
Nadal czekam na poprawki
Moje klimay która nie był “kalibrowana” działa w nowej wersji bardzo dobrze .
Ogrzewanie podłogowe termostaty były kalibrowane działają złe.
Próbowałem przez drugie HA gdzie jest jeszcze stara wersja HA i tuya, kalibrować ale wszystko się rozjeżdża.
Z tego co czytałem na forach to można pobrać starą wersje Tuya i dodać do nowej wersji HA
Dodane:
Dziekuje Panie Krabie. Sprobuje to zainstalowac. Przegladam też fora angielskie I niemieckie I nawet pisalem Tam prosbe o pod powiedz ale na razie brak odzewu. Jak tylko cos dostane dam znac. Pozdrawiam
Wrocilem do tuya old I termostat dzialaja jak poprzednio. Trzeba chyba poczekac na korekte integracji tuya v2. Jeszcze raz dzieki
Witam
Trochę odgrzeję kotleta ale nie znalazłem lepszego miejsca.
Jestem w trakcie przenoszenia urządzeń z chmury Tuya bezpośrednio do HA.
Sterowniki rolet i switche już przerobione na OBK. Wymagają jeszcze trochę kosmetyki ale to może poczekać. Teraz czas na termostaty - zmiana na ESPHome i powoli zaczyna to działać ale…
Tak wygląda teraz jeden z termostatów:
i teraz pytanie:
czy na etapie tworzenie termostatu w ESPHome mam szansę dodać właściwości/kategorię encji tak aby część z nich była jako diagnostyka, część jako konfiguracja?
jak np. tu:
Czy raczej muszę to robić w HA?
Może naiwne pytanie ale dopiero zaczynam.
Fragment kodu z ESP:
climate:
- platform: tuya
name: "Termostat"
icon: mdi:heating-coil
switch_datapoint: 1
target_temperature_datapoint: 2
current_temperature_datapoint: 3
supports_heat: True
supports_cool: False
temperature_multiplier: 0.1
active_state:
datapoint: 5
heating_value: 1
visual:
min_temperature: 10 °C
max_temperature: 30 °C
temperature_step: 0.1 °C
switch:
- platform: tuya
name: "ON/OFF"
icon: mdi:power
switch_datapoint: 1
restore_mode: ALWAYS_ON
device_class: "switch"
- platform: tuya
name: "Sound"
icon: mdi:volume-off
switch_datapoint: 109
device_class: "switch"
- platform: tuya
name: "Out inverse"
icon: mdi:select-inverse
switch_datapoint: 108
device_class: "switch"
- platform: tuya
name: "Anti frost"
icon: mdi:frost
switch_datapoint: 103
device_class: "switch"
sensor:
- platform: tuya
name: "Temperatura"
device_class: "temperature"
sensor_datapoint: 3
unit_of_measurement: "°C"
accuracy_decimals: 1
filters:
- multiply: 0.1
select:
- platform: "tuya"
device_class: "configuration"
name: "Program Mode"
enum_datapoint: 4
optimistic: true
options:
0: Manual
1: Program
2: Temporary program
3: Leave home
- platform: "tuya"
name: "Backlight brightness"
enum_datapoint: 106
optimistic: false
options:
0: Dark
1: Low
2: Middle
3: High
- platform: "tuya"
name: "Sensor selection"
enum_datapoint: 110
options:
0: Internal
1: External
2: Both
number:
- platform: "tuya"
name: "Precision"
number_datapoint: 101
min_value: 0.5
max_value: 10.0
step: 0.5
multiply: 10
Dzięki za wszelkie sugestie i porady
Wojtek
Tak, chodzi o entity_category
dla innych encji niż climate też jest to możliwe - te 4 typy encji, które widzę w YAMLu też mają swoje dokumentacje
jakieś przykłady wykopiowane z istniejących konfiguracji
switch:
- platform: ble_client
ble_client_id: lywsd02_clock
name: "Ustaw czas"
id: "lywsd02_ble_connection"
restore_mode: ALWAYS_OFF # Disable the client by default, as connection is only triggered via automation
entity_category: "config"
sensor:
- platform: ble_rssi
mac_address: ${ble_clock_mac}
name: "${ble_clock_name} RSSI"
icon: "mdi:bluetooth"
entity_category: "diagnostic"
no akurat ten drugi kawałek kodu się nie załapał na obrazku ale są inne analogiczne
Dzięki za pomoc.
Już dopisałem entity i nie tylko wygląda to teraz tak:
Pozostał jeden problem - kalendarz.
Termostat ma możliwość konfiguracji dni roboczych i zaprogramowania temperatur odrębnie dla dni wolnych i pracujących.
Dla dni pracujących jest 6 okresów czasowych z możliwością konfiguracji godziny i minuty ich trwania oraz temperatury (wcześnie rano/rano/południe/popołudnie/wieczór/noc)
Dni wolne mają 2 takie okresy czasowe.
Wszystko kryje się w tym kodzie:
Datapoint 105: raw (value: 06.00.00.E1.08.00.00.E1.0B.1E.00.E1.0E.00.00.E6.11.00.00.E6.17.1E.00.E1.07.00.00.E6.00.00.00.E6 (32))
Znalazłem soft wthermostat ale nie komunikował mi się z Tuya MCU stąd wyzwanie z ESPHome. Czy ktoś miał coś podobnego, jakieś sugestie czego szukać?
I jeszcze jak dodać odczyt kanału typu bitmask z błędami? Tymczasowo zrobiłem select ale wiem że to nie jest prawidłowe rozwiązanie dla:
“11:Fault alarm - bitmask (value: 0)”
Tak z ciekawości wrzuciłem to do czata gpt . I oto co przeanalizował
Zanim zmodyfikujesz kod sterujący termostatem, wyjaśnię, jak rozgryźć i zmieniać dane zawarte w ciągu Datapoint 105, który zawiera informacje o godzinach i temperaturach dla poszczególnych okresów czasowych.
Oto szczegółowa analiza i wyjaśnienie struktury Twojego ciągu:
Ciąg danych:
mathematica
KopiujEdytuj
06.00.00.E1.08.00.00.E1.0B.1E.00.E1.0E.00.00.E6.11.00.00.E6.17.1E.00.E1.07.00.00.E6.00.00.00.E6
- Pierwsza sekcja (dni pracujące):
Składa się z 6 okresów czasowych. Każdy okres zawiera 4 bajty, które definiują godzinę, minutę oraz temperaturę. - Druga sekcja (dni wolne):
Składa się z 2 okresów czasowych, również zawierających godziny, minuty i temperatury.
Analiza struktury danych
Każdy okres czasowy jest zapisany jako 4 bajty:
- Godzina (hex): Pierwszy bajt określa godzinę (w formacie 24-godzinnym, zapisanym w systemie szesnastkowym).
- Minuta (hex): Drugi bajt definiuje minutę.
- Temperatura (hex): Trzeci bajt określa temperaturę, pomnożoną przez 10 (np.
0xE1 = 225
→ 22.5°C). - Status/zerowy bajt: Czwarty bajt najczęściej jest zerowy (może oznaczać brak dodatkowych danych).
Przykład analizy
Sekcja dla dni pracujących:
mathematica
KopiujEdytuj
06.00.00.E1.08.00.00.E1.0B.1E.00.E1.0E.00.00.E6.11.00.00.E6.17.1E.00.E1
Podzielmy to na okresy czasowe:
- 06:00 - 22.5°C:
06
→ 6:00 (godzina)00
→ 00 minutE1
→ 225 / 10 = 22.5°C00
→ brak dodatkowych danych.
- 08:00 - 22.5°C:
08
→ 8:0000
→ 00 minutE1
→ 22.5°C00
→ brak dodatkowych danych.
- 11:30 - 30.0°C:
0B
→ 11:001E
→ 30 minut (1E = 30 w systemie dziesiętnym).E1
→ 22.5°C00
→ brak dodatkowych danych.
I tak dalej dla pozostałych okresów czasowych.
Jak zmodyfikować?
- Zamiana godzin i minut:
- Jeśli chcesz zmienić czas, edytuj odpowiednie bajty dla godziny (
XX
) i minut (YY
). - Na przykład, aby zmienić pierwszy okres na 07:15:
- Zmień
06.00
na07.0F
(0F
= 15 w systemie dziesiętnym).
- Zmień
- Zmiana temperatury:
- Temperaturę edytujesz w bajcie
E1
. Aby ustawić inną temperaturę, oblicz ją jako:
Temperatura * 10
, a następnie zamień wynik na zapis szesnastkowy.- Przykład: 21°C →
21 * 10 = 210
→D2
w hex.
- Przykład: 21°C →
- Zamiana dni wolnych:
- Sekcja dla dni wolnych znajduje się po sekcji dni pracujących.
- Analogicznie zmień godzinę, minutę i temperaturę w odpowiednich miejscach.
Przykład modyfikacji
Chcesz ustawić następujące wartości dla dni pracujących:
- 07:15 - 21°C
- 12:30 - 22.5°C
- 18:00 - 20°C
W ciągu danych:
mathematica
KopiujEdytuj
07.0F.00.D2.0C.1E.00.E1.12.00.00.C8...
Jak zmodyfikować kod?
- Otwórz edytor w systemie Home Assistant, gdzie możesz edytować dane tego datapointa.
- Wprowadź zmiany w odpowiednich miejscach, zachowując strukturę danych.
- Zapisz zmiany i zrestartuj integrację.
Jeśli podasz, jakie dokładnie wartości chcesz ustawić, mogę rozpisać gotowy ciąg!
Bardzo dziękuję za pomoc - już wiem jak przygotować sobie cały tydzień przeliczę sobie do wersji dziesiętnej.
Ale jest jeszcze pytanie jak wysłać ten ciąg do MCU? To program, który miałem wpisany w termostat jeszcze w chmurze Tuya. Chciałbym go wysłać nawet bez modyfikacji ale czy ESP ma coś podobnego do OpenBeken czyli terminal w którym można bez kompilacji wysyłać komendy?
Pytanie jak skonfigurować ten kanał w ESP próbowałem na kilka sposobów np:
on_datapoint_update:
- platform: tuya
sensor_datapoint: 105
datapoint_type: raw
name: "Program"
set_raw_datapoint_value: (06.00.00.E1.08.00.00.E1.0B.1E.00.E1.0E.00.00.E6.11.00.00.E6.17.1E.00.E1.07.00.00.E6.00.00.00.E6 (32))
# send_raw_command: (06.00.00.E1.08.00.00.E1.0B.1E.00.E1.0E.00.00.E6.11.00.00.E6.17.1E.00.E1.07.00.00.E6.00.00.00.E6 (32))
ale już podczas weryfikacji zgłasza błędy.
Spróbuj tego
W esp-home:
api:
encryption:
key: "podstaw swój klucz"
services:
- service: send_datapoint
variables:
datapoint: int[]
then:
- homeassistant.service:
service: notify.notify
data_template:
message: "Received datapoint: {{ datapoint }}"
Zapisz i zainstaluj
I teraz idz do HA → Narzędzia deweloperskie -->Akcje -->znajdz usługe esphome.<nazwa_urzadzenia>_send_datapoint
i wprowadz swój datapoint np :
[6, 0, 0, 225, 8, 0, 0, 225]
Sprawdz , a nóż widelec zadziała
Niestety nie zadziałało próbowałem na różne sposoby całość, z nawiasami, jeden przedział czasowy.
niepowodzenie wykonania akcji esphome.termostat_3_send_datapoint. expected a list for dictionary value @ data[‘datapoint’]. Got None
lub
niepowodzenie wykonania akcji esphome.termostat_3_send_datapoint. expected int @ data[‘datapoint’][0]. Got None