Analysis updated 2026-05-18
Control a Levoit LTF-F422S tower fan from a desktop or browser interface instead of the VeSync phone app.
Automate fan control from the command line as part of a home automation script.
Run a local web interface for your fan accessible from any device on your home network.
Extend the controller to support another VeSync device by subclassing the FanController.
| ardacelep/fanctl | 0xhassaan/nn-from-scratch | a-little-hoof/dsr | |
|---|---|---|---|
| Stars | 0 | 0 | 0 |
| Language | Python | Python | Python |
| Setup difficulty | moderate | moderate | hard |
| Complexity | 3/5 | 4/5 | 5/5 |
| Audience | general | developer | researcher |
Figures from each repo's GitHub metadata at analysis time.
Requires a Levoit LTF-F422S fan and a VeSync account, other VeSync devices are not supported without additional code.
Fanctl is a Python application that lets you control Levoit tower fans (specifically the LTF-F422S model) from your desktop, browser, or the command line, without using the official VeSync mobile app. It talks to the VeSync cloud API using your existing account credentials and gives you a local interface to turn the fan on or off, change its speed (1 to 12), switch modes (Normal, Turbo, Auto, Sleep), toggle oscillation and display, and see the current room temperature. The app has three different interfaces that share the same underlying logic. The primary one uses a framework called Flet, which can run as a desktop app or be opened in a web browser from the same code. There is also a traditional desktop window built with tkinter, and a macOS menu bar icon. Each interface subscribes to state and calls methods on the backend, which handles authentication, device communication, and keeping the state in sync. You log in once with your VeSync email and password. The session token is saved so you are not asked again. The app polls the device's state from the cloud every ten seconds, so changes made elsewhere (from the phone app or the physical fan) appear automatically. End users who do not want to install Python can download a prebuilt bundle from the GitHub releases page for macOS, Windows, or Linux. First-time launches show a security warning because the app is not code-signed, but the README explains clearly how to bypass it on each platform. The app is limited to the one specific fan model it was tested on. The architecture is designed to make adding support for other VeSync devices possible with a new controller subclass. The project is MIT-licensed.
A Python app with desktop, web, and CLI interfaces for controlling Levoit VeSync tower fans without the phone app, with token auth and auto-syncing state.
Mainly Python. The stack also includes Python, Flet, tkinter.
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly general.
This repo across BitVibe Labs
Verify against the repo before relying on details.