UNPKG

homebridge-solar-monitor-ivk

Version:

Solar production monitor for Homebridge with Pushover notifications

149 lines (114 loc) 4.12 kB
# 🏠 Homebridge Solar Monitor A Homebridge plugin that scrapes real-time solar production data from e-SenZ and integrates with HomeKit via Pushover notifications. ## ✨ Features - 🔄 **Real-time Data Scraping**: Scrapes live solar production data from e-SenZ website - 📱 **Pushover Notifications**: Sends notifications to multiple users via Pushover - 🏠 **HomeKit Integration**: Creates HomeKit accessories for solar monitoring -**Smart Scheduling**: Scrapes data hourly during solar hours (6 AM - 6:30 PM IST) - 🚀 **Auto-installation**: Automatic dependency installation on Raspberry Pi ## 🚀 Quick Installation ### 1. Install Plugin ```bash npm install -g homebridge-solar-monitor-ivk ``` ### 2. Install Dependencies (Raspberry Pi) ```bash # Navigate to plugin directory cd /var/lib/homebridge/node_modules/homebridge-solar-monitor-ivk # Run auto-installation script chmod +x install_dependencies.sh ./install_dependencies.sh ``` ### 3. Configure Homebridge Add to your `config.json`: ```json { "accessories": [ { "accessory": "SolarMonitor", "name": "Solar Monitor", "username": "your_esenz_username", "password": "your_esenz_password", "pushover_token": "your_pushover_token", "pushover_users": ["user_key_1", "user_key_2"], "scrape_interval": 3600000 } ] } ``` ### 4. Restart Homebridge ```bash sudo systemctl restart homebridge ``` ## 🔧 Configuration | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `accessory` | string | ✅ | Must be exactly `"SolarMonitor"` | | `name` | string | ✅ | Display name for HomeKit | | `username` | string | ✅ | e-SenZ login username | | `password` | string | ✅ | e-SenZ login password | | `pushover_token` | string | ✅ | Pushover app token | | `pushover_users` | array | ✅ | Array of Pushover user keys | | `scrape_interval` | number | ❌ | Scrape interval in ms (default: 1 hour) | ## 🐛 Troubleshooting ### ChromeDriver Issues If you get "ChromeDriver not found" errors: ```bash # Check if ChromeDriver is installed chromedriver --version # If not found, install manually sudo apt-get install -y chromium-chromedriver sudo ln -s /usr/bin/chromedriver /usr/local/bin/chromedriver ``` ### Plugin Not Loading 1. Check accessory name is exactly `"SolarMonitor"` (no spaces) 2. Verify all required fields are present in config.json 3. Check Homebridge logs: `sudo journalctl -u homebridge -f` ### Python Dependencies If Python modules are missing: ```bash cd /var/lib/homebridge/node_modules/homebridge-solar-monitor-ivk pip3 install -r requirements.txt ``` ### SSL Certificate Issues The plugin uses the correct e-SenZ URL: `https://esenz.co.in/esenzCustomerLoginV3.aspx` ## 📊 Data Scraped The plugin scrapes the following solar production data: - Current Power (W/kW) - Today's Energy (kWh) - Yesterday's Energy (kWh) - Monthly Energy (kWh) - Total Energy (kWh) - Generation Factor (GF) - Capacity Utilization Factor (CUF) - Performance Ratio (PR) ## 🔔 Notifications Pushover notifications are sent: - When solar production starts (6 AM IST) - When solar production ends (6:30 PM IST) - On significant production changes - On scraping errors ## 🏗️ Architecture - **Homebridge Plugin**: Node.js plugin for HomeKit integration - **Python Scraper**: Selenium-based web scraper for e-SenZ - **ChromeDriver**: Headless browser automation - **Pushover API**: Multi-user notification system ## 📝 Logs - Plugin logs: Homebridge logs (`sudo journalctl -u homebridge -f`) - Scraper logs: `solar_scraper.log` in plugin directory ## 🔄 Updates To update the plugin: ```bash npm update -g homebridge-solar-monitor-ivk cd /var/lib/homebridge/node_modules/homebridge-solar-monitor-ivk ./install_dependencies.sh sudo systemctl restart homebridge ``` ## 📄 License MIT License - see LICENSE file for details. ## 🤝 Support For issues and support: 1. Check the troubleshooting section above 2. Review Homebridge logs 3. Check scraper logs in plugin directory 4. Verify e-SenZ credentials and website accessibility