To jeszcze ja na koniec, jeśli miałoby to znaczenie…
Dzisiaj ukonczyłem nowego ‘dongla’ na bazie najmniejszego esp8266 ‘esp01s’ - akurat takie mialem w domu. U mnie też oryginalnie siedział ESP32-for haier na mini złączu (nie usb A)
I teraz wyglada to w ten sposob.
Zrobilem małego moda na adapterze 5v-3.3V by zasilanie sie zgadzało i wgrałem takie oto ustawienia:
esphome:
name: haier-salon
friendly_name: Haier Salon
min_version: 2024.11.0
name_add_mac_suffix: false
esp8266:
board: esp01_1m
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
manual_ip:
static_ip: 192.168.111.47
gateway: 192.168.111.1
subnet: 255.255.255.0
ap:
ssid: "Haier Salon Fallback Hotspot"
password: !secret wifi_password
external_components:
- source: github://esphome/esphome@dev
components: [ haier ]
api:
ota:
- platform: esphome
password: ""
uart:
- id: ac_port
baud_rate: 9600
tx_pin: 1
rx_pin: 3
logger:
baud_rate: 0
#web_server:
climate:
- platform: haier
id: haier_climate
protocol: hOn
name: Climate
uart_id: ac_port
wifi_signal: true
visual:
min_temperature: 16 °C
max_temperature: 30 °C
temperature_step: 1 °C
supported_modes:
- 'OFF'
- HEAT_COOL
- COOL
- HEAT
- DRY
- FAN_ONLY
supported_swing_modes:
- 'OFF'
- VERTICAL
- HORIZONTAL
- BOTH
supported_presets:
- AWAY
- BOOST
- SLEEP
switch:
- platform: template
id: haier_climate_display_switch
name: Wyświetlacz
icon: mdi:led-on
entity_category: config
restore_mode: RESTORE_DEFAULT_ON
lambda: |-
return id(haier_climate).get_display_state();
turn_on_action:
climate.haier.display_on: haier_climate
turn_off_action:
climate.haier.display_off: haier_climate
- platform: template
id: haier_climate_beeper_switch
entity_category: config
name: Beep
icon: mdi:volume-high
restore_mode: RESTORE_DEFAULT_ON
lambda: |-
return id(haier_climate).get_beeper_state();
turn_on_action:
climate.haier.beeper_on: haier_climate
turn_off_action:
climate.haier.beeper_off: haier_climate
- platform: restart
name: Restart AC Salon
sensor:
- platform: haier
haier_id: haier_climate
outdoor_temperature:
name: Outdoor Temperature
humidity:
name: Indoor Humidity
compressor_current:
name: Compressor Current
compressor_frequency:
name: Compressor Frequency
expansion_valve_open_degree:
name: Expansion Valve Open Degree
indoor_coil_temperature:
name: Indoor Coil Temperature
outdoor_coil_temperature:
name: Outdoor Coil Temperature
outdoor_defrost_temperature:
name: Outdoor Defrost Temperature
outdoor_in_air_temperature:
name: Outdoor In Air Temperature
outdoor_out_air_temperature:
name: Outdoor Out Air Temperature
power:
name: Power
- platform: wifi_signal
name: WiFi Signal
update_interval: 30s
binary_sensor:
- platform: haier
haier_id: haier_climate
compressor_status:
name: Outdoor Compressor Status
defrost_status:
name: Defrost Status
four_way_valve_status:
name: Four Way Valve Status
indoor_electric_heating_status:
name: Indoor Electric Heating Status
indoor_fan_status:
name: Indoor Fan Status
outdoor_fan_status:
name: Outdoor Fan Status
# Funkcje dodatkowe
button:
- platform: template
name: Self Cleaning
icon: mdi:spray-bottle
on_press:
- climate.haier.start_self_cleaning: haier_climate
# Introduced in (some) models starting from 2021
- platform: template
name: Stericleaning
icon: mdi:spray-bottle
on_press:
- climate.haier.start_steri_cleaning: haier_climate
text_sensor:
- platform: template
name: Cleaning Status
icon: mdi:spray-bottle
lambda: return id(haier_climate).get_cleaning_status_text();
select:
- platform: template
id: haier_climate_vertical_direction
name: Airflow Vertical
entity_category: config
icon: mdi:arrow-expand-vertical
update_interval: 5s
options:
- Health Up
- Max Up
- Up
- Center
- Down
- Max Down
- Health Down
- Auto
lambda: >-
switch (id(haier_climate).get_vertical_airflow().value_or(esphome::haier::hon_protocol::VerticalSwingMode::CENTER))
{
case esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_UP:
return std::string("Health Up");
case esphome::haier::hon_protocol::VerticalSwingMode::MAX_UP:
return std::string("Max Up");
case esphome::haier::hon_protocol::VerticalSwingMode::UP:
return std::string("Up");
default:
case esphome::haier::hon_protocol::VerticalSwingMode::CENTER:
return std::string("Center");
case esphome::haier::hon_protocol::VerticalSwingMode::DOWN:
return std::string("Down");
case esphome::haier::hon_protocol::VerticalSwingMode::MAX_DOWN:
return std::string("Max Down");
case esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_DOWN:
return std::string("Health Down");
case esphome::haier::hon_protocol::VerticalSwingMode::AUTO:
case esphome::haier::hon_protocol::VerticalSwingMode::AUTO_SPECIAL:
return std::string("Auto");
}
set_action:
- climate.haier.set_vertical_airflow:
id: haier_climate
vertical_airflow: !lambda >-
if (x == "Health Up")
return esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_UP;
else if (x == "Max Up")
return esphome::haier::hon_protocol::VerticalSwingMode::MAX_UP;
else if (x == "Up")
return esphome::haier::hon_protocol::VerticalSwingMode::UP;
else if (x == "Down")
return esphome::haier::hon_protocol::VerticalSwingMode::DOWN;
else if (x == "Max Down")
return esphome::haier::hon_protocol::VerticalSwingMode::MAX_DOWN;
else if (x == "Health Down")
return esphome::haier::hon_protocol::VerticalSwingMode::HEALTH_DOWN;
else if (x == "Auto")
return esphome::haier::hon_protocol::VerticalSwingMode::AUTO;
else
return esphome::haier::hon_protocol::VerticalSwingMode::CENTER;
- platform: template
id: haier_climate_horizontal_direction
name: Airflow Horizontal
entity_category: config
icon: mdi:arrow-expand-horizontal
update_interval: 5s
options:
- Max Left
- Left
- Center
- Right
- Max Right
- Auto
lambda: >-
switch (id(haier_climate).get_horizontal_airflow().value_or(esphome::haier::hon_protocol::HorizontalSwingMode::CENTER))
{
case esphome::haier::hon_protocol::HorizontalSwingMode::MAX_LEFT:
return std::string("Max Left");
case esphome::haier::hon_protocol::HorizontalSwingMode::LEFT:
return std::string("Left");
default:
case esphome::haier::hon_protocol::HorizontalSwingMode::CENTER:
return std::string("Center");
case esphome::haier::hon_protocol::HorizontalSwingMode::RIGHT:
return std::string("Right");
case esphome::haier::hon_protocol::HorizontalSwingMode::MAX_RIGHT:
return std::string("Max Right");
case esphome::haier::hon_protocol::HorizontalSwingMode::AUTO:
return std::string("Auto");
}
set_action:
- climate.haier.set_horizontal_airflow:
id: haier_climate
horizontal_airflow: !lambda >-
if (x == "Max Left")
return esphome::haier::hon_protocol::HorizontalSwingMode::MAX_LEFT;
else if (x == "Left")
return esphome::haier::hon_protocol::HorizontalSwingMode::LEFT;
else if (x == "Right")
return esphome::haier::hon_protocol::HorizontalSwingMode::RIGHT;
else if (x == "Max Right")
return esphome::haier::hon_protocol::HorizontalSwingMode::MAX_RIGHT;
else if (x == "Auto")
return esphome::haier::hon_protocol::HorizontalSwingMode::AUTO;
else
return esphome::haier::hon_protocol::HorizontalSwingMode::CENTER;
niestety moduł ESP01s łapał straszne zwiechy i sie restartował do jakies 20s ze wzgledu na mała wydajnosc procka, wiec musialem zrezygnować z webservera (odchaczony w kodzie) i działa pieknie i stabilnie.
Wszystkie funkcje działają poprawnie oprócz sensora wilgotnosci powietrza ktory pokazuje ciągłe 0%
Moja jednostka to: AS50S2SF1FA-BH
Pozdrawiam i serdecznie dziekuje za pomoc!