abstract class DeviceFunction { final String deviceId; final String deviceName; final String code; final String operationName; final String icon; DeviceFunction({ required this.deviceId, required this.deviceName, required this.code, required this.operationName, required this.icon, }); T execute(T currentStatus, dynamic newValue); }