From aaf4172b3c298060884c5bddce1d0d8bd79db1c3 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Tue, 10 Feb 2026 18:44:35 -0700 Subject: [PATCH] sync: Add Wrightstown Solar and Smart Home projects New projects from 2026-02-09 research session: Wrightstown Solar: - DIY 48V LiFePO4 battery storage (EVE C40 cells) - Victron MultiPlus II whole-house UPS design - BMS comparison (Victron CAN bus compatible) - EV salvage analysis (new cells won) - Full parts list and budget Wrightstown Smart Home: - Home Assistant Yellow setup (local voice, no cloud) - Local LLM server build guide (Ollama + RTX 4090) - Hybrid LLM bridge (LiteLLM + Claude API + Grok API) - Network security (VLAN architecture, PII sanitization) Machine: ACG-M-L5090 Timestamp: 2026-02-09 Co-Authored-By: Claude Opus 4.6 --- .../wrightstown-smarthome/PROJECT_INDEX.md | 139 +++++++++ .../documentation/ha-yellow-setup.md | 166 ++++++++++ .../documentation/hybrid-bridge.md | 290 ++++++++++++++++++ .../documentation/llm-server-build.md | 192 ++++++++++++ .../documentation/network-security.md | 210 +++++++++++++ .../session-logs/2026-02-09-session.md | 85 +++++ projects/wrightstown-solar/PROJECT_INDEX.md | 118 +++++++ .../documentation/bms-comparison.md | 211 +++++++++++++ .../documentation/ev-salvage-analysis.md | 93 ++++++ .../documentation/parts-list.md | 122 ++++++++ .../documentation/system-design.md | 244 +++++++++++++++ .../session-logs/2026-02-09-session.md | 83 +++++ 12 files changed, 1953 insertions(+) create mode 100644 projects/wrightstown-smarthome/PROJECT_INDEX.md create mode 100644 projects/wrightstown-smarthome/documentation/ha-yellow-setup.md create mode 100644 projects/wrightstown-smarthome/documentation/hybrid-bridge.md create mode 100644 projects/wrightstown-smarthome/documentation/llm-server-build.md create mode 100644 projects/wrightstown-smarthome/documentation/network-security.md create mode 100644 projects/wrightstown-smarthome/session-logs/2026-02-09-session.md create mode 100644 projects/wrightstown-solar/PROJECT_INDEX.md create mode 100644 projects/wrightstown-solar/documentation/bms-comparison.md create mode 100644 projects/wrightstown-solar/documentation/ev-salvage-analysis.md create mode 100644 projects/wrightstown-solar/documentation/parts-list.md create mode 100644 projects/wrightstown-solar/documentation/system-design.md create mode 100644 projects/wrightstown-solar/session-logs/2026-02-09-session.md diff --git a/projects/wrightstown-smarthome/PROJECT_INDEX.md b/projects/wrightstown-smarthome/PROJECT_INDEX.md new file mode 100644 index 0000000..70fe26c --- /dev/null +++ b/projects/wrightstown-smarthome/PROJECT_INDEX.md @@ -0,0 +1,139 @@ +# Wrightstown Smart Home - Project Index + +**Project:** Smart Home + Local LLM + Hybrid AI Bridge +**Location:** Wrightstown (home) +**Status:** Planning / Research Phase +**Created:** 2026-02-09 +**Last Updated:** 2026-02-09 + +**Related Project:** `projects/wrightstown-solar/` (Victron integration crossover) + +--- + +## Project Overview + +Privacy-first smart home system using Home Assistant Yellow with local voice control, a dedicated local LLM server, and a hybrid routing bridge that keeps private data local while leveraging Claude and Grok APIs for tasks requiring external search or heavy reasoning. + +## Design Goals + +1. No Google/Alexa dependency -- fully local voice control +2. Local LLM for private queries (home automation, sensor data, cameras) +3. Hybrid bridge to Claude API (reasoning) and Grok API (internet search) +4. Privacy-first: private data never leaves the network +5. Network segmentation (VLANs) for IoT isolation +6. Integration with Victron solar system (future crossover with wrightstown-solar project) + +## Hardware Inventory + +| Component | Status | Notes | +|---|---|---| +| Home Assistant Yellow | Owned (not set up) | Needs CM4/CM5 module | +| LLM Server | Not purchased | RTX 4090 build recommended | +| Network gear (VLANs) | TBD | Ubiquiti or TP-Link Omada | +| Wyoming voice satellites | Not purchased | For room-by-room voice control | + +## Architecture + +``` + Voice Satellites (Wyoming) + | + [Home Assistant Yellow] + / | \ + Zigbee Victron LLM Integration + devices Modbus (Extended OpenAI Conversation) + | + [LiteLLM Proxy] + (routing layer) + / | \ + [Ollama] [Claude] [Grok] + Local Anthropic xAI + $0/mo API API + Private Reasoning Search +``` + +--- + +## Files + +### Documentation +| File | Description | +|---|---| +| `documentation/ha-yellow-setup.md` | Home Assistant Yellow setup and voice assistant config | +| `documentation/llm-server-build.md` | Local LLM server hardware, software, and model selection | +| `documentation/hybrid-bridge.md` | LiteLLM routing, Claude/Grok API integration, privacy layer | +| `documentation/network-security.md` | VLAN architecture, IoT isolation, PII sanitization | + +### Session Logs +| File | Description | +|---|---| +| `session-logs/2026-02-09-session.md` | Initial research and planning session | + +--- + +## Budget Estimate + +### Phase 1: Home Assistant Yellow Setup +| Component | Est. Cost | +|---|---| +| RPi CM4 4GB/32GB (if not owned) | $45-75 | +| NVMe SSD (512GB-1TB) | $40-80 | +| **Phase 1 Total** | **$45-155** (Yellow already owned) | + +### Phase 2: LLM Server (Sweet Spot Build) +| Component | Est. Cost | +|---|---| +| RTX 4090 24GB | $1,200-1,500 | +| Ryzen 7 5800X3D + B550 + 64GB DDR4 | $490 | +| Storage, PSU, case | $190 | +| **Phase 2 Total** | **$1,880-2,180** | + +### Phase 3: Network + Voice +| Component | Est. Cost | +|---|---| +| VLAN-capable router + managed switch | $150-760 | +| Wyoming voice satellites (2-3 rooms) | $100-200 | +| **Phase 3 Total** | **$250-960** | + +### Ongoing Monthly +| Item | Est. Cost | +|---|---| +| Cloud API (Claude + Grok, 80/15/5 split) | ~$5/mo | +| Electricity (LLM server) | ~$15-30/mo | +| **Monthly Total** | **~$20-35/mo** | + +--- + +## Decision Log + +| Date | Decision | Rationale | +|---|---|---| +| 2026-02-09 | Home Assistant over Google/Alexa | Privacy, local control, open source | +| 2026-02-09 | HA Yellow (already owned) | Built-in Zigbee, NVMe slot, still receives updates | +| 2026-02-09 | Ollama for local LLM | Simplest setup, OpenAI-compatible API, huge model library | +| 2026-02-09 | LiteLLM for hybrid routing | Unified API, cost tracking, fallback support | +| 2026-02-09 | Claude API for reasoning | Best quality reasoning, function calling for HA | +| 2026-02-09 | Grok API for search | Internet access, 2M token context, X integration | +| 2026-02-09 | Separate project from solar | Different build timelines, but Victron crossover planned | + +--- + +## Implementation Roadmap + +- [ ] **Phase 1 (Week 1-2):** Set up HA Yellow, basic automations, Zigbee devices +- [ ] **Phase 2 (Week 3):** Install Wyoming + Whisper + Piper for local voice +- [ ] **Phase 3 (Week 4):** Build LLM server, install Ollama, test models +- [ ] **Phase 4 (Week 5):** Set up LiteLLM proxy, add Claude + Grok API keys +- [ ] **Phase 5 (Week 6):** Integrate LLM with HA via Extended OpenAI Conversation +- [ ] **Phase 6 (Week 7):** Network segmentation (VLANs), PII sanitization +- [ ] **Phase 7 (Future):** Victron solar integration (crossover with wrightstown-solar) + +--- + +## Crossover with Wrightstown Solar + +When the Victron MultiPlus II + Cerbo GX are installed: +- Modbus TCP integration from Cerbo into Home Assistant +- Energy dashboard with solar production + battery SOC +- Solar-aware automations ("run dishwasher when battery > 80%") +- LLM-powered energy analysis ("analyze my usage trends this week") +- See: `projects/wrightstown-solar/` for full solar system design diff --git a/projects/wrightstown-smarthome/documentation/ha-yellow-setup.md b/projects/wrightstown-smarthome/documentation/ha-yellow-setup.md new file mode 100644 index 0000000..7ae098a --- /dev/null +++ b/projects/wrightstown-smarthome/documentation/ha-yellow-setup.md @@ -0,0 +1,166 @@ +# Home Assistant Yellow - Setup Guide + +**Created:** 2026-02-09 +**Hardware:** Home Assistant Yellow (owned, not yet set up) + +--- + +## What's In the Yellow + +- Custom carrier board with Zigbee 3.0 radio (external antenna) +- Matter-ready architecture +- M.2 slot for NVMe SSD (add terabytes of storage) +- Power supply with international adapters (or PoE) +- Custom heatsink and thermal pad +- Ethernet cable + +**Important:** Yellow production ended October 2025, but continues receiving full software updates. No action needed -- it's still fully supported. + +**Requires separately:** Raspberry Pi Compute Module 4 or 5 +- Minimum: CM4 with 2GB RAM + 16GB eMMC +- Recommended: CM4 4GB RAM + 32GB eMMC +- CM4 Lite option requires NVMe SSD (no eMMC) +- CM5 supported since HAOS 14 (November 2024) + +--- + +## Setup Process + +### Hardware Assembly + +1. Install CM4/CM5 -- align CE mark at bottom, press firmly onto connectors +2. Apply thermal pad to SOC (silver square near Raspberry icon) +3. Place heatsink on thermal pad +4. (Optional) Install NVMe SSD in M.2 slot +5. Close enclosure + +### First Boot + +1. Connect Ethernet cable to router +2. Connect power supply +3. Wait 5-10 minutes for initial setup +4. Access Home Assistant at `http://homeassistant.local:8123` +5. Follow onboarding wizard: + - Create admin account + - Set location and timezone + - Auto-discover devices on network + +### Post-Setup Essentials + +1. **Install HACS** (Home Assistant Community Store) -- for custom integrations +2. **Configure Zigbee** -- ZHA integration auto-detects the built-in radio +3. **Set up backups** -- Automatic daily backups to NAS or cloud +4. **Install File Editor** -- for editing YAML configs in browser + +--- + +## Local Voice Assistant (Replace Alexa/Google) + +### Core Components (All Local, No Cloud) + +**Whisper** -- Speech-to-text (OpenAI's engine, runs locally) +- Processing: ~8 seconds on RPi4 for transcription +- Languages: English primary, expanding multilingual + +**Piper** -- Text-to-speech (neural TTS, optimized for RPi) +- Multiple voice options +- Very fast synthesis +- Natural-sounding output + +**Wyoming Protocol** -- Communication standard between voice services +- Connects Whisper, Piper, and wake word detection +- Supports remote satellites + +**openWakeWord** -- Wake word detection +- "Hey Jarvis", "Alexa" (custom), "OK Nabu" +- Custom wake words trainable +- English-only currently + +### Setup Steps + +1. Go to Settings > Add-ons +2. Install "Whisper" add-on > Start +3. Install "Piper" add-on > Start +4. Install "openWakeWord" add-on > Start +5. Go to Settings > Voice Assistants +6. Create new assistant: + - Speech-to-text: Whisper + - Text-to-speech: Piper + - Wake word: openWakeWord + - Conversation agent: (Home Assistant default, or Ollama later) + +### Voice Satellites (Room-by-Room Control) + +**Option 1: Wyoming Satellite (RPi-based)** +- Raspberry Pi Zero 2W + microphone + speaker +- ~$30-50 per room +- Full wake word + voice processing + +**Option 2: ESPHome Voice Satellite (ESP32-based)** +- ESP32-S3 + I2S microphone + speaker +- ~$15-25 per room +- Auto-discovery via Zeroconf +- Supports media player, timers, conversations +- ESPHome 2025.5.0+ integration + +--- + +## Key Integrations + +### Zigbee (Built-in Radio) + +The Yellow has a Silicon Labs Zigbee radio. Use ZHA (Zigbee Home Automation) integration: +- Auto-detected on first boot +- Supports 100+ Zigbee device brands +- No additional dongle needed + +**Recommended Zigbee Devices:** +- Lights: IKEA Tradfri, Philips Hue (Zigbee mode) +- Sensors: Aqara door/window, motion, temperature +- Switches: Sonoff SNZB series +- Plugs: Innr, IKEA, Sonoff + +### Victron Solar (Future Crossover) + +When Victron MultiPlus II + Cerbo GX are installed: + +**Integration Methods:** +- **Modbus TCP** (recommended): Direct polling via `hass-victron` custom integration +- **MQTT**: Bidirectional via Cerbo GX +- **VRM API**: Cloud-based (60-minute refresh, built-in since HA 2025.10) + +**Best Practice:** Use 5-second Modbus scan interval (not 20 seconds) + +**Energy Automations:** +- Run high-load devices when battery SOC > 75% +- Trigger charging at 25%, stop at 50% +- EMHASS (Energy Management for Home Assistant) for optimal solar usage + +### Ollama / Local LLM + +Native Ollama integration (HA 2025.6+): +1. Settings > Devices & Services > Add Integration > "Ollama" +2. Enter Ollama server URL: `http://:11434` +3. Settings > Voice Assistants > Select "Ollama" as conversation agent + +**Extended OpenAI Conversation** (HACS custom component): +- Supports OpenAI-compatible APIs (Ollama, LiteLLM) +- Function calling for HA service control +- Create automations, query APIs, control devices via natural language +- Install via HACS custom repository + +**Multi-Model Strategy:** +- Agent 1: Qwen 2.5 7B for real-time voice commands (fast, <1s response) +- Agent 2: Llama 3.1 70B for complex reasoning (slower, smarter) +- Route via LiteLLM proxy + +--- + +## Sources + +- https://www.home-assistant.io/yellow/ +- https://yellow.home-assistant.io/guides/install-cm4/ +- https://www.home-assistant.io/integrations/wyoming/ +- https://www.home-assistant.io/voice_control/voice_remote_local_assistant/ +- https://www.home-assistant.io/integrations/ollama/ +- https://github.com/jekalmin/extended_openai_conversation diff --git a/projects/wrightstown-smarthome/documentation/hybrid-bridge.md b/projects/wrightstown-smarthome/documentation/hybrid-bridge.md new file mode 100644 index 0000000..7bbc873 --- /dev/null +++ b/projects/wrightstown-smarthome/documentation/hybrid-bridge.md @@ -0,0 +1,290 @@ +# Hybrid LLM Bridge - Local + Cloud Routing + +**Created:** 2026-02-09 +**Purpose:** Route queries intelligently between local Ollama, Claude API, and Grok API + +--- + +## Architecture + +``` +User Query (voice, chat, HA automation) + | + [LiteLLM Proxy] + localhost:4000 + | + Routing Decision + / | \ +[Ollama] [Claude] [Grok] + Local Anthropic xAI + Free Reasoning Search + Private $3/$15/1M $3/$15/1M +``` + +--- + +## Recommended: LiteLLM Proxy + +Unified API gateway that presents a single OpenAI-compatible endpoint. Everything talks to `localhost:4000` and LiteLLM routes to the right backend. + +### Installation + +```bash +pip install litellm[proxy] +``` + +### Configuration (`config.yaml`) + +```yaml +model_list: + # Local models (free, private) + - model_name: local-fast + litellm_params: + model: ollama/qwen2.5:7b + api_base: http://localhost:11434 + + - model_name: local-reasoning + litellm_params: + model: ollama/llama3.1:70b-q4 + api_base: http://localhost:11434 + + # Cloud: Claude (complex reasoning) + - model_name: cloud-reasoning + litellm_params: + model: claude-sonnet-4-5-20250929 + api_key: sk-ant-XXXXX + + - model_name: cloud-reasoning-cheap + litellm_params: + model: claude-haiku-4-5-20251001 + api_key: sk-ant-XXXXX + + # Cloud: Grok (internet search) + - model_name: cloud-search + litellm_params: + model: grok-4 + api_key: xai-XXXXX + api_base: https://api.x.ai/v1 + +router_settings: + routing_strategy: simple-shuffle + allowed_fails: 2 + num_retries: 3 + + budget_policy: + local-fast: unlimited + local-reasoning: unlimited + cloud-reasoning: $50/month + cloud-reasoning-cheap: $25/month + cloud-search: $25/month +``` + +### Start the Proxy + +```bash +litellm --config config.yaml --port 4000 +``` + +### Usage + +Everything talks to `http://localhost:4000` with OpenAI-compatible format: + +```python +import openai + +client = openai.OpenAI( + api_key="anything", # LiteLLM doesn't need this for local + base_url="http://localhost:4000" +) + +# Route to local +response = client.chat.completions.create( + model="local-fast", + messages=[{"role": "user", "content": "Turn on the lights"}] +) + +# Route to Claude +response = client.chat.completions.create( + model="cloud-reasoning", + messages=[{"role": "user", "content": "Analyze my energy usage patterns"}] +) + +# Route to Grok +response = client.chat.completions.create( + model="cloud-search", + messages=[{"role": "user", "content": "What's the current electricity rate in PA?"}] +) +``` + +--- + +## Routing Strategy + +### What Goes Where + +**Local (Ollama) -- Default for everything private:** +- Home automation commands ("turn on lights", "set thermostat to 72") +- Sensor data queries ("what's the temperature in the garage?") +- Camera-related queries (never send video to cloud) +- Personal information queries +- Simple Q&A +- Quick lookups from local knowledge + +**Claude API -- Complex reasoning tasks:** +- Detailed analysis ("analyze my energy trends this month") +- Code generation ("write an HA automation for...") +- Long-form content creation +- Multi-step reasoning problems +- Function calling for HA service control + +**Grok API -- Internet/real-time data:** +- Current events ("latest news on solar tariffs") +- Real-time pricing ("current electricity rates") +- Weather data (if not using local integration) +- Web searches +- Anything requiring information the local model doesn't have + +### Manual vs Automatic Routing + +**Phase 1 (Start here):** Manual model selection +- User picks "local-fast", "cloud-reasoning", or "cloud-search" in Open WebUI +- Simple, no mistakes, full control +- Good for learning which queries work best where + +**Phase 2 (Later):** Keyword-based routing in LiteLLM +- Route based on keywords in the query +- "search", "latest", "current" --> Grok +- "analyze", "explain in detail", "write code" --> Claude +- Everything else --> local + +**Phase 3 (Advanced):** Semantic routing +- Use sentence embeddings to classify query intent +- Small local model (all-MiniLM-L6-v2) classifies in 50-200ms +- Most intelligent routing, but requires Python development + +--- + +## Cloud API Details + +### Claude (Anthropic) + +**Endpoint:** `https://api.anthropic.com/v1/messages` +**Get API key:** https://console.anthropic.com/ + +**Pricing (2025-2026):** + +| Model | Input/1M tokens | Output/1M tokens | Best For | +|---|---|---|---| +| Claude Haiku 4.5 | $0.50 | $2.50 | Fast, cheap tasks | +| Claude Sonnet 4.5 | $3.00 | $15.00 | Best balance | +| Claude Opus 4.5 | $5.00 | $25.00 | Top quality | + +**Cost optimization:** +- Prompt caching: 90% savings on repeated system prompts +- Use Haiku for simple tasks, Sonnet for complex ones +- Batch processing available for non-urgent tasks + +**Features:** +- 200k context window +- Extended thinking mode +- Function calling (perfect for HA control) +- Vision support (could analyze charts, screenshots) + +### Grok (xAI) + +**Endpoint:** `https://api.x.ai/v1/chat/completions` +**Get API key:** https://console.x.ai/ +**Format:** OpenAI SDK compatible + +**Pricing:** + +| Model | Input/1M tokens | Output/1M tokens | Best For | +|---|---|---|---| +| Grok 4.1 Fast | $0.20 | $1.00 | Budget queries | +| Grok 4 | $3.00 | $15.00 | Full capability | + +**Free credits:** $25 new user + $150/month if opting into data sharing program + +**Features:** +- 2 million token context window (industry-leading) +- Real-time X (Twitter) integration +- Internet search capability +- OpenAI SDK compatibility + +--- + +## Monthly Cost Estimates + +### Conservative Use (80/15/5 Split, 1000 queries/month) + +| Route | Queries | Model | Cost | +|---|---|---|---| +| Local (80%) | 800 | Ollama | $0 | +| Claude (15%) | 150 | Haiku 4.5 | ~$0.45 | +| Grok (5%) | 50 | Grok 4.1 Fast | ~$0.07 | +| **Total** | **1000** | | **~$0.52/month** | + +### Heavy Use (60/25/15 Split, 3000 queries/month) + +| Route | Queries | Model | Cost | +|---|---|---|---| +| Local (60%) | 1800 | Ollama | $0 | +| Claude (25%) | 750 | Sonnet 4.5 | ~$15 | +| Grok (15%) | 450 | Grok 4 | ~$9 | +| **Total** | **3000** | | **~$24/month** | + +**Add electricity for LLM server:** ~$15-30/month (RTX 4090 build) + +--- + +## Home Assistant Integration + +### Connect HA to LiteLLM Proxy + +**Option 1: Extended OpenAI Conversation (Recommended)** + +Install via HACS, then configure: +- API Base URL: `http://:4000/v1` +- API Key: (any string, LiteLLM doesn't validate for local) +- Model: `local-fast` (or any model name from your config) + +This gives HA natural language control: +- "Turn off all lights downstairs" --> local LLM understands --> calls HA service +- "What's my battery charge level?" --> queries HA entities --> responds + +**Option 2: Native Ollama Integration** + +Settings > Integrations > Ollama: +- URL: `http://:11434` +- Simpler but bypasses the routing layer + +### Voice Assistant Pipeline + +``` +Wake word detected ("Hey Jarvis") + | + Whisper (speech-to-text, local) + | + Query text + | + Extended OpenAI Conversation + | + LiteLLM Proxy (routing) + | + Response text + | + Piper (text-to-speech, local) + | + Speaker output +``` + +--- + +## Sources + +- https://docs.litellm.ai/ +- https://github.com/open-webui/open-webui +- https://console.anthropic.com/ +- https://docs.x.ai/developers/models +- https://github.com/jekalmin/extended_openai_conversation +- https://github.com/aurelio-labs/semantic-router diff --git a/projects/wrightstown-smarthome/documentation/llm-server-build.md b/projects/wrightstown-smarthome/documentation/llm-server-build.md new file mode 100644 index 0000000..03d9f7e --- /dev/null +++ b/projects/wrightstown-smarthome/documentation/llm-server-build.md @@ -0,0 +1,192 @@ +# Local LLM Server - Build Guide + +**Created:** 2026-02-09 +**Purpose:** Dedicated local LLM inference server for smart home + general use + +--- + +## Recommended Build: RTX 4090 (Sweet Spot) + +| Component | Spec | Est. Cost | +|---|---|---| +| GPU | NVIDIA RTX 4090 24GB | $1,200-1,500 | +| CPU | AMD Ryzen 7 5800X3D | $250 | +| Motherboard | B550 | $120 | +| RAM | 64GB DDR4 (2x32GB) | $120 | +| Storage | 1TB NVMe Gen4 | $80 | +| PSU | 850W Gold | $100 | +| Case | Mid-tower, good airflow | $70 | +| **Total** | | **$1,940-2,240** | + +### Why This Build + +- 24GB VRAM runs 70B parameter models at 4-bit quantization (7-9 tok/s) +- 30B models at 8-bit quality (20+ tok/s) +- 7-8B models at full speed (30+ tok/s) +- Handles everything from quick voice commands to serious reasoning +- Single GPU keeps complexity low + +### Alternative Builds + +**Budget (~$580):** +- RTX 3060 12GB (used, $250) +- Ryzen 5 5600X + B450 + 32GB DDR4 +- Runs 7B models great, 13B quantized +- Fine for voice commands and basic queries + +**Flagship (~$4,000-5,400):** +- RTX 5090 32GB ($2,500-3,800) +- Ryzen 9 7950X + X670E + 128GB DDR5 +- 70B models at high quality (20+ tok/s) +- 67% faster than 4090 +- Future-proof for larger models + +**Efficiency (Mac Mini M4 Pro, $1,399+):** +- 24-64GB unified memory +- 20W power draw vs 450W for 4090 +- Great for always-on server +- Qwen 2.5 32B at 11-12 tok/s on 64GB config + +--- + +## Software Stack + +### Primary: Ollama + +```bash +# Install (Linux) +curl -fsSL https://ollama.com/install.sh | sh + +# Install (Windows) +# Download from https://ollama.com/download + +# Pull models +ollama pull qwen2.5:7b # Fast voice commands +ollama pull llama3.1:8b # General chat +ollama pull qwen2.5:32b # Complex reasoning (needs 24GB+ VRAM) +ollama pull llama3.1:70b-q4 # Near-cloud quality (needs 24GB VRAM) + +# API runs on http://localhost:11434 +``` + +**Why Ollama:** +- One-command install +- Built-in model library +- OpenAI-compatible API (works with LiteLLM, Open WebUI, HA) +- Auto-optimized for your hardware +- Dead simple + +### Web Interface: Open WebUI + +```bash +docker run -d -p 3000:8080 \ + -v open-webui:/app/backend/data \ + -e OLLAMA_BASE_URL=http://localhost:11434 \ + ghcr.io/open-webui/open-webui:main +``` + +- ChatGPT-like interface at `http://:3000` +- Model selection dropdown +- Conversation history +- RAG (Retrieval Augmented Generation) support +- User accounts + +--- + +## Model Recommendations + +### For Home Assistant Voice Commands (Speed Priority) + +| Model | VRAM | Speed (4090) | Quality | Use Case | +|---|---|---|---|---| +| Qwen 2.5 7B | 4GB | 30+ tok/s | Good | Voice commands, HA control | +| Phi-3 Mini 3.8B | 2GB | 40+ tok/s | Decent | Ultra-fast simple queries | +| Llama 3.1 8B | 5GB | 30+ tok/s | Good | General chat | +| Gemma 2 9B | 6GB | 25+ tok/s | Good | Efficient general use | + +### For Complex Reasoning (Quality Priority) + +| Model | VRAM (Q4) | Speed (4090) | Quality | Use Case | +|---|---|---|---|---| +| Qwen 2.5 32B | 18GB | 15-20 tok/s | Very Good | Detailed analysis | +| Llama 3.1 70B | 35GB | 7-9 tok/s | Excellent | Near-cloud reasoning | +| DeepSeek R1 | Varies | 10-15 tok/s | Excellent | Step-by-step reasoning | +| Mistral 22B | 12GB | 20+ tok/s | Good | Balanced speed/quality | + +### For Code + +| Model | Best For | +|---|---| +| DeepSeek Coder V2 | Debugging, refactoring | +| Qwen3 Coder | Agentic coding tasks | +| Llama 3.1 70B | General code + reasoning | + +### Quantization Guide + +4-bit quantization maintains 95-98% quality at 75% less VRAM. Most users can't tell the difference. + +| Quantization | VRAM Use | Quality | When to Use | +|---|---|---|---| +| Q4_K_M | 25% of full | 95-98% | Default for most models | +| Q5_K_M | 31% of full | 97-99% | When you have spare VRAM | +| Q8_0 | 50% of full | 99%+ | When quality matters most | +| FP16 (full) | 100% | 100% | Only for small models (7B) | + +--- + +## RAM Requirements + +| Model Size | Minimum System RAM | Recommended | GPU VRAM (Q4) | +|---|---|---|---| +| 7B | 16GB | 32GB | 4-5GB | +| 13B | 32GB | 32GB | 8-9GB | +| 30B | 32GB | 64GB | 16-18GB | +| 70B | 64GB | 128GB | 35-40GB | + +--- + +## Power and Noise Considerations + +This is an always-on server in your home: + +| GPU | TDP | Idle Power | Annual Electricity (24/7) | +|---|---|---|---| +| RTX 3060 12GB | 170W | ~15W | ~$50-80/yr idle | +| RTX 4060 Ti 16GB | 165W | ~12W | ~$45-75/yr idle | +| RTX 4090 24GB | 450W | ~20W | ~$60-100/yr idle | +| RTX 5090 32GB | 575W | ~25W | ~$75-120/yr idle | + +**Tips:** +- Configure GPU to idle at low power when no inference running +- Use Ollama's auto-unload (models unload from VRAM after idle timeout) +- Consider noise: a 4090 under load is not quiet. Use a case with good fans and put the server in a utility room/closet + +--- + +## Server OS Recommendations + +**Ubuntu Server 24.04 LTS** (recommended) +- Best NVIDIA driver support +- Docker native +- Easy Ollama install +- Headless (no GUI overhead) + +**Windows 11** (if you want dual-use) +- Ollama has native Windows support +- Docker Desktop for Open WebUI +- More overhead than Linux + +**Proxmox** (if you want to run multiple VMs/containers) +- GPU passthrough to LLM VM +- Run other services alongside +- More complex setup + +--- + +## Sources + +- https://localllm.in/blog/best-gpus-llm-inference-2025 +- https://sanj.dev/post/affordable-ai-hardware-local-llms +- https://introl.com/blog/local-llm-hardware-pricing-guide-2025 +- https://www.glukhov.org/post/2025/11/hosting-llms-ollama-localai-jan-lmstudio-vllm-comparison/ +- https://huggingface.co/blog/daya-shankar/open-source-llms diff --git a/projects/wrightstown-smarthome/documentation/network-security.md b/projects/wrightstown-smarthome/documentation/network-security.md new file mode 100644 index 0000000..5aff92f --- /dev/null +++ b/projects/wrightstown-smarthome/documentation/network-security.md @@ -0,0 +1,210 @@ +# Network Security - VLAN Architecture & Privacy + +**Created:** 2026-02-09 +**Purpose:** IoT isolation, private data protection, PII sanitization for cloud APIs + +--- + +## VLAN Architecture + +``` ++---------------------------------------------+ +| VLAN 1: Trusted (192.168.1.0/24) | +| Laptops, phones, tablets | +| Full internet access | +| Can initiate connections to all VLANs | ++---------------------------------------------+ + | (can access) ++---------------------------------------------+ +| VLAN 10: Infrastructure (192.168.10.0/24) | +| Home Assistant Yellow | +| LLM Server | +| NAS (if applicable) | +| Can access Trusted + IoT VLANs | ++---------------------------------------------+ + | (can access) ++---------------------------------------------+ +| VLAN 20: IoT (192.168.20.0/24) | +| Zigbee coordinator (HA Yellow) | +| WiFi cameras, sensors, smart plugs | +| BLOCKED from initiating to Trusted | +| Internet restricted (DNS/NTP only) | ++---------------------------------------------+ + | (restricted) ++---------------------------------------------+ +| VLAN 99: Guest (192.168.99.0/24) | +| Guest devices | +| Internet only, no internal access | ++---------------------------------------------+ +``` + +--- + +## Firewall Rules + +### Rule 1: IoT Isolation (Critical) +- **ALLOW:** Trusted --> IoT (control devices from phone) +- **BLOCK:** IoT --> Trusted (prevent compromised device probing network) + +### Rule 2: Infrastructure Bridge +- **ALLOW:** Infrastructure --> IoT (HA controls devices) +- **ALLOW:** Infrastructure --> Trusted (send notifications) +- **ALLOW:** Trusted --> Infrastructure (access HA web UI, LLM) + +### Rule 3: IoT Internet Restriction +- **ALLOW:** IoT --> DNS (port 53) and NTP (port 123) +- **BLOCK:** IoT --> Internet (all other ports) +- **EXCEPTION:** Whitelist specific cloud services if device requires it + +### Rule 4: mDNS Control +- **BLOCK:** Broadcast protocols across VLANs by default +- **ALLOW:** Selective mDNS reflection for HA discovery + +--- + +## Hardware Options + +### Budget: TP-Link Omada (~$150) +- ER605 router ($60) -- VLAN routing, firewall rules +- TL-SG2008P managed switch ($90) -- VLAN tagging, PoE + +### Mid-tier: Ubiquiti UniFi (~$760) +- Dream Machine Pro ($379) -- Router + controller + IDS +- USW-24-PoE switch ($379) -- 24 ports, VLAN, PoE +- Better UI, more features, IDS/IPS built in + +### Existing Gear +- Most Netgear managed switches support VLANs +- OpenWRT on consumer routers adds VLAN capability +- pfSense/OPNsense on old PC is free and powerful + +--- + +## Privacy: Keeping Data Local + +### Core Principle + +**Private data NEVER leaves the local network.** + +| Data Type | Route | Why | +|---|---|---| +| Sensor readings | Local LLM only | Reveals activity patterns | +| Camera feeds | Local LLM only | Obvious privacy concern | +| Device names/locations | Local LLM only | Reveals home layout | +| Presence detection | Local LLM only | Reveals who's home | +| Personal names/addresses | Strip before cloud | PII | +| Energy usage patterns | Sanitize before cloud | Activity inference | +| General questions | Cloud OK | No private data | +| Internet searches | Cloud OK (Grok) | No private data | + +### PII Sanitization Pipeline + +For queries that go to cloud APIs, scrub private information first: + +```python +from presidio_analyzer import AnalyzerEngine +from presidio_anonymizer import AnonymizerEngine + +analyzer = AnalyzerEngine() +anonymizer = AnonymizerEngine() + +def sanitize_for_cloud(query): + """Remove PII before sending to Claude/Grok""" + + # Detect sensitive entities + results = analyzer.analyze( + text=query, + entities=["PERSON", "LOCATION", "PHONE_NUMBER", + "EMAIL_ADDRESS", "DATE_TIME"], + language="en" + ) + + # Anonymize detected entities + sanitized = anonymizer.anonymize(text=query, analyzer_results=results) + + # Hard block certain categories + blocked_keywords = ["camera", "location", "address", + "password", "who is home", "alarm"] + if any(kw in query.lower() for kw in blocked_keywords): + return None # Block query entirely, handle locally + + return sanitized.text +``` + +### Cloud API Data Policies + +**Anthropic (Claude):** +- API inputs are NOT used for training by default +- Can explicitly opt out +- Data retained 30 days for safety, then deleted + +**xAI (Grok):** +- Data sharing program is opt-in ($150/month credit if you opt in) +- Can opt out and keep data private +- Standard API usage not used for training if opted out + +--- + +## Remote Access + +### Recommended: Tailscale (Zero-Config VPN) + +```bash +# Install on LLM server and HA +curl -fsSL https://tailscale.com/install.sh | sh +tailscale up +``` + +- WireGuard-based mesh network +- No port forwarding needed +- Free for personal use (up to 20 devices) +- Access HA + LLM from anywhere securely + +### Alternative: WireGuard (Self-Hosted) + +- Run on router or dedicated server +- Full control, no third-party dependency +- Requires port forwarding (one UDP port) +- More setup, more control + +### Home Assistant Cloud (Nabu Casa) + +- $6.50/month, official HA remote access +- No VPN config needed +- Supports HA development team +- Simplest option + +--- + +## Security Hardening Checklist + +- [ ] Disable UPnP on router +- [ ] Enable 2FA on Home Assistant +- [ ] Strong passwords (16+ chars, random) on all services +- [ ] Regular updates: HA, Ollama, OS, router firmware +- [ ] Monitor failed login attempts in HA logs +- [ ] Daily automated backups (HA + LLM configs) +- [ ] Firewall rules reviewed quarterly +- [ ] IoT devices on isolated VLAN +- [ ] No camera feeds sent to cloud APIs +- [ ] PII sanitization active on cloud-bound queries + +--- + +## Data Retention + +| System | Retention | Notes | +|---|---|---| +| HA sensor data | 30 days raw, indefinite aggregated | Purge in Settings > System > Storage | +| Camera recordings | 7-14 days | Local storage only (NAS or NVMe) | +| LLM conversation logs | Purge monthly | Ollama logs stored locally | +| Cloud API logs | Disable or redact PII | Check provider settings | + +--- + +## Sources + +- https://newerest.space/mastering-network-segmentation-vlans-home-assistant-iot-security/ +- https://www.xda-developers.com/vlan-rules-every-smart-home-should-have/ +- https://thehomesmarthome.com/home-assistant-security-vlans-firewalls-ids/ +- https://tailscale.com/ diff --git a/projects/wrightstown-smarthome/session-logs/2026-02-09-session.md b/projects/wrightstown-smarthome/session-logs/2026-02-09-session.md new file mode 100644 index 0000000..c0a4560 --- /dev/null +++ b/projects/wrightstown-smarthome/session-logs/2026-02-09-session.md @@ -0,0 +1,85 @@ +# Wrightstown Smart Home - Session Log 2026-02-09 + +**Session:** Initial Research and Planning +**Machine:** ACG-M-L5090 + +--- + +## Work Completed + +### 1. Project Scope Defined +- Privacy-first smart home (no Google/Alexa) +- Home Assistant Yellow (already owned, not set up) +- Local LLM server for private queries +- Hybrid bridge: local + Claude API + Grok API +- Separate project from Wrightstown Solar, with planned crossover + +### 2. Home Assistant Yellow Research +- Yellow still receives updates despite production ending Oct 2025 +- Needs CM4 or CM5 compute module (not included) +- Built-in Zigbee 3.0 radio, M.2 NVMe slot +- Local voice: Wyoming + Whisper + Piper (all local, no cloud) +- Victron integration planned via Modbus TCP (future crossover) + +### 3. Local LLM Server Research +- Recommended build: RTX 4090 24GB ($1,940-2,240) +- Software: Ollama (primary) + Open WebUI (interface) +- Models: Qwen 2.5 7B (fast voice), Llama 3.1 70B Q4 (reasoning) +- Alternative builds researched: budget ($580), flagship ($4,000+), Mac Mini M4 + +### 4. Hybrid Bridge Design +- LiteLLM proxy as unified routing layer +- Routes: local (Ollama) / Claude API (reasoning) / Grok API (search) +- 80/15/5 split estimated at ~$5/month cloud costs +- Manual routing first, keyword-based later, semantic routing eventual +- Integration with HA via Extended OpenAI Conversation + +### 5. Network Security Design +- 4-VLAN architecture: Trusted / Infrastructure / IoT / Guest +- IoT isolation (devices can't reach trusted network) +- PII sanitization pipeline for cloud-bound queries +- Private data (cameras, sensors, presence) stays local only +- Remote access via Tailscale or WireGuard + +--- + +## Decisions Made + +| Decision | Chosen | Rationale | +|---|---|---| +| Smart home platform | Home Assistant | Open source, local-first, 2000+ integrations | +| Hardware | HA Yellow (owned) | Built-in Zigbee, already purchased | +| Voice assistant | Wyoming/Whisper/Piper | Fully local, no cloud dependency | +| LLM server GPU | RTX 4090 24GB (recommended) | Best price/performance for 70B models | +| LLM software | Ollama | Simplest, OpenAI-compatible API | +| Hybrid routing | LiteLLM | Unified API, cost tracking, fallbacks | +| Cloud: reasoning | Claude API (Anthropic) | Best reasoning quality | +| Cloud: search | Grok API (xAI) | Internet access, 2M context | +| Network | VLAN segmentation | IoT isolation, privacy | +| Separate from solar | Yes | Different timelines, crossover later | + +--- + +## Files Created + +- `projects/wrightstown-smarthome/PROJECT_INDEX.md` +- `projects/wrightstown-smarthome/documentation/ha-yellow-setup.md` +- `projects/wrightstown-smarthome/documentation/llm-server-build.md` +- `projects/wrightstown-smarthome/documentation/hybrid-bridge.md` +- `projects/wrightstown-smarthome/documentation/network-security.md` +- `projects/wrightstown-smarthome/session-logs/2026-02-09-session.md` (this file) + +--- + +## Next Steps + +- [ ] Check if CM4/CM5 module is owned or needs purchasing +- [ ] Set up HA Yellow (basic install, Zigbee, first automations) +- [ ] Research specific Zigbee devices to purchase +- [ ] Decide on LLM server GPU budget (3060 budget vs 4090 sweet spot) +- [ ] Purchase LLM server hardware +- [ ] Decide on VLAN hardware (TP-Link Omada vs Ubiquiti UniFi) +- [ ] Set up Ollama + Open WebUI +- [ ] Create Anthropic API account + Grok API account +- [ ] Configure LiteLLM proxy +- [ ] Integrate with HA via Extended OpenAI Conversation diff --git a/projects/wrightstown-solar/PROJECT_INDEX.md b/projects/wrightstown-solar/PROJECT_INDEX.md new file mode 100644 index 0000000..0a5a0c0 --- /dev/null +++ b/projects/wrightstown-solar/PROJECT_INDEX.md @@ -0,0 +1,118 @@ +# Wrightstown Solar - Project Index + +**Project:** DIY Home Solar Battery Storage +**Location:** Wrightstown (home) +**Status:** Planning / Research Phase +**Created:** 2026-02-09 +**Last Updated:** 2026-02-09 + +--- + +## Project Overview + +DIY 48V LiFePO4 battery storage system for whole-house UPS / backup power with generator failover. Designed for modular expansion from 5kWh to 20kWh. + +## Target System Specs + +| Spec | Value | +|---|---| +| Chemistry | LiFePO4 (LFP) | +| Cell | EVE C40 (40135 cylindrical, 3.2V 20Ah) | +| Configuration | 16S5P per 5kWh pack | +| Nominal Voltage | 51.2V (48V system) | +| Pack Capacity | 5.12kWh per pack | +| Target Total | 20kWh (4 packs) | +| Inverter | Victron MultiPlus II 48/5000 | +| BMS | JK BMS B2A8S20P 150A (recommended) | +| GX Device | Cerbo GX | +| Existing Solar | Fronius IG Plus (grid-tie string inverter) | + +## Design Goals + +1. Seamless switchover when grid drops (<20ms, UPS-grade) +2. Zero grid backfeed (physical relay disconnect) +3. Generator input for extended outages +4. Modular expansion (build one 5kWh pack at a time) +5. Fronius solar continues working during outages via Victron micro-grid + +## Architecture + +``` + NORMAL OPERATION +Grid -----> [Victron MultiPlus II] -----> House Panel + | + [48V Battery] + (EVE C40 packs) + +Generator ---> [AC Input 2] + + GRID DOWN +Grid --X [Victron MultiPlus II] -----> House Panel + (relay OPENS, no backfeed) + | + [48V Battery] (discharging) + +Generator ---> [AC Input] (if battery low) +``` + +--- + +## Files + +### Documentation +| File | Description | +|---|---| +| `documentation/system-design.md` | Full system architecture and component specs | +| `documentation/bms-comparison.md` | BMS models compatible with Victron CAN bus | +| `documentation/ev-salvage-analysis.md` | Analysis of salvaged EV packs vs new cells | +| `documentation/parts-list.md` | Bill of materials and estimated costs | + +### Session Logs +| File | Description | +|---|---| +| `session-logs/2026-02-09-session.md` | Initial research and planning session | + +--- + +## Budget Estimate + +### Phase 1 (5kWh + Victron System) +| Component | Est. Cost | +|---|---| +| Victron MultiPlus II 48/5000 | $1,400-1,800 | +| Cerbo GX | $320-350 | +| JK BMS B2A8S20P 150A | $80-150 | +| 80x EVE C40 cells | $240-400 | +| USB-UART cable | $15 | +| Cell holders, bus bars, wiring | $60-120 | +| Fuses, breaker, enclosure | $60-110 | +| **Phase 1 Total** | **$2,175-2,945** | + +### Phases 2-4 (Additional 15kWh) +| Component | Est. Cost | +|---|---| +| 3x additional 5kWh packs (cells + BMS + hardware) | $1,140-2,010 | +| **Full 20kWh System Total** | **$3,315-4,955** | + +--- + +## Decision Log + +| Date | Decision | Rationale | +|---|---|---| +| 2026-02-09 | EVE C40 cells over salvaged EV packs | Lower $/kWh ($190-282 vs $365-780), longer life, LFP safety, simpler build | +| 2026-02-09 | 5kWh modular packs (not 10kWh) | Spread cost, manageable builds, fault isolation, one-person liftable | +| 2026-02-09 | Victron MultiPlus II for inverter | <20ms UPS switchover, physical relay anti-backfeed, generator support, micro-grid for Fronius | +| 2026-02-09 | JK BMS B2A8S20P (recommended) | 2A active balancing critical for cylindrical cells, best value, huge community | +| 2026-02-09 | Keep Fronius IG Plus | Still functional; AC-couple via Victron micro-grid during outages | + +--- + +## Next Steps + +- [ ] Finalize BMS selection (JK BMS vs REC BMS vs SEPLOS) +- [ ] Source EVE C40 cells (Grade A, matched, with test data) +- [ ] Order Victron MultiPlus II 48/5000 + Cerbo GX +- [ ] Design cell holder / bus bar layout for 16S5P cylindrical pack +- [ ] Plan sub-panel / transfer switch wiring +- [ ] Build Pack 1, test for 1 month before expanding diff --git a/projects/wrightstown-solar/documentation/bms-comparison.md b/projects/wrightstown-solar/documentation/bms-comparison.md new file mode 100644 index 0000000..088d25e --- /dev/null +++ b/projects/wrightstown-solar/documentation/bms-comparison.md @@ -0,0 +1,211 @@ +# Wrightstown Solar - BMS Comparison (Victron CAN Bus Compatible) + +**Created:** 2026-02-09 +**System:** 16S5P, EVE C40 20Ah, 48V, Victron MultiPlus II + Cerbo GX + +--- + +## Quick Comparison + +| BMS | Price | Current | Balancing | Victron Method | Complexity | +|---|---|---|---|---|---| +| **JK BMS B2A8S20P** | $80-150 | 100-200A | 2A Active | dbus-serialbattery (USB) | Moderate | +| **SEPLOS V3/V4** | $150-250 | 100-200A | Passive | Native CAN | Easy | +| **Overkill Solar (JBD)** | $280-320 | 100A | Passive | dbus-serialbattery (USB) | Moderate | +| **123SmartBMS Gen3** | $300-400 | Configurable | 1A Active | Native USB to Cerbo | Easy | +| **REC BMS Q16** | $559 | Varies | 0.9A Passive | Native CAN (plug & play) | Easiest | +| **Batrium WatchMon** | $650-850 | High (shunt) | 28Ah/day | Native CAN | Complex | +| **Daly Smart BMS** | $80-150 | 100A/50A charge | 30mA Passive | dbus-serialbattery | Moderate | +| **Orion BMS** | $500+ | Configurable | Active options | Native CAN | Easy | + +--- + +## Recommended: JK BMS B2A8S20P (150A Version) + +### Why This BMS for EVE C40 Cylindrical Cells + +- **2A active balancing** -- Critical for cylindrical cells which have more cell-to-cell variation than prismatic. With 5P strings, mismatches multiply. Passive balancing at 30-200mA takes days; JK's 2A active balancing corrects in hours. +- **150A rating** -- 16S5P is 100Ah, so 150A provides headroom for inrush and peak loads +- **$80-150** -- Best value in the market +- **Huge DIY community** -- Every problem already solved on forums + +### Specs + +- Current ratings: 100A, 150A, 200A options +- Balancing: 2A active (best in class at this price) +- Communication: Bluetooth, RS485, CAN, UART +- Monitoring: Real-time via smartphone app +- Temperature: Multiple sensor inputs + +### Victron Integration + +``` +JK BMS --[USB-UART cable ($15)]--> Cerbo GX + | + dbus-serialbattery + (free open-source driver) + | + DVCC enabled + | + Victron MultiPlus II +``` + +**Required:** +1. USB-UART cable (~$15) +2. dbus-serialbattery driver (free, install via SSH on Cerbo) +3. DVCC enabled in Cerbo settings + +### [WARNING] Known Gotcha: Reversed CAN Pinout + +JK BMS has CAN-H and CAN-L SWAPPED compared to Victron's RJ45 pinout. Solutions: +- Buy pre-made JK-to-Victron cable (AliExpress) +- Make your own cable and swap pins 7 & 8 +- Use USB-UART connection instead (avoids CAN entirely -- recommended path) + +### Known Issues + +- Firmware updates frequently with no changelog -- check forums before updating +- SOC can jump from 85% to 100% prematurely during fast charge +- Battery capacity/consumed Ah data may not transmit to Cerbo via some driver versions +- Inconsistent quality control between batches -- test thoroughly on arrival + +### Where to Buy + +- AliExpress: $80-120 (multiple sellers) +- Amazon: $120-180 (JKBMS official store) +- EEL Battery, SeLian Energy (resellers) + +--- + +## Alternative: SEPLOS V3/V4 (Easiest Native CAN) + +### Why Consider + +- Native Victron CAN protocol -- no drivers needed +- One CAN cable to Cerbo, auto-detects +- Multiple units can chain on one CAN link (good for expansion to 4 packs) +- $150-250 is reasonable mid-tier pricing + +### Drawbacks + +- Passive balancing only (slower than JK's active) +- Less community documentation +- Setup can be tricky initially + +### Where to Buy + +- Seplos.com (official) +- AliExpress, Alibaba + +--- + +## Premium Option: REC BMS Q16 (Zero Hassle) + +### Why Consider + +- TRUE plug and play -- one CAN cable, auto-detected, DVCC works immediately +- Most reliable Victron integration available +- Professional-grade, excellent documentation +- SOC/SOH calculation, cell resistance measurement + +### Drawbacks + +- $559 -- nearly 4x the JK price +- Passive balancing only (0.9A) -- slower for cylindrical cells +- No active balancing option + +### Where to Buy + +- Off Grid and Marine Energy (OGM Energy): $559 +- REC-BMS.com (official) + +--- + +## Budget Option: Daly Smart BMS [NOT RECOMMENDED] + +### Why to Avoid for This Build + +- 100A discharge but only **50A charge** -- will bottleneck solar charging +- 30mA passive balancing -- useless for large cells (would take 200+ hours) +- CAN speed mismatch: Daly defaults to 250kbit/s, Victron uses 500kbit/s +- Developers of dbus-serialbattery specifically do NOT recommend Daly for new builds +- Bad CAN communication implementation + +--- + +## Victron Side Configuration + +### Hardware Required + +**Cerbo GX ($320-350) -- Recommended** +- Native BMS-CAN port (500kbit/s) +- 2x USB ports for dbus-serialbattery driver +- Built-in display, Ethernet, WiFi +- VRM remote monitoring portal + +**Budget Alternative: Venus OS on Raspberry Pi 4 (~$100)** +- No native CAN bus -- needs USB CAN adapter ($20-40) +- More complex setup +- Works for USB-UART BMS connection (JK, Overkill) + +### CAN Cable Pinout (Cerbo GX BMS-CAN RJ45) + +| Pin | Function | +|---|---| +| 3 | GND | +| 7 | CAN-H | +| 8 | CAN-L | + +Only 3 wires needed. Always verify against your specific BMS datasheet. + +### Software Settings + +1. **Update firmware** on Cerbo GX, MultiPlus II, and any MPPTs to latest +2. **Battery Monitor:** Set to BMS (not "Automatic") +3. **DVCC:** Enable +4. **DVCC Sub-settings:** + - Limit managed battery charge voltage: OFF (let BMS control via CVL) + - SVS (Shared voltage sense): ON + - SCS (Shared current sense): OFF + - STS (Shared temperature sense): Optional +5. **BMS-CAN speed:** 500kbit/s (default, don't change) + +### dbus-serialbattery Driver (for JK/Overkill/Daly via USB) + +- Install on Cerbo via SSH +- Edit `/data/etc/dbus-serialbattery/config.ini` +- Set BMS type and serial port +- Free, open source: https://github.com/Louisvdw/dbus-serialbattery + +### DVCC Explained + +DVCC allows the BMS to send real-time limits to the Victron system: +- **CVL** (Charge Voltage Limit) -- max voltage the battery will accept +- **CCL** (Charge Current Limit) -- max charge current right now +- **DCL** (Discharge Current Limit) -- max discharge current right now + +The Cerbo relays these to the MultiPlus and any solar chargers, preventing overcharge, over-discharge, and overcurrent dynamically. + +--- + +## Common Mistakes to Avoid + +1. **CAN speed mismatch** -- Victron is 500kbit/s, some BMS default to 250kbit/s +2. **JK pinout reversal** -- CAN-H and CAN-L are swapped on JK BMS +3. **Enabling DVCC without setting battery monitor** -- set monitor FIRST +4. **SVS with disconnect BMS** -- if BMS disconnects on overvoltage, turn SVS OFF +5. **Multiple BMS on CAN** -- only ONE BMS should control Victron via DVCC (use master/slave for multi-pack) +6. **Charging below 0C** -- LFP cannot be charged below freezing; ensure BMS low-temp cutoff is configured +7. **Passive balancing on large cells** -- 30mA on 20Ah cells takes forever; use active balancing + +--- + +## Sources + +- [Victron Compatible BMS - DIY Solar Forum](https://diysolarforum.com/threads/victron-compatible-lifepo4-bms.47111/) +- [Victron Community - Compatible BMS List](https://community.victronenergy.com/questions/13574/list-of-compatible-bms-vebus-or-canbus.html) +- [JK BMS and DVCC - Victron Community](https://community.victronenergy.com/t/jk-bms-and-dvcc/29580) +- [REC BMS Victron Integration Guide - OGM Energy](https://ogm-energy.com/community/ogm-user-forum/topic/154310/) +- [dbus-serialbattery GitHub](https://github.com/Louisvdw/dbus-serialbattery) +- [Victron DVCC Documentation](https://www.victronenergy.com/media/pg/CCGX/en/dvcc---distributed-voltage-and-current-control.html) +- [VE.Can to CAN-bus BMS Cables](https://www.victronenergy.com/live/battery_compatibility:can-bus_bms-cable) diff --git a/projects/wrightstown-solar/documentation/ev-salvage-analysis.md b/projects/wrightstown-solar/documentation/ev-salvage-analysis.md new file mode 100644 index 0000000..16211b6 --- /dev/null +++ b/projects/wrightstown-solar/documentation/ev-salvage-analysis.md @@ -0,0 +1,93 @@ +# Wrightstown Solar - Salvaged EV Battery Analysis + +**Created:** 2026-02-09 +**Decision:** New EVE C40 cells selected over salvaged EV packs + +--- + +## Summary + +Salvaged EV battery packs were evaluated as an alternative to new EVE C40 LiFePO4 cells for the 20kWh home storage system. The analysis concluded that new cells are the better choice due to lower total cost, longer lifespan, better safety profile, and simpler integration. + +--- + +## Cost Comparison + +| Option | Cost for 20kWh | $/kWh | Expected Life | Chemistry | +|---|---|---|---|---| +| **New EVE C40** | **$3,800-5,640** | **$190-282** | **3,000-6,000 cycles** | **LFP** | +| Salvaged Tesla LFP | $8,500-15,600 | $415-780 | 500-2,000 cycles | LFP | +| Salvaged Chevy Bolt | $9,800-14,000 | $490-700 | 500-1,500 cycles | NMC | +| Salvaged Nissan Leaf | $7,300-10,000 | $365-500 | 500-1,500 cycles | NMC | + +--- + +## Why Salvaged Packs Cost More Than Expected + +### Voltage Mismatch + +EV packs run at 350-400V. The system needs 48V. Options: +- DC-DC converter (400V to 48V): $1,500-3,000 +- Complete pack disassembly and reconfiguration: 40-60 hours labor + +### Proprietary BMS + +OEM battery management systems are useless outside the vehicle. Aftermarket replacement (e.g., Orion BMS) costs $800-1,500 plus significant wiring work. + +### Cooling Systems + +Most EV packs are liquid cooled. At home storage discharge rates, passive cooling may suffice, but you're discarding a system the cells were designed around. Adding proper cooling: $500-1,500. + +### Unknown State of Health + +- No reliable way to verify remaining capacity without specialized testing +- Packs from totaled vehicles have unknown fast-charge history and cycle count +- Cells may be at 70% SOH when "retired" -- a 60kWh pack may only deliver 40kWh +- Average EV battery loses 2.3% capacity per year + +### Chemistry Concerns + +Most salvaged packs are NMC (nickel manganese cobalt), NOT LiFePO4: +- NMC thermal runaway: ~210C (410F) +- LFP thermal runaway: ~270C (518F) +- For home storage inside/next to a house, LFP is the responsible choice + +### Time Investment + +- Salvaged EV build: 40-100+ hours (disassembly, testing, rewiring, custom fabrication) +- New C40 build: 10-20 hours per 5kWh pack with off-the-shelf parts + +--- + +## When Salvaged DOES Make Sense + +- Tesla Model 3 Standard Range LFP modules at under $100/kWh with verified 85%+ SOH +- Free/very cheap packs from personal connections +- Educational/hobby project where learning is the goal +- Electrical engineering background and high-voltage experience +- However: LFP Model 3 was discontinued in US market due to tariffs, limiting availability + +--- + +## Salvage Sources (For Reference) + +- Currents Marketplace (currents.market) -- dedicated EV battery platform +- Greentec Auto (greentecauto.com) -- premium second-life batteries +- Second Life EV Batteries (secondlife-evbatteries.com) +- AZLithium (azlithium.com) -- Chevy Volt, Leaf, BMW i3 modules +- eBay -- wide selection, variable quality + +--- + +## Decision Rationale + +New EVE C40 cells win on every metric that matters for this project: + +1. **50-65% cheaper** total system cost +2. **3-10x longer lifespan** (known cycle life vs unknown remaining) +3. **Safer chemistry** (LFP vs NMC) +4. **Native 48V** configuration (no voltage conversion) +5. **Standard BMS** compatibility (off-the-shelf 16S) +6. **Known capacity** (no degradation mysteries) +7. **5x less build time** (10-20 hours vs 40-100+) +8. **Warranty coverage** from cell manufacturer diff --git a/projects/wrightstown-solar/documentation/parts-list.md b/projects/wrightstown-solar/documentation/parts-list.md new file mode 100644 index 0000000..1281e21 --- /dev/null +++ b/projects/wrightstown-solar/documentation/parts-list.md @@ -0,0 +1,122 @@ +# Wrightstown Solar - Parts List & Budget + +**Created:** 2026-02-09 +**Status:** Draft -- prices are estimates, verify before purchasing + +--- + +## Phase 1: First 5kWh Pack + Victron System + +### Inverter & Control + +| Component | Qty | Est. Unit | Est. Total | Notes | +|---|---|---|---|---| +| Victron MultiPlus II 48/5000/70-50 | 1 | $1,400-1,800 | $1,400-1,800 | 4kW continuous, 9kW peak, <20ms transfer | +| Cerbo GX | 1 | $320-350 | $320-350 | System brain, DVCC, VRM monitoring | +| GX Touch 50 (optional) | 1 | $150-180 | $150-180 | Touchscreen for Cerbo (or use HDMI) | + +### Battery Pack (16S5P) + +| Component | Qty | Est. Unit | Est. Total | Notes | +|---|---|---|---|---| +| EVE C40 20Ah cells (Grade A, matched) | 80 | $3-5 | $240-400 | Verify test data from supplier | +| JK BMS B2A8S20P 150A | 1 | $80-150 | $80-150 | 2A active balancing, 16S | +| USB-UART cable | 1 | $15 | $15 | JK BMS to Cerbo GX connection | +| 40135 cell holders | Set | $20-40 | $20-40 | Cylindrical cell mounting | +| Nickel/copper bus bars | Set | $20-40 | $20-40 | Cell interconnects | +| Battery enclosure | 1 | $30-60 | $30-60 | Ventilated, insulated | +| Class T fuse + holder (150A) | 1 | $20-30 | $20-30 | DC protection | +| DC disconnect switch | 1 | $20-40 | $20-40 | Isolation between battery and inverter | +| Battery cables (2/0 AWG or similar) | Set | $30-50 | $30-50 | Battery to inverter | +| Terminal lugs, heat shrink, misc | Set | $20-30 | $20-30 | Assembly supplies | + +### Electrical / Installation + +| Component | Qty | Est. Unit | Est. Total | Notes | +|---|---|---|---|---| +| Sub-panel (if separating critical loads) | 1 | $50-100 | $50-100 | Or use existing panel | +| AC breakers | 2-3 | $10-15 | $20-45 | Input and output protection | +| AC wiring (10 AWG or per code) | Lot | $30-50 | $30-50 | Grid to Victron to panel | +| Generator inlet (if adding generator) | 1 | $30-60 | $30-60 | NEMA L14-30 or similar | +| Mounting hardware | Lot | $20-30 | $20-30 | Wall mount for Victron, battery shelf | + +### Phase 1 Total + +| Category | Low Est. | High Est. | +|---|---|---| +| Inverter & Control | $1,720 | $2,330 | +| Battery Pack | $475 | $855 | +| Electrical / Install | $150 | $285 | +| **Phase 1 Total** | **$2,345** | **$3,470** | + +--- + +## Phase 2-4: Additional 5kWh Packs (x3) + +### Per Additional Pack + +| Component | Qty | Est. Unit | Est. Total | +|---|---|---|---| +| EVE C40 20Ah cells | 80 | $3-5 | $240-400 | +| JK BMS B2A8S20P 150A | 1 | $80-150 | $80-150 | +| Cell holders, bus bars | Set | $40-80 | $40-80 | +| Enclosure | 1 | $30-60 | $30-60 | +| Fuse, disconnect, cables | Set | $40-70 | $40-70 | +| **Per Pack Total** | | | **$430-760** | + +### All 3 Additional Packs + +| | Low Est. | High Est. | +|---|---|---| +| 3x additional packs | $1,290 | $2,280 | + +--- + +## Full System Total (20kWh) + +| Phase | Low Est. | High Est. | +|---|---|---| +| Phase 1 (5kWh + Victron) | $2,345 | $3,470 | +| Phases 2-4 (15kWh additional) | $1,290 | $2,280 | +| **Complete 20kWh System** | **$3,635** | **$5,750** | + +### Cost Per kWh: $178-281/kWh (all-in, including inverter) +### Battery-only cost: $86-153/kWh + +--- + +## Supplier Notes + +### EVE C40 Cells + +- **Source Grade A matched cells** with test data showing capacity and internal resistance +- Reputable suppliers: EEL Battery, SeLian Energy, direct AliExpress sellers with good reviews +- Verify cells are genuine EVE (counterfeits exist) +- Order 5-10% extra cells for replacements and matching + +### JK BMS + +- Amazon (JKBMS official store) for faster shipping, slightly higher price +- AliExpress for best price, slower shipping +- Specify 150A version, 16S, with Bluetooth + RS485 + +### Victron Equipment + +- Authorized Victron dealers for warranty +- Signature Solar, altE Store, Battery Hookup (US dealers) +- Check for bundle pricing (MultiPlus + Cerbo) + +--- + +## Tools Needed + +| Tool | Purpose | Own/Buy | +|---|---|---| +| Multimeter | Cell testing, wiring verification | Essential | +| Spot welder or compression fittings | Cell connections | Depends on bus bar choice | +| Wire crimper (hydraulic for large lugs) | Battery cables | Essential | +| Torque wrench | Bus bar connections | Recommended | +| Heat gun | Heat shrink tubing | Essential | +| Insulated tools | Working near battery | Essential for safety | +| Class D fire extinguisher | Lithium battery safety | Essential | +| Safety glasses, gloves | Assembly PPE | Essential | diff --git a/projects/wrightstown-solar/documentation/system-design.md b/projects/wrightstown-solar/documentation/system-design.md new file mode 100644 index 0000000..ac117bc --- /dev/null +++ b/projects/wrightstown-solar/documentation/system-design.md @@ -0,0 +1,244 @@ +# Wrightstown Solar - System Design + +**Created:** 2026-02-09 +**Status:** Planning + +--- + +## System Overview + +Whole-house UPS using DIY 48V LiFePO4 battery packs with Victron MultiPlus II inverter. Seamless grid-to-battery switchover with generator backup for extended outages. + +--- + +## Cell Selection: EVE C40 + +| Spec | Value | +|---|---| +| Chemistry | LiFePO4 (LFP) | +| Form Factor | 40135 Cylindrical | +| Model | EVE IFR40135 / C40 | +| Nominal Voltage | 3.2V | +| Capacity | 20Ah (20,000mAh) | +| Energy per Cell | 64Wh | +| Weight | 366g | +| Max Continuous Discharge | 50-60A | +| Pulse Discharge | 100A | +| Standard Charge | 10A | +| Fast Charge | Up to 8A | +| Internal Resistance (DC) | <=8 milliohm | +| Internal Resistance (AC) | <=3 milliohm | +| Operating Temp | 0-55C | +| Certifications | CB, UL1642, UN38.3 | + +### Why Cylindrical Over Prismatic + +- Individual cell failure is contained (easier thermal runaway management) +- No compression hardware needed (prismatic cells need clamping) +- Modular -- add capacity by adding parallel strings +- Smaller units easier to handle +- Trade-off: More connections to make, need cell holders + +--- + +## Battery Pack Design + +### Per-Pack Configuration: 16S5P + +| Parameter | Value | +|---|---| +| Series cells | 16 (51.2V nominal) | +| Parallel strings | 5 | +| Total cells per pack | 80 | +| Pack voltage (nominal) | 51.2V | +| Pack voltage (full) | 58.4V (3.65V/cell) | +| Pack voltage (empty) | 48.0V (3.0V/cell cutoff) | +| Pack capacity | 100Ah / 5.12kWh | +| Max continuous discharge | 100A (limited by BMS) | +| Weight (cells only) | ~29.3kg (80 x 366g) | + +### Full System: 4 Packs (16S5P x 4) + +| Parameter | Value | +|---|---| +| Total cells | 320 | +| Total capacity | 400Ah / 20.48kWh | +| Packs in parallel | 4 (at DC bus) | +| Total weight (cells) | ~117kg | + +### Expansion Plan + +1. **Pack 1** -- Build, test, run for 1 month to validate design +2. **Pack 2** -- Parallel with Pack 1 (now 10kWh) +3. **Packs 3 & 4** -- Build together once confident in process + +--- + +## Inverter: Victron MultiPlus II 48/5000 + +| Spec | Value | +|---|---| +| Model | MultiPlus II 48/5000/70-50 | +| Continuous output | 4,000W | +| Peak output | 9,000W | +| Transfer switch | Built-in, <20ms switchover | +| AC inputs | 2 (grid + generator) | +| Battery voltage | 48V nominal | +| Max charge current | 70A | +| Transfer relay | Physical disconnect (no backfeed) | + +### Key Features for This Build + +- **UPS Function:** <20ms transfer time, seamless for all electronics +- **Anti-Island:** Physical relay opens on grid loss, zero backfeed risk +- **Generator Support:** AC Input 2 accepts generator, charges battery + powers loads simultaneously +- **Micro-Grid:** Creates stable AC output that Fronius IG Plus can sync to during outages +- **PowerAssist:** Supplements grid during high-demand periods + +### Parallel Option + +Two MultiPlus II 48/5000 units in parallel provide: +- 8,000W continuous / 18,000W peak +- Full whole-house coverage including AC units +- Consider for future expansion if single unit isn't enough + +--- + +## GX Device: Cerbo GX + +| Spec | Value | +|---|---| +| Price | $320-350 | +| BMS-CAN Port | Yes (500kbit/s) | +| USB Ports | 2 (for dbus-serialbattery driver) | +| Display | Built-in touchscreen or HDMI | +| Connectivity | Ethernet, WiFi, Bluetooth | +| Remote Monitoring | VRM Portal (free) | + +### Functions + +- DVCC (Distributed Voltage and Current Control) -- lets BMS control charge/discharge +- Battery monitoring and SOC display +- Remote monitoring via Victron VRM portal +- Generator auto-start/stop control +- System configuration interface + +--- + +## Existing Solar: Fronius IG Plus + +- **Type:** Grid-tie string inverter (NO battery port) +- **Status:** Keep as-is +- **Normal Operation:** Feeds solar to grid, offsets electricity bill +- **During Outage:** Victron creates micro-grid, Fronius syncs to it and produces solar to charge battery and power loads +- **Future:** Replace with hybrid inverter when Fronius reaches end of life + +--- + +## System Architecture + +### Normal Operation (Grid Available) + +``` +Solar Panels + | +[Fronius IG Plus] ---> Grid (net metering) + | + [Victron MultiPlus II] ---> House Panel + | (pass-through) + [48V Battery Bank] + (trickle charge / standby) +``` + +- Fronius produces solar, feeds grid +- Victron passes grid through to house +- Battery maintains float charge +- Victron can charge battery from grid if configured + +### Grid Down (Battery Mode) + +``` +Solar Panels + | +[Fronius IG Plus] ---> [Victron MultiPlus II] ---> House Panel + (syncs to | (relay OPEN, (powered from + Victron | grid isolated) battery) + micro-grid) | + [48V Battery Bank] + (discharging) +``` + +- Transfer relay opens (grid physically disconnected) +- Battery powers house via Victron +- Victron creates AC micro-grid +- Fronius detects stable AC, resumes solar production +- Solar charges battery + powers loads + +### Extended Outage (Generator Mode) + +``` +[Generator] ---> [Victron MultiPlus II] ---> House Panel + | + [48V Battery Bank] + (charging from generator) +``` + +- Generator connects to AC Input +- Victron simultaneously powers loads AND charges battery +- When battery full, can signal generator to shut down +- Battery takes over, generator restarts when battery low (auto-start capable) + +--- + +## Runtime Estimates (5kWh Single Pack) + +| Load Scenario | Consumption | Runtime | +|---|---|---| +| Essentials (fridge, lights, internet, outlets) | ~500W | 8-10 hours | +| Moderate (+ TV, computers, fans) | ~1,000W | 4-5 hours | +| Heavy (+ AC or electric cooking) | ~2,000W | 2-2.5 hours | +| Full house (everything) | ~4,000W | 1-1.25 hours | + +### At Full 20kWh (4 Packs) + +| Load Scenario | Runtime | +|---|---| +| Essentials only | 32-40 hours | +| Moderate use | 16-20 hours | +| Heavy use | 8-10 hours | + +--- + +## Installation Plan + +### Electrical Work Required + +1. **Critical Loads Sub-Panel** -- Move essential circuits to new sub-panel (or use whole panel) +2. **Victron Placement** -- Between grid and sub-panel +3. **Battery Location** -- Garage, basement, or utility room (ventilated, temperature controlled) +4. **Generator Connection** -- Dedicated inlet with proper gauge wiring +5. **Grounding** -- Victron system ground per local code + +### Safety Requirements + +- DC disconnect between battery and inverter +- Proper fusing on each battery pack (class T fuse recommended) +- Breaker on AC output +- Ventilation for battery area +- Fire extinguisher (Class D) nearby +- Temperature monitoring on cells + +--- + +## Cell Voltage Reference (LiFePO4) + +| State | Voltage/Cell | Pack Voltage (16S) | +|---|---|---| +| Full Charge | 3.65V | 58.4V | +| ~90% SOC | 3.35V | 53.6V | +| ~50% SOC | 3.30V | 52.8V | +| ~20% SOC | 3.20V | 51.2V | +| Low Cutoff | 3.00V | 48.0V | +| Absolute Min | 2.50V | 40.0V | + +Note: LFP has a very flat voltage curve between 20-90% SOC (~3.2-3.35V). This makes SOC estimation from voltage alone unreliable -- coulomb counting via BMS is essential. diff --git a/projects/wrightstown-solar/session-logs/2026-02-09-session.md b/projects/wrightstown-solar/session-logs/2026-02-09-session.md new file mode 100644 index 0000000..7c2eebe --- /dev/null +++ b/projects/wrightstown-solar/session-logs/2026-02-09-session.md @@ -0,0 +1,83 @@ +# Wrightstown Solar - Session Log 2026-02-09 + +**Session:** Initial Research and Planning +**Machine:** ACG-M-L5090 + +--- + +## Work Completed + +### 1. Cell Selection Research +- Researched EVE C40 (IFR40135) cylindrical LiFePO4 cells +- Specs: 3.2V, 20Ah, 64Wh per cell, 366g, 50-60A continuous discharge +- Selected for home solar battery pack build + +### 2. Pack Design +- Determined 16S5P configuration for 5kWh packs (80 cells each) +- 48V nominal system, 51.2V actual +- Modular design: build in 5kWh increments up to 20kWh (4 packs) +- Chose 5kWh over 10kWh packs for: cost spreading, manageable builds, fault isolation, single-person liftable weight + +### 3. Inverter Selection +- Existing solar: Fronius IG Plus (grid-tie only, no battery port) +- Selected Victron MultiPlus II 48/5000 for: + - <20ms transfer (UPS-grade seamless switchover) + - Physical relay disconnect (zero backfeed) + - Generator input support + - Creates micro-grid for Fronius to sync during outages +- Architecture: whole-house UPS with generator failover + +### 4. Salvaged EV Battery Analysis +- Evaluated Tesla LFP, Chevy Bolt, Nissan Leaf salvage options +- Conclusion: New C40 cells are cheaper ($190-282/kWh vs $365-780/kWh for salvage) +- Salvage has hidden costs: voltage conversion, custom BMS, cooling, unknown SOH +- Most salvage is NMC chemistry (less safe than LFP for home use) +- Decision: Proceed with new EVE C40 cells + +### 5. BMS Research (Victron CAN Bus Compatible) +- Comprehensive comparison of 8 BMS models +- Recommended: JK BMS B2A8S20P 150A ($80-150) + - 2A active balancing (critical for cylindrical cells) + - Victron integration via dbus-serialbattery driver + USB-UART cable + - Known gotcha: CAN pinout reversed (use USB-UART path instead) +- Alternatives: SEPLOS V4 (native CAN, $150-250), REC Q16 (plug & play, $559) +- Cerbo GX ($320-350) selected as GX device + +### 6. Budget Estimates +- Phase 1 (5kWh + full Victron system): $2,175-2,945 +- Full 20kWh system: $3,635-5,750 +- Battery-only $/kWh: $86-153 + +--- + +## Decisions Made + +| Decision | Chosen | Over | Why | +|---|---|---|---| +| Cell type | EVE C40 (new) | Salvaged EV packs | Cost, safety, lifespan, simplicity | +| Pack size | 5kWh modules | 10kWh modules | Modular, manageable, fault isolation | +| Inverter | Victron MultiPlus II 48/5000 | Other options | UPS switchover, relay disconnect, generator support | +| BMS | JK BMS B2A8S20P 150A | REC, SEPLOS, Daly | Active balancing, price, community support | +| GX device | Cerbo GX | Raspberry Pi | Easier setup, native BMS-CAN port | + +--- + +## Files Created + +- `projects/wrightstown-solar/PROJECT_INDEX.md` +- `projects/wrightstown-solar/documentation/system-design.md` +- `projects/wrightstown-solar/documentation/bms-comparison.md` +- `projects/wrightstown-solar/documentation/ev-salvage-analysis.md` +- `projects/wrightstown-solar/documentation/parts-list.md` +- `projects/wrightstown-solar/session-logs/2026-02-09-session.md` (this file) + +--- + +## Next Steps + +- [ ] Finalize BMS selection +- [ ] Source EVE C40 cells (Grade A, matched, with test data) +- [ ] Order Victron MultiPlus II + Cerbo GX +- [ ] Design physical cell holder / bus bar layout for 16S5P cylindrical pack +- [ ] Plan sub-panel / transfer switch wiring +- [ ] Build Pack 1, test for 1 month before expanding