Category Archives: Random

Enhancements and fixes!

So, I have actually done a fair bit since my last post. I won’t list it all today, but I’ll mention a few recent highlights.

For starters, apparently, my Windows Control Center python virtual environment wasn’t actually working on other computers! Among other things, the Python3 virtual environments get tied into the username of where it was created. So when I went to test it on my other computer, it worked (Same username)! but when I tried to put it on someone else’s computer, it did not… So after a fair amount of searching, I found something better then what I was doing (on a few levels), called pynsist. Before I basically created a virtual environment and used Inno Setup to put it all together into an installer. All needing a windows machine to do it on. Pynsist, on the other hand, is all done in Linux creating an installer with an embedded Python3 and required files! Very nice for consistency, especially when you provide the pip packages.

It took a bit to get it working, especially around pip (PyPi) packages, since it doesn’t install the pip requirements of the package you install. AKA Plotly and matplotlib were missing a lot of required 3rd party modules! Long story short, it was easier to install Python on windows, use pip to get the packages, then copy them into an include packages folder for pynsist. Worked very well after that.

Because the previous installer is not working, I uploaded a not fully finished version for the Windows control center program, but it SHOULD only be minor visual glitches, such as window sizes and a not so great looking “Sensor Display” section to have the sensors show things like sensor readings, assuming it has a supported display installed.

Anywho, I’m going on a trip tomorrow for a few days, so I don’t want to stay up too late, but a few of the enhancements include the following.

  • Display functions added for mini LCD / LED displays attached to the sensor.
  • New sensor support (I Think I added 7 or 8 new sensors).
  • Re-worked services so everything runs from a single program. The first program launches threads of other required programs like trigger variance checks and the HTTP server for remote access.
  • Added button in CC for Upgrading to the latest Development version.
  • Added new sensor types: Altitude, Distance, GAS, PM, Ultra Violet.
  • Added more Sensor Commands in CC: Check/install missing dependencies, Clear Logs on Sensor.
  • Refactored file names for clarity.

All in all, I’m pretty happy I have made more progress. Programing is also starting to make more sense and I’m finding it easier to figure out how to do things. Whether it’s the best way to do things or not is another story. There are definitely some structural improvements that could be made now.

Until next time!

Mild progress

After going for a bit of a hike and camp trip with my brother, I got a slight bit more motivation to poke at the sensor programs. This time I improved the installers and uninstallers. I’m pretty sure the Control Center HTTP installer now works with other Linux distributions decently. Works on my Pi’s and Ubuntu 18.04 just fine, as well as the uninstallers.

The Sensors program now offers to install the Control Center at the start, and makes installing a lot faster if you choose not to include it. If you do have the Control Center installed as well, uninstalling the sensors program will ask if you also want to remove the Control Center program.

I’m pretty happy with the HTTP installers now and will most likely convert the SMB installers to use a zip file like HTTP, instead of rsync’ing the folders and files. Although it will take an extra step when pushing a test, it will be a lot cleaner and quicker. I’ll probably create a script to auto zip the files into the right areas, taking only as long as it takes to type in the bash alias in a terminal.

I also want to look into making a .deb installer so it can integrate with the primary package manager and creates a normal spot for removal.

That’s it for now.

Bit of a break

So I fell off the productive train. Looks like I’ll probably take a bit of a break from programming but I’m hoping to take a bit of a “learning” trip. Go somewhere to concentrate on a good stint of learning. I still think the 100 days of python web programming is the way to go as it will definitely take my programming to the next level.

The weather is getting hot already and it is not even summer yet. was about 30c in the shade yesterday, so I’m somewhat dreading what the summer heat will be like. I’m going to have to figure out how to convince myself to get up at 5 AM for my morning walk or bike ride in order to beat the heat.

Although I have done very little programming, I have added a few extra neat things. For one, a port number can be added to the IP or DNS name of the sensor in the control center program. If you leave it blank, it defaults to the primary port, but if add a “:12345” or whatever number at the end, it will use that as the port. This is handy for getting through custom port forwarding on the router. I can now put in server.dragonwarz.net:6970 to access my one sensor that’s on the web.

I’ll probably clean up the latest release a bit but won’t add anything major until I either A) go through the python web course, or B) get inspiration.

That’s it for today. Until next time.

Web Code Day

#100DaysOfCode on Day 4 / 5.

