import { EcoFlowClient } from '../client.js';
export const setAcOutputTool = {
name: 'ecoflow_set_ac_output',
description: 'Enable or disable AC output on an EcoFlow power station. Optionally configure X-Boost mode, output voltage, and frequency.',
inputSchema: {
type: 'object' as const,
properties: {
serial_number: {
type: 'string',
description: 'The device serial number'
},
enabled: {
type: 'boolean',
description: 'Enable (true) or disable (false) AC output'
},
xboost: {
type: 'boolean',
description: 'Enable X-Boost mode for handling loads up to 2000W (optional)'
},
voltage: {
type: 'number',
description: 'Output voltage in volts, typically 110 or 220 (optional)'
},
frequency: {
type: 'number',
description: 'Output frequency in Hz, typically 50 or 60 (optional)'
}
},
required: ['serial_number', 'enabled']
}
};
interface AcOutputArgs {
serial_number: string;
enabled: boolean;
xboost?: boolean;
voltage?: number;
frequency?: number;
}
export async function executeSetAcOutput(
client: EcoFlowClient,
args: AcOutputArgs
): Promise<string> {
try {
await client.setAcOutput(args.serial_number, args.enabled, {
xboost: args.xboost,
outVoltage: args.voltage,
outFrequency: args.frequency
});
const status = args.enabled ? 'enabled' : 'disabled';
let message = `AC output ${status} on device ${args.serial_number}`;
if (args.xboost !== undefined) {
message += `, X-Boost ${args.xboost ? 'enabled' : 'disabled'}`;
}
if (args.voltage !== undefined) {
message += `, voltage set to ${args.voltage}V`;
}
if (args.frequency !== undefined) {
message += `, frequency set to ${args.frequency}Hz`;
}
return JSON.stringify({
success: true,
message,
settings: {
acEnabled: args.enabled,
xboost: args.xboost,
voltage: args.voltage,
frequency: args.frequency
}
}, null, 2);
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
throw new Error(`Failed to set AC output: ${message}`);
}
}