Welcome to the HomeDaemon-MCP Android App instruction manual and "about" page.

The HomeDaemon-MCP android application is a convenient user interface to HomeDaemon-MCP which permits both monitoring and control of your home or similar installation of HomeDaemon-MCP.

When the application is first installed and run it will present you with a connection dialog requesting the hostname, optional port, login and password for the HomeDaemon-MCP instance you wish to connect to.

This screen is self-explanatory and will be displayed at any time the app either has its data cleared, login authentication is refused or the target is not an instance of HomeDaemon. Enter the required parameters to connect; the port number may be left off unless you have moved it on the server, in which case it is required.

Note that all connections are made with SSL enabled; there is no support for unencrypted connections. You must have installed the proper CA certificates into your phone's certificate store for the HomeDaemon instance you wish to connect to, as the licensing of HomeDaemon uses a private certificate authority. Please contact your HomeDaemon vendor to obtain these certificates (normally an intermediate and root CA) and install them on your phone before continuing.

If you leave the application open while on this screen it will prompt you with a notification every couple of minutes to remind you that authentication information is required to continue.

Once you have entered authentication credentials you will see a screen that looks like this:

This is the main navigation screen for the HomeDaemon application. Each location will be displayed along with the event list from the server. Note that the server controls what you are able to see in this display according to your user permissions; if you lack permission to see a specific resource it will not show up at all.

There are two potential icons that will show up next to a location; the first is the orange-backgrounded squiggly line which indicates that one or more units in that location is currently reporting a "Broken" status (communication problems or otherwise unreachable) to the host machine. The second is a battery warning, which will display if any battery-powered unit at that location has low or critical battery status. The latter does not display following a host restart prior to battery units reporting in since by default that battery state would be "zero".

Across the top there are three action items in the menu; the main settings (gear) icon, the Trashcan (which removes all authentication data from the app and results in the first display coming up once again) and the "About" button. Note that the trashcan, if used, requests confirmation and that the login display may take a few seconds to appear since the network manager must be notified and properly close its present connection, if any, before new authentication data is requested.

Selecting a location results in the detail item display, which looks like this:

This is a representative (and quite-extensive) detail screen. Switched items (which cannot be dimmed) will show up as a switch icon or as a fan icon if the word "Fan" is their name. There is a motion detector here that has a good battery (right-side icon) and last saw movement 58 minutes ago. The "Multi" unit is a sensor that can return multiple items, including motion -- it is returning four parameters at present, including the ambient temperature and humidity; the other two are zero as it is inside and has no view of lighting. The "moving file" are events you can manually fire, including one to turn off everything in this room and one to lock the present state on; these, again, come from the server.

The writable units have manual controls available; in this case all of them are write able as the permission on the server allows the logged-in user to do so. The sliders may be moved to any desired location and the events can be tapped to cause them to execute; all changes will be confirmed with an "are you sure?" dialog before being sent.

Note that state information displayed here is in real-time; if you have this screen open and someone walks into the room "Master" the motion detector state will switch briefly to "ON" and the time (since last activity) will go to "00:00".

Some switched units can monitor power consumption and other factors; if that data is returned then it will be displayed under the state, just as occurs for the MultiSensor depicted here.

This screen of course scrolls if all of the units in a given location do not fit on a single page.

Here is an example of a location that has both a warning and non-fan switched units:

The washer's unit is "On", and it is not a fan, so a switch icon is displayed. The water heater power is currently off, it is reporting 0 watts being consumed at present and the total consumption since it was last reset is 3.36 kWh.

The water leak sensor (which is located to detect a burst hose or leaking water heater) last reported a state change 1 day and 4:54 minutes ago. It has a low, but not critical, battery level and you should consider changing it soon.

The settings page gives you a number of options to customize the operation of the app to suit your requirements.

By default the app will connect on either WiFi or Mobile networks, but not when the mobile network is indicated as Roaming. Most mobile providers will bill you by the kilobyte for mobile data when you are on a roaming network, so this option should be enabled with caution.

The next two switches control whether or not HomeDaemon-MCP attempts to prevent Android's power management from suspending and killing the application automatically, and whether you wish it to start on your phone's boot. To start on boot the permanent connection option must be selected. If neither is chosen then the app is allowed to be managed by Android's standard power algorithm which will suspend it automatically when it is not being used. This will result in a notification warning if the app is unable to obtain network access due to power management prior to going to sleep.

Keeping the connection on permanently will consume slightly more power and data. Both requirements are relatively modest and depend on server traffic. If you wish to monitor for real-time events, for instance if you have the server set to notify mobile clients on event occurrence, then you should enable both of these options. Note that turning on the permanent connection option will cause a system request to be displayed on Android "M" and higher since the app must be "whitelisted" in order to be exempt from power management within the Android operating system. Declining to allow the whitelisting will disable both permanent connection and Start-on-Boot options.

The next two options control whether variables show up in the detail display and whether you wish to have a separate pane in the top level for Events, or only to list them under each location. Most users will want both of these items checked and they default "on" in both cases.

The final section in preferences deal with notification requests. Some system notifications, such as a warning if user authentication data is invalid, cannot be suppressed for both sound and vibration. User notifications, as sent from the host with the "Notify" command, however, may either vibrate, play a notification sound, or both. You may also select the notification tone you wish to use.

Note that while Android will permit the use and selection of notification sounds stored on an SD card it is highly advisable not to do that in any app, not just HomeDaemon. When Android puts the phone to sleep it temporarily detaches SD card storage as a power-saving strategy. As such if you set a tone that is stored on the SD card instead of in the phone's internal storage it may not play in all cases. To avoid this copy the tone from your SD card to the phone's internal memory and use it from there.

Note on Amcrest Cameras: The HomeDaemon-MCP system can integrate with Amcrest cameras to use them as triggering sources (e.g. on movement) and can command them to snap still images and store them on a rotating (first in, first out) basis. Selecting an Amcrest camera on the app location detail page will request from the HomeDaemon-MCP server the latest image that it has snapped and stored and display it in the app with full zoom and pan support. Internal support for viewing streaming video is not implemented intentionally because RTSP is inherently insecure since the data stream is sent unencrypted, camera "digest" authentication methods are not sufficeintly secure either, and authentication credentials would generally need to be stored in the app. All of this creates a series of security vulnerabilities that the HomeDaemon-MCP app has deliberately chosen not to allow to exist.

Should you want streaming video on your phone from these cameras there is an excellent streaming video viewer called "TinyCamPro" available in the Play Store. However, the only safe way to use it without leaving privacy wide open is to set up a VPN server at your location and to block on that device (which ought to be your firewall as well) all outbound and inbound traffic aimed at those cameras to and from the Internet so they are accessible only when the VPN is active. As a reminder, doing so will still leave you with the authentication credential problem (since the app must have the login and password to the camera itself.)

Cuda Systems LLC maintains a codebase for a very nice and inexpensive fanless PC called an "apu2c0" available here and which is available on request with a SASE, appropriate sized SD card of 8Gb or more (and a beer donation if you wish) sent to us; we will return the card with a FreeBSD-based bootable firewall configuration on it that also includes the StrongSwan IPSEC VPN code. We continue to investigate potential ways to get around the security issues imposed by these constraints.

The HomeDaemon-MCP Android App is Copyright Cuda Systems LLC and Karl Denninger 2018. All rights reserved.

Iconography is used by permission from icons8 at http://icons8.com