Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Last update: Jun 27, 2022

Emoncms

Build Status Codacy Badge

Emoncms is an open-source web application for processing, logging and visualising energy, temperature and other environmental data and is part of the OpenEnergyMonitor project.

Emoncms

Requirements

  • PHP (tested with 7.0.30)
  • MYSQL or MariaDB (tested with 15.1)
  • Apache (tested with 2.4.25)
  • Redis* (tested with 3.2.6)

*Redis is recommended because it reduces the number of disk writes and therefore prolongs disk life (noticeably on SD cards e.g. RaspberryPi). Some input-processors also require redis and fail silently if redis is not installed. Some environments such as shared hosting or as far as we have tried windows servers don't support redis hence why emoncms has a fall back mode that allows core operation without redis.

Using Emoncms

Important: Standard Emoncms and Emoncms.org

There are differences between the standard version of emoncms and the version of emoncms running on emoncms.org. This repository contains the code for the standard version of emoncms. This is the version installed on the OpenEnergyMonitor SD Card that comes with the EmonPi and EmonBase and is recommended for all self-install versions of emoncms.

The emoncms.org version Github: emoncms/emoncmsorg is a fork that is specific for multi-server installations. While both versions share the same roots, the code for emoncms.org differs significantly from the standard version of emoncms, the user experience is intended to be similar but there are currently a number of differences in the API and look of the inputs and feeds interfaces as well as a reduced feature set in general on emoncms.org in order to ensure stability. In general development on emoncms.org moves slower than the standard emoncms for this reason.

1. From the Guide

2. Emoncms Terminology

  • Input: An incoming datasource. Each input has an associated "node" identifier and a "key" sub-identifier. Inputs are entry points, only the last value and time of the input is recorded. To record historic data a feed needs to be created from an input.
  • Input: Node: A grouping identifier for an input or feed.
  • Input: Key: A sub-identifier for items within each Node.
  • Input process list (or input processing): A list of processes* performed sequentially on each input value as it is received on that input.
  • Process: A function that can be attached to the process list of an input to change the value or to save the value to a feed*.
  • Feed: A place where data is recorded, a time-series of datapoints. The standard time-series databases used by emoncms are PHPFina and PHPTimeSeries and were written as part of the emoncms project.
  • For a description of what each input process does in emoncms, see the helper note within the emoncms input processing configuration interface.

3. Emoncms.org API Reference

The following API references apply to emoncms.org. They differ slightly to the API available on EmonPI/EmonBase installs, the API refrence for which can be found from the inputs and feed pages when logged in locally.

Install

Recommended:

Experimental (not currently up to date):

Other (less supported, not tested on latest versions of emoncms)

  • Shared Linux Hosting
  • Windows Emoncms is developed and tested on Linux only and so additional research, steps may be required that are not covered in this guide.

Modules

Modules can be installed by downloading or git cloning into the emoncms/Modules folder. Be sure to check for database updates in Administration menu after installing new modules:

There are many other available modules such as the event module and openbem (open source building energy modelling module): check out the Emoncms repo list.

3rd party modules

Branches

  • master - The latest and greatest developments. Potential bugs, use at your own risk! All pull-requests should be made to the master branch.

  • stable - emonPi/emonBase release branch, regularly merged from master. Slightly more tried and tested. See release change log.

  • ARCHIVE low-write (v8.5) - Old emonpi/emonbase emoncms version (July 15 emonSD ready-to-go SD card image). Low-write mode is now available in v9.0. The low write version of emoncms is designed for running on SD cards. This is a cut down version of emoncms supporting only the phpfina and phptimeseries feed engines (no in built feed averaging or histograms) and a reduced input processor set. Archived branch

Upgrade

Data Backup

Development

Documentation development

For developers: The following lists the locations of the files that define emoncms's inbuilt documentation for the input and feed API's and input process descriptions:

Tools

  • PHPFina data file viewer - Easily explore phpfina timeseries feed engine data files directly without a full emoncms installation. Useful for checking backups and archived data.

Design

Note: due to ongoing development some docs may now be outdated

Emoncms timeseries database design (feed storage)

Android App

Google Play

GitHub Repo

Development Forum

More information

GitHub

