Oberon Geschrieben March 8, 2023 at 15:02 Geschrieben March 8, 2023 at 15:02 (bearbeitet) 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 bearbeitet March 9, 2023 at 10:25 von Oberon Zitieren
photron Geschrieben March 8, 2023 at 16:48 Geschrieben March 8, 2023 at 16:48 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? Zitieren
Oberon Geschrieben March 9, 2023 at 06:19 Autor Geschrieben March 9, 2023 at 06:19 (bearbeitet) 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 bearbeitet March 9, 2023 at 06:48 von Oberon Zitieren
Oberon Geschrieben March 9, 2023 at 06:53 Autor Geschrieben March 9, 2023 at 06:53 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. Zitieren
photron Geschrieben March 9, 2023 at 09:06 Geschrieben March 9, 2023 at 09:06 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 1 Zitieren
Oberon Geschrieben March 9, 2023 at 10:25 Autor Geschrieben March 9, 2023 at 10:25 Splendid, problem solved ! I think I'll make that line in the cb_connected and the check before starting the rest of the code a part of my template ;) Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.