This forum post is to accompany the emoncms v3 release, to provide a space to discuss the roadmap for what features come next. 

Short term feature plans

There are quite a few important things that need to be added to make it more usable, such as editing and deleting of inputs and feeds. Then there are features that would just be cool to have.

Here are the features and things to do that I can think of. If you have a feature you would like to implement or would like to take the lead on any of the features below that would be really great, please post with your thoughts. 

Core
Add renaming of feeds in UI
Add feed and input deletion
Add input processing re-ordering and deletion
Move feed and input list ui over to JavaScript so that the pages auto update - half way there with the new API functionality.
Languages modules, to add multiple languages support.
 
13 Jan: Add option for disabling further user creation after first (admin) user is created. This could be disabling of public register feature while still allowing the admin user to create and invite users.
 
Dashboards and widgets
Create simpler embeddable multigraph and kwh zoomer graphs in dashboard framework
Create embed code for dashboard so that it can be embedded off site.   http://openenergymonitor.org/emon/node/301
Add hot water cylinder widget
Add solar gen vs import bar widget
Add targeting functionality (saving calculator)
 
Theme
Optimise for variety of screen size, including mobiles / tablets on the one side and larger screens on the other.
Any help on improving the current theme and adding new ones would be awesome!
 
Admin
Administration dashboard, with features for managing energy monitor installations, flagging system when monitors go offline etc.
7 Jan: Email notifications on event, such as reaching a certain threshold or if a feed becomes inactive.
 
 
Documentation
How to create a dashboard and widget api
Proper code annotation
 
Things that have been added since initial posting of this list...
- Reorganisation of core structure individual controllers providing both html and json external API
- preg_replace input validation
- including emoncms_extras in main insallation 
- updated developer documentation
 
 (The following are as suggested by Mr Sharkey in the comment thread below)
Javascript LED's
Display of text strings based on analog or status values
Configurable colors on the "dials"
 

Longer term plans

emoncms as a service

In addition to developing emoncms as an application that can be downloaded and installed on any server, interest willing, Im interested in setting up an instance of emoncms as a service. So if you just want to build up your hardware and connect to a ready to go, maintained service with support, the option will be available to you.

emonphp and emonrails

As you know the current server side implementation of emoncms is written in php. About two months ago now at the nanode applications hack event in London I met Frank Oxener, who is a software developer based on the island of Texel in the Netherlands. Frank has a great deal of experience in software development including running his own software business, he specialises in ruby on rails development and has just launched the nanode neatherlands shop. Frank approached us after the event and proposed developing a ruby on rails port of emoncms on which he has been making a great deal of progress on. So we will soon have two implementations of emoncms one in php and the other in rails and our intention is to develop both in parallel, we intend to standardise the API, overal design and both implementations can share the same client side javascript/jquery UI, including visualisatons, dashboards and widgets.

----------------------------------
 

Any thoughts on the above are welcome, I intend to release a little more often over the coming months as I work on the above functionality and I will be making more use of the forums here for feature updates and discussion.

If you using emoncms v3, I would love to hear what your doing with it and it would be great to see some screens of the widgets and dashboard in use.

Thankyou,

Trystan  

pauldreed's picture

Emoncms v3 - comment

 Great work! 
The graphical representations are really clear and smooth, especially the dial which makes the data comprehendable even at a glance, and the main menu bar's simplicity makes for no nonsense navigation.

I am particularly interested in the mobile side of delivering the data, as I use my iPhone all the time to obtain data - instead of booting up the laptop or cluttering up my home with LCD displays ect.
I have been trying (the emphasis being on 'trying')  to build my own web-app (optimised for iPhone) http://powerhub.info/mobile/ and there a few tweaks I found which make a better viewer experience for apple devices - you will see them if you view the page source, but to see the functions in action, the webpage must be 'added to the device homepage' - exactly the same as any Apple web-app is installed.

The main ones are added to the <Head> section of the page;

meta name="apple-mobile-web-app-capable" content="yes"   //enables the website to be docked to the home screen as an app
meta name="apple-mobile-web-app-status-bar-style" content="black"   //Hides the status bar
link rel="apple-touch-startup-image" href="iui/startup.png"   //displays a logo at startup until the whole webpage has finished loading (the logo is stored in the device cache for subsequent visits)
link rel="apple-touch-icon" href="iui/sunlogo.png"  //displays an icon on the homescreen
 
 

 

