<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.opencircuits.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=71.232.240.163</id>
	<title>OpenCircuits - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.opencircuits.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=71.232.240.163"/>
	<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Special:Contributions/71.232.240.163"/>
	<updated>2026-08-26T08:36:58Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Programing_Tips&amp;diff=88365</id>
		<title>Programing Tips</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Programing_Tips&amp;diff=88365"/>
		<updated>2022-11-13T17:50:51Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: /* Copy Work Is Good */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are my personal tips for programming, they work for me, not sure all programmers will endorse.  Some of these tips overlap with each other, hope this is not confusing.&lt;br /&gt;
&lt;br /&gt;
= Copy Work Is Good =&lt;br /&gt;
&lt;br /&gt;
This is key, if you can copy code instead of writing it you can save a whole lot of work.  There is nothing wrong with this given that you understand the code that you copy.  I copy mostly from myself, I actually keep little pieces of code around to copy from or go into my collection of past projects.  This may also give you code that works sooner.  If not from yourself then use google.  This is not like getting homework from another person in the class ( unless that is what you are actually doing ).  The point is to get good code working and be able to do it again in the future.  One note about copied code: If you copy code, you own it; that is you must take full responsibility for it.  Using code you do not understand makes you a script kitty.&lt;br /&gt;
&lt;br /&gt;
= Start Small and Expand =&lt;br /&gt;
&lt;br /&gt;
You will typically break a complicated task down into steps.  It is a good idea to program and test each individually and then put the pieces together.  Each time through the code should get bigger ( functionally ) and better.  Some components, like error management, I sometimes leave until the basic code is running.  There is a whole philosophy of system development where successive improvement of code is a chore idea.&lt;br /&gt;
&lt;br /&gt;
= Put Working Components Together =&lt;br /&gt;
This is part of the idea of Start Small and Expand, see above.&lt;br /&gt;
&lt;br /&gt;
= Learn More Python =&lt;br /&gt;
From time to time make an effort to learn.  Pick up a Python book, read a blog, actually read the documentation.  Python is big and getting to some of the advanced topics can take a long time.  Any time your coding seems tedious, stop and question your approach.  Learn a bit more and the task may not be so tedious.&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
Test your code.  Writing special sections of code just for test is a great idea.  Learn about the whole concept of unit testing.  Google &amp;quot;Python Unit Testing&amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Keep Track Of Your Own Code =&lt;br /&gt;
Since you want to copy from your own code, and build on old projects, keep your code organized.&lt;br /&gt;
&lt;br /&gt;
= Study from Time to Time = &lt;br /&gt;
&lt;br /&gt;
There is a lot to learn, from time to time look for online resources to study.  I have been doing this for years, still have a lot to learn.  Many habits from other languages are not so good in Python which has its own way, some very nice, of doing things.&lt;br /&gt;
&lt;br /&gt;
= Google Is Your Friend =&lt;br /&gt;
Got a Python problem.  I can almost always find an answer on Google ( or Bing..... ).  Usually the process it quick.  Use It.&lt;br /&gt;
&lt;br /&gt;
= Get Used to Writing Good Comments =&lt;br /&gt;
There is a lot to say about good comments.  I will only say a small amount here.&lt;br /&gt;
&lt;br /&gt;
*Comments should tell the intent or purpose of the code.  Do not tell what the code does, your reader ( usually you ) can read the code.  &lt;br /&gt;
*Comments form the internal documentation of the code.  There are some Python standards.  I should put a link here......&lt;br /&gt;
*Comments sometimes warn about something unusual in the code.&lt;br /&gt;
*Comments are a good place to keep track of enhancements that might be made in the code.&lt;br /&gt;
&lt;br /&gt;
= Use Libraries =&lt;br /&gt;
If you are trying to do something big and complicated, something that is not too far off the beaten track, someone may have written a library for it.  Want a web server, there are a bunch of libraries for it.  Images, yep there is stuff out there.  Look before you code up a storm.&lt;br /&gt;
&lt;br /&gt;
= Good Coding is Good =&lt;br /&gt;
&lt;br /&gt;
Writing bad code in a hurry will often bite you.  Write good code as much of the time as you can.  May well be faster in the long run.  Please use good names, make it a habit.&lt;br /&gt;
&lt;br /&gt;
Lots of people use 2.7, this includes me although I have recently added 3.6 to my environment ( you can have multiple environments on one computer ).  But when you program try to be as 3.6 compliant as possible.  Some of this includes:&lt;br /&gt;
* Always inherit classes from object.&lt;br /&gt;
* Use the new style print as function.  Use from __future__ import print_function if &amp;lt; 3 to enable this.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Do Not Invent Stuff Unless Necessary =&lt;br /&gt;
&lt;br /&gt;
I developed a nice little logging system.  But Python has one ( several ).  Try to use the standards that are already out there.&lt;br /&gt;
&lt;br /&gt;
= More =&lt;br /&gt;
&lt;br /&gt;
We have more in the area of tips, look at the following:&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks for Working with Spyder]]&lt;br /&gt;
* [[Intermediate Programing Tips]]&lt;br /&gt;
* [[Russ Python Tips and Techniques]]&lt;br /&gt;
* [[Debugging the Smart Terminal]]&lt;br /&gt;
* Use Google for Python Tips and Techniques there is quiet a bit out there.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
[[Category:Python]]&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Mushroom_Resources&amp;diff=88289</id>
		<title>Mushroom Resources</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Mushroom_Resources&amp;diff=88289"/>
		<updated>2022-10-12T16:58:11Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== BoostC Wiki ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;	&lt;br /&gt;
