Author Topic: ALTUI : Readme first  (Read 30092 times)

Offline amg0

  • Moderator
  • Sr. Hero Member
  • *****
  • Posts: 2880
  • Karma: +189/-8
ALTUI : Readme first
« on: August 08, 2015, 06:50:58 am »
An alternative UI for VERA boxes based on UI5 UI7

This plugin offers an alternative user interface for your VERA(s) controllers that is more pleasant and works on any kind of device as a web application which will automatically adjust to screen size

It works as a simple plugin and you just need your browser. it supports UI5 and UI7 veras and can aggregate in the same screen the devices from multiple seperate VERA boxes.
It is not just a re skin of UI5/7, and will offer a number of additional feature

LATEST VERSION : v 1.91 august 2017 :

Extra features not present in UI5 UI7:
  • Fully responsive design / all form factors supported , no need to install a new application on your mobile
  • Fully skinable based on bootstrap 3 css. fixed background image / transparency
  • works equally well on UI5 and UI7 boxes and thus offers an enhanced experience even on older boxes without adding load to your controller. it maximizes the power of our modern browser and seldomly relies on the VERA controller
  • works with multiple VERA controllers, you can see & interact with devices and scenes of multiple controllers transparently. (but no support for secure vera)
  • user defined custom synoptic panels
    • made of elements out of your devices ( variables, actions, images, text ) but also cameras,  graphical gauges, box frames
    • can mix and match devices from multiple VERA controllers (but no support for secure vera)
    • nice Hi/FI like on/off button
    • nice analog gauges to display a chosen device variable value
    • with a full Wysiwig editor mode for pages
    • drag and drop of control to add/remove and aligns
    • selectable page background with CSS3 property : gradiant, images or even video background if you want !
  • extensible design with javascript modules for plugins dashboard & control panels
  • compatibility with most 3rd party plugins (IPhone locator google map), all but a few custom devices are controllable.
  • all custom icons are displayed , even in remote access mode
  • Complex graphics made with D3JS library, animated graphs for device parent child relationships, zWave neighbors, zWave routes & route quality.
  • Power/Energy consumption graph
  • Parent Child relationship on a force layout d3js map
  • zWave neighborhood map with color based on PollOk % status. Click able node on zWave map
  • zWave Route Quality Chart
  • Table of device with choose able / sortable columns and ability to export
  • trigger remote execution of user chooseable unix OS command and display output.
  • History button to automatically display Scene last Execution timestamps from the lua log files
  • Device: Variables displayed ordered alphabetically and with enhanced display format ( dates shown as dates, url as url )
  • Device: Variables just click and edit, no messy checkbox to edit variable even to enter JSON or special characters
  • Device: detailled view of utilisation in scene actions or triggers
  • History button to automatically display Device Variable Changes from the lua log files
  • supports view of VERA lua log file with ANSI color display
  • Auto detection of new version & updates
  • Client device specific Favorite device / scene selection ( your favorites may be different on your phone or your pc)
  • Persistence of settings, preferences, filtering selection in various screens
  • Powerful filter on pages ( by category, room, name, battery )
  • Visible battery status
  • Plugin page: List of installed, direct button to reach the store, update from store, uninstall, to reach help page from the author, direct button to view content/download plugin files
  • Plugin page: plugin files selectio and easy content display in editor
  • Display of manually installed plugin
  • Camera: live video feed in local mode, images in remote mode
  • Debug tool screen enabling to get all device information, to get one device / all variable info, to search all devices for a given variable name (pattern matching), or to call a javascript piece of code, including the ALTUI object apis
  • Scene trigger can be a device variable watch without any line of Lua code. supports conditional expression and with an optional Stable since x Sec choice
  • Blockly editor for watch expressions
  • Easy built in theme switcher for chosing predefined bootswatch themes
  • Colored syntax Lua editor
  • Speech reconigtion ( chrome desktop only ) for device / scenes
  • External Data storage provider integration ( thingspeak ecmoncs ) + public API to integrate yours
  • Graphical view on charts coming back from these data providers
  • Engine to run logic workflows with state and transitions and graphical User Interface to view and edit them