TrystanLea's picture

Thankyou Paul, yes i agree

Thankyou Paul, yes i agree I've been finding having the data accessible with ease on my mobile really useful. I think there is a lot of potential to explore whats possible there with widgets and quick to glance data. 

Nice work on your mobile pages! they load really fast and I like the side sweeping action. Thanks for the info on tweaks for apple. I have added the first two to the theme and will look for images for the second two.

 

TrystanLea's picture

Just added the oem icon as

Just added the oem icon as the startup image and icon, unfortunatly I cant test it as I have android :)

pauldreed's picture

iPhone web-app

1) The page now saves as a web-app and the icon image has now appeared on my Home Screen - http://powerhub.info/web_images/emon/Homescreen.PNG

2) The status bar & address bar has thankfully now gone - http://powerhub.info/web_images/emon/landscape.PNG so its in full screen mode.
The top menu however is too small, and does not extend to 100% screen width (and of course you cannot pinch and zoom).
The menu system doesnt function correctly, because if you navigate to another menu item, it breaks out from web-app mode http://powerhub.info/web_images/emon/menu.PNG This may be due to you using 'absolute' instead of 'relative' URLs in the menu system???

3) The startup screen however is not displayed, this is because your logo_normal.png is not the required size for a startup image at just 48x48 (icon sized). It needs to be a png file of size 320 x 460 px (portrait view) to display correctly. (Dont worry too much about the file size - when you save the page as a web-app, it saves the image, and doesnt continually reload it)

 

Paul D. Reed

 

TrystanLea's picture

iPhone web-app

 Thanks a lot Paul, its great to see the screenshots, How does the feed's page look to you? Does the menu look ok there? Im aware that the dashboard goes off the page, will need to think about how best to make that page rearange to fit different screen sizes. I will look into the page relations and startup image.

Thanks again, Trystan

TrystanLea's picture

Embed dashboard in a external page

Just implemented a small addition to emoncms_extras that makes it possible to embed a dashboard created while logged into your account into an external page, I have put an example and more info here: http://openenergymonitor.org/emon/node/301

pauldreed's picture

iPhone web-app

As above, when I access any of the menus, the app opens a fresh window which is not running as a web-app so the page height is drastically reduced due to navigation & status bar http://powerhub.info/web_images/emon/feeds1.PNG but as you can see, the menu is full sized and well proportioned/positioned.

If I scroll down a little, again the data fits the page well http://powerhub.info/web_images/emon/feeds2.PNG 

'Inputs' displays equally well for menu/header and content

'API' displays OK, although the menu/header is reduced in width by about 5% leaving a white margin to the right hand side.

'Dashboard' menu/header still displays the worst (magnifying glass needed!)

 

Paul

TrystanLea's picture

iPhone web-app

 Thankyou Paul, I will look into it

TrystanLea's picture

relative urls and startup image for iphone web-app

Ok so there is now a startup image and I have also changed the menu link url to be relative rather than absolute. Does that fix the menu issue? Thanks again for the pointers Paul, much appreciated.

TrystanLea's picture

emoncmsv3 improvements

In responce to Sergegsx suggestions here: http://openenergymonitor.org/emon/node/291

- inside the Feed menu, the space reserved to show the name is very small and can not read all 
  the feed name, whilst "id" has a lot of space not needed. - inside the input menu, happens 
  the same as about, cant read the whole name of an input.

- really really need a "delete" button to be able to erase any obsolete feed or test feed.

- cant rename a feed, i left one with name empty and cant fixed it, also as i cant delete it 
  its a problem.

- dashboard menu could contain some examples on how to draw graphs, dashes, etc. 
  or maybe a link to somewhere in the forum where you can find examples.

Again thanks for the suggestions Sergegsx. I have made the small change of widening the input and feeds boxes, I will start to implement renaming and deletion of feeds next and good idea on having a link from the dashboard to documentation on examples.

Your right about spaces not working, this issue arrised due to html/css convention. I made a workaround which entails replacing all spaces in the names with a dash -  so real power becomes real-power. I had the same issue as my feed names all contain spaces.  

Sergegsx's picture

Thats great Trystan

Thats great Trystan thanks.

looking forward to the renaming and deleting.

- is it possible to widen the dashboard area? i have a chart + 2 dashes and when adding the third one it goes to the bottom.

