Home

Awesome

Micropython MDNS

PyPi MIT licensed

Image showing service discovery

A pure Python implementation of MDNS and the Service Discovery protocol over MDNS for MicroPython.

Intended Audience

You should not use this library if you "just" require MDNS A record lookup and Host annoucement if there is already baked in support in your MicroPython distribution. This is for example the case with the default ESP32 MicroPython distribution since v1.12. This will be in all cases more resource efficient.

If you, however, require additional functionality like Service Discovery and Annoucement, you should use this library. It supports all functionality of existing basic MDNS implementations plus these features. You will not loose any functionality.

Installation

The library is available on PyPi and can be installed via upip.

import upip
upip.install("micropython-mdns")

Alternatively you can also use the new mip package manager:

import mip
mip.install("github:cbrand/micropython-mdns")

For using this library, native C type implementations of MDNS which use the MDNS service port need to be disabled. For example, this project has been developed on the ESP32 which MicroPython implementation per default has a basic MDNS implementation available. This does only support local A record lookups and A record responding of its own host address.

The releases page on this project publishes a firmware.mp.1.23.esp32.bin for MicroPython 1.23 with MDNS disabled and the mdns python module included in each release for easy usage. Other Micropython versions are also supported. Other boards are supported and you are welcome to add additional Dockerfiles in a PR which build the module compatible for other boards. All versions can also be built when having docker locally installed by running in the console the build command:

make build

Individually it is also possible to build the desired version via:

make compile-micropython-1-15
make compile-micropython-1-16
make compile-micropython-1-17
make compile-micropython-1-18
make compile-micropython-1-19
make compile-micropython-1-20
make compile-micropython-1-21
make compile-micropython-1-22
make compile-micropython-1-23
make compile-micropython-1-24

Refer to the config directory to see the configuration files when baking this into your own MicroPython ESP32 build.

For Raspberry Pi Pico support see the corresponding Dockerfile on how to compile it in linux Dockerfile.micropython.1.23.rp2.

Other MicroPython implementations might not require any changes inside of the firmware.

Usage

The library requires uasyncio to function. All handling is done asynchronously.

Examples on how to utilize the libraries can be found in the examples folder.

Reference

A basic API reference for the public API is inside of the REFERENCE.md.

Caveats

License

The library is published under the MIT license.