Features equivalent to UI5 UI7:
  • local and remote access via UI7 MMS authentication servers
  • fully featured for room devices scenes plugins
  • Room: List, Create, Rename
  • Scene: List, Execution, Create, Edit ( triggers, timers, actions, event lua code, time restriction, housemode selection )
  • Scene Mode selection  ( UI7 only )
  • Scene Pause feature : in one click
  • Trigger time range restriction ( new feature of latest UI7, now in AltUI too )
  • Device: List, responsive design page, "as you type" Filter by name/category/room
  • Device: small dashboard panels to fit many device on one screen. Dynamic icons as defined by the plugin author in the JSON file
  • Device: Variables: List & Edit with enhanced display format ( dates shown as dates, url as url )
  • Device: Notifications on events, Notifications to users
  • Device: UpnP Actions: List & trigger with parameters
  • Device: Control panel: per the static JSON file of the author. Display "flash" and "javascript" tab. In addition it can be customized via a ALTUI plugin.
  • Device: Attributes: List / Edit with enhanced display format ( dates shown as dates, url as url )
  • Device: UpdateNeighbours feature in device Actions dialog box
  • Custom pages: Use mode (kiosk) and Edit. User can create its own set of custom pages by drag and drop of widgets
    like device icon, web images, device action button, device variable/labels, camera picture or google gage.
    Alignment tools to create nice looking panel, customizable background by css3 ( images, gradiant... ), persistent storage of the pages on the VERA box by the LUA plugin
  • Lua test code editor with return and output print() display/ Lua startup code editor
  • scene editor
  • Plugin management ( install,  updates, deletes )
  • language aware ( EN FR IT provided ) , open design to add other languages as well
  • Compatible with most plugins including those with javascript tabs using the UI5 UI7 javascript API. like the RGBW plugin support

