{"id":32214,"name":"HeatpumpMonitor.org","description":"An open source initiative to share and compare heat pump performance data.","url":"https://github.com/openenergymonitor/heatpumpmonitor.org","last_synced_at":"2026-06-16T12:30:23.518Z","repository":{"id":63182781,"uuid":"565181116","full_name":"openenergymonitor/heatpumpmonitor.org","owner":"openenergymonitor","description":"public list of heat pumps sharing performance data via emoncms","archived":false,"fork":false,"pushed_at":"2026-06-03T16:18:54.000Z","size":3064,"stargazers_count":29,"open_issues_count":44,"forks_count":12,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-06-11T10:04:08.435Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openenergymonitor.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-12T15:39:22.000Z","updated_at":"2026-06-04T18:11:08.000Z","dependencies_parsed_at":"2024-03-09T13:23:50.536Z","dependency_job_id":"702f4788-fe25-4cbf-8dac-fc2627ba19fb","html_url":"https://github.com/openenergymonitor/heatpumpmonitor.org","commit_stats":{"total_commits":423,"total_committers":6,"mean_commits":70.5,"dds":"0.21513002364066192","last_synced_commit":"652a43c7f466185a06106f7bb4fbfb9829da4610"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/openenergymonitor/heatpumpmonitor.org","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openenergymonitor","download_url":"https://codeload.github.com/openenergymonitor/heatpumpmonitor.org/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34281700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"openenergymonitor","name":"OpenEnergyMonitor","uuid":"758944","kind":"organization","description":"Open-source energy monitoring tools to help us relate to our use of energy, our energy systems and the challenge of sustainable energy. ","email":"contact@openenergymonitor.zendesk.com","website":"https://openenergymonitor.org","location":"United Kingdom","twitter":"Openenergymon","company":null,"icon_url":"https://avatars.githubusercontent.com/u/758944?v=4","repositories_count":53,"last_synced_at":"2023-03-12T00:36:21.368Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/openenergymonitor","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-03T01:55:10.133Z","updated_at":"2023-03-12T00:36:21.393Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openenergymonitor","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openenergymonitor/repositories"},"packages":[],"commits":{"id":1343551,"full_name":"openenergymonitor/heatpumpmonitor.org","default_branch":"main","total_commits":798,"total_committers":10,"total_bot_commits":19,"total_bot_committers":1,"mean_commits":79.8,"dds":0.26190476190476186,"past_year_total_commits":356,"past_year_total_committers":6,"past_year_total_bot_commits":19,"past_year_total_bot_committers":1,"past_year_mean_commits":59.333333333333336,"past_year_dds":0.3061797752808989,"last_synced_at":"2026-06-13T11:03:16.542Z","last_synced_commit":"c652b777597c907b9184f714ddeb5d07f3a3a490","created_at":"2023-09-12T09:22:49.669Z","updated_at":"2026-06-13T11:02:45.877Z","committers":[{"name":"TrystanLea","email":"trystan.lea@gmail.com","login":null,"count":589},{"name":"Jeremy Poulter","email":"jpoulter@webgains.com","login":"jeremypoulter","count":80},{"name":"MrTimbones","email":"thefluffanutta@gmail.com","login":"MrTimbones","count":56},{"name":"Glyn Hudson","email":"glyn.hudson@gmail.com","login":"glynhudson","count":26},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":19},{"name":"Trystan Lea","email":"trystan.lea@googlemail.com","login":"TrystanLea","count":15},{"name":"Kamil Baczkowicz","email":"kamil.baczkowicz@gmail.com","login":"kamilfb","count":6},{"name":"MyForest","email":"david@myforest.com","login":"MyForest","count":4},{"name":"Sam Reed","email":"sam@reedyboy.net","login":"reedy","count":2},{"name":"Simon Bennett","email":"simon@bennett.im","login":"mrsimonbennett","count":1}],"past_year_committers":[{"name":"TrystanLea","email":"trystan.lea@gmail.com","login":null,"count":247},{"name":"Jeremy Poulter","email":"jpoulter@webgains.com","login":"jeremypoulter","count":80},{"name":"copilot-swe-agent[bot]","email":"198982749+Copilot","login":"Copilot","count":19},{"name":"Glyn Hudson","email":"glyn.hudson@gmail.com","login":"glynhudson","count":7},{"name":"Sam Reed","email":"sam@reedyboy.net","login":"reedy","count":2},{"name":"Simon Bennett","email":"simon@bennett.im","login":"mrsimonbennett","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-15T00:00:11.107Z","repositories_count":6259925,"commits_count":882471024,"contributors_count":35087589,"owners_count":1166807,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"openenergymonitor/heatpumpmonitor.org","html_url":"https://github.com/openenergymonitor/heatpumpmonitor.org","last_synced_at":"2026-06-13T11:01:03.858Z","status":"active","issues_count":76,"pull_requests_count":59,"avg_time_to_close_issue":15372342.96875,"avg_time_to_close_pull_request":1170181.2448979593,"issues_closed_count":32,"pull_requests_closed_count":49,"pull_request_authors_count":12,"issue_authors_count":9,"avg_comments_per_issue":0.618421052631579,"avg_comments_per_pull_request":0.7966101694915254,"merged_pull_requests_count":31,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":26,"past_year_pull_requests_count":28,"past_year_avg_time_to_close_issue":4639078.857142857,"past_year_avg_time_to_close_pull_request":1774579.388888889,"past_year_issues_closed_count":7,"past_year_pull_requests_closed_count":18,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":3,"past_year_avg_comments_per_issue":0.6153846153846154,"past_year_avg_comments_per_pull_request":0.6071428571428571,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":15,"created_at":"2023-09-12T09:22:59.689Z","updated_at":"2026-06-13T11:01:03.858Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/openenergymonitor%2Fheatpumpmonitor.org/issues","issue_labels_count":{"enhancement":17,"bug":8,"documentation":1},"pull_request_labels_count":{},"issue_author_associations_count":{"MEMBER":51,"COLLABORATOR":15,"NONE":9,"CONTRIBUTOR":1},"pull_request_author_associations_count":{"COLLABORATOR":25,"NONE":14,"CONTRIBUTOR":12,"MEMBER":8},"issue_authors":{"glynhudson":38,"MrTimbones":15,"TrystanLea":13,"zarch1972":3,"reedy":3,"langestefan":1,"irecord":1,"JonasGhost":1,"BenjaminWatts":1},"pull_request_authors":{"jeremypoulter":20,"MrTimbones":6,"TrystanLea":5,"Arifah25":5,"kamilfb":4,"hakim813":4,"Copilot":3,"reedy":3,"MyForest":3,"glynhudson":3,"putrifatirah":2,"mrsimonbennett":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-06-15T00:00:22.443Z","repositories_count":14809199,"issues_count":33182178,"pull_requests_count":109443202,"authors_count":11306839,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"enhancement":6,"bug":4},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"MEMBER":23,"NONE":2,"CONTRIBUTOR":1},"past_year_pull_request_author_associations_count":{"COLLABORATOR":19,"CONTRIBUTOR":6,"NONE":2,"MEMBER":1},"past_year_issue_authors":{"glynhudson":22,"reedy":3,"TrystanLea":1},"past_year_pull_request_authors":{"jeremypoulter":20,"Copilot":3,"reedy":3,"glynhudson":1,"mrsimonbennett":1},"maintainers":[{"login":"glynhudson","count":41,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/glynhudson"},{"login":"MrTimbones","count":21,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/MrTimbones"},{"login":"jeremypoulter","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jeremypoulter"},{"login":"TrystanLea","count":18,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/TrystanLea"}],"active_maintainers":[{"login":"glynhudson","count":23,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/glynhudson"},{"login":"jeremypoulter","count":19,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/jeremypoulter"},{"login":"TrystanLea","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/TrystanLea"}]},"events":{"total":{"MemberEvent":2,"PullRequestEvent":49,"ForkEvent":4,"IssuesEvent":55,"WatchEvent":4,"IssueCommentEvent":34,"PushEvent":123,"PullRequestReviewEvent":6,"PullRequestReviewCommentEvent":8,"CreateEvent":5},"last_year":{"MemberEvent":2,"PullRequestEvent":33,"IssuesEvent":42,"WatchEvent":2,"IssueCommentEvent":16,"PushEvent":106,"PullRequestReviewEvent":6,"PullRequestReviewCommentEvent":8,"CreateEvent":4}},"keywords":[],"dependencies":[{"ecosystem":"docker","filepath":"Dockerfile","sha":null,"kind":"manifest","created_at":"2023-09-22T15:34:58.376Z","updated_at":"2023-09-22T15:34:58.376Z","repository_link":"https://github.com/openenergymonitor/heatpumpmonitor.org/blob/main/Dockerfile","dependencies":[{"id":13877074349,"package_name":"php","ecosystem":"docker","requirements":"8.0-apache","direct":true,"kind":"build","optional":false}]},{"ecosystem":"docker","filepath":"docker-compose.yml","sha":null,"kind":"manifest","created_at":"2023-09-22T15:35:00.113Z","updated_at":"2023-09-22T15:35:00.113Z","repository_link":"https://github.com/openenergymonitor/heatpumpmonitor.org/blob/main/docker-compose.yml","dependencies":[{"id":13877074841,"package_name":"mariadb","ecosystem":"docker","requirements":"11.0","direct":true,"kind":"runtime","optional":false}]}],"score":6.593044534142437,"created_at":"2023-09-12T07:44:37.754Z","updated_at":"2026-06-16T12:30:23.526Z","avatar_url":"https://github.com/openenergymonitor.png","language":"PHP","category":"Consumption","sub_category":"Buildings and Heating","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# HeatpumpMonitor.org\n\nAn open source initiative to share and compare heat pump performance data.\n\n## See: [https://heatpumpmonitor.org](https://heatpumpmonitor.org)\n\n![heatpumpmonitor.png](heatpumpmonitor.png)\n\n## Install on existing Apache2 server\n\nInstall public site content in /var/www\n\n    sudo ln -s /home/USERNAME/heatpumpmonitor.org/www/ /var/www/heatpumpmonitororg\n    \nCreate a mariadb/mysql database:\n\n    CREATE DATABASE heatpumpmonitor;\n    \nCopy example.settings.php:\n\n    cp www/example.settings.php settings.php\n    \nModify database credentials to match your system\n\nLoad public data from heatpumpmonitor.org to create functioning development environment\n\n    php load_dev_env_data.php\n\nLogin using 'Self hosted data' and username and password: admin:admin\n\n## Run using Docker\n\n    docker compose build\n    docker compose up\n\nSite should now be running on \u003chttp://localhost:8080\u003e\n\nEmoncms runs on \u003chttp://localhost:8081\u003e (same compose stack).\n\n### Optional: load Emoncms testdataset feeds\n\nThe [testdataset](https://github.com/emoncms/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.\n\n- **Enable:** `docker compose --profile testdata up` (or add `--profile testdata` when you already use `up`). This starts one-shot service `load_emoncms_testdata` after `load_dev_env_data` and a healthy `emoncms` container.\n- **`TESTDATASET_PATH`:** Host path to the testdataset repo. Default in compose is `../testdataset` (relative to this project directory). Set in a `.env` file next to `docker-compose.yml` if your clone lives elsewhere (absolute path recommended).\n- **`TESTDATASET_EMONCMS_USER_ID`:** Numeric Emoncms user id to attach feeds to. Default `1` (the `admin` user created by `load_dev_env_data` when `LOAD_USERS=1`). Override in `.env` e.g. `TESTDATASET_EMONCMS_USER_ID=2` for `user2`.\n- **`PHP_CLI_MEMORY_LIMIT`:** PHP CLI memory for `add_feeds_to_account.php` / `post_process.php` (default `1024M`). Raise in `.env` if postprocess still exhausts memory.\n\nAfter the feeds are imported, `load_emoncms_testdata` also runs `docker/testdataset/configure_hpm_app.php` to:\n\n1. Create a `myheatpump` app in Emoncms for the target user (via `/app/add.json` + `/app/setconfig.json`).\n2. Map the testdataset feeds (`heatpump_elec`, `heatpump_heat`, `heatpump_flowT`, ...) into the app config by name.\n3. Point the user's heatpumpmonitor `system_meta` row at the new `app_id` + `readkey` (creating one if missing).\n\nOverrides (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.\n\nRe-running the loader may append or duplicate data; reset the `emon-phpfina` volume (and re-run stack) for a clean feed store.\n\nScripts and layout: [docker/testdataset/](docker/testdataset/).\n\n## Users\n\nLogin using 'Self hosted data' and username and password: `admin:admin` for the admin user and `user\u003cN\u003e:password` for any of the users accounts\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["emoncms","openenergymonitor","sustainability","emonpi","hardware-designs","emonth","humidity-sensor","temperature-sensor","rfm12b","rfm12pi"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/32214","html_url":"https://ost.ecosyste.ms/projects/32214"}