HeatpumpMonitor.org
April 24, 2026 ยท View on GitHub
An open source initiative to share and compare heat pump performance data.
See: https://heatpumpmonitor.org

Install on existing Apache2 server
Install public site content in /var/www
sudo ln -s /home/USERNAME/heatpumpmonitor.org/www/ /var/www/heatpumpmonitororg
Create a mariadb/mysql database:
CREATE DATABASE heatpumpmonitor;
Copy example.settings.php:
cp www/example.settings.php settings.php
Modify database credentials to match your system
Load public data from heatpumpmonitor.org to create functioning development environment
php load_dev_env_data.php
Login using 'Self hosted data' and username and password: admin:admin
Run using Docker
docker compose build
docker compose up
Site should now be running on http://localhost:8080
Emoncms runs on http://localhost:8081 (same compose stack).
Optional: load Emoncms testdataset feeds
The testdataset repo (clone as a sibling of this project, or set a custom path) can populate phpfina feeds into your dev Emoncms MySQL user for apps such as MyHeatpump.
- Enable:
docker compose --profile testdata up(or add--profile testdatawhen you already useup). This starts one-shot serviceload_emoncms_testdataafterload_dev_env_dataand a healthyemoncmscontainer. TESTDATASET_PATH: Host path to the testdataset repo. Default in compose is../testdataset(relative to this project directory). Set in a.envfile next todocker-compose.ymlif your clone lives elsewhere (absolute path recommended).TESTDATASET_EMONCMS_USER_ID: Numeric Emoncms user id to attach feeds to. Default1(theadminuser created byload_dev_env_datawhenLOAD_USERS=1). Override in.enve.g.TESTDATASET_EMONCMS_USER_ID=2foruser2.PHP_CLI_MEMORY_LIMIT: PHP CLI memory foradd_feeds_to_account.php/post_process.php(default1024M). Raise in.envif postprocess still exhausts memory.
After the feeds are imported, load_emoncms_testdata also runs docker/testdataset/configure_hpm_app.php to:
- Create a
myheatpumpapp in Emoncms for the target user (via/app/add.json+/app/setconfig.json). - Map the testdataset feeds (
heatpump_elec,heatpump_heat,heatpump_flowT, ...) into the app config by name. - Point the user's heatpumpmonitor
system_metarow at the newapp_id+readkey(creating one if missing).
Overrides (set in .env beside docker-compose.yml): HPM_APP_NAME (default My Heatpump), HPM_SYSTEM_LOCATION (default Test System). This step is idempotent โ re-running will reuse an existing app with the same name and update the same system_meta row.
Re-running the loader may append or duplicate data; reset the emon-phpfina volume (and re-run stack) for a clean feed store.
Scripts and layout: docker/testdataset/.
Users
Login using 'Self hosted data' and username and password: admin:admin for the admin user and user<N>:password for any of the users accounts