- can u make it configurable to have start login or not? its not that convenient in the mobile phone. dont know if cookies are implemented and should be working to avoid this.

- can you add a button to display data up to a week instead of only one day? it may take some time but for some analysis its neccesary.

-maybe its a good idea to group feeds in some way. I already have quite a long list.

 

regards

TrystanLea's picture

renaming, deletion and tagging of feeds implemented

Its now possible to rename, tag and delete feeds.

1) Click on the feed you want to edit

2) scroll down past the normal graph select to the following options and change as desired:

 

TrystanLea's picture

As above, feed renaming and

As above, feed renaming and deletion (to recycle bin not permanent) is now implemented.

I had made a start on grouping feeds, had the same problem myself! What I have done is added a tagging option, setting feeds to the same tag will group them together and put a space between them and another group. Let me know what you think?

Will look into login options, good idea.

Do you want a button in the widget preview graph box?

Sergegsx's picture

i have tried deleting a feed

i have tried deleting a feed but it continues to appear on feed screen.

TrystanLea's picture

feed deletion database fields

Is this on your own hosting? I should have explained if your upgrading your installation, you will need to add a couple of fields to the feeds table.

field 1:   tag text

field 2:   status int

It would be good to have a upgrade script that does this automatically on update, another thing for the list.

pauldreed's picture

iPhone app links

 The startup image now displays OK and allows the app to load smoothly, but the link problem still exists in that it tries (and succeeds!) to open a fresh window.

However, after a quick search I found this post which may quickly solve the problem. 

Paul

Sergegsx's picture

I will try it this

I will try it this afternoon.

How does on-time exactly work? I want to know the time a pressure pump has been on so I used the on-time for its own CT sensor. however it seems only to recognize when the variable is a 1 or 0 and not when you send him the realpower 0 or 550W. could this be fixed?

can you add a "/ input" similar to "x input" but dividing? I would like to know the number of times the pump has been running a day, and I know it will run for 81 seconds aprox each time. or is there any other option? some type of counter?

thanks

TrystanLea's picture

input on time

 Good idea, I've changed the on-time method to accept anything thats more than 0 as an on state. I've also added a divide process.

TrystanLea's picture

Delete inputs

Its now possible to delete inputs

Mr. Sharkey's picture

Other uses and Enhancements

Thinking about how Emoncms works, I've been considering if it would be useful for monitoring remote sites at which I maintain broadcast equipment. Each site has a remote control that is accessible by telephone and functions and readings are available via DTMF control using the telephone keypad. The system is very clunky, though, in that you can't see an overview of what the readings are without dialing a bunch of commands into the phone and writing down (or remembering) the values. Emoncms could be a visual interface that could complement the dialup control of the equipment.

Freewheeling some ideas that would make this useful for my purpose, and possibly for others monitoring energy systems.

  • Status indicators.

    These might already be enabled? Most broadcast equipment outputs TTL logic to show the status of the system, interlocks closed, blowers running, filaments powered, high voltage engaged, etc, as well as various alarm logic signals, PA overload, high VSWR, etc.

    Having a method of sending a simple data bit (0 or 1) that would "illuminate" a javascript LED on the Dashboard could allow monitoring these status outputs. All routing and logic polarity would take place in the script running on the AVR at the remote site, the Dashboard would only need to be able to display the state of the logic. Multiple colors (red, green, grey for "off") would be useful here.

  • Display of text strings based on analog or status values:

    "The generator is [OFF]/[ON]"
    "Output power is within legal tolerances"
    "There is an alarm on function [XXX]"
    ...etc.

    Most radio personalities aren't too good at handing emergencies, so giving them plain instruction on the screen goes a long way towards helping them figure out what to do next.

  • Configurable colors on the "dials" (maybe this is already implemented or easily changed though CSS?)

    "Green is Good"
    "Yellow means Caution"
    "Red is BAD"

    Things like power output and temperature could be more easily understood if the colors on the dials (or graphs, etc) changed in response to the level indicated, or the background on which the "needle" indicates changed colors as the scale incremented rather then being shades of the same color.

  • Tabs on the Dashboard

    Some sites have backup equipment, things that don't need to be be shown right out front, but that need to be a click away when viewing readings and status.

    Having a tabbed system of displays would mean that readings and status indicators could be grouped together logically and display in their own tab/window.

