No description
  • TypeScript 48.8%
  • Rust 28.7%
  • CSS 22%
  • HTML 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-08-19 20:20:22 +02:00
readme-assets Can use non string arguments on methods, implemented reload devices on UI 2025-02-12 18:07:40 +01:00
src Add IP update functionality 2025-02-19 22:37:53 +01:00
src-tauri Add IP update functionality 2025-02-19 22:37:53 +01:00
.gitignore First commit 2025-02-07 13:23:46 +01:00
app-icon.png Updated dependencies and icon 2025-08-19 20:20:22 +02:00
index.html First commit 2025-02-07 13:23:46 +01:00
LICENSE Update README and add LICENSE file for PyMiio project 2025-02-09 19:33:28 +01:00
package-lock.json Updated dependencies and icon 2025-08-19 20:20:22 +02:00
package.json Updated dependencies and icon 2025-08-19 20:20:22 +02:00
README.md No need to install unexistent package pyo3 with pip 2025-04-22 13:15:58 +02:00
tsconfig.json First commit 2025-02-07 13:23:46 +01:00
tsconfig.node.json First commit 2025-02-07 13:23:46 +01:00
vite.config.ts TODO: non-string arguments on methods/actions don't work 2025-02-09 19:14:10 +01:00

PyMiio

PyMiio is a work-in-progress UI for managing and interacting with Miio devices using Tauri and Rust on the backend, and React with TypeScript on the frontend.

Overview

This application provides the following features:

  • Device Management: Add, remove, and list devices.
  • Action Control: Configure and run actions on connected devices.
  • Tauri Integration: Uses Tauri for a native desktop experience with a Rust backend.

Note: The project is still in early development; many features are not fully implemented.

Dependencies

This project depends mostly on the following libraries:

  • rust-py-miio: A Rust library that provides the bindings with the Python library python-miio.
  • tauri: A Rust library for building desktop applications with web technologies.
  • react: A JavaScript library for building user interfaces.
  • typescript: A superset of JavaScript that adds static typing to the language.

Building the Project

  • rust-py-miio: will use by default the Python interpreter available in your PATH and try to link with its dynamic library. You can modify the package.json file to compile it so that it uses a different Python interpreter. I needed to use that on MacOS because the default Python interpreter doesn't provide dynamically linkable libraries.
"tauri": "cross-env PYO3_PYTHON=yourversion tauri"
  • Then you need the following Python packages:
$ pip install python-miio
  • tauri: You can build the project using the following command:
$ npm run tauri build

Using the Application

  • First of all you may want to gather your devices' IP and token, you can use the following command:
$ miiocli cloud
  • Then you can add a device to the Application using the Add Device button.

  • You can then interact with the device adding Actions.

  • Actions' methods are the same as the ones provided by the python-miio library.

  • Actions parameters' values will automatically be casted to an interpreted type from string.

Images of the Application

Without a device With a device