MOD11: DNS SD listener - GoranErdeljan/TINF19C-Team-4-Service-Registry GitHub Wiki
Created by Benedict Wetzel
1. Introduction
The module searches for DNS-SD entries in the network and publishes their information at the MQTT-Broker so that they are registered at the OI4-Registry. To register a device at the OI4-registry, the Master-Asset-Model of the device is published on the MQTT-Broker. This module is a sub-module of MOD10, which is the main interface between the mDNS based service-discovery with DNS-SD and the MQTT based specifications used by the OI4.
2. Requirements
The following requirements are covered by this module:
3. Prerequisites
In order to use this module the following prerequisites should be met:
- The developer should have a working computer that can access the internet
- The developer should use a Linux-based Operating-System
- The developer should have Node.js version 12.14.1 or higher installed
- The developer should have NPM version 7.10.0 or higher installed
- The developer should have at least some basic experience with Node.js
4. Dependencies
This module depends on the following items:
5. Technical overview
This module is used to listen to DNS-SD services that might be announced in the Network and publish their information on the MQTT-Broker. To do so, it is needed to add a callback through the dnssdListener file, that calls the addDevice function of the addToRegistry file. In this callback you can use MOD13 to validate the TXT-Records and call addDevice accordingly. MOD13 can also be used to build the Master-Asset-Model, that is required by addDevice, from the TXT-Records.
5.1 dnssdListener.js
This file handles discovery of DNS-SD services. To do that it sends a mDNS-Query requesting information on any services every 30 seconds. It also has functionalities to add callbacks that are called for every discovered service. It depends on the NPM package mqttjs.
| Function | Description | 
|---|---|
| start | This function is used to start the module. It registers a function to be called at an intervall of 30 seconds. That function sends a mDNS-Query requesting information on any services. For each service that is found, the registered callbacks are called. | 
| addCallback | Register a function as a callback | 
5.2 addToRegistry.js
This file handles registering services at the OI4-Registry by publishing their information on the MQTT-Broker. It also simulates Health, MAM and Profile-messages for those services. Added to that it publishes information about the application itself and sends Health, Profile, License, LicenseText, Config and PublicationList-messages for the application. This file depends on the NPM package multicast-dns.
| Function | Description | 
|---|---|
| setConfig | Set the configuration of this module | 
| start | Starts the module. If the configuration needs to be changed, setConfig must be called before start. Subscribes to all topics concerning this Application at the MQTT-Broker and registers a Handler function for messages on the MQTT-Broker that responds to those messages | 
| addDevice | Adds a new device, for which information should be published an the MQTT-Broker and therefore be added to the OI4-Registry | 
| pubHealth | This function is used to publish responses to Health-requests concerning the interface itself on the MQTT-Broker | 
| pubProfile | This function is used to publish responses to Profile-requests concerning the interface itself on the MQTT-Broker | 
| pubLicense | This function is used to publish responses to License-requests concerning the interface itself on the MQTT-Broker | 
| pubLicenseText | This function is used to publish responses to LicenseText-requests concerning the interface itself on the MQTT-Broker | 
| pubConfig | This function is used to publish responses to Config-requests concerning the interface itself on the MQTT-Broker | 
| pubPublicationList | This function is used to publish responses to PublicationList-requests concerning the interface itself on the MQTT-Broker | 
| buildmammessage | Builds the payload of the message which is used to publish the Master-Asset-Model | 
| buildmsg | Builds an OI4 compliant message which can be published on the MQTT-Broker | 
5.3 package.json
Sets the dependencies and is used by NPM to install the required NPM packages