2020-01-25

It has been a while since the last update and a whole lot of progress has been made.

On the software side everything seems to work.  For realsies this time.  The full software stack compiles and runs(!) on both Linux and FreeBSD.  On Linux it compiles using GCC and Clang.  On FreeBSD only Clang is used since that’s the default compiler.  To be fair I’ve only tested the client side stuff on FreeBSD, but as of right now I have no plans to run the LOGIC_CORE server (the main chunk of software logic running on the BeagleBone)  on FreeBSD.  Why did I add FreeBSD into the mix, you ask?  That’s a very astute question.  My main home server is an old Dell PE1900 running FreeBSD 11.  I plan on using it for collection and archival of data generated by the LOGIC_CORE server.

Another software change is that we now have communication via TCP/IP sockets in addition to domain sockets.  This was necessary to enable the various machines to talk to one another via the network.  The implementation was very very straight forward.  It was harder to get the command line parameter parsing stuff correct.  And speaking of command line parameter parsing, it has been added to HVAC_LIB so every component based on it now has standardized base command line parameters as well as TCP/IP comms ability.

Logging was another core component that needed some love.   It was greatly simplified and refactored.  Of course working so deep in the code caused a crash or two.  This led me to start work on my own front end to GDB.  More on that later.

In order to test the control logic I needed to be able to see how it reacts to various space temperatures and humidity levels.  One way to do it is to put the logic into production and see how it behaves.  Another, better way, is to simulate the temperature and humidity levels.  In other words I needed to be able to simulate analog input values.  This is another one of those things that does not seem to be complicated in principal, but ended up touching code all through the stack.  I ended up locking cache entries when an analog input value is forced.

Here’s some gratuitous screen shots.  This is from the qtHMI_SHIM module.

Main screen.  Here we see the digital outputs and analog inputs and their mappings.

Raw board info.  Here we see (and can change) digital outputs, calibrate the analog inputs, and see the analog input values.

Here we see forcing of analog input values in action.  I suppose it would have been better to show the before and the after, but here we are.

On to the hardware.  The hardware is finished and operational.

Here’s the panel being assembled.  Taken using the standard PotatoCam.

Here’s the pannell assembled and installed in my data closet.

If I had to do it all over again, I would not have chose those DB-9 connectors.  They’re so damn bulky and awkward.

So what’s next?  Installing the individual sensors, calibrating them, and going live!

Leave a Reply