Increasing the number and traffic pattern of stations connected to a wifi access point escalates downlink channel access contention and queuing delay. For IoT stations sharing the same access point, this means lower energy efficiency and higher delay. To remedy this problem, we propose packet scheduling algorithms implemented in the access point. We first present an algorithm to compute per-packet priority to arbitrate the contention between the transmission of IoT packets. This algorithm employs a least-laxity first (LLF) scheme that assigns priorities based on the remaining wake-up time of the destination stations. Then, we present a predictive scheduling algorithm to manage the sleep/wake-up schedule of IoT devices based on current buffering and channel conditions. We show the implementation of the proposed mechanism on Linux-based access points and highlight performance enhancements.