5d15a1fd82
Move the Ring solar siding adapter into its own directory, add repo and project documentation, and introduce a preview script (OpenSCAD+xvfb or PyVista fallback) for catalog images.
146 lines
5.6 KiB
Markdown
146 lines
5.6 KiB
Markdown
# Ring Solar Siding Adapter
|
||
|
||

|
||
|
||
Parametric adapter plate that sits between a **Ring Solar Charger** (integrated battery-doorbell solar unit) and horizontal beaded vinyl lap siding.
|
||
|
||
| | |
|
||
|---|---|
|
||
| **Source** | [`ring-solar-siding-adapter.scad`](ring-solar-siding-adapter.scad) |
|
||
| **Footprint** | ~93 × 171 mm (matches the Ring back) |
|
||
| **Units** | Millimeters throughout |
|
||
|
||
## What it is
|
||
|
||
- **Front face:** flat — the Ring unit mounts here.
|
||
- **Rear face:** shaped to match siding — bead groove at the top, flat shelf in the middle, curved taper at the bottom.
|
||
|
||
## What it's for
|
||
|
||
The Ring's back is flat; siding is not. Without an adapter, you get gaps, uneven pressure, and a poor mount.
|
||
|
||
This plate:
|
||
|
||
- Conforms to the siding profile so the rear sits flush against the wall.
|
||
- Receives the siding bead in a semicircular groove near the top.
|
||
- Provides two through-holes aligned with the Ring's house-mount screws — screws pass through Ring → adapter → siding → sheathing.
|
||
|
||
Typical stack:
|
||
|
||
```
|
||
Ring Solar Charger
|
||
↓ screws
|
||
Adapter plate ← this part
|
||
↓
|
||
Vinyl siding
|
||
↓
|
||
Sheathing
|
||
```
|
||
|
||
## Rear profile (side view, bottom → top)
|
||
|
||
```
|
||
plate top ───────────── bead coping groove (receives siding bead)
|
||
flat rear shelf
|
||
taper start ───────────── flat_upper_ratio sets this boundary
|
||
curved taper
|
||
plate bottom ──────────── deepest projection toward front
|
||
```
|
||
|
||
**Depth convention:** lower depth = toward the wall; higher depth = toward the front (Ring).
|
||
|
||
## Parameters
|
||
|
||
### Plate
|
||
|
||
| Parameter | Meaning |
|
||
|-----------|---------|
|
||
| `plate_width` | Width of the adapter (Ring back width). |
|
||
| `plate_height` | Height of the adapter (Ring back height). |
|
||
| `min_wall_thickness` | Minimum solid depth at the thinnest point (bead groove pinch). Also scales bottom taper reach. |
|
||
| `edge_round` | Rounds front edges via minkowski. Keep `0` while tuning; set ~1 for final print (slower render). |
|
||
|
||
### Siding profile
|
||
|
||
| Parameter | Meaning |
|
||
|-----------|---------|
|
||
| `siding_projection` | Nominal max siding depth from wall. Feeds `face_inset_z` via clearance and inset. |
|
||
| `face_inset_depth` | How far the flat upper rear sits in from max projection. |
|
||
| `bead_coping_radius` | Radius of the semicircular bead groove (measured on your siding). |
|
||
| `bead_coping_offset_top` | Distance from plate top to center of the bead groove. |
|
||
| `flat_upper_ratio` | Fraction of plate height (from top down) with a flat rear. Lower = taper starts higher. |
|
||
| `bottom_taper_depth_ratio` | How far the bottom rear reaches toward the front beyond the flat shelf: `min_wall_thickness × this`. Higher = more projection at bottom. |
|
||
| `rear_extension` | Pushes flat rear and taper toward the wall without moving the front face or bead groove vs front/top. Adds overall depth. |
|
||
| `course_pitch` | Bead-to-bead spacing on your siding (~6.5"). Reference for tuning. |
|
||
| `profile_segments` | Curve sampling resolution. Higher = smoother, slower. |
|
||
| `profile_mode` | `curved` = smooth taper; `stepped` = debug fallback with sharp transitions. |
|
||
| `rear_clearance` | Small gap so the part doesn't bind on siding. |
|
||
|
||
**Common tuning relationships:**
|
||
|
||
| Goal | Parameter |
|
||
|------|-----------|
|
||
| Move taper start up/down | `flat_upper_ratio` |
|
||
| Bottom taper more/less toward front | `bottom_taper_depth_ratio` |
|
||
| Whole plate deeper front-to-back (bead stays put) | `rear_extension` |
|
||
| Bead groove up/down | `bead_coping_offset_top` |
|
||
| Groove size | `bead_coping_radius` |
|
||
|
||
### Mounting holes
|
||
|
||
| Parameter | Meaning |
|
||
|-----------|---------|
|
||
| `mount_hole_offset_top` | Upper hole center distance from plate top. |
|
||
| `mount_hole_offset_bottom` | Lower hole center distance from plate bottom. |
|
||
| `mount_hole_dia` | Hole diameter (4.5 mm for 4 mm Ring screws). |
|
||
| `mount_hole_x` | Horizontal offset from center (`0` = centered). |
|
||
|
||
### Export
|
||
|
||
| Parameter | Meaning |
|
||
|-----------|---------|
|
||
| `part_mode` | What to generate (see below). |
|
||
| `profile_strip_width` | Width of the narrow siding fit-test strip. |
|
||
| `front_slice_depth` | Thickness of the front-face test cap (mm). |
|
||
|
||
**Export modes:**
|
||
|
||
| Mode | Purpose |
|
||
|------|---------|
|
||
| `full` | Complete adapter with holes — final part. |
|
||
| `profile_strip` | Narrow strip through the rear profile — cheap siding fit test. |
|
||
| `front_slice` | Thin front cap with holes — check width, height, hole placement vs Ring. |
|
||
|
||
## Suggested workflow
|
||
|
||
1. **`profile_strip`** — tune siding profile (`flat_upper_ratio`, `bottom_taper_depth_ratio`, `rear_extension`, bead params).
|
||
2. **`front_slice`** — verify Ring hole alignment.
|
||
3. **`full`** — print final plate (PETG/ASA recommended outdoors; PLA OK for tests).
|
||
|
||
**Print orientation:** front face (Ring side) on the bed, rear profile vertical.
|
||
|
||
## Related files
|
||
|
||
| File | Purpose |
|
||
|------|---------|
|
||
| [`ring-solar-siding-adapter.backup.scad`](ring-solar-siding-adapter.backup.scad) | Earlier geometry — flat upper rear + lower taper only, no bead coping groove |
|
||
| `*.stl` | Exported meshes (gitignored; export locally) |
|
||
|
||
## Regenerate preview
|
||
|
||
From the repo root:
|
||
|
||
```bash
|
||
pip install pyvista # headless fallback (WSL without display)
|
||
sudo apt install xvfb # optional — native OpenSCAD PNG export
|
||
python3 scripts/render-preview.py ring-solar-siding-adapter
|
||
```
|
||
|
||
Or export a PNG directly from OpenSCAD when a display (or `xvfb-run`) is available:
|
||
|
||
```bash
|
||
xvfb-run -a openscad --render --viewall --imgsize=1200,900 \
|
||
-o ring-solar-siding-adapter/preview.png \
|
||
ring-solar-siding-adapter/ring-solar-siding-adapter.scad
|
||
```
|