provide better error messages in case of regulation reading failure (for example)
Seen on ID31:
<long traceback>
...
File "/users/blissadm/local/bliss.git/bliss/common/regulation.py", line 283, in read
return self._controller.read_input(self)
File "/users/blissadm/local/bliss.git/bliss/controllers/regulation/temperature/eurotherm/nanodac.py", l
ine 405, in read_input
return self.hw_controller.read_input(tinput.channel)
File "/users/blissadm/local/bliss.git/bliss/controllers/regulation/temperature/eurotherm/nanodac.py", l
ine 268, in read_input
return self.send_cmd(cmd)
File "/users/blissadm/local/bliss.git/bliss/controllers/regulation/temperature/eurotherm/nanodac.py", l
ine 199, in send_cmd
return self._send_cmd(cmd_info, value)
File "/users/blissadm/local/bliss.git/bliss/controllers/regulation/temperature/eurotherm/nanodac.py", l
ine 193, in _send_cmd
return self._cmd_read(cmd_info)
File "/users/blissadm/local/bliss.git/bliss/controllers/regulation/temperature/eurotherm/nanodac.py", l
ine 152, in _cmd_read
return self.com.read_holding_registers(reg, "f")
File "/users/blissadm/local/bliss.git/bliss/comm/modbus.py", line 315, in rfunc
self.connect(timeout=timeout)
File "/users/blissadm/local/bliss.git/bliss/comm/modbus.py", line 547, in connect
self._fd.connect((local_host, local_port))
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/gevent/_socketcommon.p
y", line 613, in connect
self._wait(self._write_event)
File "src/gevent/_hub_primitives.py", line 317, in gevent._gevent_c_hub_primitives.wait_on_socket
File "src/gevent/_hub_primitives.py", line 322, in gevent._gevent_c_hub_primitives.wait_on_socket
File "src/gevent/_hub_primitives.py", line 304, in gevent._gevent_c_hub_primitives._primitive_wait
File "src/gevent/_hub_primitives.py", line 46, in gevent._gevent_c_hub_primitives.WaitOperationsGreenle
t.wait
File "src/gevent/_hub_primitives.py", line 46, in gevent._gevent_c_hub_primitives.WaitOperationsGreenle
t.wait
File "src/gevent/_hub_primitives.py", line 55, in gevent._gevent_c_hub_primitives.WaitOperationsGreenle
t.wait
File "src/gevent/_waiter.py", line 154, in gevent._gevent_c_waiter.Waiter.get
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGr
eenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 61, in gevent._gevent_c_greenlet_primitives.SwitchOutGr
eenletWithLoop.switch
File "src/gevent/_greenlet_primitives.py", line 65, in gevent._gevent_c_greenlet_primitives.SwitchOutGr
eenletWithLoop.switch
File "src/gevent/_gevent_c_greenlet_primitives.pxd", line 35, in gevent._gevent_c_greenlet_primitives._
greenlet_switch
RuntimeError: Cannot connect to 160.103.51.180
We can see it failed to connect to Eurotherm Nanodac, but instead of having a message like "Could not connect to Nanodac " we have the ip address and a hard-to-understand traceback.