{"id":31819439,"url":"https://github.com/pleft/home-dash","last_synced_at":"2026-07-26T02:31:32.638Z","repository":{"id":316116073,"uuid":"1062036256","full_name":"pleft/home-dash","owner":"pleft","description":"ESP32 Home Dashboard for RuuviTag BLE Sensor Monitoring with TFT Display and Web Interface","archived":false,"fork":false,"pushed_at":"2025-10-01T20:23:07.000Z","size":170,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-11T11:58:20.693Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/pleft.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-09-22T18:07:16.000Z","updated_at":"2025-10-01T20:23:10.000Z","dependencies_parsed_at":"2025-09-22T20:27:46.337Z","dependency_job_id":"e603886b-7355-48f7-9836-0d58527a4383","html_url":"https://github.com/pleft/home-dash","commit_stats":null,"previous_names":["pleft/home-dash"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pleft/home-dash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleft%2Fhome-dash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleft%2Fhome-dash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleft%2Fhome-dash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleft%2Fhome-dash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pleft","download_url":"https://codeload.github.com/pleft/home-dash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleft%2Fhome-dash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35898941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-26T02:00:06.503Z","response_time":89,"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":"2025-10-11T11:58:16.668Z","updated_at":"2026-07-26T02:31:32.620Z","avatar_url":"https://github.com/pleft.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Home Dashboard - RuuviTag ESP32 Monitor\r\n\r\nESP32-based IoT dashboard for monitoring RuuviTag environmental sensors with TFT display and web interface.\r\n\r\n## Features\r\n\r\n- **Real-time BLE scanning** for RuuviTag sensors (temperature, humidity, pressure, battery)\r\n- **TFT display** with card-based sensor layout\r\n- **Web dashboard** with live sensor cards (charts removed)\r\n- **WiFi + AP fallback** mode for easy setup\r\n- **History storage and charts removed** to simplify the system\r\n\r\n## Hardware Requirements\r\n\r\n- ESP32 development board\r\n- TFT display (compatible with TFT_eSPI)\r\n- RuuviTag sensors\r\n\r\n## Quick Start\r\n\r\n### Windows WSL Users\r\nFor Windows users with WSL, see [README_WSL.md](README_WSL.md) for complete setup instructions including USB device sharing and PowerShell commands. Those instructions also show the exact commands to compile with `HAS_TFT=0` and the `no_ota` partition scheme.\r\n\r\n### Standard Setup\r\n\r\n#### 1. Install Dependencies\r\n```bash\r\n# Install ESP32 board package\r\narduino-cli core update-index\r\narduino-cli core install esp32:esp32\r\n\r\n# Install required libraries\r\narduino-cli lib install \"NimBLE-Arduino\" \"TFT_eSPI\"\r\n```\r\n\r\n#### 2. Build and Upload\r\n```bash\r\n# Compile firmware (no_ota partition scheme)\r\narduino-cli compile \\\r\n  --fqbn esp32:esp32:esp32:PartitionScheme=no_ota \\\r\n  --build-path build \\\r\n  home-dash.ino\r\n\r\n# Upload firmware (replace your serial port)\r\narduino-cli upload -p /dev/ttyUSB0 \\\r\n  --fqbn esp32:esp32:esp32:PartitionScheme=no_ota \\\r\n  --build-path build \\\r\n  home-dash.ino\r\n```\r\n\r\n#### 3. Upload Web Files (LittleFS)\r\n\r\n```bash\r\n# Create LittleFS image (adjust size to your partition map if needed)\r\nmklittlefs -c data -b 4096 -s 0x1E0000 data.littlefs.bin\r\n\r\n# Upload LittleFS image (replace port if needed)\r\nesptool --chip esp32 --port /dev/ttyUSB0 --baud 921600 write_flash 0x210000 data.littlefs.bin\r\n```\r\n\r\nAlternatively, use the web uploader at `/upload`.\r\n\r\n#### 4. Access Dashboard\r\n- **WiFi Mode**: `http://home.local/` or ESP32 IP\r\n- **AP Mode**: `http://192.168.4.1/` (connect to `RuuviSetup-XXXX` network)\r\n\r\n## Configuration\r\n\r\n### WiFi Setup\r\nCreate `/wifi.properties`:\r\n```\r\nssid=YourWiFiNetwork\r\npassword=YourWiFiPassword\r\n```\r\n\r\n### Sensor Names (Optional)\r\nCreate `/names.csv`:\r\n```\r\nMAC,Name\r\nAA:BB:CC:DD:EE:FF,Living Room\r\n11:22:33:44:55:66,Bedroom\r\n```\r\n\r\n## Build Options\r\n\r\n**TFT Display (default enabled)**\r\n```bash\r\narduino-cli compile \\\r\n  --fqbn esp32:esp32:esp32:PartitionScheme=no_ota \\\r\n  --build-path build \\\r\n  home-dash.ino\r\n```\r\n\r\n**Headless (No Display)**\r\n```bash\r\narduino-cli compile \\\r\n  --fqbn esp32:esp32:esp32:PartitionScheme=no_ota \\\r\n  --build-property compiler.cpp.extra_flags=\"-DHAS_TFT=0\" \\\r\n  --build-path build \\\r\n  home-dash.ino\r\n```\r\n\r\n## Troubleshooting\r\n\r\n**Upload Issues**\r\n- Check serial port: `arduino-cli board list`\r\n- Put ESP32 in boot mode (hold BOOT, press RESET, release RESET, release BOOT)\r\n- Try a different USB cable/port\r\n\r\n**WiFi Issues**\r\n- Use 2.4GHz network (ESP32 doesn't support 5GHz)\r\n- Check credentials in `/wifi.properties`\r\n- Use AP mode fallback: connect to `RuuviSetup-XXXX`\r\n\r\n**Display Issues**\r\n- Verify TFT_eSPI library configuration (see `display/README.md`)\r\n- Check wiring connections\r\n\r\n**Web Interface Issues**\r\n- Verify LittleFS files are uploaded\r\n- Check ESP32 IP address\r\n- Try accessing via IP instead of mDNS\r\n\r\n## Performance\r\n\r\n- **Program Storage**: ~1.41 MB (67% of 2MB app partition)\r\n- **Dynamic Memory**: ~60 KB (18% of 320KB)\r\n- **Update Frequency**: Sensor updates every 200ms (throttle), display every 500ms\r\n\r\n## Project Structure\r\n\r\n```\r\nhome-dash/\r\n├── home-dash.ino          # Main Arduino sketch\r\n├── data/                  # Web interface files\r\n│   ├── index.html        # Dashboard page\r\n│   ├── app.js            # JavaScript app\r\n│   ├── styles.css        # CSS styles\r\n│   ├── names.csv         # Sensor names\r\n│   └── wifi.properties   # WiFi credentials\r\n├── display/              # TFT display configuration\r\n│   ├── User_Setup.h      # TFT_eSPI library config\r\n│   └── README.md         # Display setup instructions\r\n├── README.md             # Main documentation\r\n└── README_WSL.md         # WSL-specific instructions\r\n```\r\n\r\n## API Endpoints\r\n\r\n- `GET /data`  - Real-time sensor data\r\n- `GET /health` - System metrics\r\n- `GET /heap`  - Heap and fragmentation metrics (free, min, largest, frag)\r\n- `GET /config` - WiFi configuration\r\n- `GET /upload` - File upload interface\r\n\r\n---\r\n\r\n**Version**: 0.1 | **Last Updated**: 2025","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpleft%2Fhome-dash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpleft%2Fhome-dash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpleft%2Fhome-dash/lists"}