During the shelter-in-place of the 2020 COVID-19 epidemic, I've been
working part-time at my day job (not by choice).  Hence I've had some
free time to cobble together a project that both helps me figure out
and debug EGLFS on the Raspberry Pi (for a project at work), and
saves me time at home.

The primary motivation for the new project: I want something simple,
relatively small and reasonably secure to monitor my home machines
and network, as well as my immediate upstream and services I use.
I'm tired of the regular checking of machines, filesystems, etc.
for problems.  Obviously nearly all of the time, it's just plowing
through automated emails with no problems to report.  This is
tedious monotonous work, the kind we as humans eventually grow
tired of doing.  I needed something that would leave me alone
until I need to take action; no news is good news, right?

25 years ago, I worked for NSFNET and ANSnet.  We had such a project,
named Rover.  I didn't invent it nor name it (credit to Bill Norton
and others for that), I just worked on it.  It monitored a lot
more targets than I have at home, but the principle (only tell me
about problems) is the same; periodically run some active tests,
check various services, etc. and update a list of currently
active problems.  When a problem goes away, it disappears from the
list.

At the time, we didn't have great GUI libraries on UNIX.  Xt was
established but very primitive.  WE had OPEN LOOK on one side (from
AT&T/Xerox and available for Sun), the older SunView stuff on SunOS
(and the later XView), and Motif (as a new kid on the block) on the
other side.  CDE didn't show up until 1993, and basically never showed
up for free on any x86 UNIX (I had to buy my copies of Motif for
BSDi... anyone remember Xi Graphics?) until way too late (2012).  Qt
didn't exist.  No KDE, no Gnome... in fact we didn't yet have what
most of us think of as UNIX now (FreeBSD, Linux, MacOS, NetBSD,
OpenBSD, etc.).  We ran the real deal BSD (Tahoe and Reno) on some
older machines (IBM RT), but most were running AIX, SunOS (later
Solaris), IRIX, etc.  We used BSDi on x86, but sparingly.  Neither
Apple nor Microsoft had built-in TCP/IP stacks (windows had none,
third-party or otherwise).  Anyway, long story short... the folks at
Merit created a curses-based interface to display alerts from Rover,
which was all we needed and could run on any UNIX of the time.  It was
displayed on a large screen in the NOC, and users could run it from a
terminal if they logged in to the machine running Rover.  It worked,
and in fact I later created a very similar interface to show
information from the trouble ticketing system.  Today it would seem
old-school, except...

There are still activities that we like to be able to perform
from anywhere.  So a terminal interface still makes sense for
simple alert display.  If I want to check the status of things at
home when I'm not at home, I don't really want a web page.  I want
to log in via ssh, run a terminal command and see all the current
alerts.  After all, web services are part of what I'm monitoring.
If they're not working correctly...

In any event, I want an interface with a low number of dependencies,
even if it's not my primary interface.  So I did create an old-school
curces interface to the new project, just to display current alerts.
It securely connects to one of the mcrover instances and fetches the
alerts.  Connections are authenticated and encrypted.

Anyway, there's a lot more detail on the monitoring that I'll
write about later.  But there was a second feature I wanted, for
which I wasn't going to create a curses interface... the current
weather conditions and forecast.  I want a small Raspberry Pi
driven display on the wall in my office to display alerts from
the monitoring system, but most of the time I should have no
alerts.  So, given that I've grown more and more annoyed at
the weather sites and that I'd rather just glance at a dedicated
display to see the forecast and current conditions, I decided
I wanted a weather display to come up automatically when there
are no monitoring alerts.  For this I wanted a Qt-based interface,
able to run via X11 or EGLFS.  And I wanted to pull data from
the NWS, not a commercial site.  It's free (actually, we all
pay for it as taxpayers), and it's sufficient for my needs
(not hyper-localized nor crowd-sourced).

So... software wise, I have a functional, distributed monitoring
system to tell me about problems I need to address.  The Qt-based
GUI client can connect to the monitoring 'team' and display
alerts.  When there are no alerts, it shows the weather.  It
works quite well at the moment, though I will continue to add
to it.

I'm still hemming and hawing on display hardware.  I want touchscreen,
but only because I need to be able to scroll, and switch between the
alert display and the weather display manually when desired.
The ideal size is probably 19" for the office, but I've not had
great luck finding reasonably priced 19" touchscreens that work
well with Raspbian.  19" seems to be some mostly unoccupied market
here, probably because it's not an easy fit into a standard rack
and 24" panels are way more common.  I'm not talking about monitors
with stands... I'd like something with an open frame mount so I
can build a shallow box to hold it and the pi.  I need 1920x1080
resolution, and ideally the power consumption would be low.
I suspect that as an interim solution, I'll use a 24" monitor on
a shelf.  And I'll likely try a Lilliput 13.3" display for outside
of the office.