Some of this might already be implemented, I haven't fully explored what the CMS can do. Once I get through the documentation, much will be explained and perhaps I can contribute to the development of these ideas.

Sergegsx's picture

Thank you going to try it now

Thank you going to try it now !!!

Sergegsx's picture

I have tried new version and

I have tried new version and problems.

- The inputs are not registered. Time since last input starts to grow until inactive.

- For some reason the inputs table starts adding new entries of the ones that already exist.

TrystanLea's picture

Re: inputs adding new entries

Sorry this is again due to the addition of a status field to the inputs table. With a status (integer) field added it should work as normal. 

TrystanLea's picture

re: Other uses and Enhancements

Great ideas! and this would be a nice application!

For status indicators, lets say the equipment sends a json string as follows:

{interlocks_closed:0,blowers_running:1,filaments_powered:1,high_voltage_engaged:1}

These will create the inputs given by the keys. You can the choose to link these through to feeds for logging and then to the javascript LED or there could be a javascript LED that gets it state from an input value rather than a feed value.

Text strings that respond to input and feed values should also be possible and yes tabbed dashboards, great ideas. I will add them to the todo list. 

It would be great to have your help with development and implementing these, let me know if you have any questions code and implementation wise. Im planning on working on code annotation and dev documentation more soon so hopefully it will get easier to work out what is going on.

 

Mr. Sharkey's picture

Correct, except...

>>
>> {interlocks_closed:0,blowers_running:1,filaments_powered:1,high_voltage_engaged:1}
>>

...Except that if (interlocks == 0), then so does everything else :-)

I was concerned after I posted this that the concepts might be too far from the intent and purpose of the OEM, but then I started thinking of applications in home energy monitoring:

"Time-of-Use Metering is [PEAK]/[OFF-PEAK]"
"Solar DHW Circulating pump is [OFF]/[ON]"
"Monthly kWh minimum quota has been reached"
"The meter reader was here today and left the gate open"

I did open /Dashboard/widgets/dial.js and saw where the segment colors are designated. After that, I tried adding more segments (finer granularity), but it bodged things up pretty well. Javascript is not my strong suit.

Getting something set up and running at one or more live transmitter sites would not be too difficult. Probably the stickiest part would be scaling the analog inputs so that the calibration was correct. Most systems output a 0-5 VDC analog signal for readings and TTL logic for status. Thinking of some on-the-fly calibration system, which would be easier than adjusting calibration variables in the sketch.

adool88's picture

Re: inputs adding new entries

 Thanks Trystan. I've same problem. How to add status field?

TrystanLea's picture

adding status field

If you have phpmyadmin installed,goto the input table and click on table structure, then below the structure description there should be an option for adding a field, click on go adding one field then enter in the field name of status and type integer. That should do it.

TrystanLea's picture

Building a comprehensive API

In the current implementation of emoncms the external API is set in the api_controller. Giving this some more thought, I think it might be better if the individual input, feed, user, dashboard, process controller server their own API. This way each action such as get a users feed list can either return a themed html page (the feeds page) or return a json feed of the users feed. So if you went to:

emoncms/feed/list.html -> it would serve the html themed page

or

emoncms/feed/list.json -> would return the json string

This seems to be the way other applications and web frameworks do it and I think it will make the emoncms application a little neater. I have made a start on this and will update soon with the implemented code.

UPDATE: new implementation complete:

Download:https://github.com/openenergymonitor/emoncms3

docs: http://openenergymonitor.org/emon/node/312

Andygodber's picture

 A couple more widget

 A couple more widget suggestions (and screeny of my current dashboard)

1. A general purpose meter/LED type numeric display. Slightly different to the current numeric output, in that it would be styled like one of the old rotating number devices, or LED or LCD etc. Fixed with 8? digits.

2. My dial which swings negative, previously mentioned elsewhere.

3 . Enhancement of (1) which tallies to an installed domestic meter (leccy, PV, Gas, water). Database and dashboard will need to be ammended to allow input of the initial meter reading, followed by continual increment of either KwH or impulses per time period etc. Probably easiest to start with electricity meter. Due to the discrepancies/inaccuracy of clamps, domestic meter and calaculated meter will vary over time, so adjustment function will be needed.

 

Amin Zayani's picture

 -languages modules would be

 -languages modules would be great (i'll add it in the body of the article)