{"id":18993972,"url":"https://github.com/bvujovic/sensornodeesp","last_synced_at":"2026-05-11T07:13:43.580Z","repository":{"id":177062138,"uuid":"654226754","full_name":"bvujovic/SensorNodeESP","owner":"bvujovic","description":"Data from sensor (PIR, CO2, smoke/water detectors...) is logged and sometimes sent to user (WhatsApp message, E-mail).","archived":false,"fork":false,"pushed_at":"2025-07-02T14:22:25.000Z","size":3874,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-06T21:44:07.225Z","etag":null,"topics":["alarm-system","arduino","esp8266","gas-sensor","pir","pir-sensor","sensors"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bvujovic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-06-15T16:49:15.000Z","updated_at":"2025-07-02T14:22:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"f7a9cab4-33d3-4d02-8446-5647083b9a42","html_url":"https://github.com/bvujovic/SensorNodeESP","commit_stats":null,"previous_names":["bvujovic/sensornodeesp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bvujovic/SensorNodeESP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvujovic%2FSensorNodeESP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvujovic%2FSensorNodeESP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvujovic%2FSensorNodeESP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvujovic%2FSensorNodeESP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bvujovic","download_url":"https://codeload.github.com/bvujovic/SensorNodeESP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bvujovic%2FSensorNodeESP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268431638,"owners_count":24249413,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"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":["alarm-system","arduino","esp8266","gas-sensor","pir","pir-sensor","sensors"],"created_at":"2024-11-08T17:23:41.026Z","updated_at":"2026-05-11T07:13:43.572Z","avatar_url":"https://github.com/bvujovic.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SensorNodeESP\n\nData from sensor (PIR, CO2, smoke/water detectors...) is logged and sometimes sent to user (WhatsApp message, E-mail).\n\n## Server (Hub): ESP32 w/ buzzer\n![Server: ESP32 (SRX882, buzzer)](projects/hub/docs/esp32_hub_device.jpg)\n\n## Web app - interface\n![Web app - interface](projects/hub/docs/web_page_interface.png)\n\n## Windows desktop app: backup logs (data from sensors)\n![Windows desktop app](_WinBackupApp/WinBackupApp.png)\n\n## Air Quality Data\nESP wakes up every 10 minutes and sends data from sensors to the hub (server) via ESP-NOW.\n\n### SCD30 - CO2\n![Client: SCD30 \u0026 CO2](projects/_clients/scd30/wemos_scd30.jpg)\n\n### ENS160, DHT22 - air quality data (temp, hum, TVOC)\n![Client: ESP8266 \u0026 ENS160+AHT21](projects/_clients/ens160_dht22/docs/wemos_ens160_dht22_client_finished.jpg)\n\n## Client: ESP32, Li-Ion 18650 battery, ESP-NOW\nESP32 device wakes on a pin event (e.g. wires are submerged, PIR signals HIGH...), sends an ESP-NOW message to a predefined MAC address (hub) and then goes back to deep sleep.\n### Water detection\n![ESP32, Li-Ion 18650 battery, water detection wires](projects/_clients/esp32-wake-on-pin/docs/esp32-wake-on-pin_device.jpg)\n\n## TODO\n- [ ] Hub:\n    - [ ] (TEST) Does millis command returns ulong millis() on hub/server? Use retrying_retryer.cpp\n    - [ ] Make 2nd version of Hub project - Hub /wo internet for places without internet access or with unknown net credentials. Communication with clients is done via ESP-NOW or radio (HC-12, LoRa, http...). Maybe it could have its own wireless network for web app access?\n    - [ ] Web App:\n        - [ ] Improve interface (chart.js disappears, shrinks)\n- [ ] Clients:\n    - [ ] ClientLogger\n        - [ ] Use it in SCD30 and ENS\u0026DHT projects\n    - [ ] (WIP) Put retrying logic in a class: Retryer\n    - [ ] TimeSlotSend\n        - [ ] Change getDeepSleepTime() so that it takes into account wake time and time spent in sending data\n    - [ ] (OPT) Put TSS, LoggerMin and retrying logic in a class that will be used by most clients that report data regularly to the hub\n    - [ ] (WIP) SCD30:\n        - [ ] Button click: print log on Serial and send data (prev data or wait for new?) to the hub\n    - [ ] esp32-wake-on-pin\n        - [ ] Test this code with SuperMini modules (C3, C6, S3)\n    - [ ] Add more sensor nodes\n        - [ ] Microphone (noise levels)\n\n## Add new client routine\n- my_esp_now.h:\n    - setPeers(): add new setPeer() call\n        - setPeer(): set parameters: mac address, sensor type, device\n    - Increase length of peers array: peer_info peers[]\n    - OnDataRecv(): if (p-\u003etype == SensorType::...)\n- lib/Common/src/ToString.cpp:\n    - Add new members to arrays: StrSensorTypes[], SensorTypesComment[]\n- Enums.h: Add new members to SensorType, Device\n- index.html:\n    - CmbChartParamsChange(): adjusting chart for sensors with temp and hum\n    - lastChartParam: add default property for new sensor\n\n## Links\n\n### ESP-NOW\n- https://randomnerdtutorials.com/esp-now-two-way-communication-esp32/\n- https://randomnerdtutorials.com/esp-now-two-way-communication-esp8266-nodemcu/\n- https://randomnerdtutorials.com/esp-now-auto-pairing-esp32-esp8266/\n- https://randomnerdtutorials.com/esp32-esp-now-wi-fi-web-server/\n- https://rntlab.com/question/esp-now-gateway-wifi_mode_sta-with-a-wifi-router/\n- https://forum.arduino.cc/t/use-esp-now-and-wifi-simultaneously-on-esp32/1034555/16\n\n## Remarks\n - ESP-NOW communication works if WiFi channel on the router is set to 1. There might be ways to fix that by using wifi_promiscuous_enable()...\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbvujovic%2Fsensornodeesp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbvujovic%2Fsensornodeesp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbvujovic%2Fsensornodeesp/lists"}