Open gucluceyhan opened 2 years ago
OK. What happens when you just try to do a standard readout:
from iec62056_21.client import Iec6205621Client
client = Iec6205621Client.with_tcp_transport(address=('192.168.0.1', 8000), device_address='12345678', password='00000000')
client.connect()
print(client.standard_readout())
Also if you have some debug output that would be good.
14:53:54,32 DEBUG: Connecting to ('5.26.220.136', 502) 14:53:54,870 INFO: Staring init sequence 14:53:54,870 INFO: Sending request message: RequestMessage(device_address='51024441') 14:53:54,870 DEBUG: Sent b'/?510244418!\r\n' over transport: TcpTransport 14:53:54,870 DEBUG: Resting for 0.25 seconds Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/iec62056_21/transports.py", line 339, in _recv b = self.socket.recv(chars) TimeoutError: timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/gucluceyhan/test_sayac.py", line 13, in
OK. So the device wont even reply.
First thing is to omitt the address. Just set it to ""
. This usually works for point-to-point interfaces.
It could also be that the modem does not do a conversion to 7E1
and you need to so that client side. See my answer here for more info: https://github.com/pwitab/iec62056-21/issues/16#issuecomment-754783281
If your Hercules program have a communication log it would be good if you could add it to the issue to see if they are doing stuff in a weird way.
Hello,
I am trying to implement this code but every time I try I am having 'Socket Timeout' warning.
The meter is Kohler AEL.TF.19 which is using IEC62056-21 protocol to communicate. I am sure that the both the meter and the modem are running perfectly since when I tried it with HW-Group's Hercules Software it connects and gets the data.
If you can help me about the process I'll be glad.
from iec62056_21.client import Iec6205621Client client = Iec6205621Client.with_tcp_transport(address=('5.26.220.136', 502), dev$ password_challange = client.access_programming_mode() client.send_password('00000000') # Common standard password data_answer = client.read_value('1.8.0')