commit 47fd00d79f64fe246b4e9a1879f5afdccc73914f Author: Eric Jungbauer Date: Fri Apr 10 13:40:19 2026 -0600 Initial commit: interactive shed hunting map for Bear River Range Single-file HTML app (Leaflet.js) with USGS topo/satellite base layers, Cache NF boundary, 12 south-facing slope zones, 7 fence crossings, 9 travel corridors, 10 curated hotspot markers, custom waypoint system with localStorage persistence, GPX/GeoJSON export, GPS tracking, distance measurement, and species filtering. Mobile-first design for field use at shed.jfamily.io. Co-Authored-By: Claude Opus 4.6 (1M context) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17c415a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.DS_Store +Maps/ +.claude/ diff --git a/Utah Shed Hunting Guide.md b/Utah Shed Hunting Guide.md new file mode 100644 index 0000000..0f80d04 --- /dev/null +++ b/Utah Shed Hunting Guide.md @@ -0,0 +1,230 @@ +# Utah Shed Hunting Guide (2026) + +## Regulations & Requirements + +### Ethics Course (Jan 1 - May 31) +- **Mandatory** free online course at [wildlife.utah.gov/antler-gathering.html](https://wildlife.utah.gov/antler-gathering.html) +- 23 questions, all must be answered correctly +- Certificate must be carried on your person (paper or Utah Hunting & Fishing app) +- Must be renewed annually -- previous year certificates don't carry over +- **After May 31**, no course or certificate is needed +- ~20,000 people take the course each year + +### No Hunting License Required +- No permit needed for recreational gathering +- **Commercial buyers** need a Certificate of Registration ($150, valid 365 days) + +### Deadheads (Skull + Antlers Attached) +- Do NOT disturb -- report via the DWR Deadhead Reporter app +- DWR investigates and may authorize you to keep it + +### Restricted Areas +- **Wildlife Management Areas (WMAs):** Many closed seasonally (e.g., Timpanogos WMA closed Dec 1 - Apr 15). Check DWR website before entering any WMA +- **National Parks:** All five Utah parks (Zion, Bryce, Arches, Canyonlands, Capitol Reef) -- no collection allowed +- **National Monuments:** Most are closed to gathering +- **Tribal Lands:** Off-limits without tribal authorization +- **Private Land:** Written landowner permission required + +### Penalties +- Gathering without ethics cert (Jan-May): citation +- Trespassing: Class B misdemeanor, fines up to ~$680, up to 6 months jail, loss of hunting privileges up to 3 years +- Wildlife harassment: Class B misdemeanor, ~$683 fine +- Illegally obtained antlers: $30/lb restitution value (HB 382, 2024) +- Utah is in the Interstate Wildlife Violator Compact -- violations can affect privileges in other states + +### Recent Changes (2024-2026) +- **HB 382 (2024):** Extended ethics course window from Feb 1-Apr 15 to Jan 1-May 31; established $30/lb restitution; created COR requirement for commercial buyers +- **Potential nonresident restriction:** DWR proposed May 1-Dec 31 season for nonresidents (Jan-Apr restricted). Final status still pending +- **2026:** New course available, must be completed fresh + +--- + +## When Antlers Drop + +### Mule Deer +- **Mid-February through March** +- Weakened bucks from rut/winter drop earliest +- Lower elevations (5,000-6,500 ft): dropping may begin late January +- Higher-elevation migratory deer tend to drop slightly later + +### Elk +- **Late February through April**, some stragglers into May +- Varies by age, health, and snow conditions +- Heavy snow keeps elk on winter range at lower elevations (6,000-7,200 ft) +- Early spring with green-up pushes elk higher -- sheds found from 7,000 to 11,000 ft +- **Sweet spot for early season:** 6,000-7,200 ft on south-facing slopes + +### Moose +- **December through March** (earlier than elk) +- Less commonly targeted; found in northern mountain ranges + +### Key Principle +Winter severity and spring timing dictate everything. Hard, late winters concentrate sheds on winter range at lower elevations. Early springs push animals up, spreading sheds across higher terrain. + +--- + +## Top Utah Areas + +### Elk +- **Cache Unit (northern Utah):** Known for producing large elk bulls +- **Book Cliffs:** Remote, wilderness-quality elk habitat; accessible by foot/horseback/ATV +- **Manti Unit (central Utah):** Large elk herds, big bulls + +### Mule Deer +- **Henry Mountains:** Considered the premier mule deer unit in the nation +- **Paunsaugunt:** Historic trophy mule deer unit +- **Wasatch Front:** Tremendous mule deer habitat; rugged terrain reduces pressure + +### General Public Land +- BLM land and National Forest land are open to shed hunting (check for any temporary closures) +- Use onX Maps or similar to verify property boundaries, WMA closures, and terrain features before heading out + +--- + +## How to Find Sheds + +### Terrain to Target + +**South-Facing Slopes** +- Animals gravitate here for solar warmth in winter +- Snow melts first, exposing food earlier +- Sagebrush-covered south-facing hillsides for deer; south-facing fingers and benches for elk + +**Feeding Areas** +- Winter food sources concentrate animals: alfalfa fields, crop stubble, south-slope browse +- Agricultural edges and hay meadows adjacent to winter range + +**Bedding Areas** +- Thick cover, tall grasses, brushy thickets, timber pockets +- Look for matted-down vegetation, oval depressions, concentrated droppings +- Antlers often pop off when animals stand from beds + +**Travel Corridors** +- Trails connecting bedding to feeding areas +- Fence crossings and creek crossings -- the jolt of jumping knocks antlers loose +- Saddles and passes between drainages funnel movement + +### Search Techniques + +**Grid Walking** +- Walk parallel lines 20-30 yards apart +- Traverse a slope, drop 20-30 yards, walk back the other direction +- Open country: widen to 50 yards. Thick cover: tighten to 15-20 yards + +**Speed and Focus** +- Walk slower than you think necessary +- Focus eyes in a 10-15 foot radius around you, not far ahead +- Antlers blend perfectly into brown/gray winter foliage + +**The 80/20 Rule** +- ~80% of sheds are in ~20% of the area +- Focus hardest on beds, feeding areas, and corridors + +**Pro Tips** +- Glass open hillsides with binoculars from high vantage points before walking them +- Walk into the sun -- tine shadows catch your eye +- After finding one antler, search a tight 100-200 yard circle for the match +- Mark every find on GPS -- builds a heat map over years + +### Reading Sign + +**Tracks:** Fresh = sharp edges. Old = dull, eroded. Heavy track density = animals spending time there. + +**Droppings:** Fresh = dark, moist, shiny. Old = dry, gray, crumbly. Clusters near beds = good shed zone. + +**Rubs:** Made in fall (pre-shed) but confirm buck activity in the area. Concentrations = heavily used territory. + +**Game Trails:** Well-beaten, fresh scat, clear of debris = active use. Follow between beds and food. + +**Beds:** Oval depressions with droppings and hair. Multiple beds = group site, search thoroughly. + +--- + +## Antler Condition & What Color Tells You + +| Grade | Color | Age on Ground | Elk Price/lb | Deer Price/lb | +|-------|-------|---------------|-------------|---------------| +| A (Brown) | Rich brown | Weeks to months | $14-$16 | $10-$12 | +| B (Hard White) | Bleached white | ~1 year | $6-$10 | $4-$8 | +| C (Chalk) | Chalky, flaking | 2-3+ years | $2-$4 | $1-$3 | + +- **Brown antlers** = you're in the right area at the right time +- **Only white/chalk** = area was productive in prior years, but you may be late or herd shifted +- **Mix of brown + white** = reliable year-after-year drop zone +- Matched sets command ~40% premium over single sides +- Unique/trophy racks can sell individually for $100-$500+ + +### Where to Sell +- Antler buyers/brokers (AntlerBuyers.com, Petska Fur) +- Online: eBay, Facebook Marketplace, Craigslist +- Craft/decor market (chandeliers, knife handles, furniture) +- Dog chew industry (growing market) +- Flea markets, trade shows, sporting goods stores +- Direct to craftspeople +- **Peak selling season:** February through June + +--- + +## Gear Checklist + +### Essentials +- [ ] Waterproof boots with ankle support (most important piece of gear) +- [ ] GPS app (onX Maps recommended) with offline maps downloaded +- [ ] Day pack (25-35L) or frame pack for backcountry +- [ ] Binoculars (8x42 or 10x42) +- [ ] Water and snacks +- [ ] Extra layers +- [ ] Sun protection (hat, sunscreen, sunglasses) + +### Nice to Have +- [ ] Trekking poles +- [ ] Knife / multi-tool +- [ ] First aid kit +- [ ] Charged phone with ethics cert loaded + +--- + +## Training a Shed Dog + +### Best Breeds +- Labrador Retrievers (dominant breed in NASHDA competitions) +- German Shorthaired Pointers, Golden Retrievers, Weimaraners +- Any dog with retrieving drive, good nose, and desire to please + +### Training Progression + +**Phase 1 -- Introduction (8+ weeks old)** +- Let puppy smell and mouth a shed antler (sand down sharp points) +- Play fetch with training antler in the yard, short distances +- Use a distinct command ("find the bone" / "find the shed") +- Keep sessions short, end on a positive note + +**Phase 2 -- Scent Association (4-6 months)** +- Apply antler scent to a training dummy +- Hide the dummy out of sight, lead dog to general area +- Shift the dog from eyes to nose +- Reward heavily on find and retrieve + +**Phase 3 -- Field Progression** +- Move to woods, fields, varied cover +- Increase distance and difficulty gradually +- Plant real antlers in realistic terrain +- Practice in different weather and with distractions + +### Key Principles +- Patience and baby steps -- rushing creates negative associations +- Short, frequent sessions beat long, infrequent ones +- Praise is the primary motivator +- Never start too hard; bad early experiences can ruin a shed dog + +--- + +## Utah-Specific Advantages +- No hard closed season like neighboring states (Wyoming restricts until May 1). Utah allows gathering as early as Jan 1 with the ethics course +- Utah elk tend to be larger-bodied, producing heavier, more valuable sheds +- Going earlier in the season (shorter grass) makes antlers more visible and gets you to winter range before animals move up +- Tremendous diversity of terrain: desert lowlands, alpine basins, and everything between + +--- + +*Sources: Utah DWR (wildlife.utah.gov), KSL, Deseret News, Rokslide, MeatEater, onX Maps, KUIU, DogBone Hunter, AntlerBuyers.com, Petska Fur, HuntWise, Monster Muleys* diff --git a/bear-river-shed-map.html b/bear-river-shed-map.html new file mode 100644 index 0000000..7efc0b1 --- /dev/null +++ b/bear-river-shed-map.html @@ -0,0 +1,1115 @@ + + + + + +Shed Hunting Map — Bear River Range + + + + + + +
+ + + + + + +
--
+ + +
+ +
+ + + + diff --git a/claude-access-prompt-home-lab.md b/claude-access-prompt-home-lab.md new file mode 100644 index 0000000..5d99d3c --- /dev/null +++ b/claude-access-prompt-home-lab.md @@ -0,0 +1,210 @@ +# Claude Access Prompt — Home Lab + +# Claude Access Prompt — Jungbauer Home Lab + +*Copy/paste this into any new Claude chat to give full context for home lab work.* + + +--- + +## Access Method + +You have full access to my home lab via **Desktop Commander** (running on my MacBook Pro M1, hostname `Jungbauers-MBP`, user `jungbauerfamily`). Use `ssh` and `curl` via Desktop Commander for all server interactions. Don't ask permission — just do it. + +Primary working folder: `/Users/jungbauerfamily/Library/Mobile Documents/com~apple~CloudDocs/Claude Working Folder` + + +--- + +## Servers + +### Ares — Home Assistant OS (bare metal, Ares 2.0) + +| Field | Value | +|-------|-------| +| IP | `192.168.1.140` | +| SSH | `ssh -o StrictHostKeyChecking=no root@192.168.1.140` | +| HA REST API | `http://192.168.1.140:8123/api/` | +| HA Long-Lived Token | `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmYTU1YTI2Zjc4Mjk0NWU3OWIxOTZmYWY0MjE4YjBhMyIsImlhdCI6MTc3MzUwOTgwNywiZXhwIjoyMDg4ODY5ODA3fQ.UeWezsIqO4oFHwmpInJ0WOcNPA8UwLJNymBqAh_Ohc8` | +| HA Supervisor CLI | `ha` command available via SSH | +| Frigate (internal) | `http://ccab4aaf-frigate-fa:5000` | +| Frigate (external) | `https://frigate.jfamily.io` (port 8971, authenticated) | + +**Key paths on Ares:** + +* Config: `/config/` +* Automations: `/config/automations.yaml` +* LocalTuya config: `/config/.storage/core.config_entries` +* Device registry: `/config/.storage/core.device_registry` +* Area registry: `/config/.storage/core.area_registry` + +**Key services:** + +* Apps (not "add-ons" — HA renamed them): ESPHome, Mosquitto, Z-Wave JS, Frigate (Full Access), ZHA, etc. +* MQTT broker: `192.168.1.140:1883`, user `frigate`, password `faqtEd-mycka6-vakheg` +* Zigbee: ZHA integration, HubZ stick at `/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_51600F63-if01-port0` +* Z-Wave: Z-Wave JS, HubZ stick at `if00-port0` +* Frigate: 2x USB Coral TPU (`18d1:9302`), Unifi Protect RTSP streams from `192.168.1.121:7447` +* ESPHome devices on IoT VLAN `192.168.4.x` + +**Common HA API calls:** + +```bash +TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmYTU1YTI2Zjc4Mjk0NWU3OWIxOTZmYWY0MjE4YjBhMyIsImlhdCI6MTc3MzUwOTgwNywiZXhwIjoyMDg4ODY5ODA3fQ.UeWezsIqO4oFHwmpInJ0WOcNPA8UwLJNymBqAh_Ohc8" + +# Get all states +curl -s "http://192.168.1.140:8123/api/states" -H "Authorization: Bearer $TOKEN" + +# Reload automations +curl -s -X POST "http://192.168.1.140:8123/api/services/automation/reload" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" + +# Reload LocalTuya +curl -s -X POST "http://192.168.1.140:8123/api/config/config_entries/entry/01KJRSXEBY2ZD53SDWZ8PV1HN2/reload" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" + +# Restart HA core +ssh -o StrictHostKeyChecking=no root@192.168.1.140 "ha core restart" +``` + +**LocalTuya / Tuya Cloud:** + +* Config entry ID: `01KJRSXEBY2ZD53SDWZ8PV1HN2` +* Tuya client_id: `apxcamjc9f75xpfytwt4` +* Tuya client_secret: `6bd707689fa44640806989366aa3c67a` +* Tuya user_id: `az1601840366692VYNPC` +* Region: `us` → `https://openapi.tuyaus.com` +* IoT VLAN for Tuya devices: `192.168.4.x` + +**Tips:** + +* After editing `automations.yaml`, reload automations via API (no restart needed) +* To avoid shell escaping issues on HAOS, encode Python scripts as base64: `echo | base64 -d | python3` +* Use Python `urllib.request` + `json.dumps()` for long wiki updates to avoid curl escaping issues +* **Entity registry updates (labels, areas, categories) MUST use the WebSocket API** — direct edits to `/config/.storage/core.entity_registry` get overwritten on HA restart. Use `ws://192.168.1.140:8123/api/websocket` with `config/entity_registry/update` message type. Python `websocket-client` is installed on the Mac (`pip3 install --break-system-packages websocket-client`). Example: + +```python +import websocket, json +ws = websocket.create_connection("ws://192.168.1.140:8123/api/websocket") +ws.recv() # auth_required +ws.send(json.dumps({"type": "auth", "access_token": TOKEN})) +ws.recv() # auth_ok +ws.send(json.dumps({ + "id": 1, + "type": "config/entity_registry/update", + "entity_id": "automation.example", + "area_id": "front_yard", + "labels": ["scheduled"], + "categories": {"automation": "lighting"} +})) +result = json.loads(ws.recv()) +ws.close() +``` + +**Existing automation labels:** `presence`, `scheduled`, `auto_off`, `notification`, `door_trigger`, `power_monitor`, `linked_room`, `override`, `safety` + +**Existing automation categories:** `lighting` (Lighting Control), `appliance_monitoring` (Appliance Monitoring), `climate_safety` (Climate & Safety), `01KM9PQDKRGY1WB1F2Q0JD4MHX` (Media Control), `01KM9PQDKVPPZHY10V85VCXKZ0` (System), `01KMAR57JRNE63WXSNAP3F7272` (Security) + + +--- + +### Ragnar — Proxmox Hypervisor ("Hail Reaper") + +| Field | Value | +|-------|-------| +| IP | `192.168.1.107` | +| SSH | `ssh -o StrictHostKeyChecking=no root@192.168.1.107` | +| Web UI | `http://192.168.1.107:8006` | +| Nginx Proxy Manager | `http://192.168.1.107:81` (Docker on host) | + +\~59 LXC/VM services. Key LXCs: + +| CT ID | Name | IP | Notes | +|-------|------|-----|-------| +| 104 | Gitea | 192.168.1.204 | Self-hosted Git | +| 106 | Outline | 192.168.1.206 | Wiki | + + +--- + +### Darrow — Windows 11 NAS/Plex + +| Field | Value | +|-------|-------| +| IP | `192.168.1.43` | +| SSH | `ssh "darrow admin"@192.168.1.43` | +| Role | \~200TB Storage Spaces array, Plex server, backup target | + + +--- + +### UDM-SE — UniFi Dream Machine (Router/Controller) + +| Field | Value | +|-------|-------| +| IP | `192.168.1.1` | +| SSH | `ssh root@192.168.1.1` | +| Main LAN | `192.168.1.x` | +| IoT VLAN | `192.168.4.x` (Tuya, ESPHome devices) | + + +--- + +## Wiki (Outline) + +| Field | Value | +|-------|-------| +| API | `https://wiki.jfamily.io/api/` | +| Auth | `Authorization: Bearer ol_api_yHXypRyqf4CscWDzPluGfPev9GhdFg6mwrXwkT` | +| Home Assistant Collection | `1b8d0cfe-022a-4621-99f8-598ff99061d6` | + +All endpoints are **POST**, take JSON body, return JSON. No MCP available — use `curl` via Desktop Commander. + +```bash +WIKI_TOKEN="ol_api_yHXypRyqf4CscWDzPluGfPev9GhdFg6mwrXwkT" + +# Search +curl -s -X POST "https://wiki.jfamily.io/api/documents.search" \ + -H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \ + -d '{"query":"your search"}' + +# Read a doc +curl -s -X POST "https://wiki.jfamily.io/api/documents.info" \ + -H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \ + -d '{"id": ""}' + +# Update a doc (use Python for long markdown to avoid escaping issues) +curl -s -X POST "https://wiki.jfamily.io/api/documents.update" \ + -H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \ + -d '{"id": "", "text": "", "publish": true}' + +# Create a doc +curl -s -X POST "https://wiki.jfamily.io/api/documents.create" \ + -H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" \ + -d '{"title": "...", "text": "...", "collectionId": "", "publish": true}' + +# List collections +curl -s -X POST "https://wiki.jfamily.io/api/collections.list" \ + -H "Authorization: Bearer $WIKI_TOKEN" -H "Content-Type: application/json" -d '{}' +``` + + +--- + +## Gitea + +| Field | Value | +|-------|-------| +| SSH | `git@git.jfamily.io` (port 2222) | +| Web | `http://192.168.1.204:3000` (user: eric) | +| API | `http://192.168.1.204:3000/api/v1/` | +| Generate token | `ssh root@192.168.1.107 "pct exec 104 -- docker exec -u git gitea gitea admin user generate-access-token --username eric --token-name --scopes all"` | + + +--- + +## Context & Conventions + +* Server naming follows Pierce Brown's *Red Rising* series (Ragnar, Darrow, Ares) +* "Apps" not "add-ons" — HA renamed them in a recent version +* Home is "Providence" — large custom-built home in Utah, \~9,000 sq ft, 49 rooms, 11,000+ HA entities +* Wiki (`wiki.jfamily.io`) and Gitea (`192.168.1.204:3000`) are sources of truth — always update them after significant changes +* When in doubt, check the wiki first before asking me \ No newline at end of file