Python Smart Terminal Graph
This program is up and running. Makeing improvements from time to time for my projects. Code at GitHub, see [Code at GitHub Comming Soon]
SmartTerminal an open source, programmable I think it is documented well enough so people can relatively easily extend and adapt the program. It easy to download and use even for those without a desire to dive into the code. I assume some knowledge of Python, and a Python Environment to run it in. Was Python 2.7 now upgraded to Python 3.6 and a bunch of other enhancements. See features below.
See the graphical user interface here (lots of screen shots): Smart Terminal Graph GUI
This is an article started by Russ Hensel, see "http://www.opencircuits.com/index.php?title=Russ_hensel#About My Articles" About My Articles for a bit of info.
Who should use this program and How: See Section in Python Smart Terminal
Almost all my Arduino and other microcontroller projects use serial communications for a least debugging. And in many cases I pair the Arduino with a Raspberry Pi for a very flexible system. A good serial monitor, or terminal program is useful in this sort of project. Because I wanted features not in most terminals and the ability to program it myself, I started one from scratch using Python.
So what are the features?
- Free open source
- Runs across OSs Linux ( inc Raspberry Pi ), Mac or Windows
- "RS232" all standard baud rates etc.
- I have extensions to work with specific arduino programs. These: Run a clock, Monitor a Green House, Monitor a root cellar, Monitor a Well.
- Database Interface ( now MYSQL can connect across the network )
- Easily Modified or Replaceable GUI
- Parameter file for wide range of modifications of program behavior.
- Uses standard Python logging class.
What would you like to see in the program or documentation? Email me.
This program is intended for those who at least occasionally develop in Python. I expect that they already run some things in Python and will just add this as an additional project. There is no install program you just download the files, place where you keep your projects and run. A bit more later in this section.
My Environment/Your Environment
The program has a better chance of running if your environment is not too much different from mine. The most important is that it is Python 2.7 or compatible. No now Pyton 3.6
Before you begin to install you should know a bit about the environment that I have used to build, test and run the terminal. If your environment differs too much you may have trouble getting it to run.
I run Python mostly using the install that comes with Anaconda Spyder and often use the IDE it installs. This is not necessary, it is just an nice install that downloads a lot of stuff that technical folks find useful. I have use conda and pip to add to this install and do not know offhand all that is in it. You can look at the include statements to get some idea of what you might need to add. Or you can just keep running it and add the packages it complains about.
Code at GitHub, see [Code at GitHub] ( it is Python and you can run directly from the source ) Email me if you have issues ( use this link User:Russ_hensel ). You will get a zip file, unzip it and you should get:
.... whatever --| | |-- smart_terminal_graph
Put them in your system making "....whatever" anything convenient for your Python ( that is move the files to where you keep your Python source ).
Note that there may be a certain amount of left over, dead code, in the directory I am cleaning out bit by bit, someday it may be nice and neat. For now if you want to tinker look at the design info below first.
Run it ( the file smart_terminal_graph.py until it stops complaining about dependencies ( in the console ), after that ( and perhaps even before ) the GUI should come up. You are installed.
I have run the program on both Windows 10 and Rasperian on a RPi. It should work in most OS's. Let me know about issues.
Some parts of the program think that mySql is available. It should run fine without it ( there will be a message or two in the console ), until you try to use the database then it is not so gracious. Straight ahead use as a terminal does not use the database.
Configure to Run
Basic configuration of comm parameters like port, baud rate .... is all done in a file called parameters.py. It seemed easier to simply use a Python text file instead of some other format like an ini file. Pretty much all the file does is set instance variables in itself. It is used by the program controller ( smart_terminal.SmartTerminal ) to create an instance of Parameters and then the values can be used. Save the original ( parameters.py, maybe I will include a backup maybe not ) in case you mess it up too much.
Command Line Arguments
If you run with the command line parameters=paramaters_b then after the regular parameters file runs, then the system looks for parameters_b.py and uses that to override values that you might want to tweak ( or completely redo. There are two examples in the directory follow the pattern in them and you should be fine ).
This can be especially useful if you want to run two copies connected to different ports and possibly running in different modes. In this case it is also nice to change ( its in parameters ) the icon and color for each instance of the program. You can write or use the little bat file to start them ( although this leaves a dos console hanging around ) Command line arguments can also be placed in shortcuts. In either case they may take some tweaking to run in/from your file locations.
The above mostly applies to Windows, but the program run fine with Linux ( including the Raspberry Pi ) and I suppose the Mac. Of course the .bat file and shortcuts will not work, but similar facilities exist in the other OSs.
When you run it it should open a windows a lot like the picture Smart Terminal GUI. Errors may show up in your Python console or the log file ( look in parameters.py for the name of the log file, typically self.pylogging_fn = "smart_terminal.py_log" ). The most likely errors will point to missing Python modules like pyserial. You should install with pip ( or conda if using Spyder ). Let me know how it goes.
Normally the terminal does not open the com port until you press the <Open> button. The parameters are displayed in the GUI if you do not like them ( for example when you press the <open> button the port open status changes to "open failed", not the desired "open" ) you can shutdown, edit parameters.py and restart. There is a simpler way.
- First configure parameters.py to know the name of a text editor on your system. For mine this is one of:
self.ex_editor = r"leafpad" # linux and pi self.ex_editor = r"D:\apps\Notepad++\notepad++.exe" # for windows.
It is set up to auto switch between the two os to make copying the whole program back and forth between the windows and linux a bit easier.
- Now when you run it the button <Edit Parms> should let you edit the parameters.py file. Edit it and save.
- Hit the <Restart> button. In a flash the program should restart with the new parameters.
..... more here soon ......
Notes on the Code
see comments in Python Smart Terminal
Python Smart Terminal Graph Technical not written
- Click on the category smart terminal below ( and perhaps the others as well )
- Writing You Own Extensions to SmartTerminal
- Debugging the Smart Terminal
- Smart Terminal as Smart Data Logger obsolete, gone, may come back.
- Smart Terminal GUI
- GreenHouse Monitor Program
- Smart Terminal Parameter Examples
- [ https://github.com/russ-hensel/python_smart_terminal python_smart_terminal at git hub]
- Python-Terminal-for-Cheap-Pi-Arduino-Connection/ Info on much earlier version may or may not be useful.