https://github.com/emoncms/emoncms
Comments
  • 1. Input improvements

    emoncms input improvements

    • AES 128bit Encryption route
    • removal of .json requirement
    • ability to use subaction for node name, e.g: input/post/emontx?csv=100,200,300
    • new input/get/nodename api
    Reviewed by TrystanLea at 2017-08-18 11:15
  • 2. Emoncms calculation errors using redis 3.1.0 and 3.1.2

    I have found emoncms will stop accumulating when a limit defined by the update rate and size of increase reaches a certain level.

    In my case recording PV using a power to kWh process to record total kWh's has maxed out at 10000kWh's and has not recorded any increase since reaching that threshold.

    See the "10000 kWh ceiling in emoncms?" thread on the OEM forum, I can provide more data and screenshots if required.

    I'm not sure where to go with this as I'm not good with PHP, this is the "power to kWh" process in question

    I know there was a change, way back to make the "value" field in the feeds table (mySQL) a double but I have no idea if the sums are being done using floats or doubles, also is it possible that Redis could cause a "bottle-neck" somewhere?

    Any assistance appreciated

    Reviewed by pb66 at 2017-04-19 16:20
  • 3. Adding optional colour specification for graphing, change drag-box mode zoom for the plots, various bug fixes. Mouseover popups that show graph values. Automatic hiding of date-range buttons.

    LOTS of changes here.

    1. rawdata plots now have selectable colours:
      untitled
      untitled2
    2. Since the plots auto-scale the y axis, having the drag-select-to-zoom mode set to draw-box from the corners is confusing. Flot has a mode that makes this much more apparent, by letting you just select the x extents, and the whole Y is selected automatically:
      untitled3
    3. The indentation mess (mixed 2/4 space indentation with scattered use of tabs) is now consistently all-tabs.

    This is now the default behaviour for the rawdata plot.

    Reviewed by fake-name at 2014-01-27 10:08
  • 4. Menu revamp

    • Fix left menu system quirks
    • Fix left scroll bar
    • Add auto hide on first page load if menu is overlaying content
    • Fix content centering / fitting on resize / screen rotation
    • Add shadows to menus
    • Improve readability contrast on menu mouse over
    • Add auto hide top menu on scroll if no lateral menus are open
    • Fix menu-l2-controls abnormal movement
    Reviewed by chaveiro at 2021-10-03 19:57
  • 5. Revamp Admin Module

    Fixs or add the follow:

    • Full components manager -- Add component uninstall -- Add component install -- Add components available list -- Notify if updates available
    • added disks read load statistic
    • improved disks write load statistic to use (if installed) iostats, remove hardcoded partitions to support non raspberypi devices
    • added php native support for components update with git
    • added cpu info
    • added machine brand model and bios description
    • show all services states and added ssh
    • Added support for running services from PHP when redis not available.
    • Move service-runner trigger run responsibility to the model class runService() function.
    • User list view return link
    • Use model class the right way: remove static usage and global 'nightmare'
    • Support disk write load stats without redis
    • Preparation for future script execution / components update without redis
    • Remove absolute paths from script files (use config base path instead)
    • Uniform code across all modules
    • Minor UI fixs
    • Fix state machine of update logs when needed so that errors can be seen
    • Deal with lack of redis
    • Make use of json result codes for all errors across admin views (components, log, firmware and update)
    • Move views to ./Views/ folder
    • Check symbolic link exists when deleting a module
    • Added current user info to main admin page
    Reviewed by chaveiro at 2021-09-23 17:03
  • 6. unable to register a new user

    Hi , I have intsalled emoncms on ubuntu , followed all the steps shown in the tutorial , Now when i open up the emoncms I get the login /register page , when I try to add a new user it will show an empty red alert box and wont go ahead .

    Reviewed by dmsherazi at 2014-04-07 14:41
  • 7. can not source feed a real sensor. Cannot use virtual feed as source

    When trying to create new virtual feed from a real one using source feed, emoncms says: ERROR: Could not save processlist. Cannot use virtual feed as source

    I tried multiple times. There is also a tread on the forum https://community.openenergymonitor.org/t/virtual-feed-add-values-from-input/1835

    latest version, 9.9.8

    Reviewed by danpadure at 2019-03-26 12:40
  • 8. Non-string variables returned as "strings" - part deux!

    #273

    When using the feed api to return the last value it is returned as a string eg "2222", I have been using a bash script to interact with emoncms and found the api call results are causing issues.eg

    RESULT=$(curl -s "http://myemoncmsserver.com/feed/value.json?id=123&apikey=abc..123")
    echo $((RESULT+2))
    

    returns

    -bash: "2222": syntax error: operand expected (error token is ""2222"")
    

    Where as

    RESULT="2222"
    echo $((RESULT+2))
    

    returns 2224 (as does setting RESULT=2222 without any quotes), the "included" quotes prevent the result being seen as numeric and then the quotes are accepted as part of the string resulting in double quotes.

    Since the api is calling the last VALUE shouldn't that be numeric (or null) not a string???

    Reviewed by pb66 at 2016-06-21 16:11
  • 9. Add QR code generation

    Add QR code generation to user profile information using the Google API. This is a pre-cursor to an upgrade of the Android app to be able to scan in the QR code (rather than typing the huge API key).

    Reviewed by AndyTaylorTweet at 2016-04-30 16:41
  • 10. Initial zoom level option in Visualizations

    Default zoom level of the radata visualization (day , week, month, year) in the configuration panel.

    By default the visualization uses week zoom. The zoom level selection is robust to unexpected values or undefined value.

    It could be extended to other visualizations. I can prepare another PR to do that.

    Reviewed by RDCH106 at 2016-11-04 11:31
  • 11. Initial comit of hierarchical ini files to replace settings.php

    Relates to #923

    This commit converts the settings.php to a settings.ini structure.

    WARNING - ini files in root folder are a BAD idea. Location is just for testing.

    To test, copy default-settings.ini to a settings.ini. Add in your specific settings to the ini file (delete any left unchanged to test concept). Delete the contents of your settings.php and refresh.

    Not finished yet but works.

    • Could make it look for other ini files.
    • Does not cover emonpi settings.
    • location of settings files to be discussed (must not be in root folder).
    • Is there a better way to assign each variable.
    • do we need to maintain the Environmental variables?
    Reviewed by borpin at 2018-08-29 22:01
  • 12. My Electric app showing kWh for cost

    RPi 3B+ Raspbian Buster emonCMS 11.0.9

    The My Electric app shows the same numeric value for both kWh and cost on the app dashboard. The displayed MQTT value, and the value in the My Electric 2 is correct. I have deleted all app dashboards, and re-created, and the issue persists. The parameters selected in both My Electric and My Electric 2 are use: power1pluspower2, and use_kWh: power1pluspower2_kWh for both apps. image image image image image

    Reviewed by techfixpros at 2022-06-07 01:28
  • 13. Make update log optionally viewable

    It'd be useful if the update logs viewability was toggleable.

    It appears for the time that you are running the update, but disappears shortly afterwards. Which makes it hard to scroll back through it and see what updated etc. If you reload the page, it does reappear briefly, but then disappears again.

    I can understand hiding it when it's done, but it'd be useful to have a way to make it reappear on demand again

    Reviewed by reedy at 2022-06-03 09:17
  • 14. Weird spike in kWh to kWh/day feed

    Hi,

    I'm running v11 low-write on a RPi Zero 2W for a while, and so far the kWh/d conversion was spot on, untill a good week ago I suddenly have a huge bump/spike in the calculation. Could I have emonCMS recalculate kWh/d data with the kWh feed (which is totally fine). The feeds are used to track my EV charging and calculating cost per month.

    afbeelding

    Reviewed by fluppie at 2022-05-29 20:06
  • 15. Update EmonLogger

    Ref #1803

    An exception is currently raised when the log file cannot be created.

    This handles that.

    In addition, if the log file was not writeable, then the logenabled was never set to false.

    Please test.

    Reviewed by borpin at 2022-05-27 18:57
  • 16. current emoncms master seems to fail on php8.1

    Hi,

    I'm using emoncms on Archlinux. I worked well. Lastly i upgraded Archlinux to current ver. It has php8.1 and it looks emoncms is not ready for pho8.1. Error reported by emoncms:

    Fatal error: Uncaught TypeError: fclose(): Argument #1 ($stream) must be of type resource, bool given in /var/lib/emoncms/www/Lib/EmonLogger.php:43 Stack trace: #0 /var/lib/emoncms/www/Lib/EmonLogger.php(43): fclose() #1 /var/lib/emoncms/www/index.php(29): EmonLogger->__construct() #2 {main} thrown in /var/lib/emoncms/www/Lib/EmonLogger.php on line 43
    
    Reviewed by warpme at 2022-05-23 19:00
  • 17. System Service status improvements

    The system service interface is excellent as is the ability to control services.

    However, the enabled/disabled state is not reflected in the status text.

    Note difference in the 'Loaded' text.

    When disabled

    [email protected]:/var/www/emoncms $ systemctl status demandshaper.service
    ● demandshaper.service - Emoncms Demandshaper service
       Loaded: loaded (/lib/systemd/system/demandshaper.service; disabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: https://github.com/emoncms/demandshaper/blob/master/readme.md
    

    when enabled

    [email protected]:/var/www/emoncms $ systemctl status demandshaper.service
    ● demandshaper.service - Emoncms Demandshaper service
       Loaded: loaded (/lib/systemd/system/demandshaper.service; enabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: https://github.com/emoncms/demandshaper/blob/master/readme.md
    
    

    When stopped, the 'stop' button disappears.

    I suggest that

    • When enabled only the disabled button is available and Visa versa
    • When Started only the Stop button is available and visa versa.
    • Add in a note stating that 'disable' prevents auto-restart at boot as users may not understand the difference between stopping and disabling.
    Reviewed by borpin at 2022-05-18 10:28
DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location
DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location

DomainMOD is an open source application written in PHP & MySQL used to manage your domains and other internet assets in a central location. DomainMOD also includes a Data Warehouse framework that allows you to import your web server data so that you can view, export, and report on your live data.

Jun 12, 2022
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.
Open Source Voucher Management System is a web application for manage voucher. used PHP with Laravel Framework and use MySQL for Database.

Voucher Management System is a web application for manage voucher. You can create and manage your voucher. Voucher Management System is used PHP with Laravel Framework and use MySQL for Database.

May 22, 2022
Simple Laravel Invoice Generator Sling — open-source web application that helps you create invoices and track income.
 Simple Laravel Invoice Generator Sling — open-source web application that helps you create invoices and track income.

Simple Laravel Invoice Generator Sling — open-source web application that helps you create invoices and track income. Table of Contents About

Feb 14, 2022
phpIPAM is an open-source web IP address management application.

phpIPAM is an open-source web IP address management application. Its goal is to provide light and simple IP address management application. It is ajax-based using jQuery libraries, it uses php scripts and javascript and some HTML5/CSS3 features, so some modern browser is preferred to be able to display javascript quickly and correctly.

Jun 25, 2022
Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework.

Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

Jun 26, 2022
Simple blog concept with features such authentication (creating accounts, logging in) and commenting.
Simple blog concept with features such authentication (creating accounts, logging in) and commenting.

Simple blog concept with features such authentication (creating accounts, logging in) and commenting. Styling done with tailwindcss and inline javascript is provided by alpineJS.

Oct 26, 2021
Server manager is a open source project made for people so that they can add the servers to one single place irrespective of their provider and manage it through one location.
Server manager is a open source project made for people so that they can add the servers to one single place irrespective of their provider and manage it through one location.

Server Manager Are you sick of having to log into hundreads of different website just to access your server? Well we got you, Server manager is a open

Jan 18, 2022
Damn Vulnerable Web Application (DVWA) is a PHP/MySQL web application that is damn vulnerable.

Damn Vulnerable Web Application (DVWA) is a PHP/MySQL web application that is damn vulnerable. Its main goal is to be an aid for security professionals to test their skills and tools in a legal environment, help web developers better understand the processes of securing web applications and to aid both students & teachers to learn about web application security in a controlled class room environment.

Jun 30, 2022
An open source self hosted notes and bookmarks taking web app.
An open source self hosted notes and bookmarks taking web app.

Benotes An open source self hosted web app for your notes and bookmarks side by side. This project is currently in Beta. You may encounter bugs or err

Jun 30, 2022
Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates.
Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates.

Introduction Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates. Web Applica

Jul 2, 2022
OpenEMR is a Free and Open Source electronic health records and medical practice management application

OpenEMR is a Free and Open Source electronic health records and medical practice management application. It features fully integrated electronic health records, practice management, scheduling, electronic billing, internationalization, free support, a vibrant community, and a whole lot more. It runs on Windows, Linux, Mac OS X, and many other platforms.

Jul 1, 2022
Mibew Messenger - open-source live support application written in PHP and MySQL

Mibew Messenger is an open-source live support application written in PHP and MySQL. It enables one-on-one chat assistance in real-time directly from your website.

May 27, 2022
EspoCRM open source CRM application

EspoCRM is an Open Source CRM (Customer Relationship Management) software that allows you to see, enter and evaluate all your company relationships regardless of the type. People, companies or opportunities - all in an easy and intuitive interface.

Jun 21, 2022
OroCRM is an open source Client Relationship Management (CRM) application

OroCRM is an open source Client Relationship Management (CRM) application that allows to create a 360° view of your customers across multiple channels, organize the sales pipeline, manage account and contact information, communicate with customers, run marketing campaigns and track campaign performance.

Jun 23, 2022
Open source knowledge base application for Teams
Open source knowledge base application for Teams

Opensource knowledge base application for Teams. Introduction Opus is a place for your team to document who you are, what you do and how you do it. It

Jun 30, 2022
This is a Task Manager system for managing your task. You can categorize your tasks and upload music to the project And a whole host of other features

taskManager Login and register Each user can have their own task Categorize tasks by creating folders Edit and Delete Folders Search for Tasks Show nu

May 22, 2022
Rafa Cake and Bakery is a web-based application project that aims to introduce Rafa Cake and Bakery, introduce what products are sold and can also order them via Whatsapp.

Rafa-cake-and-bakery Rafa Cake and Bakery is a web-based application project that aims to introduce Rafa Cake and Bakery, introduce what products are

Jun 19, 2022
Final Project of IS207 - Web Developent Application
Final Project of IS207 - Web Developent Application

Web-Social-Network Các công nghệ được sử dụng Front-end: HTML,CSS,Javascript. Back-end: PHP, MySQL. Yêu cầu và dướng dẫn sử dụng Yêu cầu Git Bash, Vis

Jan 8, 2022