AdvancedClimateSystems / uModbus

Python implementation of the Modbus protocol.
Mozilla Public License 2.0
211 stars 81 forks source link

ConnectionResetError: [Errno 104] Connection reset by peer #81

Open unidev10 opened 4 years ago

unidev10 commented 4 years ago

After tcp.read_coils() function, when I run the command tcp.send_message() I get the error - ConnectionResetError: [Errno 104] Connection reset by peer. How can this be solved? Below is my code attached

import socket from umodbus import conf from umodbus.client import tcp sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('HOST', PORT)) m2=tcp.read_coils(slave_id=1, starting_address=8193, quantity=1) response = tcp.send_message(m2, sock)

OrangeTux commented 4 years ago

Hello @unidev10. You seem to want to connect to HOST and there is no Modbus server running there.

My guess is that you need to replace HOST with a valid ip or hostname, like:

 sock.connect(('192.168.1.1', PORT))
unidev10 commented 4 years ago

Hi @OrangeTux, yes I have mentioned the required ip address and the port number in my actual code. It is just for the question, I have replaced the ip address with HOST.

OrangeTux commented 4 years ago

Super! I'll close the issue now. Feel free to reopen if needed.

unidev10 commented 4 years ago

Hi @OrangeTux, there has been a slight misunderstanding. In my original code, I have written sock.connect(('192.168.0.2', 102)). I am getting the ConnectionResetError for it.

jaapz commented 4 years ago

Are you sure a modbus server is running on that IP-address? If so, there's probably something in your network filtering out your connection request, like a firewall of some kind.

The error you get is a more generic error from Python not being able to open a socket. Try to look up ConnectionResetError and under what circumstances Python would raise it.

I don't think this is a problem with uModbus, as uModbus doesn't do any connection handling, that's all done by the socket module from Python.