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) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
.DS_Store
|
||||||
|
Maps/
|
||||||
|
.claude/
|
||||||
@@ -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*
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -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 <b64> | 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": "<doc-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": "<doc-id>", "text": "<full markdown>", "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": "<id>", "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 <n> --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
|
||||||
Reference in New Issue
Block a user