diff --git a/tests/ac_send_packet_for_engineer.py b/tests/ac_send_packet_for_engineer.py deleted file mode 100644 index ce26215..0000000 --- a/tests/ac_send_packet_for_engineer.py +++ /dev/null @@ -1,191 +0,0 @@ -import time -import aioesphomeapi -import asyncio -import re -import sys -import argparse -from aioesphomeapi.api_pb2 import (LOG_LEVEL_NONE, - LOG_LEVEL_ERROR, - LOG_LEVEL_WARN, - LOG_LEVEL_INFO, - LOG_LEVEL_DEBUG, - LOG_LEVEL_VERBOSE, - LOG_LEVEL_VERY_VERBOSE) - -def createParser (): - parser = argparse.ArgumentParser( - description='''This script is used for collecting logs from ac_aux ESPHome component. - For more info, see https://github.com/GrKoR/ac_python_logger''', - add_help = False) - parent_group = parser.add_argument_group (title='Params') - parent_group.add_argument ('--help', '-h', action='help', help='show this help message and exit') - parent_group.add_argument ('-i', '--ip', nargs=1, required=True, help='IP address of the esphome device') - parent_group.add_argument ('-p', '--pwd', nargs=1, required=True, help='native API password for the esphome device') - return parser - -async def main(): - """Connect to an ESPHome device and wait for state changes.""" - api = aioesphomeapi.APIClient(namespace.ip[0], 6053, namespace.pwd[0]) - - try: - await api.connect(login=True) - except aioesphomeapi.InvalidAuthAPIError as e: - return print(e) - - print(api.api_version) - - async def display_off(): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00], - } - ) - - async def display_on(): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - } - ) - - async def ac_enable(): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x87, 0xE0, 0x2F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - } - ) - - async def ac_disable(): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x87, 0xE0, 0x2F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], - } - ) - - async def ac_get11_01(): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x02, 0x00, 0x11, 0x01], - } - ) - - async def ac_get11_00(): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00], - } - ) - - async def ac_set_vlouver(lvr): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, lvr, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - } - ) - - async def ac_set_hlouver(lvr): - await api.execute_service( - service, - data={ - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, lvr, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - } - ) - - # key надо искать в выводе list_entities_services - service = aioesphomeapi.UserService( - name="send_data", - key=311254518, - args=[ - aioesphomeapi.UserServiceArg(name="data_buf", type=aioesphomeapi.UserServiceArgType.INT_ARRAY), - ], - ) - - time.sleep(7) - await ac_get11_00() - time.sleep(7) - await ac_get11_01() - - #await ac_set_vlouver( 0b10010000 ) # swing on - #await ac_set_vlouver( 0b10010111 ) # swing off - #await ac_set_vlouver( 0b10010001 ) # 1 - #await ac_set_vlouver( 0b10010010 ) # 2 - #await ac_set_vlouver( 0b10010011 ) # 3 - #await ac_set_vlouver( 0b10010100 ) # 4 - #await ac_set_vlouver( 0b10010101 ) # 5 - #await ac_set_vlouver( 0b10010110 ) # не работает, сбрасывает на swing on - #time.sleep(5) - - #await ac_set_hlouver( 0b00000000 ) # swing on - #await ac_set_hlouver( 0b11100000 ) # swing off - #await ac_set_hlouver( 0b00100000 ) # не работает, сбрасывает в swing off - #await ac_set_hlouver( 0b01000000 ) # не работает, сбрасывает в swing off - #await ac_set_hlouver( 0b01100000 ) # не работает, сбрасывает в swing off - #await ac_set_hlouver( 0b10000000 ) # не работает, сбрасывает в swing off - #await ac_set_hlouver( 0b10100000 ) # не работает, сбрасывает в swing off - #await ac_set_hlouver( 0b11000000 ) # не работает, сбрасывает в swing off - #time.sleep(5) - - async def test_byte(bt): - await api.execute_service( - service, - data={ - #display on - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - #"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - #display off - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - "data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00], - # swing on - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - #"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x90, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - # swing off - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 - #"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00], - } - ) - ''' - не проходит команда, если байт 1 или 7 не 0x00 - не проходит команда, если байт 3 не 0x80 - - проходит и не меняется, если меняю байт 4 или 5 - ''' - - #await test_byte(0b10000110) - #await test_byte(0b01000110) - #await test_byte(0b00100110) - #await test_byte(0b00010110) - time.sleep(2) - - -parser = createParser() -namespace = parser.parse_args() -print("IP: ", namespace.ip[0]) - - -loop = asyncio.get_event_loop() -try: - #asyncio.ensure_future(main()) - #loop.run_forever() - loop.run_until_complete(main()) -except aioesphomeapi.InvalidAuthAPIError as e: - print(e) -except KeyboardInterrupt: - pass -finally: - loop.close() - pass \ No newline at end of file diff --git a/tests/test-ext-esp32.yaml b/tests/test-ext-esp32.yaml index d4e5177..8da0a02 100644 --- a/tests/test-ext-esp32.yaml +++ b/tests/test-ext-esp32.yaml @@ -1,5 +1,5 @@ external_components: - - source: github://GrKoR/esphome_aux_ac_component@dev + - source: github://GrKoR/esphome_aux_ac_component components: [ aux_ac ] refresh: 0s @@ -58,31 +58,38 @@ climate: id: aux_id uart_id: ac_uart_bus period: 7s - show_action: true display_inverted: true - indoor_temperature: - name: $upper_devicename Indoor Temperature - id: ${devicename}_indoor_temp - internal: false display_state: name: $upper_devicename Display State id: ${devicename}_display_state internal: false - outdoor_temperature: - name: $upper_devicename Outdoor Temperature - id: ${devicename}_outdoor_temp + indoor_ambient_temperature: + name: $upper_devicename Indoor Ambient Temperature + id: ${devicename}_indoor_ambient_temp internal: false - outbound_temperature: - name: $upper_devicename Coolant Outbound Temperature - id: ${devicename}_outbound_temp + outdoor_ambient_temperature: + name: $upper_devicename Outdoor Ambient Temperature + id: ${devicename}_outdoor_ambient_temp internal: false - inbound_temperature: - name: $upper_devicename Coolant Inbound Temperature - id: ${devicename}_inbound_temp + outdoor_condenser_temperature: + name: $upper_devicename Outdoor Condenser Temperature + id: ${devicename}_outdoor_condenser_temp internal: false - compressor_temperature: - name: $upper_devicename Compressor Temperature - id: ${devicename}_strange_temp + compressor_suction_temperature: + name: $upper_devicename Compressor Suction Temperature + id: ${devicename}_compressor_suction_temp + internal: false + indoor_coil_temperature: + name: $upper_devicename Indoor Coil Temperature + id: ${devicename}_indoor_coil_temp + internal: false + compressor_discharge_temperature: + name: $upper_devicename Compressor Discharge Temperature + id: ${devicename}_compressor_discharge_temp + internal: false + defrost_temperature: + name: $upper_devicename Defrost Temperature + id: ${devicename}_defrost_temp internal: false defrost_state: name: $upper_devicename Defrost State diff --git a/tests/test-ext-for-engineer.yaml b/tests/test-ext-for-engineer.yaml deleted file mode 100644 index 20f4ed3..0000000 --- a/tests/test-ext-for-engineer.yaml +++ /dev/null @@ -1,156 +0,0 @@ -external_components: - - source: github://GrKoR/esphome_aux_ac_component@dev - components: [ aux_ac ] - refresh: 0s - -substitutions: - devicename: test_aux_ac_ext_engeneer - upper_devicename: Test AUX - -esphome: - name: $devicename - platform: ESP8266 - board: esp12e - -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_pass - manual_ip: - static_ip: !secret wifi_ip - gateway: !secret wifi_gateway - subnet: !secret wifi_subnet - dns1: 8.8.8.8 - dns2: 1.1.1.1 - reboot_timeout: 0s - ap: - ssid: Test AUX Fallback Hotspot - password: !secret wifi_ap_pass - -logger: - level: DEBUG - baud_rate: 0 - -api: - password: !secret api_pass - reboot_timeout: 0s - services: - # этот сервис можно вызвать из Home Assistant или Python. Он отправляет полученные байты в кондиционер - - service: send_data - variables: - data_buf: int[] - then: - # ВАЖНО! Только для инженеров! - # Вызывайте метод aux_ac.send_packet только если понимаете, что делаете! Он не проверяет данные, а передаёт - # кондиционеру всё как есть. Какой эффект получится от передачи кондиционеру рандомных байт, никто не знает. - # Вы действуете на свой страх и риск. - - aux_ac.send_packet: - id: aux_id - data: !lambda |- - std::vector data{}; - for (int n : data_buf) { - data.push_back( (uint8_t) n ); - } - return data; - -ota: - password: !secret ota_pass - -web_server: - port: 80 - -uart: - id: ac_uart_bus - tx_pin: GPIO1 - rx_pin: GPIO3 - baud_rate: 4800 - data_bits: 8 - parity: EVEN - stop_bits: 1 - -sensor: - - platform: uptime - name: Uptime Sensor - -climate: - - platform: aux_ac - name: $upper_devicename - id: aux_id - uart_id: ac_uart_bus - period: 7s - show_action: true - display_inverted: true - optimistic: true - indoor_temperature: - name: $upper_devicename Indoor Temperature - id: ${devicename}_indoor_temp - internal: false - display_state: - name: $upper_devicename Display State - id: ${devicename}_display_state - internal: false - outdoor_temperature: - name: $upper_devicename Outdoor Temperature - id: ${devicename}_outdoor_temp - internal: false - outbound_temperature: - name: $upper_devicename Coolant Outbound Temperature - id: ${devicename}_outbound_temp - internal: false - inbound_temperature: - name: $upper_devicename Coolant Inbound Temperature - id: ${devicename}_inbound_temp - internal: false - compressor_temperature: - name: $upper_devicename Compressor Temperature - id: ${devicename}_strange_temp - internal: false - defrost_state: - name: $upper_devicename Defrost State - id: ${devicename}_defrost_state - internal: false - inverter_power: - name: $upper_devicename Invertor Power - id: ${devicename}_invertor_power - internal: false - preset_reporter: - name: $upper_devicename Preset Reporter - id: ${devicename}_preset_reporter - internal: false - visual: - min_temperature: 16 - max_temperature: 32 - temperature_step: 0.5 - supported_modes: - - HEAT_COOL - - COOL - - HEAT - - DRY - - FAN_ONLY - custom_fan_modes: - - MUTE - - TURBO - supported_presets: - - SLEEP - custom_presets: - - CLEAN - - HEALTH - - ANTIFUNGUS - supported_swing_modes: - - VERTICAL - - HORIZONTAL - - BOTH - - -switch: - - platform: template - name: AC Display - lambda: |- - if (id(${devicename}_display_state).state) { - return true; - } else { - return false; - } - turn_on_action: - - aux_ac.display_on: aux_id - turn_off_action: - - aux_ac.display_off: aux_id \ No newline at end of file diff --git a/tests/test-ext-power-limit.yaml b/tests/test-ext-power-limit.yaml index b873586..4ffc75c 100644 --- a/tests/test-ext-power-limit.yaml +++ b/tests/test-ext-power-limit.yaml @@ -1,5 +1,5 @@ external_components: - - source: github://GrKoR/esphome_aux_ac_component@dev + - source: github://GrKoR/esphome_aux_ac_component components: [ aux_ac ] refresh: 0s @@ -59,32 +59,39 @@ climate: id: aux_id uart_id: ac_uart_bus period: 7s - show_action: true display_inverted: true - timeout: 150 - indoor_temperature: - name: $upper_devicename Indoor Temperature - id: ${devicename}_indoor_temp - internal: false + timeout: 300 display_state: name: $upper_devicename Display State id: ${devicename}_display_state internal: false - outdoor_temperature: - name: $upper_devicename Outdoor Temperature - id: ${devicename}_outdoor_temp + indoor_ambient_temperature: + name: $upper_devicename Indoor Ambient Temperature + id: ${devicename}_indoor_ambient_temp internal: false - outbound_temperature: - name: $upper_devicename Coolant Outbound Temperature - id: ${devicename}_outbound_temp + outdoor_ambient_temperature: + name: $upper_devicename Outdoor Ambient Temperature + id: ${devicename}_outdoor_ambient_temp internal: false - inbound_temperature: - name: $upper_devicename Coolant Inbound Temperature - id: ${devicename}_inbound_temp + outdoor_condenser_temperature: + name: $upper_devicename Outdoor Condenser Temperature + id: ${devicename}_outdoor_condenser_temp internal: false - compressor_temperature: - name: $upper_devicename Compressor Temperature - id: ${devicename}_strange_temp + compressor_suction_temperature: + name: $upper_devicename Compressor Suction Temperature + id: ${devicename}_compressor_suction_temp + internal: false + indoor_coil_temperature: + name: $upper_devicename Indoor Coil Temperature + id: ${devicename}_indoor_coil_temp + internal: false + compressor_discharge_temperature: + name: $upper_devicename Compressor Discharge Temperature + id: ${devicename}_compressor_discharge_temp + internal: false + defrost_temperature: + name: $upper_devicename Defrost Temperature + id: ${devicename}_defrost_temp internal: false defrost_state: name: $upper_devicename Defrost State diff --git a/tests/test-local-airflow-dir.yaml b/tests/test-local-airflow-dir.yaml index 04bfaaa..e6ecf66 100644 --- a/tests/test-local-airflow-dir.yaml +++ b/tests/test-local-airflow-dir.yaml @@ -61,7 +61,6 @@ climate: id: aux_id uart_id: ac_uart_bus period: 7s - show_action: true display_inverted: true @@ -121,5 +120,4 @@ number: set_action: then: - lambda: !lambda |- - if (x == 6) x = 7; // делаем так, чтобы выключение отрабатывать корректно - id(aux_id).setVLouverSequence( static_cast(x) ); + id(aux_id).action_set_vlouver_position( static_cast(x)); diff --git a/tests/test-local-power-limit.yaml b/tests/test-local-power-limit.yaml index 349607c..c0813d2 100644 --- a/tests/test-local-power-limit.yaml +++ b/tests/test-local-power-limit.yaml @@ -59,32 +59,39 @@ climate: id: aux_id uart_id: ac_uart_bus period: 7s - show_action: true display_inverted: true - timeout: 150 - indoor_temperature: - name: $upper_devicename Indoor Temperature - id: ${devicename}_indoor_temp - internal: false + timeout: 300 display_state: name: $upper_devicename Display State id: ${devicename}_display_state internal: false - outdoor_temperature: - name: $upper_devicename Outdoor Temperature - id: ${devicename}_outdoor_temp + indoor_ambient_temperature: + name: $upper_devicename Indoor Ambient Temperature + id: ${devicename}_indoor_ambient_temp internal: false - outbound_temperature: - name: $upper_devicename Coolant Outbound Temperature - id: ${devicename}_outbound_temp + outdoor_ambient_temperature: + name: $upper_devicename Outdoor Ambient Temperature + id: ${devicename}_outdoor_ambient_temp internal: false - inbound_temperature: - name: $upper_devicename Coolant Inbound Temperature - id: ${devicename}_inbound_temp + outdoor_condenser_temperature: + name: $upper_devicename Outdoor Condenser Temperature + id: ${devicename}_outdoor_condenser_temp internal: false - compressor_temperature: - name: $upper_devicename Compressor Temperature - id: ${devicename}_strange_temp + compressor_suction_temperature: + name: $upper_devicename Compressor Suction Temperature + id: ${devicename}_compressor_suction_temp + internal: false + indoor_coil_temperature: + name: $upper_devicename Indoor Coil Temperature + id: ${devicename}_indoor_coil_temp + internal: false + compressor_discharge_temperature: + name: $upper_devicename Compressor Discharge Temperature + id: ${devicename}_compressor_discharge_temp + internal: false + defrost_temperature: + name: $upper_devicename Defrost Temperature + id: ${devicename}_defrost_temp internal: false defrost_state: name: $upper_devicename Defrost State @@ -158,5 +165,5 @@ number: set_action: then: - lambda: !lambda |- - id(aux_id).powerLimitationOnSequence( x ); + id(aux_id).action_power_limitation_on( x ); diff --git a/tests/test-local.yaml b/tests/test-local.yaml index e934728..d0f97b9 100644 --- a/tests/test-local.yaml +++ b/tests/test-local.yaml @@ -59,33 +59,40 @@ climate: id: aux_id uart_id: ac_uart_bus period: 7s - show_action: true display_inverted: true optimistic: true - indoor_temperature: - name: $upper_devicename Indoor Temperature - id: ${devicename}_indoor_temp + indoor_ambient_temperature: + name: $upper_devicename Indoor Ambient Temperature + id: ${devicename}_indoor_ambient_temp + internal: false + outdoor_ambient_temperature: + name: $upper_devicename Outdoor Ambient Temperature + id: ${devicename}_outdoor_ambient_temp + internal: false + outdoor_condenser_temperature: + name: $upper_devicename Outdoor Condenser Temperature + id: ${devicename}_outdoor_condenser_temp + internal: false + compressor_suction_temperature: + name: $upper_devicename Compressor Suction Temperature + id: ${devicename}_compressor_suction_temp + internal: false + indoor_coil_temperature: + name: $upper_devicename Indoor Coil Temperature + id: ${devicename}_indoor_coil_temp + internal: false + compressor_discharge_temperature: + name: $upper_devicename Compressor Discharge Temperature + id: ${devicename}_compressor_discharge_temp + internal: false + defrost_temperature: + name: $upper_devicename Defrost Temperature + id: ${devicename}_defrost_temp internal: false display_state: name: $upper_devicename Display State id: ${devicename}_display_state internal: false - outdoor_temperature: - name: $upper_devicename Outdoor Temperature - id: ${devicename}_outdoor_temp - internal: false - outbound_temperature: - name: $upper_devicename Coolant Outbound Temperature - id: ${devicename}_outbound_temp - internal: false - inbound_temperature: - name: $upper_devicename Coolant Inbound Temperature - id: ${devicename}_inbound_temp - internal: false - compressor_temperature: - name: $upper_devicename Compressor Temperature - id: ${devicename}_strange_temp - internal: false defrost_state: name: $upper_devicename Defrost State id: ${devicename}_defrost_state