|What&lt;br /&gt;
|Where&lt;br /&gt;
|Comment&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Champignouf: An Identification Web Sete&lt;br /&gt;
|[[https://champignouf.com/]]&lt;br /&gt;
|Picture or pictures followed by a few questions  -- then gives multiple suggestions as to what the mushroom is.  So far I like this.&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Mushroom Identificator: Phone App&lt;br /&gt;
|Android Phone and ?other phones&lt;br /&gt;
|This is the Champignouf web site as an app.&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Google Lens: Web Site and Phone App&lt;br /&gt;
|-&lt;br /&gt;
|Does not seem to do useful id's for mushrooms.&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Plant dot Net: Phone App&lt;br /&gt;
|Android Phone and ?other phones&lt;br /&gt;
|Some mushroom id's but not very useful imho.&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|111&lt;br /&gt;
|222&lt;br /&gt;
|3333&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|111&lt;br /&gt;
|222&lt;br /&gt;
|3333&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|111&lt;br /&gt;
|222&lt;br /&gt;
|3333&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-----------end of table---------------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mushroom]]&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Category:Mushroom&amp;diff=88288</id>
		<title>Category:Mushroom</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Category:Mushroom&amp;diff=88288"/>
		<updated>2022-10-12T16:47:53Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: Created page with &amp;quot;Stuff about Mushrooms, should not be on this site, but I am paying for it so.....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stuff about Mushrooms, should not be on this site, but I am paying for it so.....&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Mushrrom_Documentation&amp;diff=88236</id>
		<title>Mushrrom Documentation</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Mushrrom_Documentation&amp;diff=88236"/>
		<updated>2022-09-16T14:26:06Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: Created page with &amp;quot;Some ideas for mushroom sample documentation, mostly photos.  *Use numbers to distinguish photos taken closely together in time. *Photo from above *Photo from below *Photo of...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some ideas for mushroom sample documentation, mostly photos.&lt;br /&gt;
