EVA ICS controllers
Starting from version 3.2.6, controllers can find each other in local network via UPnP and automatically connect peer-to-peer without MQTT server.
To perform this, controllers send SSDP broadcast requests to non-standard SSDP UDP port 1912 for Universal Controller and 1917 for Logic Manager. Requests are performed on controller start and then repeated with 2-minute interval.
- To let controller be discovered by other, listen option must be configured in [upnp] section of controller configuration file (starting from 3.3.0 - enabled by default).
- To let controller (LM PLC or SFA) discover others, discover_on option must be set in [upnp] section of controller configuration file either to “all” (scan all interfaces) or to the list of network interfaces (comma separated).
- To let controller connect to the discovered one, both must have equal default API key. API key hosts_allow permission should include the proper IP addresses or networks.
- Discovered controllers are marked as dynamic, their configuration is not saved (until marked as static or controller masterkey is set in SFA, when cloud_manager mode is enabled).
- If controllers have static IP addresses (or static leases, assigned by DHCP server), it’s highly recommended to mark them as static as soon as they were discovered.
M-SEARCH * HTTP/1.1 Host: ...... Man: "ssdp:discover" ST: altertech_evaics[:uc|lm]
HTTP/1.1 200 OK Ext: Host: <hostname> Location: http(s)://IP:PORT EVA-version: <version> EVA-build: xxxxxxxx EVA-product: <uc|lm> EVA-controller-id: <uc|lm>/<system name> EVA-host: <system name> ST: altertech_evaics:<uc|lm> USN: uuid:UNIQUE_INSTALLATION_ID Cache-control: max-age: 60
Built-in SSDP function discover, located in eva.uc.drivers.tools.ssdp module can be used in custom PHI modules as well. Refer to Developing own PHI (Physical Interface) for EVA ICS. HOWTO for more info.