I missed my post on Day 4, so here’s a double. I have now watched the HTML videos and was surprised at how simple HTML was and still kinda is. I guess I was under the impression it would be a big section kinda like Python itself. It’s nice to know the web design part won’t be super hard, although I still have not seen the extent of what CSS is and can do, so I’ll see when that comes up.

I do like how the course is layed out. Not only can you pretty much jump around to the subject you want but it gives it to you in practical ways so you really understand them! I’m going to do it from start to finish, but I’m happy its flexible enough it will be easy to jump back and get a refresher. WELL worth the cost!

100 days of web in python

As I mentioned in my last post, I have started 100 days of web in python. A part of that involves posting each day to help keep you on track (They say tweet, but I don’t have any social media accounts). Although I literally have 0 people who care about or are interested in what I’m doing for programming, I’m going to start posting it for my own tracking purposes.

So #100DaysOfCode on Day 3. My sensor program is already based on Flask, so the first part is review and enhancements. Since the last 2 out of 4 days for this section are all playing around, I’m going to modify my main app with what I have learned.

That being said, off I go to modify some code!

Version Alpha.24.152 out

A new version is out!

I actually meant to post about this when I released it on May 1st, but O well.

This version has a lot of enhancements but I’m fairly … something right now, so I’ll post about all that later.

I’m also starting to build the application as a web app, so a web browser can be used to go to a webpage on the sensor itself to see all sensors and most other variables, like system uptime, RAM usage, last update, etc, etc. It should be fairly easy to port Plotly graphing over since it outputs into an HTML page already, so sending that page with flask will be easy. The big thing I have to learn is actually web design, so I can have consistent looks and feel throughout the pages. Having it look nicer will be awesome too.

With the web design in mind, I purchased a copy of “100 Days of web in Python”. I started the first part about flask, and I’m already getting some good pointers.

That’s it for now. I’ll post some updates later on the new features.

Refactoring++

The title is a bit of a joke since ++ is a way to add one to an integer in C++, but not so much in Python.

While I was refactoring my code, Corey Schafer released a video for cleaning up Python code. So I watched a bit of it and got some pointers to start using in my programs. I learned about the zip() and enumerate() function from the video and have begun to implement them. It does make it look better for sure.

I have updated MOST of my imports in both the sensor program and the control center. The import modifications have made things clearer for where functions and variables are stored. Variables and functions have also been relocated to places that make more sense.

That’s it for today. Until next time!

Refactoring!

Ahh, I managed to get a few good hours in for refactoring. The imports are now standardized. AKA I import like this ‘from folder import module’, which I then access everything from it with module.whatever or module.whatever_function(). This makes it a LOT simpler to find out where everything is located. So tracking down functions and variables is easy now.

I also spent a good few hours on the local management and information HTML webpage. It uses a dark theme and displays all the useful data and links minus actual sensor readings, for which I am going to make another custom page which will have things like automatic reading updates, color changes based on sensor readings, etc. I have not even started on the page yet, but the empty functions are all set to be filled in. I’ll probably work on that one too before a new release.

The 2 things left to do before a new release are.
1. Refactor the control-center program like the RP sensor program (imports & naming).
2. Create a decent sensor readings webpage.

I suspect I’ll be ready by the end of the month. Yay motivation and progress ^_^

New Release soon

I’m fairly happy with my new program updates. The notes work well, the database information window shows useful database information, and I have put in a mini web interface for sensor interaction on the local web server (AKA control the sensor from a webpage served by the sensor). I might tweak the sensor report on the local web server but beyond that, it’s all about refactoring before the new release.

Starting on the local web server interface will make creating an app for the phone rather simple (web page wrapper). Although just bookmarking the sensor website is not difficult (So long as you know the port #).

I haven’t read too much more on the Machine learning yet, but it’s still progressing. I expect I’ll do some more serious reading next week.

That’s it for now.

Notes updates

I’m still slowly doing the notes section. I’m just finishing up on the dual DateTime entries in order to have a reliable index of notes and the ability to place a DateTime stamp for where the data is, that the note pertains to.

After this, I should do some refactoring. For one, I would like to maintain file imports so usage is imported.whatever, in order to easily see where said class, function or variable reside. So that’s going to take a bit and I’ll want to re-word some naming schemes so it doesn’t get too long like some_really_long_import.SuperBadAssClassWithCherriesOnTop()

I’ll have to remember to set aside time for refactoring, in order to bring older code up to my newer standards.

Off to do a bit of work.