Hello,
Thank you for reaching out!
What is the reason not to use services like gsmctl and gpsctl?
The best way to control the I/O pins would be to use ubus calls. To find the calls for the I/O, run this command:
ubus -v list | grep ioman
To actually change the status of let's say digital output, a command like this could be used:
ubus call ioman.gpio.dout1 update '{"value":"1"}'
And to read the status of the output, this command can be used:
ubus call ioman.gpio.dout1 status
Ubus outputs everything in JSON format, so it will be easier to interpret in Python. To find all possible options for any input, this command can be used:
ubus -v list ioman.gpio.<I/O_name>
Ubus will be as close as it gets if latency is the topmost priority. It can also be used to interact with almost any service/function of the router.
Let me know if any more information is needed!
Best regards,
DaumantasG