{ "config": { "step": { "user": { "title": "FGLair", "menu_options": { "cloud": "Cloud sign-in (FGLair account)", "manual": "Manual setup", "import_json": "Import config_*.json" } }, "cloud": { "title": "FGLair cloud sign-in", "description": "Used once for provisioning: fetches the static LAN key of the device.", "data": { "email": "Email", "password": "Password", "region": "Region" }, "data_description": { "region": "FGLair/Ayla account region" } }, "cloud_device": { "title": "Select air conditioner", "data": { "dsn": "Device" } }, "manual": { "title": "Device parameters", "data": { "host": "Host (IP or DNS name)", "device_port": "Device port", "dsn": "DSN", "lanip_key": "LAN IP key", "lanip_key_id": "LAN IP key ID", "name": "Name (optional)", "model": "Model / oem_model (optional)" }, "data_description": { "device_port": "Default 80; change only for port-forwarding setups", "lanip_key": "From cloud discovery or ESPHome diagnostics" } }, "import_json": { "title": "Import config_*.json", "data": { "config_json": "config JSON" }, "data_description": { "config_json": "Paste a JSON object produced by fglair-discover or fglctl" } }, "template": { "title": "Module template", "description": "Read from the device:\n\n{device_values}\n\n{probe_note} The template defines the module's property table (names, types, conversions); actual features are tuned on the next step.\n\nIf unsure, keep the default.", "data": { "template": "Template" }, "data_description": { "template": "A — AP-WA/AP-WC/AP-WD modules: room temperature sensor, louver directions and swing, all flags. B — AP-WB modules: no room temperature sensor, no louver directions, 1.0 °C setpoint step. F — like A but for AP-WF modules (monitor1, filter_sign_reset)." } }, "capabilities": { "title": "Device capabilities", "description": "Toggles are pre-set from the device:\n\n{device_values}\n\nDisable what the device cannot do or what you do not want to expose. Entities are created only for enabled features.\n\nIf unsure, keep as is.", "data": { "mode_cool": "Cooling", "mode_dry": "Dry", "mode_fan": "Fan only", "mode_heat": "Heating", "mode_auto": "Automatic", "fan_quiet": "Quiet fan", "fan_low": "Low fan", "fan_medium": "Medium fan", "fan_high": "High fan", "fan_auto": "Auto fan", "swing_vertical": "Vertical swing", "swing_horizontal": "Horizontal swing", "economy_mode": "Economy", "min_heat": "Minimum heat", "indoor_fan_control": "Indoor fan control", "powerful_mode": "Powerful", "outdoor_low_noise": "Outdoor low noise", "coil_dry_mode": "Coil dry", "display_temperature": "Room temperature sensor", "human_det_auto_save": "Human detection auto save", "wifi_led_enable": "Wi-Fi LED", "af_vertical_direction": "Vertical louver position", "af_horizontal_direction": "Horizontal louver position" }, "data_description": { "mode_cool": "Cooling", "mode_dry": "Dry", "mode_fan": "Fan only", "mode_heat": "Heating", "mode_auto": "Automatic mode", "fan_auto": "Auto fan speed", "fan_quiet": "Quiet fan speed", "fan_low": "Low fan speed", "fan_medium": "Medium fan speed", "fan_high": "High fan speed", "swing_vertical": "Vertical louver swing", "swing_horizontal": "Horizontal louver swing", "economy_mode": "Economy mode", "min_heat": "Minimum heat (keep +10 °C)", "indoor_fan_control": "Indoor fan control while outdoor unit runs", "powerful_mode": "Powerful mode", "outdoor_low_noise": "Outdoor unit low noise", "coil_dry_mode": "Coil dry", "display_temperature": "Room temperature sensor", "human_det_auto_save": "Human detection auto save", "wifi_led_enable": "Wi-Fi LED indicator", "af_vertical_direction": "Vertical louver position", "af_horizontal_direction": "Horizontal louver position" } }, "limits": { "title": "Setpoint (range and step)", "description": "Range and step are auto-detected (A/F step 0.5 °C, B — 1.0). Optionally enable a custom linear conversion (API units are 0.1 °C).\n\nIf unsure, keep as is.", "data": { "temp_min": "Minimum setpoint (°C)", "temp_max": "Maximum setpoint (°C)", "temp_step": "Setpoint step (°C)", "temp_num": "Conversion numerator", "temp_den": "Conversion denominator", "temp_offset": "Conversion offset (0.1 °C)" }, "data_description": { "temp_num": "display = raw × num / den + offset; raw is the protocol value (setpoint: 0.1 °C)", "temp_den": "display = raw × num / den + offset", "temp_offset": "display = raw × num / den + offset" } } }, "error": { "cannot_connect": "Could not connect to the device", "no_slots": "Both LAN slots are busy (FGLair app or ESPHome connected). Close one and retry", "key_mismatch": "LAN key does not match the device; re-run discovery or re-import the config", "timeout": "Timed out waiting for the device to come online", "invalid_auth": "Invalid email or password", "invalid_import": "Invalid config JSON", "no_devices": "No devices found in the account", "unknown": "Unexpected error", "properties_missing": "The device connected but did not report its base properties", "invalid_range": "Minimum must be less than maximum" }, "abort": { "already_configured": "This device is already configured", "invalid_import": "Invalid config JSON", "cannot_connect": "Could not connect to the device", "no_slots": "Both LAN slots are busy", "key_mismatch": "LAN key does not match the device", "timeout": "Timed out waiting for the device", "properties_missing": "The device connected but did not report its base properties", "unique_id_mismatch": "This is a different device (unique ID mismatch)", "reconfigure_successful": "Reconfiguration successful" } }, "entity": { "sensor": { "room_temperature": { "name": "Room temperature" }, "error_code": { "name": "Error code" }, "connection_state": { "name": "Connection state", "state": { "idle": "Idle", "registering": "Registering", "online": "Online", "recovering": "Recovering", "offline": "Offline", "key_error": "Key error" } } }, "binary_sensor": { "connectivity": { "name": "Connectivity" }, "defrost": { "name": "Defrost" }, "maintenance": { "name": "Maintenance" }, "oil_recovery": { "name": "Oil recovery" }, "pump_down": { "name": "Pump down" }, "check_operation": { "name": "Check operation" }, "simultaneous": { "name": "Simultaneous operation" }, "different_modes": { "name": "Freeze/oil/other modes (template B)" } }, "switch": { "economy_mode": { "name": "Economy" }, "powerful_mode": { "name": "Powerful" }, "coil_dry_mode": { "name": "Coil dry" }, "min_heat": { "name": "Minimum heat" }, "outdoor_low_noise": { "name": "Outdoor low noise" }, "human_det_auto_save": { "name": "Human detection auto save" }, "wifi_led_enable": { "name": "Wi-Fi LED" }, "indoor_fan_control": { "name": "Indoor fan control" } }, "select": { "af_vertical_direction": { "name": "Vertical airflow direction" }, "af_horizontal_direction": { "name": "Horizontal airflow direction" } } }, "issues": { "key_mismatch": { "title": "FGLair: LAN key mismatch", "description": "Device {device} ({host}) rejected the stored LAN key (key_id mismatch). Use Reconfigure on the integration card to fetch the current key (cloud sign-in) or paste a fresh config_*.json.", "fix_flow": { "step": { "confirm": { "title": "FGLair: LAN key mismatch", "description": "Confirm to reload device {device} ({host}). If the key is still wrong, use Reconfigure on the integration card: sign in to the FGLair cloud to fetch the current key or paste a fresh config_*.json. This repair item disappears once the device comes online." } } } } }, "options": { "step": { "init": { "title": "FGLair LAN key", "description": "Full LAN key (for ESPHome secrets.yaml). Copy it, or paste a new one to replace the stored key. DSN: {dsn}; key ID: {lanip_key_id}; host: {host}. Saving a changed key reloads the device.", "data": { "lanip_key": "LAN IP key" } } } } }