Dave's Notebook

Writing Practice by David Rickmann.

Command Interface: Further interfaces

Today’s project was to try and enhance the very basic interface I built yesterday.

Home

First I built a frontpage to let me navigate around the application. It currently looks like this:

It works quite nicely on a full screen touch panel.

Since it’s running in shiny it automatically exists as a server on the network. I’ve given it a fixed port to run on so that you can access it from any device on the boat.

This is set up with a reactiveValues variable called panel. Pressing any button changes this value. Then the whole interface is rendered in a RenderUI() function. The header isn’t rendered here. Just the specific panel. So I can have framing elements which don’t depend on the panel, or even use the same setup for subpanels. Oh. Also it goes beep when you press a button. The beeps are currently server side only. Which is a little odd.

It means that if you beep a panel on another device then my laptop beeps. I have a solution for that in mind, but this is still basically a toy prototype it’s fine to be a bit squirrely.

Let’s have a look at some other panels:

  • Library
  • Environmental
  • Sensors

Library

I have a lot of documents about the boat that have been floating around in various folders. I thought this would be a nice place to try and bring them all together. Since I’ve had a bit of practice with R markdown in the past month or so I thought I would put it to use and integrate markdown documents. In fact the styling on the front page (excluding the buttons and stuff) is also a markdown document.

The problem so far is that markdown docs are added using includemarkdown() which does all the html rendering. Any nice links between docs won’t work because there isn’t anything in place to render them or to make sure they appear in the application frame. I haven’t figured out a good solution to this yet.

Environmental

This only has one control currently, the pump controls. It looks like this:

I’m led to believe that I can access some of the power usage and status data for the pump using the other control method, which I am yet to implement, so I’d like to include some of that information in all that spare space.

sensors

Not yet implemented. I hope to include the camera stream from my ip camera as a first pass. I really only included this button as an excuse to do a sad beep if you try and access it.