mirror of
https://github.com/sascha-hemi/pycom-documentation.git
synced 2026-03-21 07:06:20 +01:00
Add documentation of MDNS
This commit is contained in:
@@ -801,6 +801,13 @@ theme = "doc-theme"
|
||||
parent = "firmwareapi@pycom@network"
|
||||
weight = 60
|
||||
|
||||
[[menu.main]]
|
||||
name = "MDNS"
|
||||
url = "/firmwareapi/pycom/network/mdns/"
|
||||
identifier = "firmwareapi@pycom@network@mdns"
|
||||
parent = "firmwareapi@pycom@network"
|
||||
weight = 70
|
||||
|
||||
[[menu.main]]
|
||||
name = "AES"
|
||||
url = "/firmwareapi/pycom/aes/"
|
||||
|
||||
148
content/firmwareapi/pycom/network/mdns.md
Normal file
148
content/firmwareapi/pycom/network/mdns.md
Normal file
@@ -0,0 +1,148 @@
|
||||
---
|
||||
title: "MDNS"
|
||||
aliases:
|
||||
- firmwareapi/pycom/network/mdns.html
|
||||
- firmwareapi/pycom/network/mdns.md
|
||||
- chapter/firmwareapi/pycom/network/mdns
|
||||
---
|
||||
This class provides an interface to use the MDNS functionality.
|
||||
|
||||
## Quick Usage Example
|
||||
|
||||
Example for advertising own services:
|
||||
|
||||
```python
|
||||
import time
|
||||
from network import MDNS
|
||||
# As a first step connection to network should be estbalished, e.g. via WLAN
|
||||
|
||||
# Initialize the MDNS module
|
||||
MDNS.init()
|
||||
# Set the hostname and instance name of this device
|
||||
MDNS.set_name(hostname = "my_hostname", instance_name = "my_instance")
|
||||
# Add a TCP service to advertise
|
||||
MDNS.add_service("_http", MDNS.PROTO_TCP, 80)
|
||||
# Add an UDP service to advertise
|
||||
MDNS.add_service("_myservice", MDNS.PROTO_UDP, 1234, txt= (("board","esp32"),("u","user"),("p","password")))
|
||||
|
||||
# Give the other devices time to discover the services offered
|
||||
time.sleep(60)
|
||||
|
||||
# Remove a service, it will no longer be advertised
|
||||
MDNS.remove_service("_http", MDNS.PROTO_TCP)
|
||||
|
||||
```
|
||||
|
||||
Example for querying:
|
||||
|
||||
```python
|
||||
import time
|
||||
from network import MDNS
|
||||
# As a first step connection to network should be estbalished, e.g. via WLAN
|
||||
|
||||
# Initialize the MDNS module
|
||||
MDNS.init()
|
||||
|
||||
# Perform a query for 2000 ms
|
||||
q = MDNS.query(2000, "_http", MDNS.PROTO_TCP)
|
||||
|
||||
# Print out the query's result
|
||||
if q is not None:
|
||||
for elem in q:
|
||||
print(elem.instance_name())
|
||||
print(elem.hostname())
|
||||
print(elem.addr())
|
||||
print(elem.port())
|
||||
print(elem.txt())
|
||||
|
||||
```
|
||||
|
||||
## Constructor
|
||||
|
||||
### class network.MDNS()
|
||||
|
||||
Initializes the MDNS module.
|
||||
|
||||
## Methods
|
||||
|
||||
#### MDNS.deinit()
|
||||
|
||||
Deinitializes the MDNS module and removes all registered services.
|
||||
|
||||
#### MDNS.set_name(\*, hostname=None, instance_name=None)
|
||||
|
||||
Sets the hostname and instance name of the device that is going to be advertised.
|
||||
|
||||
The arguments are:
|
||||
|
||||
* `hostname` is the hostname to set
|
||||
* `instance_name` is the instance name to set
|
||||
|
||||
#### MDNS.add_service(service_type, proto, port, \*, txt)
|
||||
|
||||
Adds a service to the MDNS module which will be advertised.
|
||||
|
||||
The arguments are:
|
||||
|
||||
* `service_type` is the type of the offered service, e.g.: _http, _ftp or can be custom service
|
||||
* `proto` is the Layer 4 protocol (TCP or UDP), can be `MDNS.PROTO_TCP` or `MDNS.PROTO_UDP`
|
||||
* `port` is the port number
|
||||
* `txt` is the TXT entries to be placed into the advertisement. The TXT entry is a (key, value) tuple and several TXT entries can be included in an advertisement. In that case, 'txt' must be given as a list of tuples.
|
||||
|
||||
#### MDNS.remove_service(service_type, proto)
|
||||
|
||||
Removes a service from the MDNS module so it will not be advertised anymore.
|
||||
|
||||
The arguments are:
|
||||
|
||||
* `service_type` is the type of the service, e.g.: _http, _ftp or can be custom service
|
||||
* `proto` is the Layer 4 protocol (TCP or UDP), can be `MDNS.PROTO_TCP` or `MDNS.PROTO_UDP`
|
||||
|
||||
#### MDNS.query(timeout, service_type, proto, \*, instance_name=None)
|
||||
|
||||
Performs a query with the given parameters.
|
||||
|
||||
The arguments are:
|
||||
|
||||
* `timeout` is the timeout value in milliseconds to wait to receive the results
|
||||
* `service_type` is the type of the service to be queried, e.g.: _http, _ftp or can be custom service
|
||||
* `proto` is the Layer 4 protocol (TCP or UDP), can be `MDNS.PROTO_TCP` or `MDNS.PROTO_UDP`
|
||||
* `instance_name` is the instance name of the service to be queried
|
||||
|
||||
If the service is found then the function returns with a list of `MDNS_Query` objects.
|
||||
|
||||
## MDNS_Query class
|
||||
|
||||
The `MDNS_Query` aggregates all of the properties of a successful query session entry:
|
||||
|
||||
* `hostname` is the hostname of the host advertising the service
|
||||
* `instance_name` is the instance_name of the service
|
||||
* `addr` is the IPv4 address belonging to the service
|
||||
* `port` is the port number belonging to the service
|
||||
* `txt` is the TXT entries from the advertisement. The TXT entry is a (key, value) tuple, and several TXT entries can be included in an advertisement.
|
||||
|
||||
#### MDNS_Query.hostname()
|
||||
|
||||
Returns with the hostname of the queried service.
|
||||
|
||||
#### MDNS_Query.instance_name()
|
||||
|
||||
Returns with the instance name of the queried service.
|
||||
|
||||
#### MDNS_Query.addr()
|
||||
|
||||
Returns with the IPv4 address of the queried service.
|
||||
|
||||
#### MDNS_Query.port()
|
||||
|
||||
Returns with the port of the queried service.
|
||||
|
||||
#### MDNS_Query.txt()
|
||||
|
||||
Returns with the TXT entries of the queried service.
|
||||
|
||||
## Constants
|
||||
|
||||
* TCP and UDP protocol types: `MDNS.PROTO_TCP`, `MDNS.PROTO_UDP`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user