Solar & Power Systems Solar panels, batteries, charge controllers, and mains power for field and permanent deployments. 📖 Start Here — Solar & Power Systems Guide This book covers everything about powering LoRa mesh nodes - from USB-powered indoor nodes to fully autonomous solar installations capable of running for years between battery replacements. Note that all outdoor solar nodes still require routine periodic maintenance (panel cleaning, gasket and desiccant replacement, and battery health checks) - "autonomous" means it self-recharges, not that it is maintenance-free. See the Cold Weather Operation page for the seasonal inspection schedule. 🚀 Quick Answers "How big a solar panel do I need?" → Sizing a Solar System for Your Climate (canonical sizing page) "Which battery chemistry?" → LiFePO4 vs LiPo vs Lead Acid "Which charge controller?" → Charge Controller Selection and Configuration (canonical charge-controller page) "How much power does my node use?" → Power Consumption by Platform 📚 What's In This Book This book has grown several overlapping pages on the same topics (sizing, charge-controller selection, and mains power). To avoid confusion, the index below links every page and marks which one is canonical for each topic. When numbers disagree between an alternate page and the canonical one (for example derate factor, depth-of-discharge, or per-node energy), trust the canonical page. The alternates are retained for now but are being consolidated. Power Fundamentals Current Draw & Power Budgets Power Consumption by Platform Power Consumption Measurement Methods Battery Selection Battery Chemistry Guide LiFePO4 vs LiPo vs Lead Acid for LoRa Deployments Battery Sizing for LoRa Mesh Nodes Battery Management Systems and Protection Circuits Solar System Design Solar sizing: several sizing pages exist. Sizing a Solar System for Your Climate is the canonical sizing page - use its method and numbers. Sizing a Solar System for Your Climate (canonical sizing page) - Peak Sun Hours (PSH) tables for US cities. PSH is the number of daily hours of full-strength sun your location effectively receives. Sizing Your Solar System - alternate sizing page (overlaps the canonical one; defer to the canonical page where numbers differ) Choosing a Solar Panel for LoRa Nodes - panel selection and panel-sizing detail Solar Panel & Charge Controller Selection - alternate combined panel + charge-controller page (overlaps both the canonical sizing and canonical charge-controller pages; defer to the canonical pages) Solar Panel Mounting and Orientation (canonical tilt/orientation page) Charge controllers: several charge-controller pages exist. Charge Controller Selection and Configuration is the canonical charge-controller page. Charge Controller Selection and Configuration (canonical charge-controller page) Charge Controller Selection and Wiring - alternate charge-controller page (overlaps the canonical one; defer to the canonical page) Charge Controllers: PWM vs MPPT - background on the two controller types Wired Power Mains power: two mains-power pages exist. AC Mains Power for Permanent Node Installations is the canonical mains page. AC Mains Power for Permanent Node Installations (canonical mains page) Mains Power for Permanent Installations - alternate mains page (covers USB voltage-drop and cable-run detail; defer to the canonical page where guidance differs) Power-over-Ethernet for Outdoor Node Deployments System Wiring and Safety Wiring a Solar Power System for LoRa Repeaters Monitoring Battery State via Meshtastic Telemetry Cold Weather Operation ➡️ Related Books DIY Build Guides - Complete solar repeater builds MeshCore Repeaters - Pro solar repeater build walkthrough FAQ - Solar and power FAQ section Power Fundamentals Current Draw & Power Budgets Current Draw & Power Budgets Understanding how much power your node consumes is the starting point for sizing batteries and solar panels. LoRa mesh nodes have variable current draw depending on what they are doing at any given moment. Typical Current Draw by State State Current Draw Notes Deep sleep (nRF52) 2 - 20 µA Heltec Wireless Paper: ~20 µA; T-Echo: ~2 - 5 µA Deep sleep (ESP32) 10 - 100 µA (bare MCU); often hundreds of µA to a few mA at board level Bare-module figures; real ESP32 Meshtastic boards draw far more (community measurements show up to ~2.7 mA) due to regulators/peripherals Idle / listening nRF52: ~10 - 30 mA; ESP32: ~40 - 80 mA Radio on, waiting for packets; display off. ESP32-based boards (e.g. Heltec V3) draw considerably more than nRF52 boards (e.g. RAK4631, T-Echo) Active with display 30 - 60 mA OLED adds ~10 - 20 mA; e-ink adds ~0 mA between refreshes Transmitting Radio/PA ~50 - 120 mA; whole device commonly 150 - 330 mA at 22 dBm The ~80 mA figure is radio-only on efficient boards (RAK nRF52840 ≈ 88 mA); full-board TX current at 22 dBm reaches ~163 - 332 mA depending on board (MCU + PA + regulator). Representative — measure your own Transmitting (Station G2, 36.5 dBm) ~800 - 1200 mA (estimate) 36.5 dBm (≈4.46 W) RF output is the manufacturer spec; the current draw is an estimate (the vendor notes consumption does not scale strongly with PA output). Requires a 15 V PD supply (≥20 W). Note: 4.46 W EIRP/conducted may exceed license-free power limits in your band/jurisdiction — verify the legal limit before transmitting at full power Average Current for a Repeater Node A repeater node running MeshCore is mostly in idle/listening mode, with brief transmit bursts when relaying traffic. Typical average: Idle listening: ~10 - 15 mA most of the time for an nRF52-class board (e.g. RAK4631); ESP32 repeaters idle considerably higher (~40 - 80 mA). Representative values — measure your own Transmit duty cycle: Low (a few percent in typical mesh traffic) Average current: ~10 - 15 mA for a lightly-loaded nRF52 repeater; an ESP32 repeater (Heltec V3) averages ~40 - 80 mA. These are representative figures from community measurements — measure your own board Calculating Daily Energy Use Daily energy (Wh/day) = Average current (A) × Voltage (V) × 24 hours. Equivalently, Wh/day = average current (mA) × 24 h × system voltage (V) ÷ 1000. (Current in mA × hours gives mAh/Ah; you must multiply by voltage to get watt-hours.) Example for an nRF52 (RAK4631) repeater: Average current: 12 mA = 0.012 A (representative nRF52 figure — measure your own) Battery voltage: 3.7V (nominal LiPo/Li-ion) Daily energy: 0.012 × 3.7 × 24 = ~1.07 Wh/day An always-on ESP32 board (e.g. Heltec V3) averaging ~50 mA would instead consume 0.050 × 3.7 × 24 ≈ 4.4 Wh/day — roughly four times as much. Always size to your specific board. This is the baseline figure used in solar sizing calculations. A Room Server running with active connections may draw more - budget 3 - 4 Wh/day for a heavily used Room Server node. Power Budget Worksheet Parameter Your Value Notes Average current draw (mA) ___ Measure with a USB power meter or estimate from table above Supply voltage (V) 3.7 Standard LiPo/Li-ion nominal voltage Daily energy (Wh/day) ___ = current(A) × 3.7 × 24 Days of battery reserve needed ___ General outdoor solar nodes: 3 - 5 days. Emergency-comms nodes: 5 - 7+ days (panels do not help during multi-day overcast) Battery capacity needed (Wh) ___ = daily energy × reserve days ÷ (usable fraction × cold derate × end-of-life derate) × 1.2 safety margin. For a warm-climate LiFePO4 node the usable fraction alone is ~0.80; for a cold-climate node the combined derate is roughly 0.58, so the battery must be substantially larger. Do NOT size on 0.80 alone in freezing climates — see the Battery Sizing page for the full method (this worksheet’s simple 0.80 divisor undersizes a winter node by ~40%) Worst-case peak sun hours ___ Look up your location’s worst-month (December) value from NREL PVWatts — do not assume a flat 4 PSH year-round. Northern-US winter is ~1 - 2.5 PSH (e.g. Seattle/Portland ~1.5, Chicago ~2.5) Solar panel needed (W) ___ = daily energy ÷ (peak sun hours × 0.75). The 0.75 overall system derate covers controller, wiring, temperature and soiling losses. Use your location’s worst-month (winter) peak sun hours from NREL PVWatts — northern-US winter is ~1 - 2.5 PSH, not a flat 4 Measuring Real Current Draw For accurate power budgeting, measure actual current with a USB power meter (for 5V USB-powered nodes) or a multimeter in series with the battery lead. A USB meter like the UM25C gives real-time current and accumulates energy over time. Log over a 24-hour period under typical traffic conditions for the most accurate average. Reducing Power Consumption Disable unused peripherals (OLED display off when not needed) Use nRF52-based boards (T-Echo, T114, RAK4631, Wio series) instead of ESP32 for lower idle current Reduce TX power if the node is within range with lower power - every 3 dB reduction halves transmit current Enable deep sleep between transmit windows for infrequent sensor nodes Battery Chemistry Guide Battery Chemistry Guide Choosing the right battery chemistry for your deployment is critical. The wrong choice leads to shortened battery life, safety hazards, or a node that fails in cold weather. Li-ion 18650 Cells The 18650 is the workhorse battery for DIY LoRa nodes. Named for its dimensions (18mm × 65mm), it is widely available, well-understood, and supported by most mid-range device designs with a holder. Warning: Most 18650 cells sold on Amazon are counterfeit. The highest-capacity genuine 18650 cells on the market are roughly 3500mAh; anything advertised far above that (for example a 6000mAh cell from an unknown brand) is physically impossible and counterfeit. Buy from reputable electronics retailers only. Recommended 18650 Cells Prices below are approximate and volatile (as of 2026-06-08). Capacity and current ratings are from each manufacturer's datasheet. Cell Price Capacity Max Continuous Notes Samsung 35E Protected $10 3500mAh 8A Good all-around; protected circuit prevents overdischarge. 8A continuous per Samsung SDI INR18650-35E datasheet Molicel M35A Protected $12 3450mAh typ (3500mAh rated) 10A Slightly higher max current than Samsung 35E (per Molicel datasheet) Panasonic NCR18650GA $14 3450mAh 10A Excellent quality; established brand (3450mAh / 10A per Panasonic NCR18650GA datasheet) All three options are equivalent for LoRa node use. Typical node average draw is <200 mA; brief TX bursts can reach several hundred mA momentarily but still far below the cells' 8 - 10A ratings, so any of these cells will work well. Buy protected cells - the protection circuit prevents over-discharge which can damage the cell - unless the device or holder already provides over-discharge protection (for example a DW01-based module), in which case unprotected cells are fine and fit holders better. 21700 Cells 21700 cells are slightly larger (21mm × 70mm) and offer higher capacity. Fewer devices have 21700 holders but they can be used in custom builds or with adapter sleeves. Cell Price Capacity Max Continuous Samsung 50S $8 (as of 2026-06-08) 5000mAh 25A Molicel P50B $11 (as of 2026-06-08) 5000mAh 45A continuous (60A max) LiPo Packs Lithium polymer packs in various capacities with JST connectors are the standard battery choice for devices without 18650 holders (Heltec V3, many LilyGo boards). Match the connector type carefully. Pack Price Capacity Connector Fits 3000mAh JST SH 1.25 $11 3000mAh JST SH 1.25mm Heltec V3, V4 (verify LilyGo board connector separately) 3200mAh JST $15 3200mAh JST (verify pin count against RAKwireless datasheet) RAK19026 Rokland LiPo Packs $10 - $20 Multiple sizes Micro JST 1.25 Various; check listing for exact connector LiPo caution: LiPo cells can swell, catch fire, or vent if overcharged, over-discharged, punctured, or charged at low temperatures. Use only with a proper charge controller. Never charge below 0°C - this 0°C charge floor applies to every lithium chemistry, including LiFePO4. For unattended outdoor deployments in cold climates, prefer Li-ion 18650 or LiFePO4 over LiPo, and use a BMS with a low-temperature charge cutoff regardless of chemistry. LiFePO4 (Lithium Iron Phosphate) LiFePO4 is strongly preferred for outdoor and cold-weather deployments. Key advantages over Li-ion/LiPo: Temperature tolerance: Discharges at much lower temperatures (down to ~ - 20°C). Like all lithium chemistries, it must NOT be charged below 0°C - charging below freezing causes lithium plating, permanent capacity loss, and a hidden internal-short fire risk. For cold climates use a BMS with low-temperature charge cutoff or a charge controller with a battery temperature sensor. Safety: Much less prone to thermal runaway and far more abuse-tolerant than LiPo/NMC, but not fireproof - severe overcharge or puncture can still cause a fire. Still use a BMS and proper fusing. Cycle life: 2000 - 4000 cycles vs. 300 - 1000 for standard Li-ion (cycle life varies widely with depth of discharge) Discharge curve: Flat 3.2V nominal vs. 3.7V for Li-ion - verify your device supports 3.2V operation Trade-off: Lower energy density than Li-ion. A LiFePO4 pack of the same physical size will have less capacity than a Li-ion pack. At - 40°C (which equals - 40°F) plan for roughly 40 - 60% capacity loss even with LiFePO4 - this loss is temporary and recovers as the cells warm - and size accordingly. Battery Chemistry Comparison Note: all lithium chemistries below share the same 0°C charge floor. The "Cold Weather" rating reflects discharge/survival performance and thermal stability, not a difference in charge temperature - LiPo's disadvantage is its lower thermal stability and the rarer availability of a low-temperature-cutoff BMS, not a different minimum charge temperature. Chemistry Nominal Voltage Cold Weather Safety Cycle Life Best For LiPo 3.7V Poor Moderate 300 - 500 Indoor, portable, attended deployments Li-ion 18650 3.7V Moderate Good (protected) 500 - 800 General purpose; most DIY builds LiFePO4 3.2V Excellent Excellent 2000 - 4000 Outdoor permanent, cold climate, unattended Solar Systems Solar Panel & Charge Controller Selection Solar Panel & Charge Controller Selection Selecting the right panel and charge controller determines whether your solar node stays online year-round. This page covers available options and selection criteria. Prices are approximate and volatile (as of 2026-06-08). Solar Panels RAK Solar Panel 5V - ~$3.50 (as of 2026-06-08) A small 5V RAK panel (SKU 920399, ~80 × 45mm) that connects to WisBlock base boards (and to the RAK19012 solar input). Convenient if you are already using RAK hardware, but limited in output compared to generic monocrystalline panels. RAK19012 Solar Module - ~$6.90 (as of 2026-06-08) An all-in-one module combining USB-C input, solar input, and battery management with an onboard linear battery-charger chip (not MPPT, and not a true solar charge controller). Solar input is limited to ~5.5V. Designed for RAK WisBlock systems. Simplifies the power system significantly - connect the solar panel and battery, plug the output into the WisBlock, done. 6W 6V Monocrystalline Panel - $15 - $20 (as of 2026-06-08) The community standard for DIY solar repeater builds. 6V panels work directly with the CN3791 MPPT charger; the TP4056 is a linear charger best paired with 5V panels (a 6V panel works, but its open-circuit voltage nears the TP4056's limit and the excess is dissipated as heat). Monocrystalline cells are more efficient per unit area than polycrystalline, particularly in low-light conditions. Output: 6W is the STC nameplate rating; real-world output is lower Voltage: ~6V at maximum power point (Voc typically ~7 - 7.5V; varies by panel) Size: Typically 180 × 130mm (varies by manufacturer) - fits on top of most enclosure sizes Daily harvest: 6W × peak sun hours × 0.75 derate. Use your location's worst-month (winter) PSH for sizing - as low as ~1.5 PSH in the Pacific Northwest, ~2.5 in the upper Midwest. At a generous 2.5 - 5 PSH this gives ~11 - 22.5 Wh/day, but the low (winter) end is optimistic for a fixed-tilt small panel and snow/low sun angle can push it lower. Size against the worst month, not the average. Charge Controllers TP4056 - ~$1 - $3 (as of 2026-06-08) A basic single-cell Li-ion/LiPo charger. The TP4056 chip alone provides CC/CV charge control (4.2V); over-discharge and short-circuit protection require the DW01-equipped module variant. It is a linear CC/CV charger (not MPPT and not PWM) - excess panel voltage above ~4.2V is dissipated as heat. The cheapest option and adequate for simple builds with moderate solar irradiance. A standalone TP4056 module does not have a load output - use the TP4056 with integrated DW01 protection IC, or add a separate protection module. Cold-weather warning: the TP4056 has no temperature sensing and no low-temperature charge cutoff, so it will attempt to charge the cell below 0°C, which causes lithium plating and permanent damage. For cold/winter deployments add a BMS with low-temp protection or a controller with a battery temperature sensor. Max charge current: 1A (set by resistor; default 1A modules are common) Input voltage: 4.5 - 8V absolute, but recommended operating input is 4.5 - 5.5V (5V panels ideal). A 6V panel works but its Voc (~7 - 7.5V) approaches the 8V max and the excess becomes heat - prefer the CN3791 for 6V panels. MPPT: No (linear CC/CV) CN3791 MPPT - $3 - $5 (as of 2026-06-08) A step up from the TP4056. The CN3791 is a switching MPPT-style charger that approximates Maximum Power Point Tracking using the constant-voltage method - it holds the panel near a preset Vmp (set by an external resistor divider) rather than continuously hill-climbing like a true perturb-and-observe MPPT. Simpler and less accurate than perturb-and-observe MPPT, but better than PWM, particularly under partial shading or variable irradiance. Recommended over TP4056 for serious solar builds. Like the TP4056, the CN3791 has no low-temperature charge cutoff - add BMS low-temp protection for cold-climate builds. Input: 4.5 - 28V (works with 5V/6V panels up to higher-voltage panels) MPPT: Yes (constant-voltage approximation) Charge current: The CN3791 IC supports up to 4A (programmable via sense resistor); common modules ship configured for ~2A Cost premium over TP4056: $1 - $2 - worth it Taidacent MPPT Module - ~$10 (as of 2026-06-08) A slightly larger MPPT module, commonly listed with ~1A charge current and 6V input support (confirm the exact specs against the specific module's listing). Some variants include onboard LED status indicators. Good choice when you want visibility into charge state without adding telemetry hardware. RAK19012 All-in-One - ~$6.90 (as of 2026-06-08) Integrated USB-C + solar + battery management for RAK WisBlock systems, using a simple onboard linear charger (not MPPT). Not suitable for non-RAK builds, but the simplest option for WisBlock deployments. Charge Controller Comparison Controller Price (as of 2026-06-08) MPPT Max Charge Best For TP4056 $1 - $3 No (linear CC/CV) 1A Budget builds; good sun locations CN3791 $3 - $5 Yes (constant-voltage) IC up to 4A; modules often ~2A Most DIY solar repeater builds Taidacent MPPT ~$10 Yes ~1A (confirm per module) When onboard monitoring is useful RAK19012 ~$6.90 No (linear charger) onboard linear charger RAK WisBlock builds only Panel Orientation and Mounting Face: South-facing in the northern hemisphere; north-facing in southern hemisphere Angle from horizontal: A tilt equal to your latitude maximizes annual energy. For a node that must survive the winter worst case (the point of sizing for resilience), use latitude +10 - 15° to favor the low winter sun. For northern US (45 - 50°N latitude), this works out to roughly 45 - 60° tilt, with the steeper end tied to winter optimization. Steeper angles favour winter; shallower angles favour summer. Shading: Even partial shading of a small cell in the panel significantly reduces total output. Site the panel to avoid shading from trees, structures, or the node enclosure itself during peak sun hours. Sizing Your Solar System Sizing Your Solar System Proper solar sizing means the system reliably recharges within your worst-case season and holds enough battery reserve to survive your design number of consecutive no-sun days. No solar system runs unattended forever: cells fade with cycling, panels degrade, and a long overcast stretch can outlast any fixed reserve. Plan for battery replacement every few years and use remote monitoring (see Monitoring Battery State) so you catch a failing node before it dies. Step-by-Step Sizing Process Step 1: Determine Daily Energy Consumption Daily energy depends heavily on platform, firmware, TX duty cycle, and whether the screen/Bluetooth/Wi-Fi are on, so always use your own measured value where possible. As representative planning figures (measure your own): an nRF52840 repeater (RAK4631, T-Echo) averages ~10–15 mA, while an always-on ESP32 board (Heltec V3) averages ~40–80 mA (higher with Wi-Fi/MQTT). Compute daily energy as: Daily energy (Wh/day) = average current (mA) × 24 h × system voltage (V) ÷ 1000. The worked example below uses a Heltec V3 (ESP32) repeater drawing a conservative ~25 mA average at 3.7 V: 25 × 24 × 3.7 ÷ 1000 = 2.22 Wh/day. A higher-duty ESP32 node can easily draw 2–3× this, so re-run the calculation with your measured current. Step 2: Find Worst-Case Peak Sun Hours Peak sun hours (PSH) vary by location and season. Size the panel against your worst month (December for the northern hemisphere). Do not assume a flat "4 PSH year-round" — northern-US winter PSH is often only ~1–2.5 h/day. Look up your exact site on the NREL PVWatts calculator (which uses the NREL NSRDB dataset) rather than relying on a single state-wide number, because PSH varies sharply by city and dataset. The values below are rough orientation only — replace them with a PVWatts result for your coordinates: Location (approx.) December PSH (approx.) Annual Average PSH (approx.) North Dakota / Fargo (~47°N) ~2.5 h/day ~4.5 h/day Minnesota (~45°N) ~2.8 h/day ~4.6 h/day Texas (~30°N) — varies widely by region; central/eastern TX (e.g. Austin) can be ~2.7 h in December ~2.7–4.1 h/day ~5.5 h/day Pacific Northwest / Seattle, Portland (~47°N) ~1.5 h/day ~4.2 h/day Florida (~28°N) ~4.8 h/day ~5.5 h/day Note: winter PSH can run anywhere from ~7% to ~42% below the 12-month average depending on latitude and climate, and a single state (especially Texas) is too large to treat as one number. Always confirm your site in PVWatts. (Figures as of 2026-06-08.) Step 3: Calculate Required Panel Size Panel size (W) = Daily energy (Wh) ÷ (PSH × system derate factor) Use a system derate factor of 0.75 — this single planning factor covers charge-controller, wiring, temperature, and soiling losses. (We use 0.75 consistently across all Mesh America sizing pages; size your panel against this and confirm production in PVWatts.) Example (North Dakota repeater): Panel = 2.22 Wh ÷ (2.5 h × 0.75) = 2.22 ÷ 1.875 = ~1.18 W minimum A 6 W panel is roughly 5× the nameplate minimum — but treat this as a nameplate ratio, not real surplus. In deep winter at high latitude (low sun angle, cold, dirt, snow, and a cheap controller running off its maximum-power point), a panel rarely delivers anything close to its nameplate wattage, and a snow-covered panel produces essentially zero regardless of its rating. The large nominal oversize is therefore needed, not luxury: it buys back winter harvest losses and helps recover after a cloudy or snowy stretch. The real protection against multi-day storms and snow cover is battery reserve (Step 4), not panel margin. Step 4: Calculate Battery Reserve Battery capacity (Wh) = Daily energy × Reserve days ÷ Usable fraction Reserve days: 3–5 days for most locations; 5–7+ days for high-latitude winter or emergency-comms nodes (panels do not help during a multi-day overcast, so reserve is your only protection). Usable fraction: 0.80 for LiFePO4 (plan to 80% depth of discharge for longevity; this is the single value used across all Mesh America sizing pages so you get the same battery size on every page). Lithium-ion (LiPo/NMC) cells are also commonly planned at ~0.80. Do not apply a second derate on top of this unless you explicitly state and justify it. Example (3-day reserve, LiFePO4 at 0.80): Battery = 2.22 × 3 ÷ 0.80 = 8.33 Wh minimum (nameplate) A single 3500 mAh 18650 cell (e.g. Samsung INR18650-35E, 3500 mAh nominal, ~3.6–3.7 V nominal) = 3.5 Ah × 3.7 V = 12.95 Wh nameplate, or ~10.4 Wh usable at the 0.80 fraction. That comfortably satisfies the 3-day requirement (8.33 Wh) with margin. It does not satisfy the 5-day example below. For a 5-day reserve (LiFePO4 at 0.80): Battery = 2.22 × 5 ÷ 0.80 = 13.9 Wh minimum (nameplate) → Two 3500 mAh 18650 cells in parallel = 25.9 Wh nameplate (~20.7 Wh usable at 0.80) — comfortably covers the 13.9 Wh requirement with real positive margin. A single 12.95 Wh cell (~10.4 Wh usable) is not enough for 5 days. Cold-climate charging warning: For any winter/cold-climate build, never charge lithium (including LiFePO4) below 0 °C (32 °F) — sub-freezing charging causes lithium plating, permanent capacity loss, and a hidden internal-short fire risk (discharging in the cold is fine). The CN3791 used in the example build has no low-temperature charge cutoff, so a cold-climate node built around it must add a BMS with low-temp protection or a charge controller with a battery temperature sensor. See the Cold-Weather Operation page. Complete Sizing Example: North Dakota Year-Round Repeater Parameter Value Node Heltec V3 (ESP32), MeshCore Repeater Average current draw (representative — measure your own) ~25 mA (conservative for an ESP32 board; higher-duty configs draw more) Daily energy 2.22 Wh/day Location Fargo, ND (~47°N) — confirm PSH in PVWatts December PSH (approx.) ~2.5 h/day System derate factor 0.75 (controller + wiring + temperature + soiling) Panel required (minimum) ~1.18 W Panel selected 6 W 6 V monocrystalline Panel margin ~5× nameplate (effective winter margin far lower — this is the reason for the large nominal oversize, not surplus) Battery usable fraction (LiFePO4) 0.80 Battery reserve target 5 days Battery required (nameplate) 13.9 Wh Battery selected 2× Samsung 35E 18650 in parallel = 25.9 Wh nameplate (~20.7 Wh usable at 0.80) — comfortable positive margin over the 13.9 Wh requirement Charge controller CN3791 (PWM switch-mode MPPT solar Li-ion charger). Has no low-temp cutoff — add a BMS with low-temperature charge protection for this cold-climate build. Total build cost (rough, as of 2026-06-08) ~$85–$100 (re-price the bill of materials from current store listings before ordering) Cold Weather Operation Cold Weather Operation Solar power systems in cold climates face challenges that warm-climate systems do not. This page consolidates solar-specific cold weather guidance. See also the DIY Build Guide > Cold Weather & Winter Operation page for enclosure and battery chemistry details. Solar Panel Performance in Cold Cold temperatures actually improve solar panel efficiency slightly. A standard silicon solar panel produces about 0.4% more power per degree Celsius below 25°C. At - 20°C (45° below the standard test condition), if the cell temperature actually reached - 20°C a 6W panel could produce roughly 7W (about +18%). In practice the gain is smaller because cell temperature under sunlight runs above ambient. Either way, this efficiency bump is minor compared with the real cold-weather problem below: far less light reaches the panel in winter, so net winter harvest is dramatically lower, not higher. The main cold-weather solar challenge is reduced daylight hours and lower sun angle, not panel efficiency. A December day in North Dakota (~47°N) has only about 8.5 hours of daylight with the sun reaching a maximum elevation of only ~20° above the horizon, far less than the ~66° of midsummer. (Daylight length and solar elevation can be confirmed from a solar-position calculator for your latitude.) Snow Accumulation on Panels Snow covering the panel can reduce output to zero. Mitigation strategies: Steep mounting angle: A steep tilt helps most wet snow slide off. As a general guideline use roughly 45 - 60° from horizontal, or about latitude + 15°. Dry powder snow may still accumulate. Dark-coloured back-sheet: Panels with a black or dark back sheet absorb more heat and melt snow faster. Panel heating: Some high-end installations use resistive heating elements on the panel back, powered by the battery during overnight cold snaps. Rarely justified for community mesh nodes due to the added power consumption. Size for zero-solar periods: The most practical approach - size the battery for 5 - 7 no-sun days in an ordinary northern winter, and 7 - 14 days where snow burial or polar darkness can persist for weeks. When the panel can be buried for an extended period, the battery is your only reserve - size it for the worst burial you expect. Battery Temperature Management Batteries lose usable capacity in cold, and charging is governed by a hard lower limit that is separate from how much capacity is available. The two columns below address these separately: discharge capacity falls gradually with temperature, while charging is simply prohibited below 0°C. The discharge figures are approximate and depend on cell and discharge rate; treat them as illustrative. Temperature Approx. discharge capacity (illustrative) Charging permitted? +25°C (77°F) ~100% (baseline) Yes 0°C (32°F) Reduced 0°C is the practical lower charge limit - many BMS modules cut off charging at or just above 0°C. Charge only at a reduced rate; do not charge any colder. - 10°C (14°F) Reduced Do not charge - charging here causes lithium plating, permanent capacity loss, and an internal-short / fire hazard (not merely capacity loss) - 20°C ( - 4°F) Substantially reduced Do not charge - 40°C ( - 40°F) Heavily reduced Do not charge. LiFePO4 is preferred for cold DISCHARGE and survival/storage only - it still must NOT be charged below 0°C without a heater. A charge controller that monitors battery temperature and reduces or stops charging below 0°C is ideal. The CN3791 has NO low-temperature cutoff and no battery-temperature sensing (per its datasheet feature list) - on its own it will happily charge a frozen battery below 0°C, causing lithium plating and a hidden internal-short fire risk. The CN3791 is recommended elsewhere in this book as a default solar charger, so for any cold-climate or winter build you MUST add low-temperature charge protection: use a temperature-sensing charge controller, or a battery/BMS with built-in low-temperature charge cutoff, or a thermostat that disconnects charging below ~0 - 5°C. Enclosure Thermal Behaviour An enclosed node generates a small amount of heat (roughly 75 - 150 mW from the node and charge controller - for example ~25 mA at 3.7V is about 93 mW on the node side, plus charge-controller losses). In a sealed IP67 enclosure, this self-heating can keep the interior several degrees above ambient, which helps battery performance marginally. A black enclosure absorbs more solar heat during daylight, which can add a few more degrees of warmth. A white enclosure stays cooler in summer (preventing overheating) but provides less passive warming in winter. For very cold deployments, a small Nichrome heating resistor (1 - 2W) inside the enclosure, powered from the battery via a thermostat relay, can keep the battery warm enough to charge. If the goal is to permit charging, set the thermostat to keep the cells above 0°C (target roughly +2 to +5°C) - NOT - 10°C, because charging is prohibited below 0°C and a battery sitting at - 8°C must not be charged. Note that a 1 - 2W heater may be too weak to warm a battery from deep-cold ambient to above freezing in a small outdoor enclosure, so verify the wattage against the enclosure's thermal mass and heat loss. Critically, the heater runs in winter - exactly when solar harvest is lowest - and its draw must be added to the power budget (a 1 - 2W heater can exceed the node's own consumption and flatten the battery it is protecting). Add a low-voltage cutoff so the heater cannot deep-discharge the pack. This adds complexity and power consumption but can be worthwhile for nodes at critical infrastructure sites. Annual Maintenance Schedule Cold-climate solar nodes require more frequent inspection than warm-climate nodes: Pre-winter (October): Inspect gaskets, cable glands, replace desiccant; verify battery capacity is adequate; clean solar panel; verify mounting is secure Mid-winter (January): Remote check - verify node is online and battery voltage is healthy. The healthy threshold depends on your battery: for a single Li-ion/LiPo cell aim for above ~3.5V; for a single LiFePO4 cell aim for above ~3.0 - 3.2V resting; for a multi-cell pack (for example a 4S 12.8V LiFePO4 pack) scale the threshold to the pack (a 4S LiFePO4 pack should stay well above ~12V resting). Tie the threshold to your deployed battery type and cell count. Investigate any offline nodes promptly. Post-winter (April): Inspect for frost/condensation damage inside enclosure; replace desiccant; clean solar panel; verify all connections Wired & Mains Power Mains Power for Permanent Installations Mains Power for Permanent Installations Where mains (AC grid) power is available, it is convenient and low-maintenance for routine operation: it provides essentially unlimited energy day-to-day, avoids battery-cycling wear, and simplifies the build. But for emergency communications, this framing has a critical caveat: in a disaster the grid is usually the first thing to fail. A node that depends solely on mains power will go dark in exactly the incidents the mesh exists to serve. For any node that must survive a grid-down event, treat mains as primary-with-battery-backup at best, and prefer solar + battery for nodes whose whole purpose is grid-down resilience. Mains is "reliable" only for normal-day uptime, not for disasters. Safety: Any work on the 120/240 V AC side - adding a circuit, an outdoor outlet, or hard-wiring a supply - can be lethal and almost always requires a licensed electrician. Permit requirements vary by jurisdiction; check your local code. AC branch-circuit conductors must be sized per NEC (14 AWG for a 15 A circuit, 12 AWG for a 20 A circuit) regardless of the small load the node draws - never use thin wire on a branch circuit. The low-voltage DC guidance below applies only downstream of a listed AC adapter or power supply. When to Use Mains Power Rooftop or building-mounted nodes where a power run is feasible Nodes at locations with existing power (communications towers, buildings, facilities) High-power nodes like the Station G2 (requires 15V PD - impractical with solar) Room Server nodes that are expected to be always-on for message storage For any of the above that has an emergency-communications role, pair mains with battery backup sized for the expected outage (see Battery Backup, below) - a node's value during a disaster is exactly when grid power is most likely gone. Power Supply Requirements by Device Input requirements below follow each board's published documentation (Meshtastic hardware docs and the respective vendor datasheets, as of 2026-06-08). The current figures are minimums for a single node; confirm against your specific board revision. Device Input Power Supply Needed Heltec V3, V4 5V USB-C Any 5V USB-C charger, minimum 1A LilyGo T-Beam, T-Deck 5V USB-C or Micro USB Any 5V USB charger, minimum 1A RAK WisBlock (RAK19007) 5V USB or battery 5V USB-A charger or 5V regulated supply Station G2 15V USB-C PD USB-C PD charger supporting 15V, ≥20W output (e.g. 15V/2A) Any node with LiPo Battery + charger Power the charger circuit; see device documentation Station G2 Power Requirements The Station G2 requires 15V USB-C Power Delivery. This is a specific PD negotiation - the charger must support 15V PD output, not just 5V. The manufacturer specifies a USB-C PD adapter that supports the 15V PD protocol with a maximum output power of 20W or more (i.e. ≥20W, e.g. 15V/2A). Compatible chargers include: Most 65W+ USB-C laptop chargers (verify 15V output in spec sheet) Anker 65W or 90W USB-C GaN chargers Any charger explicitly listing "15V/2A" or "15V/3A" in its PD output specs A 5V USB charger plugged into the Station G2 will not provide enough power. The device may appear to power on but will behave erratically or fail to transmit at full power. Battery Backup for Mains Installations For mission-critical nodes on mains power, a battery backup (UPS function) maintains operation during power outages. Match the backup capacity to the outage you actually need to survive: small UPS modules give only a few hours, which covers brief utility blips but NOT disaster-length outages, which routinely run days to weeks after major storms, wildfires, or earthquakes. For genuine grid-down resilience, size battery backup in days, or use solar + battery so the node self-recharges. Options: Small UPS: A compact DC UPS module (available from AliExpress for $10 - $20, price as of 2026-06-08) passes through 5V USB power and switches to battery automatically on outage. Battery runtime of a few hours is typical for small units - adequate for short utility interruptions only, not for a multi-day disaster. Battery + charge controller: Some boards with a battery connector and an onboard charge/power-path IC can charge a LiPo or 18650 from USB and run from battery when USB power is removed, giving automatic failover. This is not universal: many cheap boards cannot safely charge while running or may overcharge, so check your specific board's documentation before relying on it for UPS failover. Also note that on-board USB chargers (TP4056-class) have no temperature sensing - in a cold or hot outdoor enclosure they will happily charge a lithium cell below 0 °C or at high temperature, which causes lithium plating and a hidden fire risk. For an outdoor backup battery exposed to sub-freezing or high temperatures, use a charger or BMS with a low-temperature charge cutoff, put an inline fuse on the battery lead, and prefer LiFePO4 with a low-temp-cutoff BMS over a bare LiPo. Full UPS: For the Station G2 and other high-power nodes, a proper UPS with 15V PD output is required. These are less common but available from server hardware suppliers. Weatherproofing Mains-Powered Outdoor Nodes If the node is outdoors on mains power, weatherproofing requirements are the same as for solar nodes: Use an IP65+ enclosure Route mains wiring through appropriate weatherproof conduit (AC wiring and connections should be installed by a licensed electrician per local code) Use a weatherproof outdoor power outlet or a sealed junction box for the power entry Keep the power supply (transformer/adapter) inside the weatherproof enclosure or in a separately housed waterproof enclosure. Watch enclosure heat: an AC adapter dissipates heat, and a sealed box traps it - co-locating a hot adapter against a lithium battery can drive internal temperatures into the cell's charge-derating range (typically above ~45 °C) or damage the cells. Separate the power supply from the battery, provide thermal mass or ventilation, and monitor enclosure temperature; do not press a hot adapter against a lithium pack. If using a standard USB charger adapter, note that most USB chargers are not rated for outdoor use - enclose them in an additional weatherproof housing or use an industrial-rated outdoor power supply Cable Run Considerations For nodes mounted at height (rooftop, tower, pole), the cable run from power to the node may be significant. At 5V, voltage drop over long cables is a real concern. The voltage-drop figures below assume a modest node load of about 500 mA; drop scales with current, so a higher-draw node (e.g. ~1A during Wi-Fi/transmit) sees roughly double these values: Cable Run Cable Gauge Voltage Drop at ~500mA Action <5m 24 AWG USB cable Negligible (at ~0.5–1A) Standard USB cable fine 5 - 15m 22 AWG or better 0.3 - 0.9V (at ~0.5–1A) Use thicker cable or boost supply voltage >15m 18 AWG or higher, or 12V supply Significant with 5V Run 12V and use a 12V→5V DC-DC converter at the node For long cable runs, running 12V DC (lower current for same power, less voltage drop) and using a small buck converter at the node end is more efficient than running 5V USB over a long distance. (This 12V/24V/18V guidance is for low-voltage DC runs only - not AC mains branch circuits, which must follow NEC conductor sizing.) Lightning Protection for Mains-Powered Sites Mains-powered outdoor nodes are vulnerable to both direct lightning strikes and power line surges. Protect with: A quality surge protector or transient voltage suppressor (TVS) on the mains input A DC-grounded lightning arrestor on the antenna feedline Ground the enclosure and mast to an earth ground rod Consider a whole-circuit surge protector at the breaker panel for critical sites (installed by a licensed electrician) AC Mains Power for Permanent Node Installations For fixed infrastructure nodes at permanent sites with grid power access, AC mains power is the lowest-maintenance power solution for routine uptime, eliminating battery replacement cycles and enabling higher-power configurations. It is not the most reliable option in an emergency, however — the grid is commonly the first thing to fail in a disaster. Pair any mission-critical mains node with battery (and ideally solar) backup sized for the outage length you must survive. Safety warning — AC mains can be lethal. Working on 120/240 V AC mains and breaker panels can kill you, and mistakes are unforgiving. AC mains and branch-circuit work should almost always be done by, or under the supervision of, a licensed electrician. Ensure proper equipment grounding/bonding of the enclosure and mast (NEC 250.x). This page describes the hardware involved, but it is not a substitute for a qualified electrician. Power Supply Selection Most ESP32/nRF52 LoRa mesh nodes regulate to 3.3V internally and accept 5V via USB or 3.7V from a single lithium cell. For AC-powered installations, you need a reliable AC/DC converter: USB Wall Adapters The simplest option for indoor nodes: 5V/3A USB-C adapter - A basic 5V/3A USB-C adapter (full PD negotiation is not required) powers any USB-C node (Heltec V3, T-Beam Supreme). Roughly $10-20 for quality Anker or Baseus adapters (prices as of 2026-06-08). Quality matters - Cheap switching adapters can emit RF noise. Use a reputable brand with proper EMI filtering. Choose adapters that comply with FCC Part 15 Subpart B (Class B) emission limits (see 47 CFR 15.107/15.109). UPS integration - A small USB UPS (Anker PowerCore Fusion, Cyberpower CP685AVR with USB output) adds battery backup to any USB-powered node. DIN Rail Power Supplies For professional installations in electrical enclosures or server racks: Meanwell HDR-15-5 - 5V/2.4A (12W) DIN rail supply, ~$15-20 (as of 2026-06-08). Widely used in industrial automation, proven reliable. Meanwell HDR-30-12 - 12V/2A DIN rail supply for nodes that accept 12V input (most PoE-powered nodes, some T-Beams with barrel jack). DIN rail supplies mount in standard electrical enclosures alongside circuit breakers and terminal blocks. PoE (Power over Ethernet) For nodes at locations with Ethernet infrastructure (commercial buildings, outdoor fixtures with Cat5e runs): A PoE splitter converts standardized PoE (nominal 48V, range 44-57V) to 5V/12V for powering a node. Note that passive PoE may run at 24V or other voltages — match standard 802.3af/at gear to standard gear to avoid mismatch or damage. Enables remote power cycling via managed PoE switch (reboot a node from the office) Single cable for both data (if using an Ethernet-capable node or Pi-based room server) and power Requires Ethernet infrastructure - not practical for standalone outdoor nodes without network connectivity UPS Integration for Grid-Powered Nodes Even grid-powered nodes benefit from battery backup: Mini UPS modules - IP UPS boards (Waveshare UPS HAT, PiJuice) that sit between the power supply and the Pi or node. Runtime depends on load and battery capacity (commonly 1-4 h for low-power loads). Standard UPS - A small APC BE425M (~$40, as of 2026-06-08) protects against power line surges and provides battery backup for a low-power node; runtime is load-dependent (commonly 30+ minutes for a sub-watt node). Verify the specific model's USB output before relying on it. Lead-acid battery bank - For extended outage protection (24+ hours), a 12V 7Ah SLA battery (84Wh) on a float charger provides long runtime — roughly 24-40 h at a 1-2W node load. SLA tolerates continuous float charging well (unlike lithium), though chronic overvoltage causes gassing/drying and shortens life. Self-discharge (~5%/month at room temperature) is comparable to or slightly higher than LiPo. Outdoor AC Power Runs Running power to an outdoor enclosure requires weatherproof wiring: Wire gauge: AC branch-circuit conductors must be 14 AWG (15A) / 12 AWG (20A) per NEC 240.4(D), regardless of how little the node draws — a downstream fault must be cleared by the breaker before the wire overheats. Do not run 18 AWG on a 15/20A AC circuit — it cannot survive a 15A fault and is a fire hazard. 18 AWG belongs only on the low-voltage DC side, never as AC branch-circuit wiring. Weatherproof conduit: Schedule 40 PVC conduit is a common method for outdoor AC runs (NEC Article 352); other approved raceways include RMC and LFNC. Seal entry points with weatherproof conduit fittings. GFCI protection: The NEC requires GFCI protection for all outdoor outlets (NEC 210.8). Use a GFCI breaker or GFCI outlet at the first outlet in the outdoor circuit. Permit requirements: New AC circuit runs usually require an electrical permit, depending on your local jurisdiction (AHJ). Check local code — this is especially important for community networks working on public property — and have a licensed electrician perform the work. Related Pages This topic overlaps with the "Mains Power for Permanent Installations" page, which focuses more on mains-install practices and USB failover via JST battery. Treat this page as the AC supply-hardware reference; consult that page for installation practices, and follow whichever gives the more conservative safety guidance. Power-over-Ethernet for Outdoor Node Deployments Power over Ethernet (PoE) is an excellent choice for outdoor nodes at sites with structured cabling infrastructure. It combines power delivery and network connectivity in a single cable, simplifying installation and enabling remote management. PoE Standards Standard Max Power (at PSE) Typical Use Common in IEEE 802.3af (PoE) 15.4W IP cameras, VoIP phones Most infrastructure IEEE 802.3at (PoE+) 30W PTZ cameras, APs Modern switches IEEE 802.3bt (PoE++) Type 3 = 60W; Type 4 = 90W (≈71W delivered at the powered device) Laptops, high-power APs Newer switches Passive PoE (non-standard) Varies Low-cost IP cameras, some APs Ubiquiti older hardware The 802.3bt maximum is 90 W at the power-sourcing equipment (Type 4), not 100 W — "100 W PoE" is a marketing rounding, not the IEEE spec figure. For mesh nodes, IEEE 802.3af is more than sufficient. Most nodes consume 1-5W. Active vs. passive PoE — not interchangeable. Standard (802.3af/at/bt) PoE negotiates voltage between the switch and the device (roughly 44 - 57 V) and is safe for compliant gear. Passive PoE simply puts a fixed voltage (often 24 V or 48 V) on the cable with no negotiation, and can damage equipment if mismatched. Match injector, splitter, and node carefully — a passive 24 V injector paired with a splitter that expects active 48 V may deliver no power or fry the node. Maximum Cable Run Distance PoE follows the Ethernet 100m (328 ft) cable run limit. Choose by distance: Single run ≤100m: a standard PoE run works directly. ~100 - 200m: use a PoE extender (repeater) at the 100m mark to extend another ~100m. Beyond ~200m: use a fiber optic run with a media converter. Use cellular or WiFi for power-independent remote nodes. Note: independent of distance, a fiber optic break between the building and the node is also the strongest lightning isolation option (see below) because fiber is dielectric — consider it on any outdoor run in a high-lightning area, not only for long runs. Lightning Protection for PoE Runs An Ethernet cable run to an outdoor node creates a lightning risk - the cable can couple surge energy into your equipment: Ethernet surge protector: Install a PoE-compatible Ethernet surge protector (e.g. Ubiquiti ETH-SP-G2, ~$15 as of 2026-06-08 — confirm current price on the Ubiquiti store) at both the building entry and the outdoor node enclosure. This is essential for any outdoor Ethernet run. Fiber optic break: Insert a fiber optic run between the building and the outdoor node. Fiber is dielectric - it cannot carry surge current. Best protection option. Grounding: Properly ground your outdoor enclosure and the surge protectors. The surge protector's ground and the enclosure ground must be bonded to the same grounding electrode system as the building's AC ground (per NEC 250.94) — bonding to a separate, isolated ground rod creates dangerous ground-potential differences during a strike. Tie all ground connections into that single building grounding electrode system. Power Consumption Reference Power Consumption by Platform Understanding your node's actual power consumption is essential for correctly sizing a solar system. The current figures below are representative community benchmarks - always measure your own node, since values vary significantly by firmware version, radio activity, transmit-power setting, and configuration. Use one consistent figure per platform across your sizing calculations. ESP32-based nodes ESP32 nodes have higher baseline power draw than nRF52 devices but offer WiFi and faster processing. As a planning figure, treat an always-on optimized ESP32 (Heltec V3) node as drawing ~40-80 mA average (higher with WiFi/MQTT active). State Factory defaults Optimized config Notes Idle (radio listening) ~150 mA ~40 mA Representative; WiFi off, screen off, BT power reduced. LoRa RX is ~40-80 mA; measure your own Active receive (packet processing) ~180 mA ~55 mA Brief peak during processing (approximate) Transmitting (high power) ~280 mA ~280 mA TX current is set by the LoRa module's PA, not the host MCU. ~280 mA is typical for a 1 W (SX126x + external PA) module; varies with supply voltage and PA design. Confirm against your module's datasheet, and verify the TX power is legal in your region Display on (OLED) +15 - 20 mA N/A (disabled) Disable for any unattended deployment WiFi active +60 - 120 mA N/A (disabled) Disable unless serving TCP bridge Key optimizations for ESP32 repeaters: Disable WiFi: largest single saving for non-TCP deployments Disable display: set screen timeout to 0 Reduce BT TX power: sufficient for app connection at short range Result: ~150 mA factory → ~40 mA optimized ≈ 3.75× improvement (illustrative; depends on your measured endpoints) nRF52840-based nodes nRF52840 devices are the preferred choice for solar and battery-only deployments due to dramatically lower power draw. As a planning figure, treat an optimized always-on nRF52840 (RAK4631, T-Echo) router/repeater as drawing ~10-15 mA average. Note that the LoRa RX/TX current is dominated by the SX126x radio, not the nRF52840 MCU. State Factory defaults Optimized config Notes Idle (radio listening) ~25 mA ~5 mA Representative; MCU sleep current plus SX126x LoRa RX (~4.6 mA boosted). Measure your own Active receive ~30 mA ~8 mA Processing packet (approximate) Transmitting (high power) ~120 mA ~120 mA TX current is set by the LoRa module's PA, not the host MCU. ~120 mA is typical for a module with an internal PA (e.g. RAK4631 ~22 dBm); a 1 W external-PA module draws far more (see ESP32 table). Confirm against your module's datasheet Deep sleep (between polls) N/A ~0.2 mA With Repeater role sleep scheduling (bare-MCU System OFF can reach ~11 µA) GPS active +25 mA N/A (disabled) Disable GPS for repeaters (typical GPS acquisition 20-40 mA) Key optimizations for nRF52 repeaters: Enable Repeater role sleep scheduling: radio polls at configurable interval between transmissions Disable GPS module (not needed for repeater operation) Disable BLE advertising when not in setup mode EasySkyMesh firmware is a power-saving fork of MeshCore (built on MeshCore v1.14.1), not Meshtastic. With its aggressive power profile (radio front-end LNA/FEM disabled) it has been measured at ~5.5 mA idle on the Heltec V4.3 (an ESP32-S3 board) while still actively listening as an always-on repeater. This is a specific firmware/config result, not a general nRF52 figure. Notable hardware benchmarks These are representative community measurements for specific boards and firmware - measure your own node before sizing a system. Device MCU Average current (repeater, optimized) Notes Heltec Mesh Node V4 ESP32-S3 ~40 mA Wi-Fi + BT disabled (representative) Heltec V4.3 ESP32-S3 ~5.5 mA idle EasySkyMesh (MeshCore-based) firmware with radio LNA/FEM off; specific config only RAK4631 WisBlock nRF52840 ~10 - 15 mA Active MeshCore/Meshtastic repeater (community-measured; measure your own) LilyGo T-Echo nRF52840 ~8 mA GPS disabled, e-ink refresh minimal (community-measured; ~3-6 mA achievable with aggressive power saving) Station G2 ESP32-S3 ~45 mA High TX power option; powered from 15 V PD (≥20 W) input Daily energy budget calculation example To size your battery correctly, work in two steps. First find the daily charge in amp-hours, then convert to watt-hours by multiplying by the pack's nominal voltage: Ah per day = (average mA × hours) / 1000 Wh per day = Ah per day × nominal voltage (V) Example: RAK4631 running optimized at ~12 mA average, 24 hours, on a 3.7 V cell: Ah per day = (12 mA × 24 h) / 1000 = 0.288 Ah/day Wh per day = 0.288 Ah × 3.7 V = ~1.07 Wh/day Battery sizing for 5-day autonomy: 0.288 Ah/day × 5 days = 1.44 Ah of usable capacity needed With 80% usable (LiFePO4 DoD): 1.44 / 0.8 = 1.8 Ah rated minimum Apply further derating for cold-weather capacity loss and end-of-life fade, plus margin for TX spikes and extra cloudy-day reserve. Practical recommendation: 5 - 10 Ah LiFePO4 gives a comfortable margin for this ultra-low-power node. For higher-draw nodes (ESP32, Pi), rerun the full derate chain (usable DoD × cold × end-of-life × margin) so the method scales correctly. Voltage and battery type reference The temperature ranges below are discharge/operating ranges. The charge range is narrower for lithium chemistries: never charge any lithium battery (including LiFePO4) below 0°C (32°F) without a low-temperature charge cutoff - sub-freezing charging causes lithium plating, permanent capacity loss, and a hidden internal-short fire risk. A solar node charges every day, so for cold climates require a BMS with low-temp protection or a charge controller with a battery temperature sensor. Chemistry Nominal voltage Discharge temp range Charge temp range Cycle life Recommended for LiFePO4 3.2V/cell −20°C to +60°C 0°C to +45°C (no charging below freezing without BMS lockout / self-heating) 2000+ cycles All outdoor deployments LiPo (LiCoO2) 3.7V/cell ~−20°C to +60°C 0°C to +45°C 300 - 500 cycles Indoor/portable only NiMH AA 1.2V/cell −20°C to +50°C 0°C to +45°C 500 - 1000 cycles Ultra-budget temporary nodes LiFePO4 is strongly recommended for permanent outdoor deployments: it handles temperature extremes (within the charge-temperature limit above) and has roughly 4× longer cycle life than LiPo. It is also much more resistant to thermal runaway than LiCoO2/NMC and rarely ignites - but it is not immune: severe overcharge, an internal short, or a puncture can still cause venting or fire. Always use a BMS and proper fusing. Solar Sizing Guide A correctly sized solar system can keep your repeater running for years with minimal maintenance - an undersized system fails within days during cloudy weather. Note that batteries are a wear item: they degrade over time and need periodic replacement, connectors corrode, panels soil, and a long enough run of overcast can exceed any finite battery reserve, so plan for periodic inspection (see the cold-weather page for a seasonal maintenance schedule). The two goals of solar sizing Enough panel to fully recharge the battery on a typical sunny day Enough battery to run through several consecutive cloudy days (autonomy period) Step 1: Calculate daily energy consumption Use the power consumption tables on the previous page. The official Meshtastic power figures are use-case and duty-cycle dependent, so treat the numbers below as representative examples — measure your own node. For a typical optimized nRF52 (RAK4631 / T-Echo) repeater, a representative average is ~10 - 15 mA; we use 12 mA here: Daily consumption = 12 mA × 24 h = 288 mAh = 0.288 Ah At 3.7V: 0.288 Ah × 3.7 V = 1.07 Wh/day For an ESP32 (Heltec LoRa 32 V3) repeater, a representative always-on average is ~40 - 80 mA (higher with Wi-Fi/MQTT). Using 40 mA: 40 × 24 = 960 mAh = 3.55 Wh/day. A stripped, Wi-Fi-off ESP32 can be ~25 - 30 mA; a full-featured one is higher. Step 2: Size the battery Rule of thumb: target 5 days of autonomy (no sun) for a general node, and 5 - 7+ days for an emergency-comms node (panels don't help during multi-day overcast). Use 80% usable depth-of-discharge for LiFePO4: Battery (Ah) = (daily consumption × 5 days) / 0.8 nRF52 example: (0.288 Ah × 5) / 0.8 = 1.8 Ah minimum → use 5 - 10 Ah for margin ESP32 example: (0.96 Ah × 5) / 0.8 = 6.0 Ah minimum → use 10 - 20 Ah Step 3: Size the solar panel Do not assume 4 peak sun hours per day — that is not conservative year-round. Look up your location's worst-month (December) peak sun hours (PSH) on NREL PVWatts: winter PSH can be as low as ~1.5 in the Pacific Northwest (Seattle/Portland), ~2.5 in the Midwest (Chicago), and ~0.5 in Alaska (Anchorage). Size the panel against that winter minimum, not a year-round average. Divide by an overall system derate factor of 0.75 (covering charge-controller inefficiency, wiring, temperature, soiling, and panel degradation): Panel (W) = (daily Wh / winter PSH) / 0.75 nRF52 example at 1.5 PSH (PNW winter): (1.07 / 1.5) / 0.75 = 0.95W minimum → a 5W panel is the safer floor for any northern deployment ESP32 example at 1.5 PSH (PNW winter): (3.55 / 1.5) / 0.75 = 3.16W minimum → 10W panel recommended Re-run this calculation with your winter PSH before trusting a small panel. At a year-round-average 4 PSH the nRF52 minimum would be only ~0.36W, but at a real PNW winter 1.5 PSH it is ~0.95W, and once cold derate and snow-cover risk are added a 1 - 3W panel is marginal — a 5W panel is the safer floor for northern winters. Typical community build: $108 - $290 (prices as of 2026-06-08, volatile) This is a generic example build for a small solar-powered LoRa mesh node. Match the battery voltage to your node's input requirement and confirm current vendor listings before purchasing: Component Spec Cost Solar panel 5W, south-facing, 30 - 40° tilt (match your latitude) $15 - 25 Charge controller MPPT — e.g. Victron SmartSolar MPPT 75/10 (Victron's smallest model; ~$50 - 65, a 12V-system controller) or a generic CN3791 board (a single-cell ~6V LiPo solar charger IC — not interchangeable; match it to your battery voltage) $15 - 65 Battery LiFePO4 10 Ah — either a 4S 12.8V pack (~128 Wh) or a single 3.2V cell (~32 Wh). These are not equivalent: at the same Ah the 12.8V pack stores ~4× the energy, and a single 3.2V cell won't power a board needing 3.3V+. Match the battery voltage to your node. $25 - 60 Radio board RAK4631 or Heltec LoRa 32 V3 or T-Echo $18 - 75 Enclosure IP65 ABS junction box, 200×120×75mm $10 - 20 Antenna 5 dBi fiberglass, N-female mount $15 - 25 Misc Cable glands, silicone, wiring, and a fuse on the battery-positive lead within a few inches of the terminal (see the Wiring page) $10 - 20 Total $108 - $290 Cold-climate note: LiFePO4 must never be charged below 0 °C (32 °F) — sub-freezing charging causes lithium plating and permanent damage. The CN3791 has no low-temperature charge cutoff, so for cold/winter builds use a BMS with low-temp protection, or a charge controller with a battery temperature sensor. Panel mounting orientation Azimuth: Face south (in North America). A deviation of up to 30° east or west reduces output by only ~5%. Tilt angle: Set to your latitude for best year-round average. Steeper tilt (latitude + 15°) optimizes for winter; shallower (latitude − 15°) for summer. Avoid shading: Even partial shading of one cell can reduce output of the entire panel significantly. Use terrain and shadow analysis before finalizing mount position. Charge controller: MPPT vs PWM Strongly prefer MPPT for solar-powered mesh nodes: MPPT controllers extract more power from the panel when the panel's Vmp is well above the battery voltage (and in cold or low-light conditions) On small systems (3 - 10W panels), this can be the difference between running through winter and falling into deficit PWM is acceptable when the panel's Vmp closely matches the battery voltage (e.g. a nominal-12V panel on a 12V battery); for higher-voltage panels, MPPT is needed. On very-low-power nodes, also weigh the controller's own quiescent (idle) current draw — a tiny panel paired with a hungry MPPT can lose more than it gains. Power Consumption Measurement Methods Accurate power consumption measurements help you design realistic solar power systems and understand why your battery life differs from specifications. This page covers practical measurement techniques for mesh node operators. Measurement Tools USB power meter (basic): Plugs between USB charger and device. Shows voltage, current, and power in real time. Cost: $5-15. Limitation: only measures USB-powered devices; can't measure 3.3V or 3.7V native power. USB power meter (logging): Same as above but logs data over time. Shows how consumption varies between sleep/wake/transmit cycles. Cost: $15-30. Good for average consumption calculations. Multimeter in current mode: In-series measurement with any power supply. More flexible; requires breaking the power path to insert the meter in series. Safety: measuring current requires the meter's dedicated current jack and current mode, in series with the circuit - NEVER place a current-mode meter across a battery or supply (it is a near short-circuit and can blow the meter's internal fuse or damage the meter). Most multimeter current jacks are limited to 10 A; a LoRa node's average draw is milliamps, so use the mA jack, not the 10 A jack, and never the voltage jacks in series. When breaking a lithium battery lead, ensure the battery is fused, avoid momentarily shorting the terminals (a lithium cell can deliver tens of amps), and start on the highest current range. Current probe/clamp meter: Non-invasive; clamps around a wire to measure current. AC current only in basic versions; specialized DC clamp meters cost $40-100 but don't require circuit modification. Nordic PPK2 (Power Profiler Kit 2): ~$80 tool from Nordic Semiconductor (as of 2026-06-08). It is not nRF52-specific - it can source or pass through power to any low-power DUT and measure its current from roughly 200 nA up to ~1 A, with high time resolution. Ideal for profiling sleep vs. active states and showing the detailed consumption waveform, including brief TX peaks that a basic meter averages out. Measuring Average vs. Peak Current A critical distinction: Peak current (transmit): the brief current spike during a LoRa transmission, lasting roughly 100-300 ms. The magnitude depends entirely on the TX power setting and the radio module's power amplifier: a module with an internal PA at ~22 dBm draws on the order of 80-120 mA, while a 1 W external-PA module at high power draws far more (~120-280 mA - see the platform page). Important for battery internal-resistance sizing but not for the energy budget. State the TX power and module your own figures assume. Average current: What actually matters for battery sizing. Example - a node that transmits 10 times per hour for 200 ms at 100 mA peak and sits at a 4 mA low-active/idle draw the rest of the time (note: deep sleep is lower, ~0.2 mA; this 4 mA is the listening/idle state): transmit time = 10 × 0.2 s = 2 s/hr idle time = 3600 s - 2 s = 3598 s/hr average = (2 s × 100 mA + 3598 s × 4 mA) / 3600 s = (200 + 14392) / 3600 ≈ 4.05 mA average USB power loggers typically measure average current; this is what you want for battery sizing. Nordic PPK2 shows both. Measuring nRF52840 Nodes (RAK4631, T-Echo) # Using a small sense resistor in series with the battery: # 1. Insert a SMALL shunt (e.g. 1 ohm or 0.1 ohm) in series with the # battery positive terminal. Size it so the voltage drop at MAX # current stays under ~50-100 mV, or the drop will brown out the # node mid-transmit and corrupt the reading. # WARNING: do NOT use a 10-ohm shunt for TX-peak measurement - at # 80-120 mA TX it drops 0.8-1.2 V, which can reset the node. A large # (10-ohm) shunt is only acceptable for tiny uA-mA sleep currents. # 2. Measure voltage across the resistor with an oscilloscope or fast # multimeter. # 3. I = V / R. For a 1-ohm shunt: 5mV = 5mA, 10mV = 10mA, 100mV = 100mA. # For a 0.1-ohm shunt: multiply the implied current by 10. # Using Nordic PPK2 (recommended - no brownout, handles TX peaks): # Connect PPK2 between battery and node # Run nRF Connect Power Profiler software # Record average current over 10-minute period for steady-state measurement # Record peak current during LoRa transmission Real-World Measurements (Community Data) These are community-reported measurements - actual values depend on firmware version, traffic, and config, so measure your own node. They are consistent with the ~10-15 mA representative nRF52840 repeater figure on the platform page. Node Mode Avg Current Battery Life (2500mAh) RAK4631 MeshCore REPEATER Active repeating, 1 hop/min 12-15 mA 7-8 days RAK4631 Meshtastic ROUTER Active, LongFast 10-14 mA 7-10 days T-Beam ESP32 Meshtastic CLIENT Active, WiFi off 35-50 mA 2-3 days T-Echo nRF52840 Meshtastic Power saving on 3-6 mA 17-35 days Heltec V3 ESP32-S3 Active, WiFi off 25-40 mA 2.6-4 days Note: Actual power consumption varies significantly with traffic load, transmit power setting, and environmental conditions (cold weather increases current draw). Practical Power System Design Solar System Sizing Guide Goal Size your battery to survive N cloudy days, and size your panel to fully recharge that battery against your worst-month (winter) sun — with real positive margin, never sized "exactly" to the minimum. Step 1 - Measure Your Device's Actual Current Draw Use a coulomb-counting USB power meter (or a meter that logs mAh/Wh) over a multi-hour test. A plain multimeter in series reads only instantaneous current and will under-estimate average draw — radios spend most of their time receiving (low current) and only briefly transmitting (high current), so you must integrate consumption over time (mAh/Wh), not read a single instantaneous value. Do not rely solely on datasheet figures — real-world draw depends on firmware, radio duty cycle, and accessories. Representative average current values (measure your own; these are examples, not specs): Device Avg Current ESP32 repeater (Heltec V3, no display, BT/Wi-Fi off) ~40 - 80 mA (light traffic toward the low end; default/higher-traffic configs higher) nRF52840 repeater (RAK4631 / T114), RX-mode average ~10 - 15 mA (aggressive power-saving firmware can reach ~7.5 mA) Pi Zero 2W gateway (idle/light load) ~100 - 150 mA at 5V (an active gateway under Wi-Fi traffic can exceed 150 mA) Pi 3B+ gateway (idle) ~300 - 400 mA at 5V (a busy gateway draws 500 mA+, peaking near 950 mA under load) Step 2 - Calculate Daily Energy Work in watt-hours so device voltage is explicit. Daily energy: Wh/day = average current (mA) × 24 h × system voltage (V) ÷ 1000. To get amp-hours at a given bus voltage, divide Wh/day by that voltage. (mA × h alone gives Ah at the device's own voltage — you must multiply by voltage to get Wh, and account for voltage when sizing a battery at a different bus voltage.) Example: a 60 mA ESP32 repeater on a 3.7 V single-cell bus = 60 × 24 × 3.7 ÷ 1000 ≈ 5.3 Wh/day, which is ~1.4 Ah/day at 3.7 V. If you instead power it from a 12 V LiFePO4 pack through a buck converter, the same 5.3 Wh/day is only ~0.44 Ah/day at 12 V, plus converter losses. Step 3 - Size the Battery for Cloudy Days (with margin) Multiply daily energy by the number of consecutive no-sun days you must survive. For general installs plan 3 - 5 days of reserve; for emergency-comms nodes plan 5 - 7+ days, because panels contribute nothing during a multi-day overcast or snow-covered stretch. Example (5.3 Wh/day ESP32, 5-day reserve): 5.3 Wh/day × 5 days = 26.5 Wh of usable reserve needed. For LiFePO4, plan to 80% depth of discharge for longevity — usable capacity = rated × 0.80. Sizing the pack exactly to the minimum leaves zero margin and ignores self-discharge, BMS/converter losses, cold-temperature capacity loss, and aging. Add real margin — roughly 1.3 - 2× the bare minimum. For the 5-day ESP32 case above (~26.5 Wh usable need ≈ a ~33 Wh pack at 80% DoD), step up to a ~50 - 65 Wh pack (e.g. an 8 - 10 Ah pack on a 6.4 V or 12.8 V bus) rather than sizing it razor-thin. Step 4 - Size the Solar Panel A solar panel produces roughly its rated wattage for a number of "peak sun hours" (PSH) per day. Do not assume a flat "4 PSH year-round." Use your location's winter PSH from NREL PVWatts: northern-US winter is only ~1 - 2.5 PSH (Seattle/Portland ~1.5, Chicago ~2.5, Anchorage ~0.5). Size the panel against the worst-month PSH and size the battery for cloudy-day reserve. Energy harvested: Wh/day = panel watts × PSH × derate, where the overall derate factor is 0.75 (it lumps controller, wiring, temperature, and soiling losses). To convert to amp-hours at the battery, divide by the battery charging voltage. For a PWM controller, current into the battery is roughly the panel's Imp (PWM clips panel Vmp to battery voltage); for MPPT, use the power form (panel W × PSH × derate) ÷ battery charging voltage, since MPPT converts power rather than clipping voltage. Example: a 5 W panel at a winter minimum of 2 PSH → 5 W × 2 h × 0.75 = 7.5 Wh/day harvested That still covers a ~5.3 Wh/day ESP32 repeater, but with thin margin and no allowance for consecutive overcast days. At a northern latitude, step up to a 10 W panel for reliable winter recharge. Step 5 - Account for Worst-Case Latitude and Season Latitude >45° (northern US, Canada) in winter may have only ~1 - 2.5 peak sun hours — and that figure describes clear winter days. During storms, prolonged overcast, and snow cover, real harvest can fall to near zero for days at a time. Size the panel for the winter minimum and size the battery for 5 - 7+ consecutive no-sun days at high latitude. Check and clear snow from panels in winter. Quick Reference Table Device currents below are representative receive-mode/idle figures (measure your own). The mA values are at each device's own input voltage; the Ah/day column is computed at that voltage. When powering from a higher-voltage battery (e.g. 12 V LiFePO4) through a converter, convert via watt-hours and add converter loss. Battery and panel columns already include margin for cloudy-day reserve and winter PSH. Device Avg mA Ah/day (at device V) Recommended Battery Recommended Panel nRF52840 repeater ~12 mA 0.29 Ah @ device V 3 - 5 Ah LiFePO4 3 W minimum ESP32 repeater ~60 mA 1.4 Ah @ device V 8 - 10 Ah LiFePO4 5 - 10 W Pi Zero gateway (idle) ~125 mA @ 5V 3.0 Ah @ 5V (≈1.4 Ah/day at 12V + loss) 15 - 20 Ah LiFePO4 20 W Pi 3B+ gateway (idle) ~350 mA @ 5V 8.4 Ah @ 5V (≈3.8 Ah/day at 12V + loss; active load draws more) 40 Ah LiFePO4 50 W Charge Controller Selection and Wiring Why You Need a Charge Controller Solar panels produce unregulated voltage - a nominally "12 V" panel can output up to 22 V open-circuit. A charge controller protects the battery from overcharge, manages the multi-stage charge profile (bulk, absorption, float), and in many cases provides a protected load output to prevent deep discharge. PWM vs. MPPT PWM (Pulse Width Modulation) Simple and cheap. The controller connects the panel more or less directly to the battery and chops the current. Efficient only when the panel's operating voltage is close to the battery voltage. Fine for small, well-matched systems where cost matters more than harvest efficiency. MPPT (Maximum Power Point Tracking) Continuously sweeps the panel's voltage-current curve to find the operating point that yields maximum power output. Typically delivers 10 - 30% more energy than PWM, especially in cool or partly-cloudy conditions, or when panel voltage is significantly higher than battery voltage. MPPT recovers the most when the panel's Vmp is significantly higher than the battery voltage; PWM suits panels whose Vmp is close to the battery voltage. Recommended for any challenging installation. Recommendations for LoRa Mesh Nodes Small systems: 5 W panel + 3.7 V LiPo or small LiFePO4 A dedicated solar LiPo charging board with built-in MPPT is the simplest and cheapest approach. Examples: CN3791-based boards (switching MPPT-style solar charger; widely available on AliExpress, ~$3 - 8 as of 2026-06-08) Waveshare Solar Power Manager (~$12 - 15 as of 2026-06-08) These handle cell-level charging directly and fit neatly into a small enclosure alongside the node. Note: these small charger ICs have no low-temperature charge cutoff — never charge any lithium chemistry below 0 C (32 F), and add a BMS with low-temp protection or a controller with a battery temp sensor for cold-climate builds. Medium systems: 10 - 20 W panel + 12 V LiFePO4 A dedicated MPPT controller is warranted. Good options at modest cost: Renogy Wanderer 10A - inexpensive, reliable, widely available Victron SmartSolar 75/10 - premium, Bluetooth monitoring via the VictronConnect app, excellent LiFePO4 support. Higher cost but extremely reliable for permanent installs. (The 75/10 has no dedicated load output; the comparable Victron load-output controllers are rated 15 A on the load terminal.) Wiring Sequence Always follow this order to protect the controller: Connect battery to controller first Connect panel to controller Connect load to controller Disconnect in reverse order: load → panel → battery. LiFePO4 Charge Profile LiFePO4 uses a different charge profile from lead-acid. Key voltages per cell (4S = 12.8 V nominal): Absorption voltage: 3.55 - 3.65 V/cell (use ~3.60 V/cell as the canonical absorption) Float voltage: 3.375 - 3.40 V/cell (use 3.375 V/cell). Do NOT float at 3.60 V/cell — that holds the pack near 100% SoC continuously and accelerates aging. For a 4-cell (12 V nominal) pack: absorption = 14.4 V (range 14.2 - 14.6 V), float = 13.5 V (range 13.5 - 13.6 V). Do not float a LiFePO4 pack at 14.4 V. Also do NOT equalize LiFePO4. Warning: Most cheap PWM controllers are factory-calibrated for lead-acid (14.4 - 14.8 V absorption, with a ~13.5 - 13.8 V float). Using lead-acid absorption settings on LiFePO4 can overcharge and damage the cells. Verify that your controller has a LiFePO4 mode or use a controller specifically designed for LiFePO4. Load Output and Low-Voltage Disconnect (LVD) Many charge controllers have a dedicated "load" terminal that automatically disconnects the load when the battery drops below a programmable voltage. Connect your node to this terminal rather than directly to the battery. Set the operating LVD to ~3.0 V/cell (a conservative recommended value; the acceptable range is roughly 2.8 - 3.0 V/cell): 12 V system (4S LiFePO4): LVD = 12.0 V (about 10-20% SoC remaining) This operating LVD is distinct from the hard BMS undervoltage cutoff (~2.5 - 2.7 V/cell, ~10 - 10.8 V for a 4S pack). The conservative 12.0 V LVD leaves reserve before the BMS cell-undervoltage cutoff and prevents deep discharge, which is a primary cause of premature LiFePO4 cell death. Fusing Always fuse the battery positive lead as close to the battery terminal as practical (ABYC: within ~7 inches). A short circuit without a fuse can dump hundreds of amps through wiring and cause a fire. Use automotive blade fuses. Size the fuse to protect the WIRE, not the load: the fuse rating must be at or below the ampacity of the smallest conductor it protects, AND at least ~125% of the continuous load current. Choose the next standard fuse size that satisfies both conditions. Never simply use "2× the load" or "the next size above the wire's ampacity." Example: a node drawing 500 mA peak - a 2 A fuse on the battery lead is fine, because 2 A is above ~125% of the load and well within the ampacity of typical hookup wire. Always confirm the chosen fuse is at or below the conductor's ampacity. Sizing a Solar System for Your Climate Solar panel sizing depends heavily on your geographic location. The same 5W panel produces dramatically different energy in Portland, Oregon vs. Phoenix, Arizona. This guide walks through climate-specific sizing calculations. Peak Sun Hours by Region Peak Sun Hours (PSH) is the number of hours per day when solar irradiance averages 1,000 W/m². It's the key variable in solar sizing calculations. Region Winter PSH Summer PSH Annual Average PSH Phoenix, AZ 4.5 7.5 6.0 Los Angeles, CA 4.0 6.0 5.2 Denver, CO 3.8 6.5 5.1 Dallas, TX 3.5 6.5 5.0 Atlanta, GA 3.2 5.5 4.5 Chicago, IL 2.5 5.5 4.0 Seattle, WA 1.5 5.5 3.5 Portland, OR 1.5 5.5 3.3 Anchorage, AK 0.5 6.0 3.0 PSH source: values are conservative sizing-design figures derived from NREL PVWatts / NSRDB station data for representative cities in each region; look up your exact site in PVWatts before finalizing a build. Winter columns reflect the worst-month average (e.g. December). The "Annual Average" column is a design figure for rough comparison — NREL's pure annual mean runs a little higher in cloudy locations (e.g. Seattle's true annual mean is ~4.9 PSH, but its winter worst-month near 1.5 is what governs sizing). Always size the panel against the winter PSH, not the annual average. Phoenix winter is shown at a conservative 4.5; some sources put it nearer 5.0–5.5. (as of 2026-06-08) Design for the worst month: Use winter PSH for sizing, not annual average. In most of the Northern Hemisphere, a system sized for the December PSH minimum will have surplus power in other months — but you still need battery autonomy for multi-day cloudy spells, and in snowy regions you must account for snow covering the panel. Solar Sizing Calculation # Formula: Panel watts needed = Daily energy need / (PSH * derate factor) # Daily energy (Wh/day) = average current (mA) * system voltage (V) * 24 h / 1000 # Derate factor (~0.75) covers controller + wiring + temperature + soiling losses. # This is a CLEAR-DAY average; the PSH figure assumes typical sun. Multi-day # overcast is handled by BATTERY reserve (see Battery Sizing), not panel size. # Example: RAK4631 (nRF52840) repeater in Chicago winter # Representative average draw ~10-15 mA; measure your own node. Daily energy: 15mA avg * 3.7V * 24hrs / 1000 = 1.33 Wh/day PSH (Chicago winter, per NREL PVWatts): 2.5 hours Derate factor: 0.75 Panel size = 1.33 Wh / (2.5 h * 0.75) = 0.71W # This 0.71W is the clear-winter-day MINIMUM. A 1W panel meets the load only on # a clear day and gives no headroom for the multi-day overcast that is normal in # Chicago Nov-Feb. Cloudy-day survival comes from battery reserve, not panel size. # Use at least a 5W panel (a ~7x safety multiple over the clear-day minimum, to # recharge quickly between storms) AND size the battery for 5-7 no-sun days. # For Raspberry Pi room server + RAK4631 in Chicago winter: Pi Zero 2 W avg: 300mA * 5V = 1.5W = 36 Wh/day # representative; verify your load RAK4631 avg: 15mA * 3.7V = 0.055W = 1.33 Wh/day Total: 37.33 Wh/day # Computed minimum: Panel needed: 37.33 / (2.5 * 0.75) = 19.9W # Choose the next-larger standard size for margin -> use 25W panel minimum. Battery Sizing for Autonomy # Formula: Battery capacity (Ah) = Daily energy * Autonomy days / (usable fraction * voltage) # Usable fraction (plan-to depth of discharge for longevity): # LiFePO4 ~0.80 (cells can do 0.80-0.90), LiPo/Li-ion ~0.80, SLA/lead-acid ~0.50 # For emergency-comms nodes, target 5-7+ days of autonomy: panels do not help # during multi-day overcast, so the battery must carry the whole no-sun stretch. # RAK4631 repeater with 3-day autonomy, 3.7V LiPo: Battery Ah = (1.33 Wh/day * 3 days) / (0.80 * 3.7V) = 3.99 Wh / 2.96 = 1.35 Ah minimum # 3 days is a general minimum; for an emergency-comms node, size for 5-7 days. # A 10Ah LiPo gives: 10Ah * 0.80 * 3.7V / 1.33 Wh/day = ~22 days of autonomy. # That is a comfortable reserve for this very-low-draw node, but the reserve is # only useful if the battery is kept above freezing and the panel can recharge it # between cloudy spells. Do not treat panel size and battery reserve as # interchangeable - the battery carries no-sun days, the panel recharges between them. # For Pi + RAK at 3-day autonomy, 12V LiFePO4: Battery Ah = (37.33 * 3) / (0.80 * 12V) = 11.7 Ah minimum # Use a 20Ah battery for comfortable margin (and 5-7 day reserve if emcomm-critical). Seasonal Charging Strategies High-sun climates (AZ, NM, TX): Standard sizing with modest battery. More at risk from heat-related battery degradation than insufficient solar. Variable climates (CO, GA, NY): Size for winter worst-case. A controller with proper charge termination prevents overcharge, so excess panel capacity in summer is simply wasted rather than harmful — but only if the controller terminates charging correctly. Summer heat itself stresses lithium cells: keep the battery shaded and ventilated, and do not charge Li-ion/LiPo above ~45 °C. Low-sun climates (PNW, AK): Over-size significantly. A 20W panel for a 1W load is not overkill in Portland. Alternatively, use a second backup charging source (wind generator, AC trickle charge from nearby structure). In sub-freezing weather, ensure the BMS or charge controller inhibits charging below 0 °C — charging a frozen lithium cell causes plating and a permanent internal-short hazard. Charge Controller Selection and Configuration The charge controller is the brain of your solar power system - it manages battery charging, prevents overcharge and deep discharge, and in MPPT controllers, optimizes power extraction from the solar panel. Choosing the right charge controller significantly affects system efficiency and longevity. PWM vs. MPPT: Which to Choose Feature PWM MPPT Efficiency 70-75% 93-97% Cost $5-20 $30-150 Solar panel voltage matching Must match battery voltage closely Works with any panel voltage above battery voltage Best for small systems Under 5W with matched panel/battery 5W+ or when panel voltage exceeds battery voltage Cold weather performance Good Excellent (harvests more from cold-weather voltage boost) Recommendation: Use MPPT for any permanent deployment. The efficiency gain pays for the cost premium within 1-2 years in most climates, and MPPT controllers last longer and provide better battery protection. Victron SmartSolar MPPT 75/10: The Standard Choice The Victron SmartSolar 75/10 ($45-55, as of 2026-06-08) is the most popular choice for LoRa mesh solar nodes: Input: up to 75V open-circuit panel voltage, 10A max battery charge current Supports 12V and 24V battery systems Bluetooth monitoring via Victron Connect app - see real-time voltage, current, and charge state from your phone Load output: switched 15A continuous output (short-circuit proof) with built-in low-voltage disconnect that protects the battery. Note the 10A figure is the battery charge current rating, not the load output rating. Temperature compensation for accurate charging - this adjusts charge voltage for lead-acid chemistry; LiFePO4 does not use it, so disable it even in cold climates (see configuration below) # Victron MPPT configuration for LiFePO4 battery (12V system): Charge algorithm: Li-Ion Absorption voltage: 14.4V (range 14.2-14.6V; do not float here) Float voltage: 13.5V Low voltage disconnect: 12.0V (operating LVD for longevity, ~10-20% SoC remaining; this is NOT 80% DOD protection. The hard BMS under-voltage cutoff is lower, ~10-10.8V) Temperature compensation: Disabled for LiFePO4 (temp compensation is a lead-acid feature) # For LiPo (3.7V single cell, 4.2V max): # Use a TP4056 Li-Ion charger module, not a Victron # Victron 75/10 is designed for 12V+ systems Load Output vs. Direct Battery Connection Most MPPT controllers have a "load output" - a switched output that turns off automatically when the battery voltage drops below a set threshold: Advantages of load output: Built-in low-voltage disconnect protects battery; the controller manages when to power the node vs. when to conserve battery for recovery Disadvantages: Load output current limit (typically 10-15A) may not support higher-power loads; adds a small voltage drop (0.1-0.5V) Best practice: Connect your node through the load output for automatic low-voltage protection. Connect any monitoring equipment (Pi) directly to the battery with its own cutoff relay if the Pi exceeds the load output current limit. Solar Panel Tilt Optimization # A good annual-average tilt is approximately equal to your latitude. # (A common refinement is latitude * ~0.76 per NREL studies, since the # true annual optimum is somewhat below latitude.) The latitude * 0.9 # + offset formulas you may see elsewhere are season-specific (winter), # not the annual-maximum rule. # Annual-average examples (tilt ~ latitude): # Portland (45.5°N): ~45 degrees from horizontal # Dallas (32.8°N): ~33 degrees # Phoenix (33.4°N): ~33 degrees # Chicago (41.8°N): ~42 degrees # For winter optimization (maximize December-February output): # Tilt angle = latitude + 15 degrees # For snow-shedding (prevents accumulation that blocks panel): # Tilt angle = 45 degrees minimum; 60 degrees ideal in heavy snow climates Battery Chemistry and Selection Comparing LiFePO4, LiPo, and lead acid battery chemistries for LoRa deployments, plus sizing methodology and BMS protection. LiFePO4 vs LiPo vs Lead Acid for LoRa Deployments Choosing the right battery chemistry for a LoRa mesh node is one of the most consequential hardware decisions you will make. The chemistry determines cycle life, safe operating temperature, charging behaviour, physical size, and total cost of ownership. This page provides a deep technical comparison of the three chemistries most commonly encountered in field deployments: Lithium Iron Phosphate (LiFePO4), Lithium Polymer (LiPo), and valve-regulated lead acid (VRLA/AGM). Chemistry Overview Property LiFePO4 LiPo (LiCoO₂/NMC) Lead Acid (AGM/VRLA) Nominal cell voltage 3.2 V 3.7 V 2.0 V per cell (12 V = 6 cells) Fully charged voltage 3.65 V 4.2 V 12.7 - 12.8 V (12 V battery) Fully discharged cutoff 2.5 V (3.0 V recommended) 3.0 V (3.2 V recommended) 10.5 V (50% DoD recommended) Usable energy density (Wh/kg) 90 - 120 Wh/kg 150 - 200 Wh/kg 30 - 40 Wh/kg Cycle life (to 80% capacity) 2,000 - 4,000 cycles 300 - 500 cycles 200 - 500 cycles (50% DoD) Self-discharge per month 1 - 3% 2 - 5% 3 - 5% Thermal runaway risk Very low; cell-to-cell propagation is unlikely but not impossible under severe abuse in tightly packed packs High - flammable electrolyte Low - explosive H₂ gas if overcharged Operating temperature (discharge) −20 °C to +60 °C −10 °C to +45 °C −15 °C to +50 °C (capacity drops >30% at 0 °C) Charging temperature minimum 0 °C (lithium plating below) 0 °C ≈−20 °C at reduced rate, only if not frozen (never charge a frozen lead acid battery — it can rupture) Typical cost (USD, approximate, as of 2024) $0.25 - $0.50 / Wh (cells); $0.60 - $1.20 / Wh (pack) $0.15 - $0.30 / Wh (pouch) $0.10 - $0.20 / Wh Cost per cycle (at rated life) $0.0002 - $0.0006 / Wh / cycle $0.0006 - $0.0010 / Wh / cycle $0.0008 - $0.0020 / Wh / cycle Cycle Life in Depth LiFePO4 is the standout performer for longevity. A quality cell from EVE, CALB, or Headway will reliably deliver 2,000 cycles at 100% depth of discharge (DoD) and can exceed 4,000 cycles at 80% DoD per the manufacturers’ published cycle-life-vs-DoD curves (e.g. the EVE LF280K datasheet). At a 1-cycle-per-day charge rate typical of solar nodes, this translates to 5 - 11 years of service life. LiPo cells (using LiCoO₂ or NMC cathodes as found in hobby packs and phone batteries) are rated for 300 - 500 full cycles. With daily cycling on a solar node, these cells will reach end-of-life in under 18 months. Permanent deployments in LiPo are therefore not economical. Lead acid (AGM) ratings of 200 - 500 cycles assume 50% DoD. Discharging deeper (toward 80% DoD) shortens cycle life substantially; the cycle-life-vs-DoD relationship is nonlinear and varies by battery, so consult the manufacturer’s cycle-vs-DoD curve. Because solar systems routinely deep-discharge during extended cloudy periods, real-world lead acid life in solar applications is often only 2 - 3 years. Temperature Performance This is where LiFePO4 dominates cold climates. At −20 °C, LiFePO4 retains approximately 70 - 80% of rated capacity on discharge - usable, though not ideal. LiPo cells at −10 °C typically retain only 50 - 60% of rated capacity and internal resistance rises sharply, causing voltage sag under load. At −20 °C many LiPo cells effectively stop functioning. Lead acid loses approximately 30 - 40% of rated capacity at 0 °C, and at −20 °C a fully charged lead acid battery delivers only 40 - 50% of its 25 °C rating. Critical charging constraint: Both LiFePO4 and LiPo must not be charged below 0 °C. Charging lithium cells in freezing temperatures causes metallic lithium plating on the anode, permanently reducing capacity and creating an internal short-circuit hazard. Solar systems in freezing climates must incorporate a low-temperature charge cutoff. Many commercial LiFePO4 BMS modules include this feature. Safety LiFePO4 uses an olivine phosphate cathode that is inherently stable. Even in nail-penetration and overcharge abuse tests, LiFePO4 cells typically vent mildly without fire or explosion. LiFePO4 is far more resistant to thermal runaway than LiPo/NMC, but it is not immune — still use a BMS and proper fusing. Its stability makes it much safer than LiPo for enclosed installs, but you must still observe ambient temperature limits (charge only between 0 °C and 45 °C — attics can exceed charge-temperature limits and cold walls can fall below the 0 °C charge floor), provide thermal management, and follow local fire/building codes. LiPo cells with NMC or LiCoO₂ cathodes store significantly more energy per unit mass and release it rapidly in fault conditions. Thermal runaway in a LiPo pack can reach temperatures of several hundred °C and produces toxic hydrogen fluoride (HF) gas. Never install LiPo packs in sealed enclosures without adequate ventilation or thermal fusing. For unattended LoRa repeater deployments in public locations, LiPo represents a meaningful liability. Lead acid produces hydrogen gas during overcharge. In sealed VRLA/AGM formats the recombination rate is high, but a faulty charge controller can still cause pressure build-up and case rupture. AGM batteries should not be enclosed in airtight boxes. Voltage Curves and State-of-Charge Estimation LiFePO4 has an extremely flat discharge curve - the cell voltage sits near 3.2 - 3.3 V for the majority of its capacity range, dropping steeply only in the last 10 - 15% of charge. This makes voltage-based SoC estimation imprecise in the mid-range, but the flat curve is beneficial because the node's voltage regulator sees a near-constant input for most of the discharge cycle. SoC (%) LiFePO4 OCV (V/cell) LiPo OCV (V/cell) 12 V Lead Acid OCV (V) 100 (resting) 3.35 - 3.45 4.18 - 4.20 12.70 - 12.80 90 3.35 - 3.38 4.07 - 4.10 12.50 - 12.60 80 3.32 - 3.34 3.98 - 4.02 12.40 - 12.50 70 3.30 - 3.33 3.88 - 3.92 12.30 - 12.40 50 3.27 - 3.30 3.73 - 3.77 12.10 - 12.20 30 3.22 - 3.25 3.60 - 3.65 11.90 - 12.00 20 3.18 - 3.22 3.55 - 3.60 11.75 - 11.90 10 3.10 - 3.18 3.45 - 3.55 11.50 - 11.75 0 (cutoff) 2.5 - 3.0 3.0 - 3.2 10.5 - 11.2 All OCV values are resting (settled) open-circuit voltage with no load applied for at least 30 minutes. These are rest voltages, not charge/absorption voltages — a freshly-charged LiFePO4 cell sits near 3.6 V while charging but settles to roughly 3.35 - 3.45 V at rest. Under load, voltages will be lower due to internal resistance. Note that voltage-based SoC estimation is especially unreliable across the LiFePO4 mid-range because of the cell’s flat 3.25 - 3.30 V plateau, where small voltage changes span a large capacity range. For LiFePO4, Meshtastic firmware reports battery percentage based on voltage thresholds; refer to the telemetry page in this book for specific ADC configuration. Specific Product Recommendations LiFePO4 - Recommended Products EVE LF50K (50 Ah, 3.2 V prismatic): Cells widely used in DIY packs. ~$15 - 20 USD per cell from Chinese suppliers (volatile, as of 2026-06-08). Per the EVE datasheet these cells are rated on the order of 4,000+ cycles at a specified DoD and low charge rate (“Grade A” is a market term, not a quality guarantee). Excellent for 12 V 4S packs powering Pi gateways. Headway 38120S (10 Ah, 3.2 V cylindrical): Threadable terminals, very robust, 2,000+ cycle rating. Good for vibration-prone installations. Bioenno Power BLF-1206A (6 Ah, 12.8 V): Complete sealed pack with integrated BMS, ~$80 (MSRP, as of 2026-06-08). Designed for portable amateur radio use. Plug-and-play for most repeater boxes. Dakota Lithium 12V 7Ah: Includes BMS, marketed as rugged/waterproof for marine and ice-fishing use (verify the exact ingress rating against Dakota Lithium’s spec sheet before relying on it). Price varies — check current pricing (as of 2026-06-08). Good for outdoor enclosures. LiPo - Acceptable for Short-Deployment or Prototype Use EEMB LP805060 (3.7 V, 3000 mAh): Popular single-cell pouch for T-Beam style boards, includes built-in PCM protection board. Adafruit 328 (3.7 V, 2500 mAh): JST PH 2.0mm connector, compatible with most Adafruit LoRa boards out of the box. (If you specifically need the 2000 mAh cell, that is Adafruit #2011.) Tenergy LP 103450 (3.7 V, 1800 mAh): Flat pouch, low profile for tight enclosures. Lead Acid - Only Where Weight/Cost Dominates Mighty Max ML7-12 (12 V, 7 Ah AGM): ~$20, widely available. Suitable for short-duration backup where replacement is routine. Universal Power Group UB1270 (12 V, 7 Ah): UL-listed, common in security system applications, drop-in for 12 V enclosures. Summary Recommendation For any unattended LoRa repeater or mesh node intended for permanent or semi-permanent deployment, LiFePO4 is the correct choice. The superior cycle life, wide temperature tolerance, and thermal safety profile outweigh its higher per-Wh cost compared to LiPo. Lead acid remains viable only when cost is the dominant constraint and the installation allows for routine (annual) battery replacement. LiPo is acceptable for short-term field deployments, handheld nodes, and prototyping, but should not be used in sealed enclosures or unattended permanent installations. Battery Sizing for LoRa Mesh Nodes Correctly sizing the battery for a solar-powered LoRa node prevents two failure modes: undersizing (the battery dies overnight or during cloudy periods) and oversizing (wasted cost and weight). This page walks through a systematic methodology and provides worked examples for three common node types. Step 1 - Measure Actual Current Draw Never rely solely on datasheet figures. Real-world current draw depends on firmware configuration, peripherals, GPS lock cycles, LoRa transmit duty cycle, and whether deep sleep is used. Measure with a USB power meter (e.g., UM25C, AT34) or an inline current shunt (e.g., INA219 module on the 3.3 V rail). Take measurements in three states: Transmit peak: Current during an active LoRa TX burst (typically 80 - 120 mA at 3.3 V for SX1276-based modules at +17 dBm). Receive / idle: Firmware running, radio in RX mode, no TX. This is the whole-node draw (MCU + radio + regulator + peripherals), typically 30 - 80 mA on ESP32-class boards — the SX1276 radio alone is only ~11 - 14 mA in RX, the rest is the MCU and supporting circuitry. Confirm against a board-level power measurement for your platform. Deep sleep (if used): Microcontroller and radio in lowest power state, highly design-dependent (0.01 - 10 mA). An nRF52840 board with clean power management can reach low microamps, whereas an ESP32 board with a leaky regulator may sit in the milliamp range — measure your specific board (e.g. nRF52840 vs ESP32 T-Beam) rather than assuming. Calculate a weighted average current based on the fraction of time spent in each state. The example below is illustrative, using an assumed duty cycle rather than measured T-Beam data — substitute your own measured currents and duty cycle. For a Meshtastic router node set to 5-minute heartbeat with 20-second sleep cycles: Illustrative example (assumed duty cycle): T-Beam v1.1 (ESP32 + SX1276 + NEO-6M GPS) TX (0.5% of time at 120 mA) = 0.6 mA average RX active (79.5% at 80 mA) = 63.6 mA average Deep sleep (20% at 3 mA) = 0.6 mA average ───────────────────────────────────────────────── Weighted average ≈ 64.8 mA Step 2 - Calculate Daily Watt-Hours Multiply the average current (in amps) by the system voltage and by 24 hours. Use the voltage the node actually runs at when you measured the current — for a single-cell board that is ~3.7 V, even if the battery pack you eventually buy is a 12.8 V LiFePO4 pack. Energy (Wh) is conserved across the voltage conversion: you compute daily Wh at the node's running voltage, then later convert the required Wh to pack Ah using the pack's nominal voltage (Step 6). Do not mix the 3.7 V cell figure with a 12.8 V pack in the same multiplication. Daily_Wh = I_avg(A) × V_system(V) × 24 h Example: 64.8 mA × 3.7 V × 24 h = 5.75 Wh/day If your system runs at 5 V (e.g., USB-powered node) or 12 V (e.g., Raspberry Pi gateway), substitute the appropriate system voltage. Step 3 - Determine Required Autonomy Days Autonomy is the number of consecutive days with no solar input (full cloud cover, snow burial, north-facing shade) the battery must sustain the node. Select based on your climate and criticality: Deployment Type Recommended Autonomy Rationale Sunny desert / Southwest US 3 - 5 days Extended low-sun periods are rare Pacific Northwest / Northeast US 5 - 7 days Multi-day overcast events common Nov - Mar High alpine / polar 7 - 14 days Snow burial possible; winter darkness Non-solar (mains backup only) 0.5 - 1 day Bridge a brief power outage Step 4 - Calculate Raw Battery Capacity Raw_Wh = Daily_Wh × Autonomy_days Example (5 days autonomy): 5.75 Wh × 5 = 28.75 Wh Step 5 - Apply Derating Factors Real batteries deliver less than their nameplate capacity due to temperature, aging, and depth-of-discharge limits. Apply the following derating multipliers. The temperature factors below are conservative planning estimates for a −10 °C average low, not values pulled from a specific datasheet curve — check your battery's own capacity-vs-temperature curve where one is published: Factor LiFePO4 LiPo Lead Acid Max recommended DoD 80% (use 0.80) 80% (use 0.80) 50% (use 0.50) Temperature derating (cold climate, −10 °C avg low — conservative estimate) 0.85 0.70 0.65 End-of-life capacity (design to still work at EOL) 0.80 0.80 0.80 Combined derating factor 0.80 × 0.85 × 0.80 = 0.544 0.80 × 0.70 × 0.80 = 0.448 0.50 × 0.65 × 0.80 = 0.260 Cold-charge warning: Never charge any lithium chemistry — including LiFePO4 — below 0 °C (32 °F); sub-freezing charging causes lithium plating and permanent damage. In cold climates require a BMS with low-temperature charge cutoff or a charge controller with a battery temperature sensor. (LiFePO4 may still discharge down to about −20 °C.) Required_Wh = Raw_Wh / Combined_derating_factor Example (LiFePO4, cold climate): 28.75 / 0.544 = 52.8 Wh → round up to 53 Wh Step 6 - Add a 20% Safety Margin and Convert to Ah Final_Wh = Required_Wh × 1.20 (20% safety margin) Final_Ah = Final_Wh / V_nominal_pack Example (LiFePO4, 12.8 V nominal pack): Final_Wh = 52.8 × 1.20 = 63.4 Wh Final_Ah = 63.4 / 12.8 = 4.95 Ah → use a 6 Ah pack Worked Examples Example A - ESP32 LoRa Repeater (T-Beam, indoor/outdoor enclosure) Platform TTGO T-Beam v1.1 (ESP32 + SX1276 + AXP192 PMIC) Measured average current 65 mA at 3.7 V = 0.240 Wh/h Daily consumption 5.76 Wh/day Target autonomy 5 days (Pacific NW) Raw requirement 28.8 Wh After derating (LiFePO4, cold) 28.8 / 0.544 = 52.9 Wh With safety margin 63.5 Wh → use 6 Ah at 12.8 V (76.8 Wh nominal) Recommended battery Bioenno BLF-1206A (6 Ah, 12.8 V LiFePO4) or equivalent Example B - nRF52840 Ultra-Low-Power Node (RAK4631 + solar harvest) Note on chemistry: the LiPo sizing below is shown only to illustrate the LiPo derating column. For an unattended outdoor or permanent solar deployment, LiPo is not recommended — use a LiFePO4 (or a protected Li-ion) cell instead, per the battery-chemistry, LiFePO4-vs-LiPo, and cold-weather pages. The 8 mA average is an assumed measurement; the duty cycle behind it (mostly deep sleep with brief RX) must be confirmed on your own board. Platform RAK WisBlock Core RAK4631 + RAK12500 GPS (GPS duty-cycled off) Measured average current 8 mA at 3.7 V = 0.0296 Wh/h (assumed, with aggressive sleep — confirm duty cycle on your board) Daily consumption 0.71 Wh/day Target autonomy 7 days Raw requirement 4.97 Wh After derating (LiPo, moderate climate — illustration only) 4.97 / (0.80 × 0.80 × 0.80) = 9.71 Wh With safety margin 11.65 Wh → at 3.7 V = 3.15 Ah → use a 3.5 Ah cell Recommended battery EEMB LP905060 3.7 V 3500 mAh (meets the 3.15 Ah requirement). Note: Adafruit #328 is a 2500 mAh cell — below the 3.15 Ah needed here, so prefer the 3500 mAh option for outdoor use. Example C - Raspberry Pi Zero 2W + SX1302 HAT Gateway Gateway note: a gateway is the highest-value node in an incident (it bridges to internet/MQTT), so the 3-day / no-cold-derate figures below are a desert best-case, not a default. For a gateway, use at least 5-day autonomy even in sunny climates, and do not apply a 1.00 temperature factor unless you have confirmed the battery never sees sub-freezing nights. The 620 mA average is a representative estimate (Pi Zero 2W idles ~150 - 250 mA, the SX1302 HAT adds load) — measure your own build. Platform RPi Zero 2W + RAK2287 SX1302 HAT + LTE modem Measured average current 620 mA at 5 V = 3.1 W = 3.1 Wh/h (representative estimate — measure your build) Daily consumption 74.4 Wh/day Target autonomy 5 days (use ≥5 days for a gateway, even in sunny climates) Raw requirement 372 Wh After derating (LiFePO4: 0.80 DoD × 0.85 temp × 0.80 EOL = 0.544) 372 / 0.544 = 684 Wh With safety margin 821 Wh → at 12.8 V = 64 Ah → use a 100 Ah pack Recommended battery Battle Born BB10012 (100 Ah, 12 V LiFePO4) or 2× EVE LF50K-class packs in parallel Rule of Thumb Quick Reference These figures are computed from the Step 1-6 methodology (5-day autonomy, LiFePO4, with DoD/cold/EOL derate and a 20% margin). They are planning floors — run your own numbers from your measured daily Wh. Node Type Typical Daily Wh Minimum Battery (5-day, LiFePO4) nRF52840 sleepy node 0.3 - 1.5 Wh ~1 - 5 Ah @ 3.7 V ESP32 Meshtastic router (no GPS) 3 - 5 Wh ~7 - 12 Ah @ 3.7 V (or ~2 - 4 Ah @ 12.8 V) ESP32 + GPS always-on 5 - 10 Wh ~12 - 25 Ah @ 3.7 V (or ~4 - 7 Ah @ 12.8 V) Pi Zero 2W gateway 60 - 90 Wh ~50 - 75 Ah @ 12 V Pi 4 + LTE gateway 100 - 150 Wh ~80 - 120 Ah @ 12 V Battery Management Systems and Protection Circuits A Battery Management System (BMS) is the electronic circuit that protects lithium cells from conditions that cause permanent damage or fire. Understanding what a BMS does - and detecting when one has failed - is essential for maintaining reliable solar-powered LoRa nodes. What a BMS Does A BMS monitors cell voltage, current, and temperature in real time and opens a protection MOSFET to disconnect the battery when it detects an out-of-bounds condition. The primary protection functions are: Protection Function Trigger Condition Consequence if Missing Overvoltage protection (OVP) Cell voltage > 3.65 V (LiFePO4) or 4.25 V (LiPo) Electrolyte decomposition, capacity fade, fire (LiPo) Undervoltage protection (UVP) Cell voltage < 2.5 V (LiFePO4) or 3.0 V (LiPo) Copper dissolution, cell permanently damaged (cannot accept charge) Overcurrent protection (OCP) Discharge current > rated maximum (the trip point is set per the cell's rating; 1C - 3C continuous is illustrative, not universal — some cells rate higher) Cell heating, electrolyte venting, cable fire Short-circuit protection (SCP) Near-instantaneous high current spike Cell fire, explosion Over-temperature protection (OTP) Cell temp > rated cutoff (commonly ~60 - 65 °C on charge; varies by module, and some BMS modules omit temperature sensing entirely) Accelerated aging, thermal runaway risk in LiPo Low-temperature charge inhibit Cell temp < 0 °C Lithium plating on anode, internal shorts, reduced cycle life Cell balancing (multi-cell packs only) Voltage delta between cells > 20 - 50 mV Weakest cell reaches cutoff early, reducing pack capacity Why 18650 Cells Always Need a BMS Bare cylindrical 18650 cells - including popular Samsung 30Q, LG HG2, and Panasonic NCR18650B - have no built-in protection. They are raw electrochemical cells. Connecting multiple 18650 cells in series or parallel without a BMS creates a serious hazard. If one cell has slightly lower capacity (as all real cells do), it will be over-discharged before the others during a deep cycle, permanently damaging it. On charge, it will be over-charged, potentially causing thermal runaway. Even for a single 18650 used to power an ESP32 node via a TP4056 charging module, the TP4056 only protects during charging — it does not protect the cell from over-discharge (UVP) or over-current (OCP) when the node is drawing power. The cheapest safe fix is to buy an 18650 holder module that already includes a protection chip (look for "DW01A + FS8205A" or "with protection board" in the listing). A DW01A + FS8205A dual-MOSFET protection IC circuit (commonly integrated into 18650 holder modules sold on AliExpress) is the minimum acceptable protection for bare-cell usage. Built-in BMS on LiPo Pouch Cells Consumer LiPo pouch cells sold for drones, hobby use, and electronics (Adafruit, SparkFun, EEMB, Polymer Lithium) typically include a small protection circuit module (PCM/PCB) laminated between the cell and the outer casing. This PCM provides OVP, UVP, and OCP - but usually not balancing (since these are single-cell packs) and rarely temperature protection. The PCM is designed for the specific cell and chemistry, with cutoff voltages pre-set at the factory. When purchasing LiPo cells, verify the datasheet explicitly states "with protection circuit" or "PCM included." Bare (unprotected) LiPo cells are also sold, typically labeled "battery" without "protection" in the listing. Bare cells require an external BMS. LiFePO4 Packs - BMS Inclusion Varies LiFePO4 prismatic cells (EVE, CALB, Winston) are sold bare. DIY packs require a separate BMS module. Common choices (prices approximate, as of 2026-06-08 — verify against the manufacturer's current product page): BMS Module Cell Configuration Continuous Current Features Approximate Cost Daly 4S 40A BMS 4S LiFePO4 (12.8 V) 40 A OVP, UVP, OCP, balancing, UART $8 - 12 JBD/Overkill Solar 4S 60A 4S LiFePO4 60 A Bluetooth app, UART, active balancing option $20 - 35 Ant BMS 4S 100A 4S LiFePO4 100 A CAN bus, SOC display, temp sensor $30 - 50 Texas Instruments BQ76920 3S - 5S Li-Ion/LiFePO4 Configurable IC-level, requires MCU interface; used in custom designs $4 - 8 (IC only) Packaged LiFePO4 batteries from Bioenno, Dakota Lithium, and Battle Born include an integrated BMS that protects the cells. The integrated BMS does not replace external wiring protection: you still need an inline fuse on the battery-positive lead close to the terminal to protect the cable between the battery and the load from a short circuit, and you must use a correct charger and charge voltage. Cell Balancing in Multi-Cell Packs In a series-connected pack, cells must stay at nearly equal voltage. Over hundreds of cycles, manufacturing variations cause cells to drift apart. A balancing circuit periodically bleeds charge from higher-voltage cells (passive balancing) or shuttles charge from high to low cells (active balancing) to keep the pack uniform. Passive balancing is simpler and more common. The BMS bleeds excess energy as heat through a resistor. Balance current is typically 50 - 200 mA, which is adequate for slowly drifting cells in solar nodes. Active balancing (capacitor or inductor-based charge shuttling) is more efficient but more expensive. For LoRa nodes with <100 Ah packs, passive balancing from a Daly or JBD BMS is entirely sufficient. Signs of BMS Failure Node shuts down at higher-than-expected battery voltage: The UVP threshold may have drifted, or a cell has developed high internal resistance (voltage sag trips protection prematurely). Battery refuses to charge after deep discharge: Some BMS modules enter a "sleep" or "protection" state when UVP fires and require charge current to be applied to wake up. The charger's output voltage must exceed the battery voltage, or it won't wake the BMS. Use a lithium charger with a 0 V / wake-activation feature, or a current-limited supply set just above the pack's nominal voltage. Do not bypass the BMS or apply voltage to a pack of unknown cell condition — a cell sitting below ~2.0 V may be damaged and unsafe to recharge. Always follow the battery manufacturer's reset procedure, and verify polarity before connecting. Pack becomes warm during light loads: A shorted MOSFET in the BMS or a shorted cell can cause continuous current flow and heat generation. Intermittent disconnection under load: Worn BMS MOSFETs or a marginal OCP threshold. Measure the current draw and compare to the BMS rating. Cell voltages diverge by >100 mV at full charge: Balancing circuit has failed or a cell has degraded. The pack capacity is effectively limited to the weakest cell. Parallel Cell Balancing Considerations When connecting cells in parallel (e.g., 2P or 4P for higher capacity), cells must be at the same voltage before paralleling. Connecting cells with a voltage difference of >100 mV causes a large equalisation current spike that can damage cells and weld connectors. Always charge all cells to the same voltage (within 10 mV) before forming a parallel group. Parallel cells naturally balance themselves during use because they share the same terminal voltage. Balancing circuits are only required for series-connected groups in a larger series-parallel pack (e.g., 4S2P). The BMS sees each parallel group as one "cell" and balances between groups. Solar Panel Selection and Installation Panel technologies, Wp ratings, geographic sizing, mounting hardware, orientation, and charge controller selection. Choosing a Solar Panel for LoRa Nodes Solar panel selection involves matching the panel's output to the node's energy needs while accounting for real-world efficiency losses, geographic location, and physical mounting constraints. This page covers panel technology, rating systems, derating factors, geographic sizing, and wiring configurations. Panel Technologies Technology Efficiency Range Temperature Coefficient Low-Light Performance Physical Best Use Case Monocrystalline silicon 17 - 22% typical (up to ~24% for premium cells) −0.35% / °C above STC Good Rigid, glass-covered, aluminum frame Fixed installations, roof/pole mounts Polycrystalline silicon 15 - 18% −0.40% / °C above STC Good Rigid, glass-covered, aluminum frame Budget fixed installations Amorphous silicon (thin-film) 6 - 8% −0.20% / °C above STC Excellent (diffuse light) Flexible or glass, no frame Curved surfaces, low-light climates CIGS thin-film 12 - 14% −0.32% / °C above STC Very good Flexible or rigid Curved surfaces where efficiency matters For most LoRa node deployments, monocrystalline panels are the correct choice. Their higher efficiency means a smaller, lighter panel for the same power output - important when mounting on a mast or in a small enclosure. Thin-film flexible panels are useful when the panel must conform to a curved surface (conduit mast, cylindrical enclosure) or when severe vibration makes rigid glass panels impractical. Understanding Wp (Watt-Peak) Ratings Panel power is rated in Watts-peak (Wp) at Standard Test Conditions (STC): 1000 W/m² irradiance, 25 °C cell temperature, AM 1.5 spectrum. Real-world conditions deviate from STC in several important ways: Real-World Adjustment Factors Most rows below are losses (values below 1.0). One row — spectral mismatch in overcast — can slightly exceed 1.0 for amorphous panels (a small gain, not a loss). Do not blindly multiply every row together as if they were all losses; apply the spectral-mismatch row only to the panel technology it describes. Adjustment Factor Typical Value Explanation Temperature (hot day) 0.80 - 0.90 Cell temp in direct sun reaches 50 - 75 °C. Monocrystalline loses ~0.35%/°C above 25 °C. At 60 °C: 1 − (35 × 0.0035) = 0.878. Dirt / dust / pollen 0.90 - 0.97 Uncleaned outdoor panel loses 3 - 10% annually. Clean panels every 6 - 12 months. Wiring and connection losses 0.97 - 0.99 Resistance in MC4 connectors and cable runs. Use AWG 10 - 12 for runs over 5 m. Charge controller harvest 0.65 - 0.97 This is the fraction of available panel energy delivered to the battery, not the controller's own conversion efficiency. PWM ties the panel to battery voltage, so a 18 V (12 V-nominal) panel charging a 13 V battery delivers roughly 65 - 75% of its rated energy — the mismatch is the loss, not the controller. MPPT tracks the panel's maximum-power point and delivers ~93 - 97%, recovering more when panel Vmp is well above battery voltage and in cold or low light. See Charge Controllers page. Partial shading 0.50 - 1.00 Even 5% shadow on a cell in a string can reduce total output by 50%+ (bypass diodes mitigate but don't eliminate). Spectral mismatch (overcast) — can exceed 1.0 1.0 - 1.05 for amorphous; ~0.95 for mono A gain, not a loss, for amorphous: amorphous panels outperform mono in overcast because the diffuse-light spectrum favors their bandgap. Apply only to the matching panel technology. Combined typical derating (MPPT, clean, no shade) 0.70 - 0.80 Use 0.75 as a conservative planning factor Peak Sun Hours by US Region Peak sun hours (PSH) is the equivalent number of hours per day at 1000 W/m² irradiance that delivers the same daily energy as the actual variable irradiance. It is the single most important geographic variable in panel sizing. Region Example Cities Annual Avg PSH Winter Worst-Month PSH Southwest Desert Phoenix, Las Vegas, El Paso 6.0 - 7.0 4.5 - 5.5 Mountain West Denver, Salt Lake City, Albuquerque 5.5 - 6.5 3.5 - 4.5 Southeast Miami, Atlanta, Dallas 5.0 - 6.0 4.0 - 5.0 Midwest / Great Plains Kansas City, Minneapolis, Chicago 4.5 - 5.5 2.5 - 3.5 Mid-Atlantic / Northeast NYC, Philadelphia, Boston 4.0 - 4.8 2.0 - 3.0 Pacific Northwest Seattle, Portland, Eugene 3.5 - 4.2 1.5 - 2.5 (Seattle worst-month ~1.5) Alaska (Anchorage) Anchorage 3.0 - 4.0 0.5 - 1.5 Always size for the worst-month PSH, not the annual average, to ensure year-round operation. Use a single worst-month PSH value per location across the whole book; the values here are representative and should be confirmed against NREL PVWatts for your exact site. Panel Sizing Calculation Required_Wp = Daily_Wh / (PSH_worst_month × overall_derating) Example: 5.75 Wh/day node, Seattle (1.5 PSH worst-month winter), MPPT controller (0.95), other derating (0.85): Combined derating = 0.95 × 0.85 = 0.808 Required_Wp = 5.75 / (1.5 × 0.808) = 5.75 / 1.212 = 4.74 Wp → use a 5 Wp panel (sized for the worst month; pair with several days of battery reserve for multi-day overcast) Panel Sizing by Latitude (Rule of Thumb) Latitude (°N) Panel Wp Required per 1 Wh/day node load Notes 25 - 30° (South Florida, Texas) 0.5 - 0.7 Wp Year-round high sun 30 - 37° (Southeast, Southwest) 0.6 - 0.9 Wp Good solar resource 37 - 42° (Mid-Atlantic, Midwest) 0.9 - 1.3 Wp Moderate winter derating 42 - 48° (New England, Northwest) 1.3 - 2.0 Wp Poor winter sun 48 - 65° (Northern US, Alaska) 2.0 - 5.0 Wp Size for worst month or use large battery Wiring: 5 V USB Charging vs 12 V Systems 5 V USB Charging (small panels, direct LiPo charging) Panels rated 5 - 6 V open-circuit (e.g., 0.5 - 2 W "USB solar panels") are designed to pair with TP4056 or CN3791 LiPo charger ICs. These work only in full sun - the panel voltage drops below the charger's minimum input at partial cloud cover. Acceptable for supplemental trickle charging of small nodes but not reliable primary power. Note neither the TP4056 nor the CN3791 has a low-temperature charge cutoff, so for cold-climate builds add a BMS or charge controller with low-temp protection. 12 V Nominal Systems Panels rated 18 V open-circuit (12 V nominal, e.g., 10 W, 20 W, 40 W monocrystalline) are the standard for serious solar deployments. These pair with a dedicated charge controller (PWM or MPPT) that regulates voltage down to the battery charge voltage. MC4 connectors are the industry standard for these panels. Series vs Parallel Configuration Configuration Effect on Voltage Effect on Current When to Use Series (panels in series) Voltages add (2× 18 V = 36 V) Current stays same Higher voltage charge controllers; longer cable runs (less current = thinner wire) Parallel (panels in parallel) Voltage stays same Currents add (2× 5 A = 10 A) Same voltage system but need more current; partial shading (each panel has independent MPPT) For small LoRa deployments (5 - 40 Wp), a single panel in direct connection to a 12 V charge controller is the simplest and most reliable approach. Recommended Panels for LoRa Deployments Prices below are approximate and volatile, as of 2026-06-08; confirm against a current listing before buying. Panel Power Dimensions Best For Approximate Cost Voltaic P110 (monocrystalline) 2 W, 6 V 132 × 91 mm nRF52840 trickle charge, USB-C output $25 Newpowa NPA10-12MBK (mono) 10 W, 12 V nominal 340 × 235 mm ESP32 nodes, primary solar $20 - 25 Renogy RNG-100D-SS (mono, compact) 100 W, 12 V nominal ~1062 × 531 mm Pi gateway installations $85 - 100 Flexible mono ~50 W (verify SKU/datasheet) ~50 W, 12 V nominal per datasheet Curved mast mounting, marine confirm current price Flexible CIGS ~30 W (verify SKU/datasheet) ~30 W, 12 V nominal per datasheet Curved enclosures, portable confirm current price Solar Panel Mounting and Orientation The mechanical installation of a solar panel is as important as the panel selection itself. A correctly sized panel pointed in the wrong direction, partially shaded, or insufficiently secured will fail to meet its energy budget. This page covers orientation rules, mounting hardware options, shading avoidance, and special-purpose installations. South-Facing Tilt: The Fundamental Rule In the Northern Hemisphere, solar panels produce maximum annual energy when facing true south (azimuth 180°) and tilted at an angle approximately equal to the installation latitude. This is not magnetic south - use a compass corrected for magnetic declination or use a sun-path tool (NREL's PVWatts, Solargis) to confirm true south orientation at your specific location. This page is the canonical reference for panel tilt and orientation in this book. The single rule of thumb used throughout: optimal fixed tilt = latitude; winter-optimized tilt = latitude + 15°. The example tilt values in the table below are approximate and should be confirmed against NREL PVWatts output for your specific site. Latitude (°N) Optimal Fixed Tilt Winter-Optimized Tilt Example Locations 25° 25° ~40° Miami FL, Key West FL 30° 30° ~45° Houston TX, Jacksonville FL 35° 35° ~50° Los Angeles CA, Memphis TN 40° 40° ~55° Denver CO, Columbus OH, NYC 45° 45° ~60° Minneapolis MN, Portland OR 47° 47° ~62° Seattle WA 61° ~58° ~73° Anchorage AK Values are approximate (fixed ≈ latitude, winter ≈ latitude + 15°) and should be confirmed against NREL PVWatts for the exact location. Above roughly 55°N the annual optimum is typically a few degrees below latitude, which is why Anchorage's fixed value is shown slightly under its latitude. For fixed-tilt installations in climates with significant winter operation (Pacific NW, New England, Mountain states), set the panel at approximately latitude + 15° to capture more low winter sun. This sacrifices some summer production but improves the worst-month (winter) performance critical for battery sizing. A ±15° deviation from true south reduces annual yield by only 2 - 3%. A ±30° deviation reduces it by about 7 - 8%. East or west orientations (90° from south) reduce yield by approximately 20%. Fixed Tilt vs Seasonal Adjustment Single-axis seasonal adjustment (adjusting tilt twice a year - summer and winter) improves annual yield by 5 - 10% compared to a fixed optimal tilt. For most unattended LoRa deployments, this tradeoff is not worth the maintenance visit. The exception is a high-latitude deployment (above 45°N) where winter sun angles are very low and a steep winter tilt meaningfully improves worst-month performance. Mounting Hardware Options Pole and Mast Mounts Mast mounting is ideal for LoRa repeaters that are already on a mast or tripod. The same structure that supports the LoRa antenna can support the solar panel, reducing site footprint. Two common approaches: Side-of-pole (SOP) mount: A steel bracket clamps to the mast with U-bolts and holds the panel at an adjustable tilt. Generic U-bolt side-of-pole brackets (for example the Renogy Solar Panel Side of Pole Mount, which fits panels up to ~100 W) are widely available for roughly $15 - 30 (prices as of 2026-06-08). The panel faces south and the bracket tilt is fixed at installation. Top-of-pole mount: Panel mounts above the mast on a swiveling head. Larger capacity (40 - 100 Wp panels), more wind load. Several manufacturers (Unirac, IronRidge, MT Solar, Tamarack) make pole mounts; for a single small panel, Renogy's single-panel pole mount (rated for panels up to ~100 W, roughly $40 - 60 as of 2026-06-08) is a common choice. Confirm the mount's rated panel size and the current price before purchasing. J-Mounts (Roof Rafter Mounts) J-mounts bolt through the roof into rafters and hold the panel parallel to the roof surface, adding 2 - 4 inches of standoff for airflow. IronRidge, Unirac, and Quick Mount PV are the main suppliers. J-mounts fix the panel tilt to the roof pitch - generally acceptable for slopes between roughly 15° and 40° facing south. Note that on shallow slopes the panel sits well below latitude tilt, so annual yield is reduced compared with a latitude-tilt mount. Flush Roof Brackets For panels mounted flat on a low-slope roof or equipment enclosure lid, industrial hook-and-loop adhesive mounts (for example VELCRO Brand Industrial Strength or 3M VHB tape) or through-bolted HDPE brackets work for small panels up to about 40 Wp. Adequate ventilation between panel and surface is critical - at a cell temperature of 75 °C (about 50 °C above the 25 °C STC rating), a panel loses roughly 15 - 20% of its rated Wp, assuming a typical temperature coefficient of about −0.35 to −0.40%/°C. Ground-Mount Frames For larger gateway installations (100 - 400 Wp), commercial aluminum ground-mount frames (for example IronRidge's ground-mount / Osprey PowerRack line, or kits from MT Solar or Tamarack) provide adjustable tilt and, with proper engineering, wind resistance up to about 140 mph. The actual wind rating depends entirely on the specific anchoring, soil, and panel - do not assume the frame alone guarantees a high-wind rating; engineer the foundation for your site. Concrete ballast blocks or driven ground screws provide the foundation. Keeping Panels Shadow-Free Throughout the Day Shade is the single largest cause of underperforming solar nodes. A shadow covering just one cell in a 36-cell string drops the entire string's output by 50 - 70% (partial bypass diode protection reduces this but cannot eliminate it). Use the Sun Surveyor app or SOLMETRIC SunEye to measure shade at the proposed mounting location at both 9 AM and 3 PM local solar time on the worst day (December 21). Any obstruction that casts shadow during these hours will significantly reduce winter output. Trees grow. A tree 30 ft away that doesn't shade the panel today may shade it in 5 years. Add 30% to the estimated shadow cone radius when evaluating obstructions. Nearby LoRa antennas, lightning rods, conduit runs, and fence posts can all cast thin shadows that track across the panel during the day. Route everything above or well to the side of the panel. Clearing Snow In snow climates, steep tilt angles (above 45°) allow snow to slide off naturally. Panels tilted below 30° will accumulate snow and may be buried for days. Solutions: Set winter tilt to 60° or greater if the installation allows adjustment. Mount the bottom edge of the panel at least 18 inches above the expected snow depth to prevent burial. Do not scrape panels with metal scrapers - use a soft brush or wait for natural sliding (the panel warms as soon as any light penetrates the snow cover). Black-frame monocrystalline panels absorb more heat and shed snow faster than white-back polycrystalline panels. Bird Deterrents Bird droppings on panels cause significant localised shading. Common solutions: Bird wire / netting: Stainless steel spikes (Daddi Long Legs, Bird-B-Gone) or polycarbonate mesh installed under and around the panel perimeter. Do not run wires over the glass surface. Owl decoys: Marginally effective for the first few weeks, then ignored. Regular cleaning with deionised water and a soft sponge removes existing droppings. A Rain-X solar panel coating reduces adhesion. Marine and Boat Mounting for Floating Nodes Floating LoRa nodes on buoys, boats, or floating platforms require stainless steel or anodized aluminum hardware throughout. Standard steel J-mounts will rust within one season in saltwater. Key requirements: All fasteners: 316 stainless steel (not 304). Tilt adjustment: Bobstay-style adjustable bracket allows panel to be angled away from most wave wash directions. Strain relief: Marine-grade cable glands (Blue Sea, Wiley) with EPDM seals. Cables must have enough slack to accommodate platform motion without straining MC4 connectors. Anti-corrosion treatment: Corrosion-X or Boeshield T-9 applied to all metal-to-metal contacts and terminal blocks annually. Prefer a panel with an IP67-rated, sealed junction box and conformal-coated connections for salt-spray service. Most quality terrestrial panels already use IP67 junction boxes, but in continuous salt-spray conditions confirm the J-box seal rating rather than relying on an informal "marine grade" label, which is not a formal standard. Charge Controllers: PWM vs MPPT The charge controller sits between the solar panel and the battery. It regulates current flow to prevent battery overcharge and manages the charging profile. Two fundamentally different control topologies are in common use: Pulse Width Modulation (PWM) and Maximum Power Point Tracking (MPPT). Selecting the wrong type typically costs 10 - 30% of available solar harvest (larger in cold or cloudy conditions, smaller when the panel's Vmp is close to the battery voltage) or can damage batteries. How PWM Controllers Work A PWM charge controller connects the solar panel directly to the battery through a switch (MOSFET or relay). When the battery voltage is low, the switch is fully on - the panel feeds the battery at whatever current the panel can supply at the battery's current voltage. As the battery approaches full charge, the controller begins pulsing the switch on and off at a duty cycle proportional to the difference between target and actual battery voltage. This reduces average current flow, preventing overcharge. The critical limitation of PWM: the panel is forced to operate at battery voltage, not at its own maximum power point (MPP). A 12 V nominal panel has an MPP voltage (Vmpp) around 17 - 18 V but the battery sits at 12 - 14.6 V. The panel is clamped to the lower voltage, operating well off its power curve. This is the root cause of PWM's lower efficiency. PWM is well-matched only where the panel's Vmp is close to the battery voltage (e.g. a "12 V" PWM-type panel on a 12 V battery); the larger the gap between panel Vmp and battery voltage, the more an MPPT controller gains. How MPPT Controllers Work An MPPT controller inserts a DC-DC buck (or boost) converter between the panel and battery. The controller continuously monitors the panel's voltage and current output, computing P = V × I. It then incrementally adjusts the panel's operating point (by changing the duty cycle of the converter's switching transistor) to locate and track the voltage at which the panel delivers maximum power - the Maximum Power Point. Because the converter can step voltage down (or up) at high efficiency, the panel operates at its optimal Vmpp (~17 - 18 V for a 12 V panel) while the battery receives the current it needs at battery voltage. This voltage step-down comes with a compensating current increase, delivering more total watts to the battery. Efficiency Comparison Parameter PWM Controller MPPT Controller Typical conversion efficiency 65 - 75% of panel STC rating 93 - 97% of panel STC rating Panel voltage utilisation Poor - clamped to battery voltage Excellent - panel at MPP Cold weather advantage None Significant - cold panels have higher Voc/Vmpp, MPPT captures this gain Partial cloud benefit None Moderate - can still track the shifted MPP under clouds Typical cost (5 - 20 A range) $5 - 15 $20 - 60 Quiescent current consumption 5 - 15 mA 10 - 30 mA Complexity / failure modes Low - simple circuit Moderate - switching converter can fail; firmware-dependent tracking When the Difference Matters Small Panels (under ~10 Wp) For very small panels (2 - 5 Wp paired with a small LiPo and an ESP32 or nRF52840 node), the absolute watt improvement from MPPT is tiny - perhaps 1 - 2 W - and the MPPT controller's own quiescent current (20 - 30 mA = 0.07 - 0.11 Wh/h) becomes a significant fraction of the total load. For these micro-installations, a dedicated LiPo solar charger IC such as the CN3791 (switching MPPT-style solar charger IC, ~$1) or TP4056 (simple linear CC/CV, no MPPT, ~$0.30) is the appropriate solution. Full-featured MPPT controllers add cost, quiescent drain, and complexity with minimal return. Note: neither the TP4056 nor the CN3791 has a low-temperature charge cutoff - see the cold-climate warning below before using either in a build that may charge below freezing. Medium Panels (10 - 100 Wp) This is where MPPT begins to pay for itself. Using the efficiency figures in the table above, a 20 Wp panel with a PWM controller delivers approximately 14 W to the battery in ideal conditions (20 Wp × 0.70). The same panel with an MPPT controller delivers approximately 19 W (20 Wp × 0.95) - about a 36% improvement. (Here "W" is the actual delivered power; "Wp" is reserved for the panel's STC rating.) Over a 5-day winter week at Seattle's 1.8 PSH average: PWM: 20 Wp × 0.70 × 1.8 PSH × 5 days = 126 Wh MPPT: 20 Wp × 0.95 × 1.8 PSH × 5 days = 171 Wh Difference: 45 Wh - roughly an extra day of autonomy # Caveat: 1.8 PSH is an AVERAGE winter day. During a genuine multi-day # Pacific-NW storm, harvest from BOTH controller types drops toward zero, # so MPPT's advantage cannot be relied on to carry you through the storm. # MPPT helps you RECOVER faster between storms; the BATTERY RESERVE - not # the controller - must cover the no-sun stretch itself. Large Panels (over 100 Wp) and Cold Climates MPPT is the only correct choice. In cold climates (below freezing), panel Vmpp rises significantly - a 36-cell panel that has Vmpp = 17 V at 25 °C may have Vmpp = 20 - 21 V at −10 °C. A PWM controller cannot exploit this; an MPPT controller captures all of it. Cold-climate charge cutoff (critical safety item): In sub-freezing conditions, ensure the LiFePO4 BMS or charge controller inhibits charging below 0 °C (32 °F). Never charge any lithium chemistry - including LiFePO4 - below 0 °C: sub-freezing charging causes lithium plating, leading to permanent capacity loss and a hidden internal-short fire risk. (Discharge is fine to much lower temperatures - LiFePO4 discharges to about −20 °C.) Use a BMS with low-temperature charge protection, or a charge controller with a battery temperature sensor. Bare charger ICs such as the TP4056 and CN3791 have no low-temperature cutoff, so add external low-temp protection for any cold-weather build. LVD Settings for LiFePO4 Packs Low Voltage Disconnect (LVD) is the battery voltage at which the charge controller cuts power to the load, protecting the battery from over-discharge. Setting LVD correctly for LiFePO4 is critical - these batteries have flat discharge curves that make "soft" voltage warnings less useful. Two distinct thresholds matter and should not be confused: the operating LVD (the load-disconnect you set for longevity, ~12.0 V / ~3.0 V per cell) and the BMS hard under-voltage protection (UVP) (an absolute floor, ~10.0 - 10.8 V / ~2.5 - 2.7 V per cell) that should only ever trip as a last-resort safety cutoff. Parameter 12 V LiFePO4 (4S, 12.8 V nominal) 12 V Lead Acid (12 V nominal) Operating LVD (load disconnect) ~12.0 V (3.0 V/cell, ≈ 10 - 20% SoC remaining) 11.4 - 11.8 V (≈ 40 - 50% SoC) BMS hard UVP (absolute floor) 10.0 - 10.8 V (2.5 - 2.7 V/cell) - last-resort cutoff only 10.5 - 11.0 V LVD reconnect voltage (hysteresis) 12.8 - 13.0 V (well above the operating LVD to avoid relay chatter) 12.2 - 12.5 V Absorption charge voltage 14.2 - 14.6 V (3.55 - 3.65 V/cell; ~14.4 V typical) 14.4 - 14.8 V Float voltage 13.5 - 13.6 V (3.375 - 3.40 V/cell; use ~13.5 V) 13.2 - 13.8 V Equalization Do NOT equalize LiFePO4 15.0 - 16.0 V periodically SoC-from-voltage caveat: LiFePO4's discharge curve is very flat through the mid-range, so the percentage-of-charge values mapped to each voltage above are approximate - treat them as rough guidance, not a precise fuel gauge. Do NOT float a LiFePO4 pack at 14.4 V / 3.60 V per cell: that holds the pack near 100% and accelerates aging - use ~13.5 V. The reconnect/hysteresis thresholds shown are sensible defaults; confirm against your specific charge controller's manual (e.g. Victron, Epever, Morningstar) before relying on them. (as of 2026-06-08) Critical: Many PWM controllers sold as "12 V" ship with default lead-acid charge profiles. If used with LiFePO4, the float voltage will be too low and the absorption voltage may be set for gel/AGM lead acid (14.1 V) which undercharges LiFePO4. Always verify and configure the LiFePO4 profile. Renogy Rover, Victron BlueSolar, and Epever controllers have configurable user-defined battery profiles. Common Charge Controllers for Small LoRa Deployments IC-Level (for integration into custom PCBs) IC Type Input Voltage Max Charge Current Chemistry Cost TP4056 Linear CC/CV (no MPPT) 4.5 - 8 V 1 A LiPo (4.2 V cutoff) $0.25 - 0.40 CN3791 MPPT-style, switching ~4.5 - 28 V (PV) Up to ~4 A (IC capability; typical hobby boards limit to ~2 A via the sense resistor / external FET) LiPo (4.2 V cutoff) $0.80 - 1.20 BQ24650 MPPT, synchronous buck Up to 28 V Up to 10 A Configurable (Li, LiFePO4) $2 - 4 SPV1040 MPPT, boost converter 0.3 - 5.5 V (per STMicro SPV1040 datasheet) 1.8 A out LiPo, NiMH ~$1.50 - 2.50 (approx) Notes: the CN3791's 2 A figure commonly quoted for hobby breakout boards is a board-specific limit set by the sense resistor and external FET, not the IC's maximum (the IC supports constant current up to ~4 A and a wide PV input range). SPV1040 input range and output current are per the STMicro SPV1040 datasheet; IC prices are approximate. (as of 2026-06-08) Module-Level (drop-in for 12 V systems) Module Type Panel Watts (max) Features Cost Renogy Wanderer 10A PWM PWM 120 W LCD, LVD, USB output $20 Epever Tracer AN 10A MPPT MPPT 130 W RS485 MODBUS, LCD, configurable profiles $35 - 45 Victron SmartSolar 75/10 MPPT 145 W @ 12 V Bluetooth, VictronConnect app, LiFePO4 profile $55 - 65 Genasun GVB-8 (8A MPPT) MPPT 110 W Purpose-built LiFePO4 profiles, waterproof $75 - 90 SRNE ML2430 30A MPPT MPPT 390 W @ 12 V LCD, multiple battery profiles, USB $45 - 55 For most LoRa gateway installations (20 - 100 Wp), the Victron SmartSolar 75/10 is the recommended choice: Bluetooth monitoring allows verifying charge behaviour remotely, and the LiFePO4 profile is well-tested. For budget-constrained multi-node deployments, the Epever Tracer AN 10A provides RS485 telemetry for integration with Grafana monitoring stacks. Power System Wiring and Safety Complete wiring diagrams, fusing, wire gauge selection, weatherproof connectors, and battery telemetry monitoring. Wiring a Solar Power System for LoRa Repeaters Proper wiring is the difference between a node that runs reliably for years and one that fails intermittently or becomes a fire hazard. (Battery life, not wiring, sets the maintenance interval — plan battery replacement per the chemistry's cycle life.) This page covers the complete wiring path from solar panel to LoRa load, including fusing strategy, wire gauge selection, connector types, weatherproofing, and cable management inside enclosures. System Wiring Overview A correctly wired solar system follows this signal path: Solar Panel(s) │ ├─── [Fuse #1: Panel → Controller] ── MC4 cable to controller PV input │ Charge Controller (MPPT/PWM) │ ├─── [Fuse #2: Controller → Battery] ── to battery positive terminal │ Battery Pack (LiFePO4/LiPo + BMS) │ └─── [Fuse #3: Battery → Load] ── to load (LoRa node, 5V regulator, etc.) Fuse each wire segment at its source so the fuse protects that segment. A typical solar node uses three: PV-to-controller, controller-to-battery, and battery-to-load. Do not rely on one fuse to protect dissimilar-gauge segments. Each fuse protects the wire segment between it and the next power source, limiting fault current to what the wire can safely carry. (The binding requirement in code and standards is overcurrent protection sized to protect each conductor near its source — the exact number of fuses depends on the topology; PWM vs MPPT and parallel PV strings change what is needed.) Fusing Requirements Segment Fuse Type Rating (for 10 W panel, 7 Ah battery) Placement Panel → Charge controller (PV in) Blade fuse or ANL Next standard size ≥ Isc × 1.56 (here ~10 A). Optional for a single panel — see note below. Per the controller manual, typically near the panel junction box positive terminal Charge controller → Battery Blade fuse or ANL Next standard size at or below the conductor's ampacity, and ≥ charge controller rated output × 1.25 (here ~15 A for a ~10 A controller) Within 7 inches of battery positive terminal (ABYC E-11) Battery → Load Blade fuse or resettable PPTC 3 - 5 A (sized to wire gauge, not load) Within 7 inches of battery positive terminal Fuse ratings are sized to protect the wire, not the load. Size the wire for at least 125% of the continuous load current, then choose a fuse at or below the wire's ampacity (the next standard size that does not exceed the conductor's ampacity, per NEC 240.4 / 240.6) so the fuse trips before the wire can be overloaded. Do not set the fuse above the wire's ampacity. ANL/bolt-down fuses are commonly used above ~30 - 40 A; MAXI blade fuses cover up to ~80 A. For small LoRa systems (under 10 A total), a waterproof inline blade-fuse holder rated for outdoor use (~$2 as of 2026-06-08) is adequate. About the PV-side fuse (Isc × 1.56): Isc is your panel's short-circuit current, printed on the panel label. The 1.56 multiplier comes from NEC 690.8 (1.25 × 1.25). This fuse exists mainly to protect against reverse current back-fed from other parallel panel strings; a single panel feeding one controller has no other source to push reverse current, so a series PV fuse is optional for a single-panel system. For parallel strings, size it to the next standard fuse at or above Isc × 1.56 and follow the controller manual for placement. Wire Gauge Selection AWG Conductor Area (mm²) Max Ampacity (60 °C insulation, bundled) Typical LoRa System Use AWG 22 0.33 mm² 3 A Sensor wiring, signal lines AWG 20 0.52 mm² 5 A Load output for single ESP32 node AWG 18 0.82 mm² 7 A Load output for small system (5 A load) AWG 16 1.31 mm² 10 A Battery-to-controller runs under 3 m AWG 14 2.08 mm² 15 A Battery-to-controller runs 3 - 10 m; 10 W panel to controller AWG 12 3.31 mm² 20 A 20 - 40 W panel runs; Pi gateway battery cables AWG 10 5.26 mm² 30 A 40 - 100 W panel runs over 5 m AWG 8 8.37 mm² 40 A 100 W+ systems; long battery cable runs Always use stranded copper wire with UV-resistant and temperature-rated insulation (XLPE or THWN-2 for outdoor; silicone for inside enclosures near heat). Solid wire is not suitable for mobile or vibrating installations. Use tinned copper wire in marine environments. For voltage drop calculation in long cable runs: Voltage_drop (V) = 2 × I (A) × R_per_meter (Ω/m) × Length (m) Target: keep drop to less than 3% of system voltage. For 12 V system, 3% = 0.36 V maximum drop. Example: 5 A load, 5 m one-way run, AWG 14 (0.0083 Ω/m): Drop = 2 × 5 × 0.0083 × 5 = 0.415 V (3.5% - marginal, upgrade to AWG 12) Weatherproof Connectors MC4 Connectors (Panel Wiring) MC4 (Multi-Contact 4 mm) connectors are the industry standard for solar panel connections. Common MC4 connectors are rated IP67/IP68, UV-resistant, up to 1000 - 1500 V DC and 30 - 40 A depending on the specific part and cable gauge (current rating scales with conductor cross-section). Never use non-MC4 connectors on the panel-side wiring - the exposed conductors in DIY terminal connections will corrode and introduce resistance. Crimp MC4 connectors with the correct MC4 crimper (not pliers) to ensure proper contact retention. MC4 pairs from different manufacturers (e.g., Stäubli vs Amphenol) are nominally cross-compatible but may have reduced IP rating when mixed - use matched pairs. Anderson Powerpole Connectors (Load Connections) Anderson Powerpole connectors (PP15, PP30, PP45 contacts) are the amateur radio and telecom standard for DC power distribution. They are genderless, stackable, and all three contact sizes share the same housing. Wire range is per contact: PP15 ~16 - 20 AWG, PP30 ~12 - 16 AWG, PP45 ~10 - 14 AWG. Crimp the PP30 (30 A) contact onto 12 - 16 AWG wire with a Powerpole ratchet crimper (e.g., Powerwerx TRIcrimp) or similar. ARES (Amateur Radio Emergency Service) has standardized on red (+) and black (−) 30 A Powerpoles for all portable power connections. Other Connectors Connector Rating Use Case XT60 ~30 A continuous (60 A surge) High-current battery connections in drone/RC-derived builds JST PH 2.0 mm 2 A LiPo cell to embedded board (standard on most Adafruit/SparkFun boards) JST XH 2.54 mm 3 A Sensor connections inside enclosure Dean's Ultra T-plug 30 A Legacy RC packs; avoid for new designs Polarity Protection Reverse polarity can instantly damage unprotected charge controllers, LoRa boards, and BMS units. Many commercial controllers and BMS units include reverse-polarity protection and survive a miswire, but do not rely on it. Before first connection, verify polarity with a multimeter: set it to DC volts, put the red probe on the wire you believe is positive and the black probe on the negative; a positive reading confirms your assignment, a negative reading means the leads are swapped. Then implement at least one of the following: Asymmetric connectors: MC4 (panel), Powerpole (load), JST (board) are all polarised - they cannot be connected backwards if crimped correctly. Schottky diode on the input: A 3 A / 40 V Schottky diode (e.g., 1N5822) in series with the positive line blocks reverse connection. It wastes ~0.3 V at light load, rising to ~0.475 - 0.5 V near its 3 A rating, and continuously dissipates that voltage drop, so it is best for low-current inputs. P-channel MOSFET reverse protection: A P-channel MOSFET (e.g., AO3401, IRF9540) provides near-zero-drop reverse polarity protection. Standard in commercial MPPT charge controller input stages. Cable Routing and Strain Relief in Enclosures Inside IP65/IP67 enclosures (Polycase WQ series, Bud Industries NBF, PolyBox), cables enter through compression cable glands. Rules: Use double-sealed cable glands (IP68 rated) for any cable entering an outdoor enclosure - single-seal glands allow moisture wicking along the cable jacket. All cable entries should be on the side or bottom of the enclosure, never on the top, to prevent water pooling at the seal. Leave a drip loop on the outside of each cable entry - a short downward curve below the gland that water follows away from the entry point before the cable turns upward. Inside the enclosure, route cables along the walls and use cable ties on standoffs, not across the PCB or battery. Keep power cables away from antenna cables to prevent RF interference. Add a silica gel desiccant pack (~1 - 3 g per liter of enclosure volume, so roughly 1 - 2 g per 0.5 L) and include a reusable humidity-indicator card; regenerate or replace the desiccant when the indicator shows above ~40 - 50% RH rather than on a fixed annual schedule. Secure the battery with hook-and-loop strap or foam padding to prevent it from shifting and chafing cables during thermal expansion/contraction. Monitoring Battery State via Meshtastic Telemetry Meshtastic and MeshCore both include power telemetry features that allow a node to report its battery voltage and charge level over the mesh network. This page covers enabling these features, configuring voltage ADC pins for different hardware, interpreting voltage as state-of-charge for LiFePO4 batteries, setting low-battery alerts, and visualising data in Grafana. (Firmware command syntax and pin details are as of 2026-06-08; verify against your installed firmware version, as Meshtastic config keys change across 2.x releases.) Enabling Power Telemetry in Meshtastic In Meshtastic firmware (2.x), power metrics are part of the Telemetry Module. To enable battery reporting: Via Meshtastic Python CLI # Install CLI: pip install meshtastic # Set the device-metrics broadcast interval (battery level, voltage, uptime, # and any attached power sensor). This specifically controls the DEVICE/power # telemetry cadence, not environment-sensor metrics. meshtastic --set telemetry.device_update_interval 300 # Sets reporting interval to 300 seconds (5 minutes) # Verify telemetry module settings meshtastic --get telemetry Note: per the official Meshtastic telemetry docs, device_update_interval configures the interval (in seconds) used to send device/power metrics over the mesh. CLI key names have changed across firmware versions — if the command above is rejected, check the current key names in the Meshtastic telemetry module docs for your firmware version. Via Meshtastic Web App or Mobile App Open the Meshtastic app and connect to your node. Navigate to Config → Module Config → Telemetry. Enable Device Metrics. Set the update interval (300 - 3600 seconds; use longer intervals for battery-powered nodes to reduce TX duty cycle). Save and reboot the node. Once enabled, the node broadcasts a meshtastic.Telemetry protobuf packet on the default channel at the configured interval. The packet includes: battery_level: Integer 0 - 100 (firmware-estimated SoC percentage) voltage: Float in volts (actual measured ADC voltage) channel_utilization: Float (% airtime used) air_util_tx: Float (TX airtime) Voltage ADC Pin Configuration on Different Boards Not all Meshtastic hardware platforms use the same pin or divider ratio for battery voltage measurement. The firmware auto-detects the board type from compile-time defines, but custom builds or off-label hardware may need manual configuration. Verify the exact pin and divider against your board's schematic before relying on these values. Board ADC Pin (GPIO) Voltage Divider Ratio Max Measurable Voltage Notes TTGO T-Beam v0.7 GPIO35 1:2 (100 kΩ / 100 kΩ) ~8.4 V Measures raw single-18650 LiPo voltage (divider documented in community schematics) TTGO T-Beam v1.1 (AXP192) AXP192 PMIC register Internal PMIC ADC Reported via I²C Reads VBAT register; very accurate TTGO LoRa32 v2.1 GPIO35 1:2 ~8.4 V Same GPIO35 divider scheme as T-Beam v0.7 (confirm on the v2.1 schematic) Heltec WiFi LoRa 32 v3 GPIO1 (VBAT_Read) ~4.9:1 divider (390 kΩ / 100 kΩ) Single-cell LiPo (~3.0–4.2 V) You must drive ADC_Ctrl (GPIO37) low first to enable the divider, then read battery voltage on GPIO1. It is not a 1:1 / no-divider input. Reads a single LiPo cell. RAK WisBlock RAK4631 P0.04 (AIN2) 1:2 via RAK5005-O base board ~6 V Battery sense is on P0.04 / AIN2 (not P0.05/AIN3); reads via nRF52840 SAADC. Verify the AIN index against the WisBlock schematic. Wispr / Custom ESP32 User-defined GPIO User-defined User-defined Set in platformio.ini or via power.adc_multiplier_override config key If the reported voltage seems incorrect, verify with a multimeter at the battery terminals. Then check power.adc_multiplier_override (confirm this key exists in your firmware version): meshtastic --set power.adc_multiplier_override 2.0 # Multiplies the raw ADC reading by 2.0 (use for 1:2 divider boards) Interpreting Voltage as State-of-Charge for LiFePO4 Meshtastic's built-in SoC estimation uses LiPo voltage thresholds (3.0 - 4.2 V per cell). For LiFePO4 packs, these thresholds are incorrect - LiFePO4 cells operate in the 2.5 - 3.65 V range. The firmware will report incorrect percentages unless you compensate. Important: A LiFePO4 cell's voltage during/just after charging is much higher than its rested open-circuit voltage. The 3.60–3.65 V "100%" row below is the charge/absorb voltage; a fully charged cell that has rested settles to roughly 3.35–3.45 V. Read SoC from rested voltage, not from voltage measured under charge or load. LiFePO4 Single-Cell (3.2 V nominal) Voltage → SoC Table Voltage (V) Approximate SoC (%) Interpretation 3.60 - 3.65 (under charge) 100% Charge/absorb voltage; rested 100% OCV is ~3.35–3.45 V 3.40 - 3.45 90% High charge, near rested-full plateau 3.30 - 3.35 70 - 80% Mid-range - most of usable capacity here 3.27 - 3.30 50% Flat region - voltage barely distinguishable from 70% 3.22 - 3.25 30% Still flat; lower usable threshold approaching 3.18 - 3.22 20% Low battery - alert threshold 3.10 - 3.18 10% Critical - immediate recharge needed < 3.10 <5% BMS will soon disconnect; node will shut down 4S LiFePO4 Pack (12.8 V nominal) Voltage → SoC Table Pack Voltage (V) SoC (%) 14.2 - 14.6 (under charge) 100% (end of charge; rested-full ~13.4–13.8 V) 13.6 - 13.8 90% 13.2 - 13.4 70 - 80% 13.0 - 13.2 50% 12.8 - 13.0 30% 12.4 - 12.8 20% 12.0 - 12.4 10% < 11.8 <5% (BMS cutoff imminent) Setting Low-Battery Alerts in Meshtastic Meshtastic does not natively send alert messages when battery drops below a threshold, but there are two approaches to implement this: Approach 1 - Node-Red / MQTT Alert Pipeline Configure Meshtastic MQTT uplink: meshtastic --set mqtt.enabled true --set mqtt.address YOUR_BROKER_IP In Node-Red, subscribe to msh/US/+/json/LongFast/# (adjust channel name as needed). When Meshtastic JSON-encoded MQTT output is enabled, battery voltage arrives as a flat field inside the telemetry payload, e.g. msg.payload.payload.voltage (the published JSON looks like "payload": {"air_util_tx":0, "battery_level":0, "channel_utilization":0, "voltage":0}). It is not nested under decoded.telemetry.deviceMetrics — that dotted path is the protobuf-decoded object shape used by the Python API, not the MQTT JSON shape. Filtering on the wrong layer returns undefined and the alert silently never fires. Check a real sample against the Meshtastic MQTT integration docs and filter on the field below your LVD threshold. Route low-voltage events to an alert node (email, PushOver, Telegram bot). Approach 2 - Meshtastic Python Script (Autonomous Node) import meshtastic import meshtastic.serial_interface from meshtastic.mesh_pb2 import MeshPacket iface = meshtastic.serial_interface.SerialInterface() LOW_VOLTAGE_THRESHOLD = 3.18 # V per cell for LiFePO4 (20% SoC) def on_receive(packet, interface): if "decoded" in packet and "telemetry" in packet["decoded"]: m = packet["decoded"]["telemetry"].get("deviceMetrics", {}) voltage = m.get("voltage", 0) node_id = packet["fromId"] if voltage > 0 and voltage < LOW_VOLTAGE_THRESHOLD: print(f"LOW BATTERY: Node {node_id} at {voltage:.2f} V") # Send alert message on mesh iface.sendText(f"⚠ Low battery: {node_id} {voltage:.2f}V", wantAck=False) iface.localNode.setOwner("MonitorNode") iface.addReceiveObserver(on_receive) input("Press Enter to exit\n") iface.close() MeshCore Telemetry Equivalent MeshCore also reports battery telemetry, but it does not use a "node YAML configuration file." MeshCore repeater and room-server firmware is configured over USB in the web config tool, or remotely over LoRa via the companion mobile app using the Remote Management feature, and via the MeshCore CLI commands. There is no YAML config mechanism in MeshCore firmware. Use the MeshCore Repeater & Room Server CLI Reference to set the telemetry/advert interval and review available battery-reporting commands for your firmware build. When telemetry is bridged to MQTT, Grafana can consume it via the Grafana MQTT data source plugin or via InfluxDB (Node-Red → InfluxDB → Grafana). Graphing Battery Data in Grafana Architecture Meshtastic Node │ (MQTT telemetry JSON) ▼ Mosquitto MQTT Broker │ ▼ Node-Red (parse JSON → extract voltage/SoC → write to InfluxDB) │ ▼ InfluxDB 2.x (time-series storage) │ ▼ Grafana (dashboards, alerts) InfluxDB Line Protocol (Node-Red write node) measurement: node_battery tags: node_id, node_name, location fields: voltage (float), battery_pct (int), soc_lifepo4 (float) timestamp: nanosecond UNIX timestamp from packet Grafana Panel Configuration Battery voltage time series: Use a Time Series panel with threshold bands - green above 3.30 V, yellow 3.18 - 3.30 V, red below 3.18 V (per cell) or scale for your pack voltage. Multi-node SoC gauge: Use a Gauge panel per node with min=0, max=100, thresholds at 20% (red) and 40% (yellow). Grafana Alerting: Set an alert rule on avg(voltage) < 3.18 for any node, with a 15-minute evaluation window (to avoid false alarms from momentary load spikes). Route to PagerDuty, Slack, or email. A reference Grafana dashboard for Meshtastic power monitoring can be built from the panel configuration above. (A previous version of this page referenced a specific dashboard JSON file in the Mesh America GitHub repository; that path is not yet verified to exist, so treat it as planned rather than published — build your dashboard from the configuration described here until a confirmed repository link is available.)