Hi all,
In DataMiner Docs, we have a way to configure smart serial listener to reply to a single client:
However, this is only "after response". I have an implementation where I need to use one connection to send a command back to the client after a button press, e.g not after response. As it currently is working, whenever I send the command it broadcasts it to all available/open clients. Is there a way around this?
Would you happen to know the IP addresses of the clients upfront or is that unknown?
IP Address is known.
Conclusion - we ended up omitting the smart serial set flow favor of an SCP client for sets.
Hi Alex,
This suggestion is untested for your specific use case but would fit your needs if it works.
As Michael Wells mentioned, you can use smartIpHeader to fetch the details about the IP and Port of the requesting client.
You could then use an extra connection defined in your connector with the dynamic ip option defined and use the details retrieved from the smartIpHeader to specify the destination of your messages.
This extra connection could even be hidden from the element wizard and be used in the background as described on this page regarding polling from different devices over serial.
Do note that in order for this to work the clients need to be listening on a certain port for incoming connections which I don’t believe will be the case.
That’s indeed not the case. The device doesn’t accept new incoming connections.
Yep, tested with both static and dynamic ip’s, and the device takes neither.
If the connector has only a smart-serial connection and you know the IP addresses of the clients upfront, it might be an option to configure an element per client.
The actual listening socket is still shared over the multiple element instances but each element context has its own dedicated connection to one specific client.
This can be achieved by configuring the Accepted IP address field of the smart-serial connection.
This would be an example configuration for the connection to the client located at 179.226.97.50. You would then need to do this for all clients.
Admittedly this is a bit of a configuration overhead but today I see no other way in how to target a specific client on request.
If this configuration is not an option, I would recommend you to submit a feature suggestion to try to come up with a solution on how this could be covered from within a connector.
More information: what we need to do is somehow keep track of the TCP session source IP port from which a client sends a specific message, store it in a parameter on a row associated with that message, and then use that TCP source IP port value to become the TCP destination IP port to which we send a response message based on how and when an operator chooses to process a given message through various buttons linked to QA’s.
We know we can use SmartIPHeader to get the IP, Port and Sequence Number and could store that in the response, but can we somehow use this option in the construction of a new message (not an automatic response to the inbound message) to force SLPort to utilize a specific (dynamic based on the incoming message) TCP Destination IP Port to send the message to the device?