Customization
  • Each device type can have its own custom panel : Datamine, Infoviewer, Weather, Light sensor, Holiday plugins, IPhone Locator, IPX800
  • Simple javascript API to dynamically load custom plugins to display device small panels,
    device large control panels, device icons. ask me for details, but basically you do not need to master lots of things as long as
    you know how to use jquery and to write HTML elements in a parent container. I will integrate your contributions
  • External Data storage provider integration API
  • Display of Watts & last trip date on device dashboards
  • Skinnable based on bootstrap styles you can find on https://bootswatch.com/
  • Extensible architecture ( device dashboard & panel can be extended by a custom JS module ). developpers are welcomed to contact me on how to do this.  There is a UPNP action called registerPlugin() for plugins to dynamically register with ALTUI, @reneboer used it and explained here: http://forum.micasaverde.com/index.php/topic,30310.msg242498.html#msg242498
  • Selectable home page by a url parameter ( home= )
  • Selectable language by a url parameter ( lang= )
  • language list extensible by a simple javascript, ask me & contribute if you want
  • Themes & Styling
    • you can take a bootstrap CSS from any bootstrap 3 CSS web sites out there providing template, or you can start from the default
    • you then create your own CSS file which is incremental to that initial base
    • you put that CSS file somewhere ( I put mines on my google drive ) , you can put it on your vera under /www and point to it if you are concerned about working without internet dependency.
    • if your css file points to a bitmap, you will also need to put these bitmap file somewhere, note the url and make your CSS point to it. your CSS typically include things like :
      background-image: url(http://ssssssss/mycss.css);
    • you declare the path of that CSS into the variable ThemeCSS of your ALTUI device
    • you reload ALTUI/refresh browser
    • Example : I provided the working example of fixed wood texture background with transparency in the "Styling" folder in the code.mios.com repository that you can access: http://code.mios.com/trac/mios_alternate_ui/browser
    • More info on theming: http://forum.micasaverde.com/index.php/topic,30310.msg243792.html#msg243792

Although the prefered way to customize the display of a device in ALTUI is to write a small javascript plugin,
ALTUI provides a fast and easy customization of display of a device by the mean of 2 reserved service/variables
that can be added manually by the user to any device. ID = 'urn:upnp-org:serviceId:altui1' , Variable = 'DisplayLine1' and 'DisplayLine2'
  • you add the variables to the device.
  • if no drawing plugin is specified , then altui will look for these variables, if found, it will display one ( or both )
    per line. each variable text content is included in a <div> which has a CSS class called altui-DisplayLine1 or
    altui-DisplayLine2 for possible theming if needed. Variable content will be HTML encoded so that HTML injection is not possible
  • if no drawing plugin is specified and if ALTUI does not find these one of these 2 variables, it will display the default
    ellipsis glyph , signifying "default drawing"


Prerequisite requirements
  • Just a classical plugin , no extra HW or servers

HOW TO USE / LOCAL and REMOTE ACCESS

OFFICIAL VERSION   in Mios store

INSTALL

ALTUI Device VARIABLES
  • PluginConfig : JSON structure to configure ALTUI optional modules. a UPNP action registerPlugin() can be used to programmatically add a ALTUI-plugin for custom device drawing
  • RemoteAccess : remote access url for MMS login
  • ThemeCSS : a full url to download a CSS skin for ALTUI
  • UI7Check : true if running on UI7
  • Version : the Lua plugin version
  • LocalCDN : a full path name from VERA root '/' where the necessary files for ALTUI are stored. can be left empty and ALTUI will get files from the internet but this option enables an internet free operation of ALTUI
  • ExtraController : a optional , comma seperated list of additional VERA controllers to use. the main controller must not be listed and this variable can be left emtpy if you use only one VERA with ALTUI
  • Debug : 1 for extra debugging logs
  • Data_xx_xx variables : internal storage for ALTUI user pages definitions
  • Data_CustomPages_0 : JSON array of user custom page names
  • VariablesToWatch: semi column ';' seperated list of watch variable instructions. Each watch is instructions is in this format : "service#variable#deviceid#sceneid#lua_expr#blockly xml".
    sceneid is the scene to run if the lua expression is true. lua expressions uses old and new as variables for the watched variable where old = previous value and new = new value. example:
    urn:micasaverde-com:serviceId:SceneController1#LastSceneID#208#71#(old==2)and(new==1) (the xml is optional and only there if the expression was edited with the Blockly editor).
    ALTUI scene editor will take care of editing this VariablesToWatch variable.

LocalCDN
LocalCDN is for advanced user only. it enables internet less working mode for ALTUI but warning some features are not supported in that mode:
- weather widget
- google gauge

Another warning : not properly following the version updates of the css or js files of the various libraries ( when ALTUI updates its versions levels ) will likely result in malfunctions very difficult to find.

You will find here below a working example of a localCDN setup:
1- on vera, create a /www/localcdn folder
2- copy and mirror http://code.mios.com/svn/mios_alternate_ui/localcdn/ folders and file found here.  that means you should have on your VERA a /www/localcdn/root with css and js files inside and a /www/localcdn/fonts folder with some font files inside
3- set your ALTUI device variable "LocalCDN" to be "../localcdn/root"
4- if you have a ThemeCSS,  set it to "../localcdn/root/xxx.min.css" for instance

you should now be all set, do not forget to refresh your browser cache

UPNP ACTIONS
  • registerPlugin(newDeviceType,newScriptFile,newDeviceDrawFunc,newStyleFunc,newDeviceIconFunc,newControlPanelFunc,newFavoriteFunc)
  • RegisterDataProvider(newName, newUrl, newJsonParameters)

Some DOCs in French

Overall DOC in English :

BLOG & Web Magazine

SOURCE code:
Read only access to everybody on http://code.mios.com/trac/mios_alternate_ui/browser but for non commercial use.

COST
  • Gift-ware for non commercial use, all features available in any case,  but please consider the option to:
    • Donate via the paypal button to support the effort, yearly subscription
    • Rank the app in the app store
    • Make noise in the forum:)

Feedbacks & Help more than welcomed.
thx !
amg0.
« Last Edit: March 21, 2018, 01:19:17 pm by amg0 »

Offline amg0

  • Moderator
  • Sr. Hero Member
  • *****
  • Posts: 2880
  • Karma: +189/-8