Nuvo WHA Grand Concerto/MPSv2 binding disconnecting

I am trying to use the Nuvo WHA binding configured to use the Ethernet connection to detect when zones 7 and 8 of my Grand Concerto are turned on and off by the Nuvo room keypads, so that I can control separate power amps and sub woofers.

While changes of status are detect correctly once the system is turned on, the binding seems to be timing out or disconnecting if left unused for several minutes, and misses the first zone On status change.

This is what I see when the binding has disconnected.

Has anyone had a similar problem, or know how to set a keep alive for this binding?

Are you using a serial over IP connection or a direct connection to the MPS4? For the latter one, I have not tested it extensively. No matter what connection is used, the binding will poll the controller every 30 seconds to keep the connection alive. I would recommend trying a serial connection to see if this solves the disconnect problem.

Also you can turn on debugging output in the openHAB console and post the output here to help diagnose the problem. The command to enable debugging is: log:set DEBUG org.openhab.binding.nuvo

The use log:tail to display the logs in the console.

I’m using an Ethernet connection between my OpenHAB server and the MPS4, which is routed between the two subnets. A continuous ping doesn’t show any connectivity issues, so I don’t think there is network problem.

Thank you for the DEBUG instructions. This is what the Debug logs show, which is repeated every 60 seconds.

11:25:35.780 [DEBUG] [ing.nuvo.internal.handler.NuvoHandler] - Trying to reconnect…
11:25:35.782 [DEBUG] [nternal.communication.NuvoIpConnector] - Opening IP connection on IP 172.22.188.9 port 5006
11:25:35.784 [DEBUG] [nternal.communication.NuvoIpConnector] - IP connection opened
11:25:35.784 [DEBUG] [ternal.communication.NuvoReaderThread] - Data listener started
11:25:35.784 [DEBUG] [ing.nuvo.internal.handler.NuvoHandler] - openConnection(): connected
11:25:35.785 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *VER
11:25:35.786 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S1NAME?
11:25:35.886 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S1DISPINFO?
11:25:35.987 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S1DISPLINE?
11:25:36.088 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S2NAME?
11:25:36.189 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S2DISPINFO?
11:25:36.290 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S2DISPLINE?
11:25:36.390 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S3NAME?
11:25:36.491 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S3DISPINFO?
11:25:36.592 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S3DISPLINE?
11:25:36.693 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S4NAME?
11:25:36.793 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S4DISPINFO?
11:25:36.894 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S4DISPLINE?
11:25:36.995 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S5NAME?
11:25:37.096 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S5DISPINFO?
11:25:37.197 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S5DISPLINE?
11:25:37.298 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S6NAME?
11:25:37.399 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S6DISPINFO?
11:25:37.499 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *S6DISPLINE?
11:25:37.600 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z1STATUS?
11:25:37.701 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG1EQ?
11:25:37.801 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z2STATUS?
11:25:37.902 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG2EQ?
11:25:38.003 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z3STATUS?
11:25:38.104 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG3EQ?
11:25:38.204 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z4STATUS?
11:25:38.305 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG4EQ?
11:25:38.406 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z5STATUS?
11:25:38.507 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG5EQ?
11:25:38.607 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z6STATUS?
11:25:38.708 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG6EQ?
11:25:38.809 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z7STATUS?
11:25:38.909 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG7EQ?
11:25:39.010 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *Z8STATUS?
11:25:39.111 [DEBUG] [.internal.communication.NuvoConnector] - sending command: *ZCFG8EQ?
11:25:39.212 [DEBUG] [nternal.communication.NuvoIpConnector] - Closing IP connection
11:25:39.214 [DEBUG] [ternal.communication.NuvoReaderThread] - Reading failed: readInput failed: Socket closed
org.openhab.binding.nuvo.internal.NuvoException: readInput failed: Socket closed
at org.openhab.binding.nuvo.internal.communication.NuvoIpConnector.readInput(NuvoIpConnector.java:124) ~[bundleFile:?]
at org.openhab.binding.nuvo.internal.communication.NuvoReaderThread.run(NuvoReaderThread.java:63) [bundleFile:?]
Caused by: java.net.SocketException: Socket closed
at java.net.SocketInputStream.read(SocketInputStream.java:183) ~[?:?]
at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
at java.io.DataInputStream.read(DataInputStream.java:100) ~[?:?]
at org.openhab.binding.nuvo.internal.communication.NuvoIpConnector.readInput(NuvoIpConnector.java:120) ~[bundleFile:?]
… 1 more
11:25:39.215 [DEBUG] [.internal.communication.NuvoConnector] - handleIncomingMessage: #?
11:25:39.216 [DEBUG] [ternal.communication.NuvoReaderThread] - Data listener stopped
11:25:39.216 [DEBUG] [nternal.communication.NuvoIpConnector] - IP connection closed
11:25:39.217 [DEBUG] [ing.nuvo.internal.handler.NuvoHandler] - closeConnection(): disconnected

I am not sure what the issue is at the moment. The debug looks looks correct right until it closes the socket. It could be an issue with the Mirage software on the MPS4 not liking the connection routing across subnets. I have never tried doing that myself. Also have you ever upgraded the software on the server? There is an unofficial upgrade to Mirage v5.35 that can be done (stock version is v5.0). While developing I tested the connection with version 5.35.20191025.0.

Were you able to test with a USB to serial adapter? There should be no issues there. I use this binding in my production setup and the connection to the Nuvo amp is always solid.

I tried moving the MPS4 to the same subnet as the OpenHAB server, but that didn’t solve the problem. If it helps this is the Debug log from when the connection starts to fail, which is 6 minutes after the last zone is turned off.

image

I’ve seen the V5.35 upgrade, but have not had the time or confidence to do that yet.

Re the serial connection, I can try this but will need to make up a cable up to connect it to my OpenHAB server, do you happen to know the pin outs on the MPS4 DB9?

@Jonk2 Any USB to serial adapter should work. Just be aware of really cheap ones that might be counterfeit. The serial port connection to the Nuvo is straight through (not crossover/null modem).

This is the adapter that I use: USB/Serial Converter [FT232RL] : ID 18 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits
It is also on their DigiKey store: https://www.digikey.com/en/products/detail/adafruit-industries-llc/18/5353575