ROS Tesseract (open source RouterOS monitoring)

Like this idea! I played with JS and blessed module before to do similar a “TUI” since for “status” things, GUI/web sometimes aren’t as quick or information dense. This is especially true with RouterOS, since winbox/webfig/etc are NOT very helpful to get an overview of operational state of a router.

I couldn’t get it work on macOS. Ran into several problems.

  1. The requirements get errors in tabulate due to collections/iterable, upgrading it got past that. So requirement used are:

numpy in ./venv/lib/python3.13/site-packages (2.2.5)
laiarturs-ros-api in ./venv/lib/python3.13/site-packages (1.1.0)
tabulate in ./venv/lib/python3.13/site-packages (0.9.0)

  1. The right tabulate package got to the following error, which I’m not sure how to resolve (api and api-ssl both enabled, right username/password in the ros-tasseract.json). I get this in the venv for your project:
$ > python3 ros-tesseract
Traceback (most recent call last):
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 411, in <module>
    curses.wrapper(main)
    ~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/Cellar/python@3.13/3.13.3/Frameworks/Python.framework/Versions/3.13/lib/python3.13/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 402, in main
    tPoller = poller(quit, config)
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 153, in __init__
    self.calcHeights()
    ~~~~~~~~~~~~~~~~^^
  File "/Users/amm0/Documents/ROS-Tesseract/ros-tesseract", line 172, in calcHeights
    heights[column].append(len(r[0]) + item.get('padding',0) + 4)
    ~~~~~~~^^^^^^^^
IndexError: list index out of range
  1. You might want to have some generic JSON that does not depend on LTE being present – if just to test it more broadly. I tried changing JSON too to be simpler too, just be address and routing - but got same error as above.

The API generally works with simple C-based ROS API client, so the API works more generally here.

Anyway, good work here… but, yeah, it couldn’t get it working…