{"id":32751616,"url":"https://github.com/adityagupta0001/aquamonitor","last_synced_at":"2026-05-15T08:06:40.332Z","repository":{"id":321605919,"uuid":"1086473579","full_name":"AdityaGupta0001/AquaMonitor","owner":"AdityaGupta0001","description":"Cloud-connected water tank monitoring solution with DS18B20, HC-SR04, Turbidity, TDS, and DHT11 sensors providing real-time analytics through MQTT and WebSocket communication using Arduino Uno and NodeMCU (ESP8266)","archived":false,"fork":false,"pushed_at":"2025-10-30T13:50:31.000Z","size":21,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-30T15:38:57.172Z","etag":null,"topics":["arduino-uno","dht11-sensor","ds18b20-arduino","hcsr04","mqtt","nodemcu-esp8266","tds-sensor","turbidity-sensor","websocket"],"latest_commit_sha":null,"homepage":"https://aquamonitor.onrender.com","language":"JavaScript","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/AdityaGupta0001.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-30T13:19:59.000Z","updated_at":"2025-10-30T13:50:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AdityaGupta0001/AquaMonitor","commit_stats":null,"previous_names":["adityagupta0001/aquamonitor"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/AdityaGupta0001/AquaMonitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdityaGupta0001%2FAquaMonitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdityaGupta0001%2FAquaMonitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdityaGupta0001%2FAquaMonitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdityaGupta0001%2FAquaMonitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdityaGupta0001","download_url":"https://codeload.github.com/AdityaGupta0001/AquaMonitor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdityaGupta0001%2FAquaMonitor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282549030,"owners_count":26687870,"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-11-03T02:00:05.676Z","response_time":108,"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":["arduino-uno","dht11-sensor","ds18b20-arduino","hcsr04","mqtt","nodemcu-esp8266","tds-sensor","turbidity-sensor","websocket"],"created_at":"2025-11-04T00:00:33.724Z","updated_at":"2026-05-15T08:06:40.325Z","avatar_url":"https://github.com/AdityaGupta0001.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AquaMonitor — Smart Water Tank Monitoring\n\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![Express.js](https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge\u0026logo=express\u0026logoColor=%2361DAFB) \n![Socket.io](https://img.shields.io/badge/Socket.io-black?style=for-the-badge\u0026logo=socket.io\u0026badgeColor=010101)\n![Static Badge](https://img.shields.io/badge/MQTT-FFFF14?style=for-the-badge)\n![Chart.js](https://img.shields.io/badge/chart.js-F5788D.svg?style=for-the-badge\u0026logo=chart.js\u0026logoColor=white)\n![Render](https://img.shields.io/badge/Render-%46E3B7.svg?style=for-the-badge\u0026logo=render\u0026logoColor=white)\n![Arduino](https://img.shields.io/badge/-Arduino-00979D?style=for-the-badge\u0026logo=Arduino\u0026logoColor=white)\n![Static Badge](https://img.shields.io/badge/Nodemcu-610096?style=for-the-badge)\n\n\n\nAquaMonitor is a backend service for a water-tank monitoring system. It ingests sensor data (temperature, level, turbidity, TDS, ambient conditions) from IoT devices via MQTT, serves a web dashboard, and provides real-time updates over WebSocket (Socket.IO).\n\n## Key capabilities\n\n- Real-time data streaming to a web dashboard (Socket.IO)\n- MQTT ingestion (HiveMQ Cloud compatible)\n- Last N historical readings stored per sensor\n- Alerts for out-of-range values and tank integrity checks\n- Individual sensor pages with trends and tables\n\n## Monitored parameters\n\n| Sensor | Parameter | Purpose |\n|--------|-----------|---------|\n| DS18B20 | Water temperature | Detect unsafe water temperatures |\n| HC-SR04 | Water level | Prevent overflow / low-level conditions |\n| Turbidity sensor | Water clarity | Detect contamination/sediment |\n| TDS sensor | Dissolved solids | Assess water purity |\n| DHT11 | Ambient temp \u0026 humidity | External environment monitoring |\n\n## Technology stack\n\n- Node.js + Express\n- Socket.IO for real-time client updates\n- MQTT (HiveMQ Cloud) for device telemetry\n- Chart.js on the frontend for visualizations\n- Arduino (UNO) and NodeMCU (ESP8266) for sensor collection and MQTT bridge\n- Deployment target: Render\n\n## Getting started\n\nPrerequisites\n- Node.js 18 or later\n- Arduino IDE (for firmware)\n- HiveMQ Cloud account (or other MQTT broker)\n- Git\n\nClone and install\n```bash\ngit clone https://github.com/AdityaGupta0001/aquamonitor.git\ncd aquamonitor/backend\nnpm install\n```\n\nConfigure environment variables\nCreate a `.env` file in the `backend` directory:\n```env\nMQTT_HOST=your-hivemq-cluster.s1.eu.hivemq.cloud\nMQTT_PORT=1883\nMQTT_PROTOCOL=mqtt\nMQTT_USERNAME=your-username\nMQTT_PASSWORD=your-password\nPORT=3000\n```\n\nUpload Arduino code\n1. Open `arduino/sensor_reader.ino` in Arduino IDE\n2. Update sensor pin configurations if needed\n3. Upload to Arduino UNO\n\nUpload NodeMCU code\n1. Open `nodemcu/mqtt_bridge.ino` in Arduino IDE\n2. Update WiFi credentials:\n   ```cpp\n   const char* ssid = \"Your_WiFi_Name\";\n   const char* password = \"Your_WiFi_Password\";\n   ```\n3. Update HiveMQ credentials:\n   ```cpp\n   const char* mqtt_server = \"your-cluster.hivemq.cloud\";\n   const char* mqtt_user = \"your-username\";\n   const char* mqtt_password = \"your-password\";\n   ```\n4. Upload to NodeMCU ESP8266\n\nRun locally\n```bash\nnpm start\n```\n\nVisit [http://localhost:3000](http://localhost:3000) to view the dashboard.\n\nDeploy to Render\n1. Push code to GitHub\n2. Create a new Web Service on Render\n3. Connect your repository\n4. Add environment variables\n5. Deploy!\n\n## Usage\n\nAccessing the dashboard\n- Landing Page: `https://aquamonitor.onrender.com/`\n- Main Dashboard: `https://aquamonitor.onrender.com/dashboard`\n- Individual Sensors:\n  `/sensor/temperature`, `/sensor/distance`, `/sensor/turbidity`, `/sensor/tds`, `/sensor/environment`\n\nConfiguration\nAdjust thresholds in `server.js`:\n```javascript\nconst config = {\n  tankTotalVolume: 1000,    // Tank capacity in liters\n  distanceFull: 1,          // Distance when tank is full (cm)\n  distanceEmpty: 100,       // Distance when tank is empty (cm)\n  turbidityThreshold: 1000, // Max turbidity (NTU)\n  tdsMin: 50,               // Min TDS (ppm)\n  tdsMax: 300,              // Max TDS (ppm)\n  tempMin: 15,              // Min water temp (°C)\n  tempMax: 30,              // Max water temp (°C)\n  outsideTempMax: 45        // Max outside temp (°C)\n};\n```\n\n## Features Overview\n\nMain Dashboard\n- Overview of all 5 sensors\n- Real-time animated visualizations\n- Status indicators for each parameter\n- Alert notifications\n\nIndividual Sensor Pages\nEach sensor has a dedicated page with:\n- Current readings with visual widgets\n- Trend graphs (last 50 readings)\n- Historical data table (last 200 readings)\n- Technical specifications\n- Working principles\n- Pin connection diagrams\n\nSmart Alerts\nAutomatic pop-up notifications when:\n- Water level drops below 20%\n- Temperature exceeds safe range\n- Turbidity indicates contamination\n- TDS levels are unsafe\n- Tank integrity is compromised\n\n## Troubleshooting\n\nNodeMCU Not Connecting to HiveMQ\n- Verify WiFi credentials\n- Check HiveMQ username/password\n- Ensure port 1883 is accessible\n- Check Serial Monitor for error codes\n\nDashboard Not Receiving Data\n- Check Render logs for MQTT connection status\n- Verify HiveMQ credentials in environment variables\n- Test MQTT connection using HiveMQ Web Client\n- Ensure NodeMCU is publishing to `sensor/data` topic\n\nSensor Readings Incorrect\n- Calibrate sensors individually\n- Check wiring connections\n- Verify Arduino serial output\n- Adjust sensor-specific configurations\n\n## API Endpoints\n\n| Endpoint        | Method | Description               |\n| --------------- | ------ | ------------------------- |\n| `/`             | GET    | Landing page              |\n| `/dashboard`    | GET    | Main dashboard            |\n| `/sensor/:type` | GET    | Individual sensor page    |\n| `/api/latest`   | GET    | Latest sensor data (JSON) |\n| `/health`       | GET    | Health check status       |\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit changes (`git commit -m 'Add amazing feature'`)\n4. Push to branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## Author\n\n**Your Name**\n\n* GitHub: [@AdityaGupta0001](https://github.com/yourusername)\n* Project Link: [https://github.com/AdityaGupta0001/AquaMonitor](https://github.com/yourusername/aquamonitor)\n\n## Acknowledgments\n\n* HiveMQ Cloud for free MQTT broker\n* Render for hosting platform\n* Chart.js for beautiful visualizations\n* ESP8266 community for excellent documentation\n\n**Built with ❤️ for smart water management**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadityagupta0001%2Faquamonitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadityagupta0001%2Faquamonitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadityagupta0001%2Faquamonitor/lists"}