{"id":39611104,"url":"https://github.com/emoncms/find","last_synced_at":"2026-01-18T08:07:22.826Z","repository":{"id":149301505,"uuid":"164418390","full_name":"emoncms/find","owner":"emoncms","description":"Find OpenEnergyMonitor devices on your local network","archived":false,"fork":false,"pushed_at":"2021-05-18T10:47:38.000Z","size":176,"stargazers_count":1,"open_issues_count":2,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-15T06:59:46.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/emoncms.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}},"created_at":"2019-01-07T10:48:56.000Z","updated_at":"2021-05-18T10:47:31.000Z","dependencies_parsed_at":"2023-09-22T21:49:38.214Z","dependency_job_id":null,"html_url":"https://github.com/emoncms/find","commit_stats":{"total_commits":33,"total_committers":6,"mean_commits":5.5,"dds":0.5151515151515151,"last_synced_commit":"7ea907ee45328f24572ab3398eb1aeaa828b72c7"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/emoncms/find","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoncms%2Ffind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoncms%2Ffind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoncms%2Ffind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoncms%2Ffind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emoncms","download_url":"https://codeload.github.com/emoncms/find/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emoncms%2Ffind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28533881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"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"}},"keywords":[],"created_at":"2026-01-18T08:07:15.755Z","updated_at":"2026-01-18T08:07:22.800Z","avatar_url":"https://github.com/emoncms.png","language":"JavaScript","readme":"# emoncms/find\n\nAn emoncms module to find OpenEnergyMonitor devices on your local network.\n\nhosted version: https://emoncms.org/find\n\n![EmonCMS.org find devices screenshot](emoncms-find.png?raw=true \"EmonCMS.org find devices screenshot\")\n\n## Problem\nIt can sometimes be an difficult finding a emonbase/emonpi on a home network to access the EmonCMS interface, hostname support can be tempremental and its easy to forget the router passwords to access the device list on the router. A network scan can be done using a 3rd party app like [fing](https://play.google.com/store/apps/details?id=com.overlook.android.fing) however this adds another step and complexity.\n\n## Solution\nWe have created an emoncms module that can be accessed from an existing EmonCMS intallation or from [emoncms.org](https://emoncms.org/find) that can scan the local network for devices with EmonCMS installed.\n\n#### This is done in 2 stages.\n\n1. Read the local IP Address\n2. Check every entry on the network for an EmonCMS installation.\n\nThe results are shown in a list along with the IP Address and type of device that returned a response. You can click any found device to access it's control panel.\n\n### Requirements\nThese changes will be available with the normal EmonPi and EmonCMS updates. In the mean time you can use the following to test.\n\n#### emonpi\nThe device type is set using the [emonpi](https://github.com/openenergymonitor/emonpi) repository. To update the code run the following:\n\n```\n$ cd /home/pi/emonpi\n$ git checkout master\n$ git pull\n```\n\n#### emoncms\n\nFor the device to respond with it's correct type you have to use the master branch of [emoncms](https://github.com/emoncms/emoncms).\n\n```\n$ cd /var/www/emoncms\n$ git checkout master\n$ git pull\n```\n\n\n\n---\n\n### TLDR;\nThis is written in JavaScript and only ran in the user's browser using a standard API (webRTC). Nothing is transmitted outside the local network.\n\n1. The RTCPeerConnection API allows the browser to open a connection to another ip address. Once this connection is initialised the local ip address can be read. \n\u003e This example shows what is returned by the WebRTC api (https://codepen.io/emrys/full/aPKPzv)\n\n2. Send 253 ajax requests (0.0.0.1 - 0.0.0.254) to every IPv4 address possible in the current subnet testing for responses from an EmonCMS install (eg `http://192.168.1.136/emoncms/describe`). Only correctly formatted responses are displayed in the list, anything else is ignored.\n\n4 different expected types are returned from an EmonCMS installation at the API endpoint `/describe`:-\n\n1. emonpi\n2. emonbase\n3. emoncms\n4. smartplug\n5. openevse\n\nThe module asks for confirmation from the user because it must open another tab changing from `https` to `http`.\n\nThis tool does not work using `https` as the local installation of EmonCMS doesn't use TLS to encrypt the communication between the client and server. The ajax requests would fail if done over `https` and no devices would be found.\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femoncms%2Ffind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femoncms%2Ffind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femoncms%2Ffind/lists"}