blob: 22b102e3c73055a4faf7bbcf5bb29080ef4e57e5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# Scrypted Viewport v1 Technical Design Specification
Version: 1.0
## Overview
Scrypted Viewport is an Ethernet-powered ambient display appliance optimized for Scrypted camera and doorbell events.
Design goals:
- No Matter
- No HomeKit
- No polling
- No configuration UI
- No authentication
- No rendering engine
- No business logic on the device
Scrypted owns rendering, overlays, camera selection and interaction logic.
Scrypted Viewport owns Ethernet, JPEG decode, display, touch input and callback delivery.
## Hardware
### Controller
Waveshare ESP32-P4-ETH-POE
### Display
5" 800x480 IPS Capacitive Touch MIPI DSI display
## Boot
Power
-> DHCP
-> mDNS (_scrypted-viewport._tcp.local)
-> Wait
## Resolution
800x480 native.
Scrypted always renders 800x480 JPEGs.
## API
GET /health
POST /config
{
"display":"mudroom",
"callback":"http://scrypted.local:11080/api/viewport/touch"
}
POST /frame
Content-Type: image/jpeg
POST /sleep
POST /brightness
{
"brightness":75
}
## Touch Callback
{
"display":"mudroom",
"event":"tap",
"timestamp":1730000000
}
Supported:
- tap
- long_press
- swipe_left
- swipe_right
## Build
```sh
source ~/Dev/code/git/esp32/env.sh
cd ~/Dev/code/git/esp32/projects/esp32-poe-scrypted-viewport
idf.py set-target esp32p4
idf.py build
idf.py -p /dev/cu.usbmodem* flash monitor
```
## Philosophy
Scrypted Viewport is a thin network framebuffer appliance.
ESP:
- DHCP
- mDNS
- HTTP server
- JPEG decode
- framebuffer
- touch
- callback
Everything else belongs in Scrypted.
|