{"id":16238576,"url":"https://github.com/trombik/roomping","last_synced_at":"2026-04-13T01:38:52.531Z","repository":{"id":143058917,"uuid":"225097827","full_name":"trombik/roomPing","owner":"trombik","description":"ICMP sensor on ESP32 and ESP8266","archived":false,"fork":false,"pushed_at":"2020-08-26T06:43:07.000Z","size":343,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-08T09:14:24.075Z","etag":null,"topics":["esp-idf","esp32","esp8266","icmp","monitoring","network"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trombik.png","metadata":{"files":{"readme":"README.development.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2019-12-01T02:46:42.000Z","updated_at":"2020-06-18T11:42:49.000Z","dependencies_parsed_at":"2023-04-13T04:01:50.087Z","dependency_job_id":null,"html_url":"https://github.com/trombik/roomPing","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/trombik/roomPing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trombik%2FroomPing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trombik%2FroomPing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trombik%2FroomPing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trombik%2FroomPing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trombik","download_url":"https://codeload.github.com/trombik/roomPing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trombik%2FroomPing/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31736723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T22:19:12.206Z","status":"ssl_error","status_checked_at":"2026-04-12T22:18:33.088Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["esp-idf","esp32","esp8266","icmp","monitoring","network"],"created_at":"2024-10-10T13:40:49.458Z","updated_at":"2026-04-13T01:38:52.492Z","avatar_url":"https://github.com/trombik.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Development\n\n## Required applications\n\n* `git`\n* `openssl`\n* an HTTP client, such as `fetch(1)`, `wget`, or `curl`\n* `esp-idf` and its tool-chains installed\n* `astyle` (optional)\n\n## Environment variables\n\n### `IDF_PATH`\n\n`IDF_PATH` must be path to `esp-idf` directory.\n\n```console\nexport IDF_PATH=~/github/trombik/esp-idf\n```\n\n### `PATH`\n\n`PATH` must include path to the tool-chain `bin` directory, where\n`xtensa-esp32-elf-gcc` and others are.\n\n```console\nexport PATH=\"/usr/local/xtensa-esp32-elf/bin:$PATH\"\n```\n\n### `ESPPORT`\n\nSet `ESPPORT` to serial port of your device.\n\n```console\nexport ESPPORT=/dev/ttyU0\n```\n\n## Generating self-signed certificates for HTTPS\n\nThe `OTA` process fetches firmware over HTTPS. Create your own self-signed\ncertificates.\n\n```console\n\u003e pwd\n/home/trombik/github/trombik/roomPing\n\u003e openssl req -x509 -newkey rsa:2048 -keyout ca_key.pem -out ca_cert.pem -days 365 -nodes\nGenerating a RSA private key\n...........+++++\n...........................................................................+++++\nwriting new private key to 'ca_key.pem'\n-----\nYou are about to be asked to enter information that will be incorporated\ninto your certificate request.\nWhat you are about to enter is what is called a Distinguished Name or a DN.\nThere are quite a few fields but you can leave some blank\nFor some fields there will be a default value,\nIf you enter '.', the field will be left blank.\n-----\nCountry Name (2 letter code) [AU]:\nState or Province Name (full name) [Some-State]:\nLocality Name (eg, city) []:\nOrganization Name (eg, company) [Internet Widgits Pty Ltd]:\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:192.168.1.100\nEmail Address []:\n```\n\nNote that, when `openssl` asks questions, you just hit enter key except when\nit asks `Common Name`. The `Common Name` should be the IP address or a valid\nDNS name of HTTPS server. Make sure this matches the IP address or the host\nname of `PROJECT_LATEST_APP_URL`.\n\nCopy the keys.\n\n```console\n\u003e cp ca_key.pem  src/main/certs/ca_key_ota.pem\n\u003e cp ca_cert.pem src/main/certs/ca_cert_ota.pem\n```\n\n### Set `PROJECT_LATEST_APP_URL`\n\nNavigate to `Project configuration` -\u003e `URL to the latest application`. Set\nthe value to: `https://ip.add.re.ss:8070/build/roomPing.bin`.\n\nMake sure to replace `ip.add.re.ss` with the actual IP address of the local\nmachine.\n\n```console\n\u003e $IDF_PATH/tools/idf.py menuconfig\n```\n\n### Running HTTPS server on the local machine\n\nRun HTTPS server. Do NOT use `openssl s_server -HTTP`. You should use a\nfull-fledged HTTPS server, such as `nginx`, to avoid weird issues.  An example\n`nginx.conf` is located at [`tools/nginx.conf`](tools/nginx.conf).\n\nMake sure the URL works.\n\n`wget(1)` example output:\n\n```console\n\u003e pwd\n/home/trombik/github/trombik/roomPing/src\n\u003e wget --ca-certificate=main/certs/ca_cert_ota.pem https://192.168.1.54:8070/build/roomPing.bin\n--2019-12-02 13:43:11--  https://192.168.1.54:8070/build/roomPing.bin\nConnecting to 192.168.1.54:8070... connected.\nHTTP request sent, awaiting response... 200 ok\nLength: unspecified [text/plain]\nSaving to: ‘roomPing.bin’\n```\n\n`fetch(1)` example output:\n\n```console\n\u003e pwd\n/home/trombik/github/trombik/roomPing/src\n\u003e fetch --ca-cert main/certs/ca_cert_ota.pem  https://192.168.1.54:8070/build/roomPing.bin\nfetch: https://192.168.1.54:8070/build/roomPing.bin: size of remote file is not known\nroomPing.bin                                           826 kB  443 MBps    00s\n```\n\n### Building the latest firmware and flashing it\n\nTo perform `OTA`, the firmware on the device must be newer than `FIXME`. If\nnot, update the firmware over USB serial.\n\n```console\n\u003e pwd\n/home/trombik/github/trombik/roomPing\n\u003e cd src\n\u003e $IDF_PATH/tools/idf.py flash\n```\n\n### Performing `OTA`\n\nMake sure the version of the running firmware is older than the new firmware.\n\nSet run to `esp/ota/set`.\n\n```console\n\u003e mosquitto_pub -h ip.add.re.ss -t 'homie/foo/esp/reboot/set' -m 'reboot'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrombik%2Froomping","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrombik%2Froomping","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrombik%2Froomping/lists"}