Jump to content

Recommended Posts

Posted (edited)

Hi there, complete electronics and coding newbie here. Thanks for your patience.
 

I'm using an ESP32 brick controlling a Dual Relay bricklet. I can connect, auth and send set_monoflop and set_value commands and get the relay to trigger with my python script. But when I send

idr.get_value()

or whatever variant of that (put the function in a variable and print it, etc..), I get this :

Traceback (most recent call last):
  File "C:\Users\U\PycharmProjects\Tinkerforge_test\Pump_control.py", line 70, in <module>
    idr.get_value()
  File "C:\Users\U\PycharmProjects\Tinkerforge_test\venv\lib\site-packages\tinkerforge\bricklet_industrial_dual_relay.py", line 123, in get_value
    self.check_validity()
  File "C:\Users\U\PycharmProjects\Tinkerforge_test\venv\lib\site-packages\tinkerforge\ip_connection.py", line 506, in check_validity
    device_identifier = self.ipcon.send_request(self, 255, (), '', 33, '8s 8s c 3B 3B H')[5] # <device>.get_identity
  File "C:\Users\U\PycharmProjects\Tinkerforge_test\venv\lib\site-packages\tinkerforge\ip_connection.py", line 1314, in send_request
    raise Error(Error.TIMEOUT, msg, suppress_context=True)
tinkerforge.ip_connection.Error: Did not receive response for function 255 in time (-1)


Any pointers on what I'm doing wrong to get the relay state ?

Thanks in advance

Edited by Oberon
Posted

The Bricklet doesn't respond to a request in time. The first thing to check in that case is that you use the correct UID to address the Bricklet. But because other functions work, I think you are using the correct UID already.

Do you have a load connected to the relay? If yes, does the problem go away when you disconnect the load from the relay?

Can you show your complete Pump_control.py?

Posted (edited)

Thanks for the answer, I believe the UID is the correct one as it's the one also visible in bricky.

EDIT forgot to add I have no load connected to the relay, didn't get to that point yet.

Attached you'll find the .py file, I didn't edit anything except the auth secret.

Basically only the lines 57-70 are from me, the rest has been put together from the enumeration/auth/IDR example file.

When commenting out lines 57-58 the rest works (tested with lower time values)

 

Pump_control_tinkerunity.py

Edited by Oberon
Posted

I've just tested the temp/humidity sensor, including having only that bricklet connected. Modified the script based on the simple code example and it gives the same error at the humidity = h.get_humidity() line also mentioning a timeout on function 255. That sensor and same ESP board works using brickv, same for the relays and other bricklets I have.

Posted

The way you structured the code you call idr.get_value() a little bit to early. You call idr.get_value() directly after the ipcon.connect() call. At that moment the authentication probably has not completed yet and the ESP32 Brick rejects all requests.

I modifed your example to wait for a few milliseconds before the idr.get_value() call for the authentication to complete. Please test the modification, it should fix the problem.

Pump_control_tinkerunity_v2.py

  • Thanks 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...