Skip to main content

UDP 30303 Network discovery library.

Project description

Test Status Package Build Codecov Read the Docs

Summary

An async python library to perform UDP network discovery.

Protocols Supported

There are 3 protocols supported by this library:

  • 30303 - Simple and basic

  • wiznet - Wiznet devices, does not fully decode the packet (yet)

  • ecowitt - Ecowitt weather stations

Notes on the 30303 Protocol

When you perform a 303030 discovery, any device that responds will report 3 things.

IP Address

Hostname

The hostname will be from the perspective of the device, not DNS. Often devices will have hardcoded hostnames, like a Balboa Spa WiFi will report as BWGSPA.

MAC Address

In the form XX-XX-XX-XX-XX-XX

How to Use

pip install py30303_disc

See the example in src/py30303_disc/d30303_discover.py

The parse function has a few modes:

parse(data, addr)

Simply decode the message, and return the tuple

parse(data, addr, hostname=”blah”)

Only return the tuple if the hostname matches

parse(data, addr, mac_prefix=”XX-XX-XX”)

Only return the tuple if the mac address matches the prefix given. Prefix can be of arbitrary size.

parse(data, addr, hostname=”blah”, mac_prefix=”blah”)

Match both the hostname and the mac_prefix.

For the send_discovery() function, there are 4 modes. Default mode is “basic_30303”.

send_discovery(“basic_30303”)

Sends “Discovery: Who is out there?”

send_discovery(“simple_30303”)

Sends “D”

send_discovery(“wiznet”)

Sends “FIND” (requires reply port bound to 5001)

send_discovery(“ecowitt”)

Sends an ecowitt CMD_BROADCAST, requires reply port bound to 59387

Issues and Discussions

As usual in any GitHub based project, raise an issue if you find any bug or room for improvement (certainly there are many), or open a discussion (new feature!!) if you want to discuss or talk :-)

Version

v0.3.0

Changelog

v0.3.0 (2021-11-27)

v0.2.0 (2021-11-14)

  • Add run_d30303_discovery class to simplify usage

v0.1.5 (2021-11-14)

v0.1.4 (2021-11-14)

v0.1.3 (2021-11-14)

  • First release on PyPI.

v0.1.2 (2021-11-13)

v0.1.1 (2021-11-13)

v0.1.0 (2021-11-13)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py30303_disc-0.3.0.tar.gz (16.9 kB view details)

Uploaded Source

File details

Details for the file py30303_disc-0.3.0.tar.gz.

File metadata

  • Download URL: py30303_disc-0.3.0.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for py30303_disc-0.3.0.tar.gz
Algorithm Hash digest
SHA256 23c627a23604d494f96a5015be27550c0014b4a9138fb1f5a516b2b38b5977b4
MD5 ec52eb4d07de272b0166e9524d62a7e1
BLAKE2b-256 6a6d82b7319f5caacf2b03874cb326d741e04ec0067ae24a3a1f178171fb2236

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page