I am writing a GUI for Meshtastic in the hopes to make certain tasks easier or faster to complete. The GUI uses python and sh based commands but was written in and for windows users. ZebusJesus/Meshtastic-PyGUI: Python Based GUI that uses the Meshtastic API (github.com)
This GUI depends on having your Environmental variables configured for the following:
Python
Meshtastic
PySimpleGUI
esptools
requests
If you are using windows and you have Visual Studio installed and configured for python, then windows will have change your python path. You will notice this if you launch IDLE and use the path browser. In order to make sure that the GUI works in this situation you just have to copy after using pip3 to install modules:
It is not full-featured and is still a work in progress but it does work and when it comes to flashing firmware it uses the dev’s scripts which are preferred. I will keep working on this but it does give you access to many features already.
Limitations:
It seems it needs to be run as admin for some of the commands to work. Of course, review the script before running but there is nothing there except system calls and for the time being because of the serial I/O the API uses, admin access is required. On Ubuntu, I was able to use the script just fine without needing sudo.
The firmware download tools is not complete and currently is just downloads the 1.33 binary to a test.zip folder that you can extract to locate the binary. The browse function of the tool works and you can browse to any usable bin you have. Flash will wipe everything and update will update the firmware while keeping settings.
firmware downloads will now download based on firmware version including the Hamster Nightly Build, I will be adding filtering so only the firmware for your device will be present if you choose specific settings such as region on board type.
This repo contains a windows installer ready to use as well as the code for it. The exe was built with pyinstaller and the installer was made with NSIS
The pyGUI while not 100% is not published to PyPi and will allow users to lots of useful stuff already, more updates coming soon. I plan on making current plugins usable next.
recent update changes the way flashing is handled, instead of invoking a script with the sh command which required users to install git or something similar, the firmware tool now uses the esptool.py command directly.
Added most of the user-configurable options to a dedicated window. Located under toolbox there is an options selection. This will bring up a window that will allow you to select an option and then in the dialog box set the value you want to pass. I added a popup that gives users the ability to unplug their radio if they want to abort a setting change. It’s pretty raw but it makes not mistyping a setting variable nice and easy.
I still can’t select a com port … In the Radio Window … I see “connect to Radio” button, I just get error connecting to radio,
I have tried running as admin and user. I have tried the unplug/re-plug as described for clearing a com port… but where do I select com1 or com2 or com_ .
You dont select COM py serial handles everything for you when it comes to that. When it comes to COM the port will lock and only allow one connection at a time, you have to unplug and plug the radio back in and this will unlock the COM port. Meshtastic handles the connection to the radios themselves so you shouldn’t need to specify any port
Also I noticed that while connect to radio will work, it seems to not disconnect causeing the program to hang up. Im working on that right now but for now connect to radio will just allow you to see everything the radio sees and keep the connection to the radio alive. My goal is to add filters that will allow filtering the radio trafic so you can grab the data you want like GPS, messages etc
I’m currently experimenting with flashing firmware on Windows, but it looks like the script needs to escape any spaces in the file path when calling esptool (my home directory is “C:\Users\Have Blue”):
Version 2.6 address the issue of the location of the spiffs file and system-info file, you can now browse to any location where the needed firmware files are located.
Messaging now uses uses
def sendText()
instead of the API command, I also added flags for AK Msg and Want Response
Added the ability to backup firmware and restore it as well. Also added a window for nodes that will list the current nodes as well as make a text file for documenting nodes on the mesh.