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.
Longer term plans
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
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;
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.
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 :)
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
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
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
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
iPhone web-app
Thankyou Paul, I will look into it
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.
emoncmsv3 improvements
In responce to Sergegsx suggestions here: http://openenergymonitor.org/emon/node/291
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.
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
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:
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?
i have tried deleting a feed
i have tried deleting a feed but it continues to appear on feed screen.
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.
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
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
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.
Delete inputs
Its now possible to delete inputs
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.
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.
"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.
"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.
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.
Thank you going to try it now
Thank you going to try it now !!!
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.
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.
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.
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.
Re: inputs adding new entries
Thanks Trystan. I've same problem. How to add status field?
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.
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
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.
-languages modules would be
-languages modules would be great (i'll add it in the body of the article)