&lt;br /&gt;
*Use numbers to distinguish photos taken closely together in time.&lt;br /&gt;
*Photo from above&lt;br /&gt;
*Photo from below&lt;br /&gt;
*Photo of cap underside&lt;br /&gt;
*Photo of scratch and dent&lt;br /&gt;
*Photo of cap cross section&lt;br /&gt;
*Photo of stem cross section&lt;br /&gt;
*Photo of spore print&lt;br /&gt;
*Microphoto of spores&lt;br /&gt;
&lt;br /&gt;
*Narrative&lt;br /&gt;
&lt;br /&gt;
*Cap&lt;br /&gt;
*Cap below&lt;br /&gt;
*Stem (Style)&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Python_Smart_Terminal&amp;diff=88220</id>
		<title>Python Smart Terminal</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Python_Smart_Terminal&amp;diff=88220"/>
		<updated>2022-08-28T20:01:46Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: /* Why this Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Why this Terminal =&lt;br /&gt;
&lt;br /&gt;
This terminal has a variety of uses, most are focused on interaction with&lt;br /&gt;
micro controller projects where ASCII data is exchanged, typically with messages&lt;br /&gt;
terminated with a newline or carriage return ( typical for most Arduino projects).&lt;br /&gt;
&lt;br /&gt;
It is also intended for those with a minimal understanding of Python ( required skill&lt;br /&gt;
ranges from the vary basic to familiarity with multi-threaded applications ).&lt;br /&gt;
&lt;br /&gt;
Its repository includes several examples of projects where the interaction is&lt;br /&gt;
either with a PC ( windows, mac, or Linux ) or a raspberry pi ( Linux ).&lt;br /&gt;
&lt;br /&gt;
Applications may be set up so control of the Arduino is manual, or entirely&lt;br /&gt;
automated.&lt;br /&gt;
&lt;br /&gt;
If this is the case there are many ways to use it:&lt;br /&gt;
&lt;br /&gt;
* Base Case&lt;br /&gt;
** Use as a replacement for an Arduino serial monitor.&lt;br /&gt;
** For this case there is not much point unless you use it as a stepping stone to more advanced use.&lt;br /&gt;
** One nice feature is multiple places for user input, each of which is rem embed until changed.&lt;br /&gt;
** ( note: I do not have a graphing module for this case though&lt;br /&gt;
        one could be added. )&lt;br /&gt;
&lt;br /&gt;
* Base Case Plus&lt;br /&gt;
** Typically the micro controller is used with a small number of command strings, typically just a few letters, and in complicated cases more complicated strings.  The terminal can be set up with these preloaded and with a button that &amp;quot;documents&amp;quot; their use.  This can be very nice for&lt;br /&gt;
        debugging or manually controlled projects.&lt;br /&gt;
&lt;br /&gt;
* Automatic modes&lt;br /&gt;
 The automatic mode implements the &amp;quot;Base Case Plus&amp;quot; but there is additional code running in another thread that makes the entire operation automatic and is intended for projects that just &amp;quot;run&amp;quot;.  In my case all these projects&lt;br /&gt;
        are used with a raspberry pi plus Arduino.  This typically gives the&lt;br /&gt;
        project&lt;br /&gt;
** high speed response in the Arduino code ( micro second )&lt;br /&gt;
** internet access wifi and cat5&lt;br /&gt;
** bluetooth support&lt;br /&gt;
** Python and other high level program support&lt;br /&gt;
** Graphical interface support&lt;br /&gt;
** HTTP server support&lt;br /&gt;
** Email access&lt;br /&gt;
** Remote terminal support -- either Desktop GUI or ssh terminal&lt;br /&gt;
&lt;br /&gt;
I have example code for these applications included in the repository&lt;br /&gt;
        that I have completed.&lt;br /&gt;
&lt;br /&gt;
= Goal =&lt;br /&gt;
This program is up and running.  Making improvements from time to time for my projects.  Code at GitHub, see [[https://github.com/russ-hensel/python_smart_terminal Code at GitHub]]  See the GUI here at [[Smart Terminal GUI]]&lt;br /&gt;
&lt;br /&gt;
SmartTerminal an open source, programmable rs232 smart terminal in particular for use with micro controllers like the arduino.  My motivation for writing it was first to aid in managing and debugging micro controller projects, and then actually becoming part of hybrid raspberry pi / arduino projects.  The program can run in many modes ( which you can create if you wish ).  Included in the repository is the code for many modes that I have created, each normally paired with an arduino application ( code may be posted, contact me if interested ) to produce a final application.  For more information on these projects see the category Arduino/RaspberryPi.&lt;br /&gt;
&lt;br /&gt;
This program is designed to be:&lt;br /&gt;
*Easily configurable through a configuration file parameters.py&lt;br /&gt;
*Easily extended with additional modules, several of which are in the code at GitHub and can be activated with a simple change to the parameter file.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
See the graphical user interface here ( with screen shot ): [[Smart Terminal GUI]]&lt;br /&gt;
&lt;br /&gt;
This application is also part of a family of applications see the category below: Python Projects.&lt;br /&gt;
&lt;br /&gt;
This is an article started by Russ Hensel, see &amp;quot;http://www.opencircuits.com/index.php?title=Russ_hensel#About My Articles&amp;quot; About My Articles for a bit of info.&lt;br /&gt;
&lt;br /&gt;
'''Who should use this program and How:'''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;	&lt;br /&gt;
|Who&lt;br /&gt;
|What&lt;br /&gt;
|How&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Person with little programming experience, no interest in Python.  Looking for download and install.&lt;br /&gt;
|Probably should use another program.&lt;br /&gt;
|Not well suited to use this, I do not plan to fix this.&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Programming microcontrollers in text based language, willing to install or has Python installed.&lt;br /&gt;
|Run the basic program.  Customize in fairly minor ways.&lt;br /&gt;
|Edit the parameter file to configure the terminal.  Could use processing extensions written by others.&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Modest Python experience&lt;br /&gt;
|Modify all over the place, monitor equipment, save data to database ......&lt;br /&gt;
|Program should be well documented with an API, sample extensions.  Code changes localized ( now ) to one class plus the parameter file.&lt;br /&gt;
&amp;lt;!--------------------------------&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|ddd&lt;br /&gt;
|eee&lt;br /&gt;
|fff&lt;br /&gt;
&amp;lt;!--------------------------------&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;!--------------------------------&lt;br /&gt;
&amp;lt;!--------------------------------&lt;br /&gt;
&amp;lt;!--------------------------------&lt;br /&gt;
&amp;lt;!--------------------------------&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= What/Why =&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
The program is also designed to be a stand alone data logging, environmental monitoring program.  In this case it will kick off and run without an operator.  Data can be access over the web.  I will largely leave a discussion of these features to another page, but probably about half the code is devoted to these features.  &lt;br /&gt;
&lt;br /&gt;
Currently the terminal waits for a carriage return ( or line fead ) until it displays ( or make available for processing ) the received string.  This make sense for my application, it help the processing.  This may not work best for you, let me know. &lt;br /&gt;
&lt;br /&gt;
So what are the features?&lt;br /&gt;
&lt;br /&gt;
* Free open source&lt;br /&gt;
* Runs across OSs Linux ( inc '''Raspberry Pi''' ), Mac or Windows &lt;br /&gt;
* Python&lt;br /&gt;
* &amp;quot;RS232&amp;quot; all standard baud rates etc.&lt;br /&gt;
* Easily adjusted serial communications parameters&lt;br /&gt;
* Multiple, preloaded with data entry fields.&lt;br /&gt;
* Clear ( erase ) receive area for removal of clutter.&lt;br /&gt;
* Copy all or part of receive area.&lt;br /&gt;
* Programmable&lt;br /&gt;
* I have extensions to work with specific arduino programs.  These:  Run a clock, Monitor a Green House, Monitor a root cellar, Monitor a Well.&lt;br /&gt;
* Database Interface ( now MYSQL can connect across the network )&lt;br /&gt;
* Email interface.&lt;br /&gt;
* Easily Modified or Replaceable GUI&lt;br /&gt;
* Parameter file for wide range of modifications of program behavior.&lt;br /&gt;
* Easy to run multiple instances with different parameters.&lt;br /&gt;
* Uses standard Python logging class.&lt;br /&gt;
* Includes some advanced data logging features in addition to database data logging.&lt;br /&gt;
* For more on the features see [[SmartTerminal Features]]&lt;br /&gt;
&lt;br /&gt;
Limits:&lt;br /&gt;
&lt;br /&gt;
* Polls the comm port at 10 to 100 hz.  So full lines ( ending with carriage return &amp;lt;cr&amp;gt; ) cannot come in too fast.  This is theory I have not pushed the terminal.&lt;br /&gt;
* One instance of the program per com port at a time, but easy to run multiple instances.&lt;br /&gt;
&lt;br /&gt;
What would you like to see in the program or documentation? Email me.&lt;br /&gt;
&lt;br /&gt;
A much earlier version of this terminal was described in my instructable [[http://www.instructables.com/id/Python-Terminal-for-Cheap-Pi-Arduino-Connection/ Python Terminal for Cheap Pi Arduino Connection]]  It may have some information that is useful, but the program has grown a lot since then.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== My Environment/Your Environment ==&lt;br /&gt;
&lt;br /&gt;
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'''&lt;br /&gt;
  &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Code at GitHub, see [[https://github.com/russ-hensel/python_smart_terminal 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]] ).&lt;br /&gt;
You will get a zip file, unzip it and you should get:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     .... whatever --|&lt;br /&gt;
                     |&lt;br /&gt;
                     |-- smart_terminal --| -&amp;gt; all code required to run the application ( not sure if smart_terminal or python_smart_terminal or nothing is top level name, just put it in some well named place )&lt;br /&gt;
                                          |    some logs from my running of the code may or may not be present, these will be deleted as they creep in, when you run the program you will&lt;br /&gt;
                                          |    get your own log files ... all typically named xxx.py_log &lt;br /&gt;
                                          | -- images -&amp;gt; image files, mostly screen shots, icons... or what ever, not important for the code.&lt;br /&gt;
                                          | -- sounds -&amp;gt; wav files used for the deer me extension, my attempt to scare deer.&lt;br /&gt;
                                          | -- wiki_etc -&amp;gt; various files documenting program, including at least some of the material from this wiki &lt;br /&gt;
&lt;br /&gt;
Put them in your system making &amp;quot;....whatever&amp;quot; anything convenient for your Python ( that is move the files to where you keep your Python source ).  &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Run ==&lt;br /&gt;
&lt;br /&gt;
Run it until it stops complaining about dependencies ( in the console ), after that ( and perhaps even before ) the GUI should come up.  You are installed.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 ), untill you try to use the database then it is not so gracious.  Straight ahead use as a terminal does not use the database.&lt;br /&gt;
&lt;br /&gt;
= Configure to Run =&lt;br /&gt;
&lt;br /&gt;
== Basic ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
I have made yet another pass to clean up and comment the code in parameters.  Let me know if you have issues.  You should understand some values are being phased out but may still have some implementation and some may be coming in and have little or no implementation.  The comments should let you identify these situations.&lt;br /&gt;
&lt;br /&gt;
Parameters starts out with some &amp;quot;meta&amp;quot; parameters.  These are defined early in the creation of the objects and may effect other values.  In any case you can always define a value twice, the last one always wins.  The most important meta parameter is mode, you should not change it from self.mode = &amp;quot;Terminal&amp;quot; unless you understand the implications or do not mind going on a ride.&lt;br /&gt;
&lt;br /&gt;
All the com port values are defined in pretty much one place, find it ( say search on &amp;quot;baud&amp;quot; ) an change it to what you need.&lt;br /&gt;
&lt;br /&gt;
== Command Line Arguments ==&lt;br /&gt;
&lt;br /&gt;
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 ).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Running It ==&lt;br /&gt;
&lt;br /&gt;
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      = &amp;quot;smart_terminal.py_log&amp;quot; ).  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.&lt;br /&gt;
&lt;br /&gt;
Normally the terminal does not open the com port until you press the &amp;lt;Open&amp;gt; button.  The parameters are displayed in the GUI if you do not like them ( for example when you press the &amp;lt;open&amp;gt; button the port open status changes to &amp;quot;open failed&amp;quot;, not the desired &amp;quot;open&amp;quot; ) you can shutdown, edit parameters.py and restart.  There is a simpler way.&lt;br /&gt;
&lt;br /&gt;
*First configure parameters.py to know the name of a text editor on your system. For mine this is one of: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
self.ex_editor   =  r&amp;quot;leafpad&amp;quot;    # linux and pi&lt;br /&gt;
&lt;br /&gt;
self.ex_editor   =  r&amp;quot;D:\apps\Notepad++\notepad++.exe&amp;quot; # for windows.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*Now when you run it the button &amp;lt;Edit Parms&amp;gt; should let you edit the parameters.py file.  Edit it and save.&lt;br /&gt;
&lt;br /&gt;
*Hit the &amp;lt;Restart&amp;gt; button.  In a flash the program should restart with the new parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
..... more here soon ......&lt;br /&gt;
&lt;br /&gt;
= Notes on the Code =&lt;br /&gt;
&lt;br /&gt;
In some ways I am proud of the code, it was sometimes a slog, and I had to learn a lot of Python to get it going.  On the other hand it kind of sucks, it has lots of dead code, ass backwards was of doing things, poor naming...... There is also a good bit of code on features that I am adding, but that is unfinished.  Until I loose interest in it it will probably improve.  However, adding features is more part of the life of a programmer than polishing old features; making something better that seems good enough is not always the priority it should be.  If you do not like it, mostly keep it to yourself unless it is accompanied by an offer to improve it.  I do not need ideas, I need time.  That said if you think you have a helpful comment contact me, my page will tell you how: [[User:Russ_hensel]]&lt;br /&gt;
&lt;br /&gt;
= Design =&lt;br /&gt;
&lt;br /&gt;
Description of the design, and a bit to help you figure out what the files do ( for .py files also see the top of file ).&lt;br /&gt;
&lt;br /&gt;
see: [[Python Smart Terminal Technical]]&lt;br /&gt;
&lt;br /&gt;
= Customizing/Extending =&lt;br /&gt;
&lt;br /&gt;
Simple customization may be done simply by changing the parameter file, see: [[Smart Terminal Parameter Examples]]  If you want to add code that can be done by messing with any of the source code ( not recommended ) or by programming an extension, see:  [[Python Smart Terminal Technical]] and [[Writing You Own Extensions to SmartTerminal]]&lt;br /&gt;
&lt;br /&gt;
= Additional Info =&lt;br /&gt;
&lt;br /&gt;
*Click on the category smart terminal below ( and perhaps the others as well )&lt;br /&gt;
*For a graphing ( plotting ) application that is a companion to this see [[Python Smart Terminal Graph]]&lt;br /&gt;
*[[Writing You Own Extensions to SmartTerminal]]&lt;br /&gt;
*[[Debugging the Smart Terminal]] &lt;br /&gt;
*[[Smart Terminal as Smart Data Logger]]  obsolete, gone, may come back.&lt;br /&gt;
*[[Smart Terminal GUI]]&lt;br /&gt;
*[[GreenHouse Monitor Program]]&lt;br /&gt;
*[[Smart Terminal Parameter Examples]]&lt;br /&gt;
*[[Python Desk Top Applications]]&lt;br /&gt;
*[ https://github.com/russ-hensel/python_smart_terminal python_smart_terminal at git hub]&lt;br /&gt;
*[http://www.instructables.com/id/Python-Terminal-for-Cheap-Pi-Arduino-Connection/ Python-Terminal-for-Cheap-Pi-Arduino-Connection/] Info on much earlier version may or may not be useful.&lt;br /&gt;
&lt;br /&gt;
[[Category:Python Projects]] [[category:Python]]  [[Category:Arduino/RaspberryPi]] [[Category:SmartTerminal]] [[Category:Serial Communications]]&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Smart_Terminal_GUI&amp;diff=88217</id>
		<title>Smart Terminal GUI</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Smart_Terminal_GUI&amp;diff=88217"/>
		<updated>2022-08-27T14:10:13Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
The GUI or graphical user interface is the key to using the Smart Terminal ( the main page for the application is at: '''[[Python Smart Terminal]]''' and it has a category page at '''[[https://opencircuits.com/index.php?title=Category:SmartTerminal Category:SmartTerminal]]''' ).  In addition, but not discussed here, you can use the command line and the parameter file ( see:''' [[Smart Terminal Parameter Examples]]''' ).  This page is the documentation for the GUI.&lt;br /&gt;
&lt;br /&gt;
= Screen Shot =&lt;br /&gt;
&lt;br /&gt;
This is what it looks like, details on each part below.  Still working on it, mostly to clean up the details. Note that this screen shot was taken during a debugging session and has some artifacts that will soon disappear, then a new screen shot will be placed here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenShot 1.png | 1000x2500px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-----------&lt;br /&gt;
[[File:Screen_shot.png | 1000x2500px]]&lt;br /&gt;
[[File:Screen_shot.png | 500x500px]]&lt;br /&gt;
 — Resizes the image to fit within the given width and height in pixels;&lt;br /&gt;
upright — R]]&lt;br /&gt;
&lt;br /&gt;
{width}x{height}px — Resizes the image to fit within the given width and height in pixels;&lt;br /&gt;
upright — R&lt;br /&gt;
this cannot bee seen &lt;br /&gt;
-------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= What Does What: The Controls =&lt;br /&gt;
&lt;br /&gt;
Control is mostly through buttons, sometimes supplemented by text fields.  Outside of the GUI there is also a parameter file which controls start up and item like communications setting.  The large rectangle at the bottom left, a text area, is where data sent, received, and some information messages are displayed.  It is referred to as the receive area.&lt;br /&gt;
&lt;br /&gt;
Working from top to bottom:&lt;br /&gt;
&lt;br /&gt;
== At the Top ==&lt;br /&gt;
* &amp;lt;Window title&amp;gt; Program name and some additional info including version, mode,  and the name of any &amp;quot;extra&amp;quot; parameter file ( see [[Smart Terminal Parameter Examples]] ).&lt;br /&gt;
* &amp;lt;ID Color Band &amp;gt;The green band under the title is an optional component, its height and color is set in the parameter file.  It is normally useful only if you are running 2 instances of the terminal and want a quick way to tell them apart. &lt;br /&gt;
&lt;br /&gt;
==Top Row of Labels ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;Double Row of Labels, Starting with the Communications&amp;gt;&amp;gt; &amp;gt;  Managed by the parameter file ( see [[Smart Terminal Parameter Examples]] ).&lt;br /&gt;
**&amp;lt;Port:xxx&amp;gt; Status of comm port, open, closed or failed to open.&lt;br /&gt;
**&amp;lt;Type:xxx&amp;gt; Type of comm port, so far only RS232&lt;br /&gt;
**&amp;lt;PortID:xxx&amp;gt; Name of port used by the operating system.  This may be changed if some of the &amp;quot;auto open&amp;quot; features are used.&lt;br /&gt;
**&amp;lt;Baud:xxx&amp;gt;     Baud Rate of comm port.&lt;br /&gt;
**&amp;lt;StopBits:xxx&amp;gt; Number of stop bits for the comm port&lt;br /&gt;
**&amp;lt;Parity:xxx&amp;gt;   Parity of comm port.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;Additional Labels in First Row, Starting with the Database&amp;gt;&amp;gt; &amp;gt;  Labels show status of the database connection ( not always used ).  Managed by the parameter file.&lt;br /&gt;
**&amp;lt;Status:xxx&amp;gt;  Open or closed connection to the database&lt;br /&gt;
**&amp;lt;ConnectName:xxx&amp;gt; Name given to the connection in the parameter file.&lt;br /&gt;
**&amp;lt;Host:xxx&amp;gt;     Host name used by the database&lt;br /&gt;
**&amp;lt;DB:xxx&amp;gt;      Database name&lt;br /&gt;
**&amp;lt;User:xxx&amp;gt;    Database user&lt;br /&gt;
&lt;br /&gt;
== Next Button Row ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;Open Button&amp;gt; Opens the communications port ( if configuration in parameter file(s) allow ) Parameters show to the right, port status to right of button.&lt;br /&gt;
* &amp;lt;Close Button&amp;gt; Close the communications port. No error if it is not open. Parameters show to the right, port status to right of button.&lt;br /&gt;
* &amp;lt;Parameters to right of open and close buttons&amp;gt; Parameters from the parameter file(s), not editable on the GUI.&lt;br /&gt;
* &amp;lt;Edit Log&amp;gt; opens an editor on the system ( needs to be configured in parameter file self.ex_editor = &amp;lt;name of executable or link&amp;gt; ) to view the python logging file for the app.&lt;br /&gt;
* &amp;lt;Edit Parms &amp;gt; opens an editor on the system to edit the parameters.py file. See &amp;lt;Edit Log&amp;gt;.&lt;br /&gt;
* &amp;lt;Edit Parms X &amp;gt; opens an editor on the system to edit the extended parameter file if used on the command line. Not visible if no extended parameter file used. See &amp;lt;Edit Log&amp;gt;.&lt;br /&gt;
* &amp;lt;SendParms&amp;gt; takes the contents of the send buttons and displays them in the receive area in the same format as required by the parameter file to reproduce the current configuration.&lt;br /&gt;
* &amp;lt;Ports&amp;gt; List the available ports in the receive area, working under windows until upgraded from 7 to 10, Linux ??&lt;br /&gt;
* &amp;lt;Restart&amp;gt; Restarts the application ( usually fast ) using new values ( if any ) in the parameter file(s).&lt;br /&gt;
* &amp;lt;Test&amp;gt; May not be present, for debugging, not generally useful or predictable, you would need to look through the code to see what it might be doing, press at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Buttons from Extensions ==&lt;br /&gt;
If you have extended the terminal with an xxx_processing module, its GUI will appear here.  In this screen shot we see the GUI from the greenhouse extension ( note this is the mode in the window title ).  The actual labels are something still in flux, the functions are more fixed.&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;Helper: Find and Monitor Arduino &amp;gt; starts auto run mode of terminal if so configured, this is still alpha and in any case will not have much success unless connected to a compatible serial device ( typically an Arduino ).&lt;br /&gt;
** &amp;lt;Helper: Find Arduino &amp;gt; T&lt;br /&gt;
** &amp;lt;Interrupt Helper&amp;gt; stops auto run mode of terminal. Also still alpha, but generally harmless.&lt;br /&gt;
&lt;br /&gt;
== Send Area ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;Send Buttons&amp;gt; and &amp;lt;Text Entry&amp;gt; to right of each button. Each button sends the text to the right of the button, text is not erased after transmission.  Lots of parameters in the parameter file determine the details:&lt;br /&gt;
** Number of send buttons&lt;br /&gt;
** Text of each button ( default Send )&lt;br /&gt;
** Text of the data to be send may or may not be protected based on parameter settings&lt;br /&gt;
The setup shown here is customized for a particular arduino program, the greenhouse monitor.&lt;br /&gt;
&lt;br /&gt;
== Receive Area ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;Column of Buttons and Text Panel&amp;gt;  The Panel shows terminal activity and some other info ( like Ports above ) the buttons act on this data in some way.  You can type in the text panel, to no particular effect, perhaps could use this to make notes.  Text is partly erased from time to time depending on settings in parameter file(s)  The data in the recieve area falls into three classes, each with a unique prefix ( which is set in the parameters.py file ):&lt;br /&gt;
** Sent:         &amp;quot;&amp;gt;&amp;gt;&amp;gt; &amp;quot; 		&lt;br /&gt;
** Received:     &amp;quot;&amp;lt;&amp;lt;&amp;lt; &amp;quot;&lt;br /&gt;
** Information: 	    &amp;quot;!!! &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Other controls:&lt;br /&gt;
** &amp;lt;Clear&amp;gt; Clears text panel.&lt;br /&gt;
** &amp;lt;Copy Sel&amp;gt; Copies all selected text.  Use the mouse to select text.&lt;br /&gt;
** &amp;lt;Copy All&amp;gt; Copies all text selected or not.&lt;br /&gt;
** &amp;lt;A Scroll&amp;gt; When checked text panel automatically scrolls to the most recent data, else not.  This can help you read earlier material when still receiving new data.&lt;br /&gt;
&lt;br /&gt;
[[Category:SmartTerminal]] [[Category:Arduino/RaspberryPi]][[category:Python]] [[category:Python Projects]]&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=SmartTerminal_Features&amp;diff=88212</id>
		<title>SmartTerminal Features</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=SmartTerminal_Features&amp;diff=88212"/>
		<updated>2022-08-25T16:31:53Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
&lt;br /&gt;
Some [[Category:Draft]] of the features are fairly obvious from the GUI ( see [[Smart Terminal GUI]] ) some are a bit more hidden.  In any case this page will document some of the features in more detail.  Seems I have not gotten around to this so stay tuned or email me.  As of Sept 2018 I am working on this to monitor my well.  but in 2022 this is still a draft.&lt;br /&gt;
&lt;br /&gt;
= Source Code =&lt;br /&gt;
&lt;br /&gt;
Application is free open source.  I update github from time to time, but email me to see if I have some new improved stuff, I work on it from time to time in episodes.  Code is now Python 3.5, waiting for Raspberry Pi to fully go to 3.6 so I can use f strings.  Compared to most github projects I have fairly large amounts of documentation ( mostly at this site ).&lt;br /&gt;
&lt;br /&gt;
= Appearance =&lt;br /&gt;
&lt;br /&gt;
= Modify GUI from Parameters =&lt;br /&gt;
see: [[Smart Terminal Parameter Examples]] and [[Writing You Own Extensions to SmartTerminal]]&lt;br /&gt;
&lt;br /&gt;
= Access to Parameters and Log File =&lt;br /&gt;
&lt;br /&gt;
The application must of course know what/where its parameter and log file are.  So it can also help you look at and edit the files.  For this to work you need an editing program installed on your computer.  For my windows computer this is Notepad++ ( &amp;quot;D:\apps\Notepad++\notepad++.exe&amp;quot; ).  Then in parameters you need to set the parameter something like this:  '''self.ex_editor = r&amp;quot;D:\apps\Notepad++\notepad++.exe'''&amp;quot;.  Smart terminal will then open the appropriate files from the buttons on the GUI.    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= A Second Thread =&lt;br /&gt;
&lt;br /&gt;
When a GUI application does something that takes a fair amount of time ( several seconds or more ) the application can become unresponsive until that task is over.  For this reason the SmartTermainl runs a second thread for long running background tasks.&lt;br /&gt;
&lt;br /&gt;
= Send Suffix =&lt;br /&gt;
&lt;br /&gt;
= Port Enumeration =&lt;br /&gt;
&lt;br /&gt;
= Port Detection and Connection =&lt;br /&gt;
&lt;br /&gt;
= GUI Extensions =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Processing Extensions =&lt;br /&gt;
&lt;br /&gt;
These are features beyond terminal features.&lt;br /&gt;
&lt;br /&gt;
* Data scaling and filtering&lt;br /&gt;
* Database interface&lt;br /&gt;
* Python Logging&lt;br /&gt;
* Email Interface &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Application Extensions =&lt;br /&gt;
&lt;br /&gt;
I have written 4 Application as extension to the SmartTerminal that are intended to run on a Raspberry Pi in conjunction with an Arduino.  These are in addition to the basic, parameter driven Smart terminal.&lt;br /&gt;
&lt;br /&gt;
*  A servo motor based clock&lt;br /&gt;
&lt;br /&gt;
*  An environmental monitor for a Green House features multiple temperature sensors, and a humidity sensor.  Filters data then logs to a Marina Db ( Open sourced MySql ).  Has email interface for extreme values.  Companion applications:  arduino component, Python Graphing component, Application to check raspberry pi status remotely.&lt;br /&gt;
&lt;br /&gt;
*  Environmental monitor similar to the above, but for a Root Cellar.&lt;br /&gt;
&lt;br /&gt;
*  Environmental monitor similar to the above, but for a Well.&lt;br /&gt;
&lt;br /&gt;
= draft material will be deleted =&lt;br /&gt;
&lt;br /&gt;
* Free open source&lt;br /&gt;
* Runs across OSs Linux ( inc '''Raspberry Pi''' ), Mac or Windows &lt;br /&gt;
* Python&lt;br /&gt;
* &amp;quot;RS232&amp;quot; all standard baud rates etc.&lt;br /&gt;
* Easily adjusted serial communications parameters&lt;br /&gt;
* Multiple, preloaded with data entry fields.&lt;br /&gt;
* Clear ( erase ) receive area for removal of clutter.&lt;br /&gt;
* Copy all or part of receive area.&lt;br /&gt;
* Programmable&lt;br /&gt;
* I have extensions to work with specific arduino programs.  These:  Run a clock, Monitor a Green House, Monitor a root cellar, Monitor a Well.&lt;br /&gt;
* Database Interface ( now MYSQL can connect across the network )&lt;br /&gt;
* Email interface.&lt;br /&gt;
* Easily Modified or Replaceable GUI&lt;br /&gt;
* Parameter file for wide range of modifications of program behavior.&lt;br /&gt;
* Easy to run multiple instances with different parameters.&lt;br /&gt;
* Uses standard Python logging class.&lt;br /&gt;
* Includes some advanced data logging features in addition to database data logging.&lt;br /&gt;
* For more on the features see [[SmartTerminal Features]]&lt;br /&gt;
&lt;br /&gt;
Limits:&lt;br /&gt;
&lt;br /&gt;
* Polls the comm port at 10 to 100 hz.  So full lines ( ending with carriage return &amp;lt;cr&amp;gt; ) cannot come in too fast.  This is theory I have not pushed the terminal.&lt;br /&gt;
* One instance of the program per com port at a time, but easy to run multiple instances.&lt;br /&gt;
&lt;br /&gt;
[[Category:Arduino/RaspberryPi]] [[Category:SmartTerminal]]&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Chemical_Etchants&amp;diff=88084</id>
		<title>Chemical Etchants</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Chemical_Etchants&amp;diff=88084"/>
		<updated>2022-06-20T15:21:34Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: Replaced content with &amp;quot;removed spam, working to restore page&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;removed spam, working to restore page&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Command_Assistant_Help_File&amp;diff=87725</id>
		<title>Command Assistant Help File</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Command_Assistant_Help_File&amp;diff=87725"/>
		<updated>2022-01-31T14:59:45Z</updated>

		<summary type="html">&lt;p&gt;71.232.240.163: /* Application Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Help &amp;quot;file&amp;quot; for the Python Application whose main page is: *'''[ tbd ]'''&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Help file for Command Assistant application ( Documentation for Verxxx ).  You can also get a lot of information about how the program works by looking at the GUI and its explanation:  '''[[Command Assistant GUI Images]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Application Features = &lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
*Highly configurable.&lt;br /&gt;
&lt;br /&gt;
= Use =&lt;br /&gt;
&lt;br /&gt;
info on use&lt;br /&gt;
&lt;br /&gt;
= Download and Install = &lt;br /&gt;
&lt;br /&gt;
There is really no install program.  Currently the application is intended for those who have at least a little familiarity with Python coding and can just insert the downloaded code into their development environment and run it. Code at '''[https://github.com/russ-hensel/smart_plug/tree/master russ-hensel/Smart_plug Application ]''' For most of you it will not run due to dependency problems.  You will need to add them.  Pretty much read the error messages and install the missing code.  I use Anaconda Spyder so my preferred tool is conda ( conda install pyHS100 ).  If conda does not work or you do not use it use pip.  pyHS100, a library for smart plugs is pretty likely to be missing ( pip install pyHS100) .  Depending on your installation there may be more.&lt;br /&gt;
&lt;br /&gt;
Much of the application is configurable through the parameter.py file, but the default should give you an application that runs, including a default database.  You probably will not be able to talk to your smartplugs, because the parameters do need to be told what and where ( tcpip address ) they are.&lt;br /&gt;
&lt;br /&gt;
So to tell the application about your plugs.  You should know the address of each plug.  If not you might want to use an application like advanced ip scanner ( google it ).  The smartplug gives up very little information on my scans, but run the scan with the plug plugged in and out, and the address that appears ( or disappears ) it the address of your device.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
With the edited parameter file saved, restart the application.     Not working?  Double check or email me.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Application ==&lt;br /&gt;
&lt;br /&gt;
Some operations work the same way in both applications&lt;br /&gt;
*Install: see section above.&lt;br /&gt;
*Debug:  see section below.&lt;br /&gt;
*Edit the parameter file:  *Change Parameters: Use the application button &amp;lt; Edit Parms &amp;gt; ( after configuring for your editor ) or any text editor suitable for Python ( no tabs ) on the file parameters.py.  See also: The section below, [[Configuration Files For Python]] and [[tbd]]  &lt;br /&gt;
*Edit the log file:  This is a standard python logging file.  Useful for debugging and general tracking of the application.  You can set the level of the logging using the parameter file.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
*Quick Restart of the application:  As perhaps after a parameter change.  Use the &amp;lt; Restart &amp;gt; button.  See also: [[tbd]]&lt;br /&gt;
 &lt;br /&gt;
*Get Help: Press the &amp;lt;Help&amp;gt; button.  Depending on how it is setup in parameters.py you may see this page.&lt;br /&gt;
*Work with text in message area:  See buttons to the left of the area.&lt;br /&gt;
&lt;br /&gt;
=  How to Use the Parameter File = &lt;br /&gt;
&lt;br /&gt;
See: [[Configuration Files For Python]]&lt;br /&gt;
You need a text editor suitable for .py files to manage the parameter file ( parameters.py )&lt;br /&gt;
This includes most text editors.  I particularity like:&lt;br /&gt;
&lt;br /&gt;
*notepad &lt;br /&gt;
*geany&lt;br /&gt;
&lt;br /&gt;
You can also use the editor that comes in many python development environments, the simplest of&lt;br /&gt;
which may be Idle.  But there are many many others.  If you are reading this you probably have&lt;br /&gt;
some experience.&lt;br /&gt;
&lt;br /&gt;
Once you configure an editor in parameters.py you can edit from the &amp;lt;Edit Parms&amp;gt; in the GUI ( see below )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When editing there are couple of gotchas to watch out for.&lt;br /&gt;
* Python cares about capitalization, use the capitalization indicated in the default files and the example code.&lt;br /&gt;
* Python also cares a lot about how lines are indented.  Do not change the indentation from the sample files, and always indent using spaces ( not tabs. most text editors will use spaces automatically for .py files, even if you use the tab key )&lt;br /&gt;
&lt;br /&gt;
Editing of the parameters.py file&lt;br /&gt;
&lt;br /&gt;
*Edit so the program finds your devices.&lt;br /&gt;
**See above in Download and Install&lt;br /&gt;
*Enable your favorite editor to work with the application.&lt;br /&gt;
**self.ex_editor          =  r&amp;quot;D:\apps\Notepad++\notepad++.exe&amp;quot;   # use r&amp;quot; or the backslashes will not work, or you can use forward slashes instead they may be wrong but they work.&lt;br /&gt;
*Lots of other settings:&lt;br /&gt;
**Read the comments in parameters.py and change as desired.  If a setting does not work let me know.&lt;br /&gt;
*If you mess up.&lt;br /&gt;
**Re download and get back to the original file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
this cannot bee seen &lt;br /&gt;
-------------&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The GUI ==&lt;br /&gt;
&lt;br /&gt;
see: [[tbd]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Debugging = &lt;br /&gt;
&lt;br /&gt;
There are several application outputs that may be useful for debugging.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Watch the GUI&lt;br /&gt;
* Check the Python console.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Look at the python log file ( use the GUI button  Edit Log  ( specify your editor in xxxfirst )) or use your editor on the default name of the log file   xxx.py_log.&lt;br /&gt;
&lt;br /&gt;
Most issues will probably be missing libraries, parameters.py issues, or just bugs in my code (email me ).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
*[[tbd]] main page for this project &lt;br /&gt;
* see categories below as well&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category:Python CommandAssist]] [[category:Python]] [[category:Python Projects]]&lt;/div&gt;</summary>
		<author><name>71.232.240.163</name></author>
		
	</entry>
</feed>