Compare commits

...

1704 Commits

Author SHA1 Message Date
Koushik Dutta
b784399afa server: verup 2025-07-25 11:04:16 -07:00
Koushik Dutta
0f16568edb tapo: fix broken plugin on windows 2025-07-22 11:11:16 -07:00
Koushik Dutta
7ecee115a6 sdk: remove object tracker 2025-07-20 10:14:16 -07:00
Koushik Dutta
34eb2be551 sdk: use mcp for tool call 2025-07-16 10:18:13 -07:00
Koushik Dutta
27ff0c8c80 Merge branch 'main' of github.com:koush/scrypted 2025-07-16 08:45:06 -07:00
Koushik Dutta
51c5df6802 core: build fix 2025-07-16 08:45:01 -07:00
Koushik Dutta
328bd78771 docker: fix grep error 2025-07-15 11:47:02 -07:00
Koushik Dutta
3d2ae6384f sdk: add support for custom interface descriptors 2025-07-13 13:32:53 -07:00
Koushik Dutta
e1ba16f708 openvino: use explicit shape for CRAFT 2025-07-13 13:10:12 -07:00
Koushik Dutta
6f47e39bf3 sdk: add level to externals, support rollup externals 2025-07-13 08:01:22 -07:00
Koushik Dutta
e38c3c975f server: dead code 2025-07-13 07:57:18 -07:00
Koushik Dutta
9c75b074b5 sdk: chat completion capabilties 2025-07-11 21:30:23 -07:00
Koushik Dutta
299d926eae install: add nvidia to install script 2025-07-10 19:53:13 -07:00
Koushik Dutta
22d0ce4f82 install: add nvidia to install script 2025-07-10 19:45:27 -07:00
Koushik Dutta
53c2b7cb58 postbeta 2025-07-10 08:52:43 -07:00
Koushik Dutta
86548f6fa4 server: add plugin node_volumes to path 2025-07-10 08:52:31 -07:00
Koushik Dutta
0e1e641f8f intel: fix oneapi path 2025-07-07 13:57:59 -07:00
Koushik Dutta
58e0a748c4 intel: fix oneapi path 2025-07-07 12:49:01 -07:00
Koushik Dutta
b4a58df53a intel: fix oneapi path 2025-07-07 10:40:33 -07:00
Koushik Dutta
b83b7ff559 intel: fix missing gpg 2025-07-07 10:37:15 -07:00
Koushik Dutta
de2173567e onnx: bump deps 2025-07-07 09:39:34 -07:00
Koushik Dutta
9c931b21dc ncnn: update 2025-07-07 09:18:57 -07:00
Koushik Dutta
5291afad6a install: update nvidia 2025-07-07 08:29:13 -07:00
Koushik Dutta
e1ac1ace87 install: update intel libs 2025-07-07 08:25:42 -07:00
Koushik Dutta
1f6f1a82aa Merge branch 'main' of github.com:koush/scrypted 2025-07-07 08:06:04 -07:00
Koushik Dutta
70af66a875 router: add cron 2025-07-07 08:05:55 -07:00
Koushik Dutta
b7bab5b2e2 vscode-typescript 2025-07-06 13:45:24 -07:00
Koushik Dutta
5d5686a9e7 common: util functions 2025-07-06 11:26:13 -07:00
Koushik Dutta
1eb5012e9b sdk: alternate streamChatCompletion signature 2025-07-05 09:28:02 -07:00
Koushik Dutta
3574e72e4f sdk: publish 2025-07-05 07:30:04 -07:00
Koushik Dutta
b7ff4dfd5e sdk: alternate streamChatCompletion signature 2025-07-05 07:29:32 -07:00
Koushik Dutta
e0ed953963 sdk: publish 2025-07-05 07:18:27 -07:00
Koushik Dutta
930690a4ba sdk: alternate streamChatCompletion signature 2025-07-05 07:16:33 -07:00
Koushik Dutta
1aa4d45caa sdk: update 2025-07-03 23:45:36 -07:00
Koushik Dutta
28fb2b0853 packages/deferred: publish 2025-07-03 23:02:48 -07:00
Koushik Dutta
4fae4fba3b sdk: update 2025-07-03 20:05:26 -07:00
Vitor Furlanetti
b72c8f59eb server: Fallback pip to latin (#1841) 2025-07-02 21:34:29 -07:00
Koushik Dutta
369ad59324 amcrest/http: fix http authentication when it includes query parameters 2025-07-02 09:05:24 -07:00
Koushik Dutta
51ac5a1042 core: fix first run missing users 2025-06-24 10:16:03 -07:00
Koushik Dutta
200c107e97 reolink: fix vs caching 2025-06-18 14:01:16 -07:00
Koushik Dutta
35139abe30 openvino: note int8 2025-06-18 09:39:47 -07:00
Koushik Dutta
dc7f305687 predict: publish clip 2025-06-17 20:40:45 -07:00
Koushik Dutta
2a479dd38a onnx: clip 2025-06-17 10:55:21 -07:00
Koushik Dutta
d32f9bb07a coreml: clip 2025-06-17 10:33:38 -07:00
Koushik Dutta
a33bed0b44 openvino: clip threads 2025-06-17 10:25:34 -07:00
Koushik Dutta
f9847f6f72 predict: wip clip 2025-06-17 10:14:11 -07:00
Koushik Dutta
add53d07f3 core: publish ui 2025-06-17 09:39:54 -07:00
Koushik Dutta
db21159299 sdk: fix broken package lock 2025-06-17 09:36:03 -07:00
Koushik Dutta
6fa7f06852 postbeta 2025-06-17 09:22:19 -07:00
Koushik Dutta
58387e5046 postbeta 2025-06-17 09:15:00 -07:00
Koushik Dutta
1589908698 sdk: fix python Buffer mapping 2025-06-17 09:11:25 -07:00
Koushik Dutta
d0183c29a8 sdk: add support for text embeddings 2025-06-17 09:07:35 -07:00
Koushik Dutta
99dcdd12cf postbeta 2025-06-16 08:41:56 -07:00
Koushik Dutta
b1861e4630 server: update deps 2025-06-16 08:41:47 -07:00
Koushik Dutta
193bfce979 core: publish 2025-06-14 19:56:03 -07:00
Koushik Dutta
5b7cc826a6 sdk/client: fix build issues 2025-06-14 19:54:05 -07:00
Koushik Dutta
8484d75e82 core: publish 2025-06-14 18:57:43 -07:00
Koushik Dutta
e8fef925bb ring: fix startup crash due to server changes 2025-06-14 16:01:11 -07:00
Koushik Dutta
fa200e1bbf sdk: update 2025-06-14 15:35:27 -07:00
Koushik Dutta
df0991b882 Merge branch 'main' of github.com:koush/scrypted 2025-06-14 13:30:03 -07:00
Koushik Dutta
93ff686000 sdk: add openai api for types 2025-06-14 13:29:58 -07:00
gtfrog
6ae9a5618d amcrest: fix NaN resolution values due to newline/cr, and add support for PAL named resolutions (#1833) 2025-06-14 10:35:43 -07:00
Koushik Dutta
c882b9a04e sdk: publish 2025-06-13 11:17:02 -07:00
Koushik Dutta
af4269be49 docker: include killall 2025-06-13 10:39:29 -07:00
Koushik Dutta
61ad99a3f6 docker: update flavors 2025-06-12 22:28:35 -07:00
Koushik Dutta
d71bbf1824 docker: better tags 2025-06-12 22:17:26 -07:00
Koushik Dutta
74674dab00 docker: lint 2025-06-12 21:35:58 -07:00
Koushik Dutta
247f860a23 intel: fix curl/gpg interaction maybe 2025-06-12 21:21:57 -07:00
Koushik Dutta
a801fe1f4e intel: fix curl/gpg interaction maybe 2025-06-12 21:18:28 -07:00
Koushik Dutta
6744851256 intel: add logging 2025-06-12 21:13:13 -07:00
Koushik Dutta
10569731aa intel: fix curl usage 2025-06-12 21:08:29 -07:00
Koushik Dutta
4965b1f99a intel: bump npu 2025-06-12 20:44:32 -07:00
Koushik Dutta
510250c60b intel: bump npu 2025-06-12 20:44:12 -07:00
Koushik Dutta
8e33775b0e docker: fix builds 2025-06-12 20:34:51 -07:00
Koushik Dutta
1077bd1f56 docker: add intel builds 2025-06-12 20:23:04 -07:00
Koushik Dutta
a485d8ae69 install: prep intel llm deps 2025-06-12 20:20:15 -07:00
Koushik Dutta
17f42762e7 install: prep intel llm deps 2025-06-12 20:08:08 -07:00
Koushik Dutta
49943a5408 postbeta 2025-06-09 12:09:39 -07:00
Koushik Dutta
585c638220 server: keepalive needs an explicit non-default duration. 2025-06-09 12:09:26 -07:00
Koushik Dutta
6767892c63 unifi-protect: fix login failures 2025-06-04 08:30:56 -07:00
Koushik Dutta
289555c03e unifi-protect: update api 2025-06-03 20:52:51 -07:00
Koushik Dutta
a563e17c56 core: publish ui 2025-05-31 09:02:33 -07:00
Koushik Dutta
54c317b217 detect: fix custom classifier filtering 2025-05-29 07:56:35 -07:00
Koushik Dutta
0df9c31480 core: publish ui 2025-05-28 12:05:47 -07:00
Koushik Dutta
19c8436256 Merge branch 'main' of github.com:koush/scrypted 2025-05-28 11:59:05 -07:00
Koushik Dutta
b73526674a detect: add custom classifier filtering 2025-05-28 11:59:00 -07:00
LV Nilesh
fd863f4ba3 Update Dockerfile.full (#1818) 2025-05-26 19:41:59 -07:00
LV Nilesh
634b65c216 Update Dockerfile.lite (#1817) 2025-05-26 19:41:51 -07:00
Brett Jia
548086403b server: bind single address if cluster address is 127.0.0.1 (#1820) 2025-05-26 19:41:17 -07:00
LV Nilesh
867432cd82 docker: Update Dockerfile to noble (#1813) 2025-05-24 21:25:54 -07:00
Koushik Dutta
b3cc914772 Merge branch 'main' of github.com:koush/scrypted 2025-05-23 10:01:39 -07:00
Koushik Dutta
b297a4d3d6 webrtc: fix possible crash if no video stream is negotiated 2025-05-23 10:01:32 -07:00
Mehmet Bayram
8144588bcf hikvision: improve supplemental light mode handling (#1812) 2025-05-22 20:13:37 -07:00
Koushik Dutta
f3265f5fb6 detect: cluster fixes 2025-05-21 12:33:04 -07:00
Koushik Dutta
f686812f01 core: update ui 2025-05-21 12:32:52 -07:00
Koushik Dutta
552787e06b detect: custom model support 2025-05-20 22:01:26 -07:00
Koushik Dutta
3c4de5af39 core: publish ui update 2025-05-20 21:12:49 -07:00
Koushik Dutta
e08df29373 ncnn: fp16 math 2025-05-20 10:34:42 -07:00
Koushik Dutta
1efb624681 proxmox: bump to 139 2025-05-13 08:04:48 -07:00
apocaliss92
09afc6c96c reolink: Fix events stopping for NVRs (#1804)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-05-09 20:38:17 -07:00
Koushik Dutta
666d2903e4 install: remove intel debug symbols 2025-05-08 18:31:42 -07:00
Koushik Dutta
24eb60bce1 install: bump ha 2025-05-08 13:21:32 -07:00
Koushik Dutta
d1951687be postbeta 2025-05-08 07:06:10 -07:00
Koushik Dutta
3c3c2c1610 core: patch lxc updater 2025-05-07 16:20:54 -07:00
Koushik Dutta
0f9106c639 postrelease 2025-05-07 10:18:33 -07:00
Koushik Dutta
ab00ade016 install: bump node 2025-05-07 09:32:35 -07:00
Koushik Dutta
6cfc3db05c server: fix package lock 2025-04-29 11:43:02 -07:00
Koushik Dutta
95aa58ce38 postbeta 2025-04-28 20:30:02 -07:00
Koushik Dutta
0d88b4746b ncnn: publish face/text 2025-04-28 12:54:15 -07:00
Koushik Dutta
8c4beeb3a0 Merge branch 'main' of github.com:koush/scrypted 2025-04-28 12:09:32 -07:00
Koushik Dutta
4846cfaddf ncnn: face recognition support 2025-04-28 12:09:26 -07:00
Koushik Dutta
4e14f7fd6f common: rtsp server basic auth fix 2025-04-28 12:09:13 -07:00
Roman Sokolov
266be72606 Fixed an issue for some devices. They send screen width as not even value. (#1797) 2025-04-27 14:04:00 -07:00
Koushik Dutta
6a1970c075 ncnn: update model list 2025-04-27 10:15:54 -07:00
Koushik Dutta
0575d98424 ncnn: publish 2025-04-26 21:31:06 -07:00
Koushik Dutta
cdf42fc1a2 rebroadcast: fix url escaping for basic auth 2025-04-24 19:23:23 -07:00
Koushik Dutta
fc1fabc49e common/webrtc: expand h265 keyframe types 2025-04-22 22:20:24 -07:00
Koushik Dutta
4e08daecb2 Merge branch 'main' of github.com:koush/scrypted 2025-04-21 09:02:30 -07:00
Koushik Dutta
58b27805ba common: fix sdp default rtpmap props 2025-04-21 09:02:25 -07:00
Koushik Dutta
b37c6bbd06 postbeta 2025-04-19 12:07:22 -07:00
Koushik Dutta
8eca02d819 server: move cluster fork timeout to prior to fork 2025-04-19 12:07:07 -07:00
Koushik Dutta
0efdb34114 postbeta 2025-04-19 10:53:40 -07:00
Koushik Dutta
1a25100de2 server: replace mime with mime-type which isnt esmodule 2025-04-19 10:53:30 -07:00
Koushik Dutta
51e0a8836d videoanalysis: fix occupancy sensor picking 2025-04-19 08:11:43 -07:00
Koushik Dutta
562d0839b7 videoanalysis: fix smart sensor picking 2025-04-19 08:10:37 -07:00
Koushik Dutta
e3df6accea videoanalysis: make sure duplciate nvr vs camera detections dont cause ui weirdness 2025-04-18 12:43:26 -07:00
Koushik Dutta
03d159a89c server: remove debug code 2025-04-18 11:51:00 -07:00
Koushik Dutta
4ead4726a9 postbeta 2025-04-18 11:49:45 -07:00
Koushik Dutta
b06ef623b3 server: fix potential socket leak if cluster server is down 2025-04-18 11:49:36 -07:00
Koushik Dutta
8edb157e2a snapshot: fix crop and scale 2025-04-17 16:03:03 -07:00
Koushik Dutta
155a1ceb38 rpc: publish 2025-04-15 15:10:30 -07:00
Koushik Dutta
1cb6212fc6 webrtc: implement default clocks for assigned payload types 2025-04-15 07:53:28 -07:00
Koushik Dutta
d1bfed3019 install: make sure amd installer updates repos? 2025-04-10 20:35:37 -07:00
Koushik Dutta
6bf10d4aff install: update intel repos 2025-04-10 19:31:11 -07:00
Koushik Dutta
3ceef8ff87 install: update intel repos 2025-04-10 19:10:41 -07:00
Koushik Dutta
df1155cf82 postbeta 2025-04-10 10:52:51 -07:00
Koushik Dutta
453469ed98 server: implement sendStream backpressure handling 2025-04-10 10:52:42 -07:00
Koushik Dutta
2e4dbceb0e postbeta 2025-04-10 10:47:58 -07:00
Koushik Dutta
c620a4e126 server: ensure sendStream terminates on connection close 2025-04-10 10:47:48 -07:00
Koushik Dutta
5698551b7e common: fix h265 aggregation packet recency check 2025-04-09 15:33:50 -07:00
Koushik Dutta
9e655c0a53 postbeta 2025-04-09 09:37:54 -07:00
Koushik Dutta
35dadaab93 server: enable tcp keepalive for cluster 2025-04-09 09:37:45 -07:00
pir8radio
76487091da install: windows script requests elevation to to admin automatically (#1788)
let the script relaunch itself with admin privileges.  Can be a pain, when launching powershell as admin, you can't drag and drop the script into a powershell window.   This just makes it easier for people new to powershell.
2025-04-09 08:24:07 -07:00
Koushik Dutta
3c5b8bc940 common: fix h265 sei prefix vs suffix separation 2025-04-08 12:28:50 -07:00
Koushik Dutta
37e5c49729 github: remove router build 2025-04-08 10:45:50 -07:00
Koushik Dutta
16fc4407c1 use mime rather than send 2025-04-08 09:00:51 -07:00
Koushik Dutta
3e76c1b1d3 snapshot: remove audio feed in prebuffer request 2025-04-08 08:32:59 -07:00
Koushik Dutta
d6c6e3c594 install: fix macos install 2025-04-07 10:55:54 -07:00
apocaliss92
6c904da49b reolink: Add locallink endpoint (#1782)
* Add API to check wifi connectivity

* Comment removed

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-04-07 08:30:58 -07:00
Koushik Dutta
6ac790f824 webhook: prevent enable on internal types, fixup code to not require mixin existence 2025-04-07 08:17:38 -07:00
Koushik Dutta
3638f80cef mqtt: prevent enable on internal types 2025-04-07 08:17:23 -07:00
Koushik Dutta
809b632417 server: add more cluster logging 2025-04-05 14:07:35 -07:00
Koushik Dutta
f53330c861 webrtc: improve sending codec information only after a marker packet 2025-04-05 10:00:12 -07:00
Koushik Dutta
66455c8f01 rebroadcast: fix bug where stream may be started on fragmented key frame 2025-04-05 09:57:21 -07:00
Koushik Dutta
e6eb61f04f webrtc: more h265 packetizer fixes 2025-04-04 22:48:51 -07:00
Koushik Dutta
adeb3d837e Merge branch 'main' of github.com:koush/scrypted 2025-04-04 15:58:05 -07:00
Koushik Dutta
3da3f85513 webrtc: fix h265 packetizer ap resent for chrome 2025-04-04 15:58:00 -07:00
Koushik Dutta
cbe251e345 docker: bump node to 22 2025-04-04 12:18:59 -07:00
Koushik Dutta
dfa2dacde4 postbeta 2025-04-04 11:40:16 -07:00
Koushik Dutta
9395253b50 server: more express 5.0 fixes 2025-04-04 11:40:04 -07:00
Koushik Dutta
e020ee1517 server: fix breakage caused by path-to-regexp updates 2025-04-04 11:39:03 -07:00
Koushik Dutta
a7ecb9b5e5 postbeta 2025-04-04 11:39:03 -07:00
Koushik Dutta
24f9b0fca3 postbeta 2025-04-04 11:39:03 -07:00
Koushik Dutta
a78ad99f50 server: update deps 2025-04-04 11:39:03 -07:00
Koushik Dutta
c26c5e94a4 server: fix type error in createRpcIoPeer 2025-04-04 11:38:55 -07:00
Koushik Dutta
2d93a69c91 homekit/rebroadcast: fix prebuffer calculation, remove prebuffer warning 2025-04-02 22:12:12 -07:00
Koushik Dutta
1c52297e74 sdk: remove legacy flush/queued from VideoFrame 2025-04-02 20:58:25 -07:00
Koushik Dutta
5bc76642cc webrtc: fix ice restart 2025-04-02 20:57:37 -07:00
Koushik Dutta
15fa27029d webrtc: update werift with connection related hang fixes 2025-04-02 12:34:50 -07:00
Koushik Dutta
553678ed1a rebroadcast: Fix cluster addresses not being used 2025-04-02 12:33:45 -07:00
Koushik Dutta
b3b7265263 rebroadcast: wipe acodec arguments if encoder arguments are explicitly provided 2025-04-01 20:51:07 -07:00
Koushik Dutta
301213fc5f rebroadcast: remove dead code 2025-03-31 11:07:28 -07:00
Koushik Dutta
da393ae4e0 rebroadcast: ensure audio mute/no audio is in sync 2025-03-31 10:57:09 -07:00
Koushik Dutta
9376fc4ba6 common: fixup codec info in packet delivery 2025-03-28 12:58:32 -07:00
Koushik Dutta
51d4aa7b3e sdk: update 2025-03-27 09:38:28 -07:00
Koushik Dutta
30334e5bd0 webrtc: support for alternateCodecs and codec switching 2025-03-26 23:58:21 -07:00
Koushik Dutta
dffc05d165 external: update werift 2025-03-26 19:40:45 -07:00
Koushik Dutta
172e5b3ccb sdk: add codec switch hint 2025-03-25 16:15:51 -07:00
Koushik Dutta
cad60e7730 webrtc/common: fix sdp construction when audio is sideband copied. maybe get rid of this process? 2025-03-25 09:08:46 -07:00
Koushik Dutta
131458576c webrtc: fix handshake negotiation resetting the sender 2025-03-24 20:41:16 -07:00
Koushik Dutta
0d7b47e1e9 webrtc: update 2025-03-22 20:56:56 -07:00
Koushik Dutta
1a33384115 webrtc: fixup h265 keyframe hunting 2025-03-21 23:51:24 -07:00
Koushik Dutta
1fa5f66b44 Merge branch 'main' of github.com:koush/scrypted 2025-03-21 23:21:24 -07:00
Koushik Dutta
1032d444fb google-home: fix build 2025-03-21 23:19:52 -07:00
Koushik Dutta
2883824690 webrtc: add alternate codecs 2025-03-21 19:32:51 -07:00
Koushik Dutta
a505394852 sdk: add audio request hints 2025-03-21 19:22:59 -07:00
Koushik Dutta
1240f401d7 alexa: clean up removed devices 2025-03-21 08:08:27 -07:00
Koushik Dutta
b49faaa033 webrtc: fix rtcp pli from browser 2025-03-20 23:24:37 -07:00
Koushik Dutta
cbb1d4533a vscode-typescript: update sample 2025-03-20 23:24:18 -07:00
Koushik Dutta
a5a027bd6d ncnn: doc flags 2025-03-20 22:30:29 -07:00
Koushik Dutta
94acd0e800 unifi-protect: Fixup codec reporting 2025-03-19 13:19:20 -07:00
Koushik Dutta
cabdd91a92 unifi-protect: update sdk 2025-03-19 13:14:36 -07:00
Koushik Dutta
93c9b62e87 common: disposable queue 2025-03-19 09:11:15 -07:00
Koushik Dutta
21c771d50f common: deferred dispose 2025-03-18 19:08:34 -07:00
Koushik Dutta
bb2ecd7bd8 reolink: fix optional chaining for mainEncType 2025-03-18 11:57:02 -07:00
apocaliss92
6c0864b883 reolink: Disable siren polling (#1774)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-03-18 11:54:33 -07:00
Koushik Dutta
3c8ef7a2cf core: publiush 2025-03-18 09:14:21 -07:00
Koushik Dutta
6afecc8185 homekit: workaround homekit requesting low resolution streams 2025-03-17 10:42:16 -07:00
Koushik Dutta
ea16381b7a homekit: build fixes 2025-03-17 10:19:55 -07:00
Koushik Dutta
09d3ac587f webrtc: publish h265 support 2025-03-16 23:31:05 -07:00
Koushik Dutta
3872cb391a rebroadcast: publish with h265 parsing fixes 2025-03-16 23:22:39 -07:00
Koushik Dutta
7d985937ca webrtc: send desired codecs 2025-03-16 21:16:09 -07:00
Koushik Dutta
cef8482b93 sdk: partial revert of ffmpeg input changes 2025-03-16 19:52:47 -07:00
Koushik Dutta
f729c76346 various: remove defunct ffmpeg args 2025-03-16 19:09:40 -07:00
Koushik Dutta
9aa9498aae sdk: video stream negotiation cleanups 2025-03-16 18:56:48 -07:00
Koushik Dutta
afe832a32a webrtc: h265 beta, requires new nvr plugin or nvr will break 2025-03-15 23:23:35 -07:00
Koushik Dutta
be6a81c9a2 common: fix h265 agg parsing 2025-03-15 22:21:41 -07:00
Koushik Dutta
964bb27d48 common: fix h265 idr seeking 2025-03-15 22:00:24 -07:00
Koushik Dutta
6bca83b338 webrtc: provide h265 hint when available 2025-03-15 17:12:23 -07:00
Koushik Dutta
11860409f1 snapshot: fix h265 prebuffer snapshot 2025-03-15 16:32:00 -07:00
Koushik Dutta
6743f76e09 webrtc: wip h265 2025-03-15 16:24:48 -07:00
Koushik Dutta
771d90ea73 rebroadcast: publish 2025-03-15 08:11:39 -07:00
Koushik Dutta
ba28899dc3 rebroadcast: beta 2025-03-15 00:52:44 -07:00
Koushik Dutta
3e57c90208 rebroadcast: fix mixin order 2025-03-15 00:52:07 -07:00
Koushik Dutta
e155584373 reolink: publish 2025-03-13 21:12:08 -07:00
Koushik Dutta
4a3968956e snapshot: publish 2025-03-13 21:11:07 -07:00
Koushik Dutta
78c259d14e hikvision: light/alarm 2025-03-13 21:10:12 -07:00
Koushik Dutta
6f4b360d2a nanokvm: persist settings from device creation 2025-03-13 15:27:39 -07:00
Koushik Dutta
642795dd9d nanokvm: ip hint 2025-03-13 15:26:39 -07:00
Koushik Dutta
4b3d37b628 nanokvm: heartbeat 2025-03-13 15:22:33 -07:00
Koushik Dutta
8e28e6d19e nanokvm: fixup keywords 2025-03-13 11:29:25 -07:00
Koushik Dutta
d13171551d nanokvm: readme 2025-03-13 11:28:16 -07:00
Koushik Dutta
ea1474c21e nanokvm: publish 2025-03-13 11:22:41 -07:00
Koushik Dutta
7abff3a91b nanokvm: fixup modifiers 2025-03-13 11:14:50 -07:00
Koushik Dutta
40f11a0053 nanokvm: remove logging 2025-03-13 10:48:42 -07:00
Koushik Dutta
1d3450455b core: publish 2025-03-13 10:13:38 -07:00
Koushik Dutta
bd3b4ac387 client: publish 2025-03-13 10:12:56 -07:00
Koushik Dutta
6787153c30 nanokvm: initial commit 2025-03-13 10:05:15 -07:00
Koushik Dutta
7024daba53 sdk: kvm input 2025-03-12 16:32:57 -07:00
Koushik Dutta
28a2e0d898 sdk: shim for es modules 2025-03-12 10:13:19 -07:00
Koushik Dutta
a7757a9a54 docker: bump node version 2025-03-12 10:03:42 -07:00
Koushik Dutta
84fc40e1e5 postbeta 2025-03-12 09:46:36 -07:00
Koushik Dutta
b3b8f6bc70 server: remove eseval 2025-03-12 09:46:28 -07:00
Koushik Dutta
7962606a2b postbeta 2025-03-12 09:32:31 -07:00
Koushik Dutta
9c2ea7d2bc server: another attempt at node/esmodule interop with tsc 2025-03-12 09:32:20 -07:00
Koushik Dutta
4e653a9942 Revert "server: fixup es-eval"
This reverts commit 51836ca59f.
2025-03-12 09:19:29 -07:00
Koushik Dutta
167db0f11a router: usbmuxd persistence 2025-03-12 09:07:04 -07:00
Koushik Dutta
49064de767 postbeta 2025-03-12 09:01:21 -07:00
Koushik Dutta
51836ca59f server: fixup es-eval 2025-03-12 09:01:12 -07:00
Koushik Dutta
d64ed629b0 router: install usbmuxd for iphone tethering 2025-03-11 23:40:01 -07:00
Koushik Dutta
83a9ad2250 rebroadcast: reorder mixin order for regular (ie, non webrtc) cameras to be first to prevent stream flapping due to mixin change noise 2025-03-11 15:24:40 -07:00
Koushik Dutta
7f9358a3b5 webrtc: fix potential webrtc camera thread leak 2025-03-11 14:45:30 -07:00
Koushik Dutta
9cf3d6c912 webrtc: leak and crash fixes 2025-03-11 14:41:51 -07:00
Koushik Dutta
5e3d1c423c common: build fixes 2025-03-11 10:05:24 -07:00
Koushik Dutta
64fa68f2d0 core: publish 2025-03-11 10:05:12 -07:00
Koushik Dutta
45cc859636 router: enable all ip forwarding, install coturn 2025-03-10 11:27:28 -07:00
Koushik Dutta
1984bb44ba router: enable all ip forwarding, install coturn 2025-03-10 11:24:37 -07:00
Koushik Dutta
1164e4b15b router: ipv6 forwarding 2025-03-10 00:43:58 -07:00
Koushik Dutta
9e5fbc5251 postbeta 2025-03-09 19:54:38 -07:00
Koushik Dutta
6f52390067 Merge branch 'main' of github.com:koush/scrypted 2025-03-09 19:54:09 -07:00
Koushik Dutta
d34afab6a4 server: ensure proper ip type checking 2025-03-09 19:53:36 -07:00
Koushik Dutta
2edc74f75b postbeta 2025-03-09 10:13:56 -07:00
Koushik Dutta
e913131f90 server: log denied address 2025-03-09 10:13:43 -07:00
Koushik Dutta
bca752addb postbeta 2025-03-09 09:55:16 -07:00
Koushik Dutta
43fc6c9fc9 server: fix address check 2025-03-09 09:54:48 -07:00
Koushik Dutta
448e2c4e6e router: fix names 2025-03-08 23:51:15 -08:00
Koushik Dutta
625ea7981e router: fix paths 2025-03-08 23:32:58 -08:00
Koushik Dutta
1be806eb8e docker: add router builds 2025-03-08 23:31:10 -08:00
Koushik Dutta
e4b71ffbd4 postbeta 2025-03-08 23:16:51 -08:00
Koushik Dutta
16f4cafea3 server: fix listen sets to listen all and reject on unauthorized address 2025-03-08 23:16:42 -08:00
Koushik Dutta
f78df27341 ncnn: initial commit 2025-03-08 14:08:53 -08:00
Koushik Dutta
57d4e4b9bd core: publish 2025-03-07 21:20:42 -08:00
Koushik Dutta
cb1c062b5e core: publish 2025-03-07 21:19:07 -08:00
Koushik Dutta
e3b996562c Merge branch 'main' of github.com:koush/scrypted 2025-03-07 21:11:22 -08:00
Koushik Dutta
c96bf237b5 core: publish 2025-03-07 21:11:20 -08:00
apocaliss92
5bde86fd15 hikvision: Ptz + presets implemented (#1764)
* Hikvision: Ptz + presets implemented

* Sweeter ptz commands

* Presets fetching

* Capabilities used to enable PTZ

* Redundant call removed

* Logs removed

* Variable moved

* Revert some async changes

* Persist hasPtz

* Move alarm and light to same block

* Log removed

* Fix ptz presets selection

* never disable ptz

* Make devices and ptz caps user-selectable

* undefined check for presets result

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-03-07 19:31:20 -08:00
Koushik Dutta
5075920308 postbeta 2025-03-05 08:34:16 -08:00
Koushik Dutta
9e4845b868 server: allow interface name in SCRYPTED_CLUSTER_ADDRESS 2025-03-05 08:34:05 -08:00
Koushik Dutta
0cab8f2faf core: fix buikd 2025-03-04 20:52:32 -08:00
Koushik Dutta
510321b7d6 postbeta 2025-03-04 19:46:46 -08:00
Koushik Dutta
efb0a39e52 server: fixup SCRYPTED_SERVER_LISTEN_HOSTNAMES 2025-03-04 19:46:13 -08:00
Koushik Dutta
467d89ccaf postbeta 2025-03-04 18:58:40 -08:00
Brett Jia
19832c9537 python: partial repl reimplementation (#1763)
* python: partial repl reimplementation

* make more readable?

* document questionable design choices
2025-03-04 14:37:55 -08:00
Koushik Dutta
0b24e57262 sdk: cleanup peer dependencies 2025-03-04 10:00:40 -08:00
Koushik Dutta
f406969140 sdk: remove col1/2 for description 2025-03-04 09:35:32 -08:00
Koushik Dutta
4db26a1779 sdk: relax types 2025-03-04 08:15:32 -08:00
Koushik Dutta
bfc82d0010 sdk: network types 2025-03-03 19:05:47 -08:00
Koushik Dutta
df3a3d279c router: fix file path 2025-03-03 10:53:33 -08:00
Koushik Dutta
bb7f2a0c9b postbeta 2025-03-03 10:38:28 -08:00
Koushik Dutta
3f83d4b8f7 server: improve plugin kill race conditions on update 2025-03-03 10:38:18 -08:00
Koushik Dutta
779fa1df9c Merge branch 'main' of github.com:koush/scrypted 2025-03-03 09:43:56 -08:00
Koushik Dutta
1c08313e8b server: cleanup runtime worker hooks 2025-03-03 09:43:51 -08:00
root
64e8dc2cc9 router: fix nft flush 2025-03-03 17:42:47 +00:00
Koushik Dutta
1914fa60ea router: file naming consistency 2025-03-03 08:39:25 -08:00
Koushik Dutta
8073a80bae router: typo 2025-03-03 08:28:26 -08:00
Koushik Dutta
cd7d45155f proxmox: fixup confusion around reset script and storage 2025-03-03 08:00:38 -08:00
Koushik Dutta
6f6ccff5b1 server: missing dhcp client 2025-03-03 07:55:48 -08:00
Koushik Dutta
4ea8049d22 server: additional service files 2025-03-03 07:55:02 -08:00
Koushik Dutta
8354564157 postbeta 2025-03-02 18:50:14 -08:00
Koushik Dutta
26518f0693 server: reduced listening address set 2025-03-02 18:48:01 -08:00
Koushik Dutta
72df40c422 postbeta 2025-03-02 15:02:45 -08:00
Koushik Dutta
fe1b677381 server: limit address binding in cluster mode 2025-03-02 14:57:56 -08:00
Koushik Dutta
16a9abeb9e Merge branch 'main' of github.com:koush/scrypted 2025-02-28 21:05:08 -08:00
Koushik Dutta
ba07aa7765 router: caddy 2025-02-28 21:05:04 -08:00
apocaliss92
35e508a01e snapshot: Allow sleeping cameras to have longer lived snapshots (#1747)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-27 22:30:30 -08:00
apocaliss92
1e709a058d reolink: Add polling to reolink discovered devices (#1744)
* Add polling to reolink discovered devices

* Don't poll battery devices

* Logic moved to forever cycle

* Poll battery devices only when they wake up

* Wrap each poll in try/catch

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-27 22:29:12 -08:00
Mehmet Bayram
f5a4bab0a8 hikvision: Improve handling of supplemental light and alarm (#1739)
* hikvision: Remove settings from alarm switch
Dynamically choose supplemental light mode
Rename floodlight to supplemental light
Prevent child device removal if no devices detected
Report devices when settings are saved
Remove unused functions

* fix: push DeviceProvider interface

* hikvision: Add README support to Alarm Switch and update interfaces

* hikvision: add device release method

* hikvision: add IP check before accessing alarm and light capabilities

* hikvision: Centralize alarm activation logic
2025-02-27 22:28:24 -08:00
Koushik Dutta
e373a3935e router: fixup policies 2025-02-26 19:15:46 -08:00
Koushik Dutta
f9f9762046 docker: router shuffling 2025-02-26 11:20:35 -08:00
Koushik Dutta
4b6751785c Merge branch 'main' of github.com:koush/scrypted 2025-02-25 21:14:20 -08:00
Koushik Dutta
133cbcf5f5 sdk: add col 2025-02-25 21:14:14 -08:00
LV Nilesh
817c171757 docker: update BASE (#1748)
https://github.com/koush/scrypted/pull/1745#issuecomment-2677176155
2025-02-25 09:04:36 -08:00
LV Nilesh
9af9359b26 docker: Update Dockerfile.full.header (#1749) 2025-02-25 09:04:17 -08:00
Koushik Dutta
b684ced629 install: nftables 2025-02-23 18:54:58 -08:00
apocaliss92
977db49f87 reolink: Add optional chain to live check (#1746)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-22 23:53:13 -08:00
Koushik Dutta
992fe98f5e core/sdk: update 2025-02-22 19:39:08 -08:00
Koushik Dutta
a74157168e sdk: update 2025-02-22 14:20:55 -08:00
Koushik Dutta
0eed5241f0 sdk: update 2025-02-22 14:20:00 -08:00
Koushik Dutta
c0680736e7 sdk: update 2025-02-21 19:25:41 -08:00
Koushik Dutta
c345f173d2 docker: set SHELL 2025-02-21 08:25:06 -08:00
Koushik Dutta
1ed10cd1cb sdk: radio support 2025-02-20 12:06:51 -08:00
Koushik Dutta
9426db12aa client/server: update deps 2025-02-19 14:56:53 -08:00
Koushik Dutta
a35e821f79 intall: router dockerfile updates 2025-02-19 14:56:39 -08:00
Koushik Dutta
983794d5d0 plugins: remove usage of builtin in favor of internal 2025-02-19 14:56:00 -08:00
Koushik Dutta
cd3e2340b8 rebroadcast: most camera plugins depend on this, so ensure snapshot and webrtc are downloaded as well 2025-02-19 14:55:32 -08:00
Koushik Dutta
bb82eb6bde sdk: Update 2025-02-19 14:28:56 -08:00
Koushik Dutta
5006bb90fc postbeta 2025-02-18 13:53:13 -08:00
Koushik Dutta
7134ef114a server: fixup staged cleanup 2025-02-18 13:53:03 -08:00
Koushik Dutta
2f5b1f6526 postbeta 2025-02-18 13:46:21 -08:00
Koushik Dutta
f88f0a25db server: try staged cleanup 2025-02-18 13:46:11 -08:00
Koushik Dutta
d2810b09ed docker: lite/systemd test 2025-02-17 23:06:33 -08:00
Koushik Dutta
f103ddf660 openvino: fix npu/gpu crashes caused by dynamic input sizes 2025-02-16 15:32:02 -08:00
Koushik Dutta
47edffa56d openvino: regenerate face embedding model 2025-02-16 11:50:05 -08:00
Koushik Dutta
86a5a73276 openvino: workaround for npu crash https://github.com/openvinotoolkit/openvino/issues/29003#issuecomment-2660865184 2025-02-15 08:17:02 -08:00
Koushik Dutta
1a47015558 openvino: more precise npu usage 2025-02-14 11:58:57 -08:00
Koushik Dutta
0de9812760 videoanalysis: fix zone names with hyphens 2025-02-14 11:46:36 -08:00
Koushik Dutta
10d16dab21 hikvision: remove dead code/ 2025-02-14 09:05:38 -08:00
Koushik Dutta
f3f4bbc77f hikvision-doorbell: fix buikd 2025-02-13 13:54:42 -08:00
Koushik Dutta
029f788407 hikvision: cleanup 2025-02-12 21:55:13 -08:00
Mehmet Bayram
89b93eb2f4 hikvision: Add Supplemental Light & Alarm Support to Hikvision Plugin (#1737)
* feat: add supplemental light control for Hikvision cameras

* Add supplemental light control as device

* Add alarm switch with audio/light alarm settings

* Get alarm trigger configuration and capabilities for audio and white light alarms

* Simplify alarm settings retrieval
2025-02-12 21:24:38 -08:00
Koushik Dutta
6fd35e54e6 openvino: rollback openvino 2025-02-12 15:36:57 -08:00
Koushik Dutta
118c404525 sdk: fix and publish 2025-02-12 15:01:49 -08:00
Koushik Dutta
833ecb721f tensorflow-lite: pass through forked flag 2025-02-12 13:39:55 -08:00
Koushik Dutta
a8f1e74278 tensorflow-lite: pass through forked flag 2025-02-12 13:38:18 -08:00
apocaliss92
1075fb4491 sdk: Sensors interface (#1731)
* Sensors interface

* Sensors as mapping type

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-12 13:02:25 -08:00
Koushik Dutta
f09a797ebf core: publish with ui fixes 2025-02-12 09:55:56 -08:00
Koushik Dutta
1e0fdee7b6 Merge branch 'main' of github.com:koush/scrypted 2025-02-12 09:29:15 -08:00
Koushik Dutta
be6375e9f4 tensorflow-lite: add cluster aware 2025-02-12 09:28:06 -08:00
apocaliss92
e5ba39f886 reolink: Forward battery cams detections (#1730)
* Reolink: Forward battery cams detections

* Used right return

* log removed

* use ability to determine events source

* Reuse same branching for events

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-11 11:43:31 -08:00
Brett Jia
6841b74a26 core: exit terminal's subprocess on generator end (#1733) 2025-02-10 16:18:21 -08:00
Koushik Dutta
a3f45e2c49 predict: favor ipv4 for file downloads 2025-02-10 09:14:34 -08:00
Koushik Dutta
b664ccd24f Update install-scrypted-proxmox.sh 2025-02-09 12:00:18 -08:00
Koushik Dutta
3f244b586f install: fix broken intel runtime installer 2025-02-09 11:24:33 -08:00
Koushik Dutta
9f828739de install: update intel libs 2025-02-09 09:08:46 -08:00
Koushik Dutta
b2cef35bc0 openvino: beta with latest 2025-02-09 09:02:02 -08:00
Koushik Dutta
3e54540db7 webrtc: update werift for chrome 132 compatibility 2025-02-08 17:51:04 -08:00
Koushik Dutta
debd7f2c40 onvif: fix onvif ptz with onvif plugin cams 2025-02-08 09:43:29 -08:00
Koushik Dutta
adbc2aaed9 onvif: add text overlays 2025-02-08 09:41:48 -08:00
Koushik Dutta
6024b4ceaf reolink/hikvision: publish 2025-02-08 08:26:28 -08:00
apocaliss92
3a065febb5 hikvision: fix get/patch osd settings (#1728)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-08 08:23:24 -08:00
apocaliss92
1e2c3e0ca7 reolink: Add pir sensor device (#1729)
* Reolink: Add pir sensor device

* Reolink: add siren to hub cameras

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-08 08:23:07 -08:00
Koushik Dutta
61dfddeab2 Create config.yml 2025-02-07 22:02:39 -08:00
Koushik Dutta
b902873d44 hikvision: overlay support 2025-02-07 20:14:14 -08:00
Koushik Dutta
a38d803b86 reolink: overlay support 2025-02-07 13:58:25 -08:00
Koushik Dutta
9c3dab18da sdk/client/server/core/amcrest: add support for video text overlays 2025-02-07 13:07:55 -08:00
Koushik Dutta
2ceb2cd9c3 alexa: maybe fix alexa when no detection types are available 2025-02-05 12:49:04 -08:00
Koushik Dutta
a5fd1c0278 postbeta 2025-02-05 12:09:25 -08:00
Koushik Dutta
2c717cb4fc postrelease 2025-02-05 12:09:03 -08:00
Koushik Dutta
df10c4e5f2 server: fixup address, make it available on cluster manager 2025-02-05 12:08:50 -08:00
Koushik Dutta
7c51bb420e postbeta 2025-02-05 11:51:38 -08:00
Koushik Dutta
367eafff5c postrelease 2025-02-05 11:51:26 -08:00
Koushik Dutta
adcdd18497 server: add cluster worker address 2025-02-05 11:51:07 -08:00
Koushik Dutta
a95b77fe26 sdk: add cluster worker address 2025-02-05 11:49:26 -08:00
Koushik Dutta
3ff75f0fde postbeta 2025-02-05 08:01:46 -08:00
Koushik Dutta
eecd38d271 postrelease 2025-02-05 08:01:39 -08:00
Koushik Dutta
7128af20af postbeta 2025-02-04 19:23:00 -08:00
Koushik Dutta
c651c2164b server: fixup cluster worker hook 2025-02-04 19:22:49 -08:00
Koushik Dutta
6caafd73f5 postbeta 2025-02-04 19:19:38 -08:00
Koushik Dutta
05cb505783 server: hook cluster creation for electron 2025-02-04 19:19:30 -08:00
Koushik Dutta
07baddc9c3 sdk: update detection properties 2025-02-04 13:59:39 -08:00
Koushik Dutta
76ac260bf7 hikvision: fix unhandled rejection parsing camera object detection 2025-02-04 07:45:36 -08:00
Koushik Dutta
dfee7c6b09 Merge branch 'main' of github.com:koush/scrypted 2025-02-04 07:37:46 -08:00
Koushik Dutta
b3ce6a2af3 postbeta 2025-02-04 07:37:15 -08:00
Koushik Dutta
933c0cac0f postrelease 2025-02-04 07:37:02 -08:00
apocaliss92
1fb1334a00 snapshot: Sleeping cameras should not wake for periodic snapshots (#1718)
* Preserve battery on snapshots

* Don't force snapshot below 1 min

* Online interface changes

* Pr comments fix

* Interval removed

* Debounce restored

* Branching fixes

* Fix isBattery leftover

* Remove prebuffer check

* Remove comment

* Remove unused import

* Use Sleep interface

* Disable default prebuffer for Sleep devices

* Rollback default changes

* Unused import removed

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-03 10:55:58 -08:00
apocaliss92
cb45a00c25 reolink: Battery cams api fixes (#1719)
* Battery cams api fixes

* Update with new Sleep class

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-02-03 08:51:45 -08:00
Koushik Dutta
fec59af263 core: support cluster fork for terminal 2025-02-02 22:34:44 -08:00
Koushik Dutta
5d213a4c51 Merge branch 'main' of github.com:koush/scrypted 2025-02-02 22:33:28 -08:00
Koushik Dutta
d444c4ab7c sdk: update 2025-02-02 22:33:23 -08:00
Brett Jia
590f955ca9 core: terminalservice fork across cluster (#1721)
* core: terminalservice fork across cluster

* exit cluster fork on completion

* force terminate on errors

* make isClusterFork internal to prevent callers from killing core plugin

* implement forkInterface and share forks

* use correct native id

* use correct native id in primary device construction
2025-02-01 22:33:29 -08:00
Koushik Dutta
7df4bf2723 postbeta 2025-02-01 19:28:40 -08:00
Brett Jia
3416347a1f server/python: fix hash calculation (#1720) 2025-02-01 19:28:17 -08:00
Koushik Dutta
c669bb8902 snapshot: do not wake sleeping cameras for periodic snapshots 2025-02-01 10:51:46 -08:00
Koushik Dutta
ce5fd2d4fd Merge branch 'main' of github.com:koush/scrypted 2025-01-31 20:14:00 -08:00
Koushik Dutta
fa8a756059 sdk: critical alerts 2025-01-31 20:13:58 -08:00
apocaliss92
73b85e1cd0 homekit: Fix autoadd (#1716)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-01-31 14:49:12 -08:00
Koushik Dutta
1300073712 videoanalysis: publish audio sensor 2025-01-29 11:18:19 -08:00
Koushik Dutta
3e296e12a5 core: publish audio sensor ui 2025-01-29 11:11:19 -08:00
Koushik Dutta
bf98060a08 videoanalysis: fixup noisy startup 2025-01-29 11:02:13 -08:00
Koushik Dutta
d1cd380123 videoanalysis: initial implemnetation of audio sensor 2025-01-29 10:39:10 -08:00
Koushik Dutta
1a2aadfb52 rebroadcast: fix audio soft mute with adaptive bitrate and other downstream clients 2025-01-29 08:48:55 -08:00
Koushik Dutta
60c854a477 ha: publish beta 2025-01-27 13:08:45 -08:00
Koushik Dutta
0790b60122 postbeta 2025-01-27 13:03:14 -08:00
Koushik Dutta
a3caa09df4 server: fixup node modules search path on HA 2025-01-27 13:03:06 -08:00
Koushik Dutta
02ca8bd765 reolink: publish 2025-01-27 11:48:51 -08:00
apocaliss92
f9e1a94ab3 reolink: support additional trackmix (#1711)
* Add support for Trackmix Series W760

* settings restored

* Settings restored

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2025-01-27 11:45:52 -08:00
Koushik Dutta
dd0da26df3 ha: publish 2025-01-27 11:44:57 -08:00
Koushik Dutta
890f2e8daf postbeta 2025-01-26 22:26:56 -08:00
Koushik Dutta
2c8babe3ce postrelease 2025-01-26 22:26:48 -08:00
Koushik Dutta
8e31b5f970 homekit: fixup exports, publish 2025-01-24 10:52:26 -08:00
Nick Berardi
0873a72848 homekit: moved humidity settings to common and added characteristics to expose settings Home Assistant (#1699) 2025-01-24 10:51:28 -08:00
Koushik Dutta
145c66e1c8 doorbird: publish 2025-01-24 10:15:04 -08:00
r3dDoX
2b60b45113 doorbird: update underlying doorbird api package (#1705) 2025-01-24 10:12:51 -08:00
Koushik Dutta
6f63927e2f core: publish 2025-01-23 19:34:41 -08:00
Koushik Dutta
528eabdfc0 sdk: improve StorageSettings deviceFilter 2025-01-23 19:33:42 -08:00
Koushik Dutta
e201ea1fc1 doorbird: fix build 2025-01-23 13:11:31 -08:00
Koushik Dutta
7790810b86 server: cleanup launch.json 2025-01-23 09:23:13 -08:00
Koushik Dutta
e9ec78909b core: Fix missing buttons 2025-01-22 13:46:38 -08:00
Koushik Dutta
26245e17ca core: publish button support 2025-01-22 13:22:49 -08:00
Koushik Dutta
5d87a1b2dd sdk: PressButtons 2025-01-22 12:57:27 -08:00
Koushik Dutta
e1efde3868 postbeta 2025-01-22 12:00:35 -08:00
Koushik Dutta
525eb028c6 sdk: Buttons interface 2025-01-22 10:14:42 -08:00
Koushik Dutta
520c6a62a1 Merge branch 'main' of github.com:koush/scrypted 2025-01-21 13:48:43 -08:00
Koushik Dutta
6e6898ce33 common/rebroadcast: change rtp packet size to 32000 since that is what is supported on darwin for some reason 2025-01-21 13:48:38 -08:00
Koushik Dutta
1344c9112c server: fixup potential unhandled errors in sdk fork 2025-01-21 09:50:44 -08:00
Koushik Dutta
f2148ce26a hikvision: publish 2025-01-20 19:37:37 -08:00
Koushik Dutta
81b00195d6 Merge branch 'main' of github.com:koush/scrypted 2025-01-20 19:36:58 -08:00
Koushik Dutta
8f71778f05 core: publish 2025-01-20 19:36:54 -08:00
George Talusan
2e5b8d90aa hikvision: add ERI-K104-P4 to the list of NVRs that doesn't support channel cap checks (#1698) 2025-01-19 00:32:36 -08:00
Koushik Dutta
780182b94a fix npm-install.sh 2025-01-18 15:04:59 -08:00
Brett Jia
57480f7606 actions: add Linux arm64 runner to tests (#1696) 2025-01-17 16:50:35 -08:00
Koushik Dutta
1478684120 Update install-nvidia-container-toolkit.sh 2025-01-17 14:58:45 -08:00
Koushik Dutta
223b302bed core: publish new ui with lxc-docker update fix 2025-01-16 13:28:28 -08:00
Koushik Dutta
f56cef1b50 postbeta 2025-01-16 12:04:53 -08:00
Koushik Dutta
83bfa30d4b server: improve abi/server change detection 2025-01-16 12:04:43 -08:00
Koushik Dutta
611674af46 rebroadcast: publish 2025-01-16 08:24:01 -08:00
Koushik Dutta
941ea7f346 Update bug_report.md 2025-01-16 08:06:59 -08:00
Koushik Dutta
2b9c2956d6 Update bug_report.md 2025-01-16 08:05:28 -08:00
Koushik Dutta
266d5bf8a3 Update bug_report.md 2025-01-16 07:19:41 -08:00
Koushik Dutta
d0007fc7bb postbeta 2025-01-15 14:53:20 -08:00
Koushik Dutta
75f90b78eb postrelease 2025-01-15 14:53:20 -08:00
Simon Marty
1e8959413e Fix path in comment (#1694) 2025-01-15 14:43:37 -08:00
Koushik Dutta
1301247ea3 docker: update base version 2025-01-15 14:41:56 -08:00
Koushik Dutta
2798fe4d3d server: document insane synology bug. 2025-01-15 14:40:18 -08:00
Koushik Dutta
55a76a86dc rebroadcast: fixup output args example 2025-01-14 12:51:34 -08:00
Koushik Dutta
cebd49fadb Update config.yaml 2025-01-09 03:49:40 -08:00
Koushik Dutta
90adb11f27 Update config.yaml 2025-01-08 20:37:59 -08:00
Koushik Dutta
cea5c95c82 dummy-switch: select which interfaces to implement 2025-01-08 00:21:58 -08:00
Koushik Dutta
0405e13181 videoanalysis: fix zone math 2025-01-07 23:48:14 -08:00
Koushik Dutta
5659499c16 videoanalysis: simplify normalization 2025-01-07 18:52:59 -08:00
Koushik Dutta
d272a4b86f rebroadcast: fix basic auth 2025-01-07 18:52:36 -08:00
Koushik Dutta
f8a8ed4241 videoanalysis: fix broken concave polygon math, optimize for intersect boolean rather than intersect polygon 2025-01-07 18:04:37 -08:00
Koushik Dutta
892b978065 common: stapa idr is techcnically valid, seen on tapo 2025-01-05 13:20:34 -08:00
Koushik Dutta
c81c55c12e homekit/webrtc: publish remove warnings 2025-01-05 12:35:42 -08:00
Koushik Dutta
bb9d98921b homekit: remove report message 2025-01-05 11:48:21 -08:00
Koushik Dutta
4c66efc4af sdk: tag === collapse key 2025-01-05 08:20:21 -08:00
Koushik Dutta
0547ed9a32 sdk: add collapseId to notifications 2025-01-05 00:13:31 -08:00
Koushik Dutta
b046822282 common: rtsp client generator read support 2025-01-04 20:08:28 -08:00
Koushik Dutta
b033d24451 rebroadcast: implement synthetic streams 2025-01-03 23:15:45 -08:00
Koushik Dutta
15464229ad wyze: improve default bitrates 2025-01-03 22:02:41 -08:00
Koushik Dutta
93ad50db73 Merge branch 'main' of github.com:koush/scrypted 2025-01-03 21:55:22 -08:00
Koushik Dutta
427139e8df rebroadcast: wip remove transcode extension 2025-01-03 21:55:20 -08:00
Koushik Dutta
b1100398ec server: log cluster connect errors 2025-01-03 19:32:42 -08:00
Mike Marcacci
b40a2eaf6e common: remove dead code path
While familiarizing myself with the architecture of this project I noticed that this block is unreachable and handled above. Figured I'd submit a quick fix.

Awesome project BTW.
2025-01-03 19:19:28 -08:00
Koushik Dutta
17c9440fd9 videoanalysis: fix package detection area 2025-01-03 09:15:57 -08:00
Koushik Dutta
ea63a96444 sdk: fixup call to setScryptedInterfaceDescriptors 2025-01-03 08:36:00 -08:00
Koushik Dutta
0f02f96b89 sdk: remove chalk 2025-01-03 08:26:01 -08:00
Koushik Dutta
6ce538bb23 rebroadcast: setting for default parser 2025-01-02 11:06:24 -08:00
Koushik Dutta
29ab0e79de rebroadcast: use large rtp packets with ffmpeg for efficient processing 2025-01-02 08:58:15 -08:00
Koushik Dutta
e07cd13ef3 core: fix lnk upgrade link 2025-01-02 08:17:45 -08:00
Koushik Dutta
0cbb26051c cloud: fix health check 2025-01-02 08:16:21 -08:00
Koushik Dutta
fcb8d938ee videoanalysis: fix smart motion sensor settings nre 2024-12-31 17:32:55 -08:00
Koushik Dutta
98fe1d412a openvino: do post processing inside callback rather than copy + thread post process 2024-12-31 15:03:16 -08:00
Koushik Dutta
c19ec63f98 openvino: fix ov.Tensor.data race condition 2024-12-31 12:44:38 -08:00
Koushik Dutta
a41e915f69 openvino: avoid ov.Tensor when using start_async due to thread safety? 2024-12-31 12:26:28 -08:00
Koushik Dutta
f0db59f6d2 openvino: fix thread affinity to possibly avoid async race conditions 2024-12-31 12:11:39 -08:00
Brett Jia
8e691ff2ee server: check if SCRYPTED_PYTHON*_PATH env points to valid path (#1670) 2024-12-31 06:44:28 -08:00
Koushik Dutta
42e0810bc0 postbeta 2024-12-30 21:37:23 -08:00
Koushik Dutta
68e91ad996 postrelease 2024-12-30 21:37:17 -08:00
Koushik Dutta
e163aa8153 wyze: cluster mode support 2024-12-30 21:36:52 -08:00
Koushik Dutta
268225647e postbeta 2024-12-30 21:29:24 -08:00
Koushik Dutta
93f94b0b0a server: Fixup casing 2024-12-30 21:29:15 -08:00
Koushik Dutta
db73baf4c1 postbeta 2024-12-30 21:28:28 -08:00
Koushik Dutta
404cf47d2e server: make mediaManager cluster aware 2024-12-30 21:28:06 -08:00
Koushik Dutta
b751f77b0b wyze: require linux 2024-12-30 21:01:08 -08:00
Koushik Dutta
884ce3e175 postbeta 2024-12-30 19:32:23 -08:00
Koushik Dutta
0cb0071874 postrelease 2024-12-30 19:28:35 -08:00
Koushik Dutta
d9637679bf server: verup 2024-12-30 19:27:57 -08:00
Koushik Dutta
7ea849d357 openvino: massive perf improvements via async api usage 2024-12-29 23:20:17 -08:00
Koushik Dutta
e4f01f10f4 postbeta 2024-12-29 20:02:34 -08:00
Koushik Dutta
bd61e9a5dd server: fix fs.promises. 2024-12-29 20:02:26 -08:00
Koushik Dutta
a2f8504290 postbeta 2024-12-29 19:51:15 -08:00
Koushik Dutta
928683a429 server: more cluster mode hooks 2024-12-29 19:51:05 -08:00
Koushik Dutta
4d6bd61650 postbeta 2024-12-29 14:34:29 -08:00
Koushik Dutta
9321a5e0dd Merge branch 'main' of github.com:koush/scrypted 2024-12-29 14:33:44 -08:00
Koushik Dutta
1622a0be63 server: update launch.json configs 2024-12-29 14:33:40 -08:00
Brett Jia
55cb62cb72 server: use standard-telnetlib for Python 3.13+ (#1669)
* bump portable-python to version with 3.13

* add standard-telnetlib to scrypted requirements for Python 3.13+
2024-12-29 14:22:32 -08:00
Koushik Dutta
11ea37d1c4 wyze: fix performance issues! 2024-12-28 22:22:51 -08:00
Koushik Dutta
8e1dfa8174 core: ensure lxc-docker is updated every boot 2024-12-28 20:35:44 -08:00
Koushik Dutta
0cf4802385 install: fixup missing debugpy 2024-12-28 15:39:26 -08:00
Koushik Dutta
194facb19c Revert "docker: remove pips"
This reverts commit 5f7ecc0410.
2024-12-28 15:37:46 -08:00
Koushik Dutta
6438ad1e3c tensorflow-lite: pipeline pre/post processing 2024-12-28 15:24:28 -08:00
Koushik Dutta
586f78ebc1 lxc: fix auto repair in systemd script 2024-12-28 14:50:57 -08:00
Koushik Dutta
48c5e1a5fe tensorflow-lite: quantization cleanups 2024-12-28 14:24:12 -08:00
Koushik Dutta
a6a986a8ac postbeta 2024-12-28 13:25:08 -08:00
Koushik Dutta
0b04d92131 server: use site packages in python for debugging 2024-12-28 13:24:40 -08:00
Koushik Dutta
05e9627f4a server: add debugpy to install list 2024-12-28 13:09:47 -08:00
Koushik Dutta
381c6de336 install/server: remove psutil 2024-12-28 13:08:22 -08:00
Koushik Dutta
4206ee4686 Merge branch 'main' of github.com:koush/scrypted 2024-12-27 22:40:45 -08:00
Koushik Dutta
e33a793867 tensorflow-lite: use new yolov9s model with separate outputs to fix quantization accuracy loss 2024-12-27 22:40:33 -08:00
Brett Jia
699eebaf14 docker: set default shell to bash (#1667)
* docker: change default shell to bash

* set SHELL
2024-12-26 18:50:49 -08:00
Brett Jia
45a2d5764c docker: dynamically find amdgpu deb package name (#1666) 2024-12-26 18:22:30 -08:00
Koushik Dutta
5f7ecc0410 docker: remove pips 2024-12-26 17:58:35 -08:00
Koushik Dutta
92257e41c1 webrtc: fix media conversion failure 2024-12-25 20:22:53 -08:00
Koushik Dutta
c5a703896c webrtc: improve media to signaling channel conversion 2024-12-25 19:55:16 -08:00
Koushik Dutta
51aa79956a core: publish ui updates 2024-12-25 19:29:12 -08:00
Koushik Dutta
fc1151ce8c Merge branch 'main' of github.com:koush/scrypted 2024-12-25 19:28:33 -08:00
Koushik Dutta
eaa2c37d57 tensorflow-lite: add relu models 2024-12-25 19:28:28 -08:00
Koushik Dutta
162bb7bfab proxmox: docker-compose.sh should repair dpkg first 2024-12-24 19:52:32 -08:00
Koushik Dutta
e467414704 rtp: fix leak if child process fails to spawn 2024-12-23 15:06:30 -08:00
Koushik Dutta
8ec6a25833 rebroadcast: add support for rtsp url using cluster address in case scrypted server address is not set 2024-12-23 11:16:36 -08:00
Koushik Dutta
56bc0d6a26 postbeta 2024-12-22 12:23:13 -08:00
Koushik Dutta
9098426c3b server: add rpc support for shallow serialized arrays 2024-12-22 12:16:10 -08:00
Koushik Dutta
0d9d425ef0 server: fix python search order 2024-12-22 12:05:33 -08:00
Koushik Dutta
4c6ca3b2a5 Merge branch 'main' of github.com:koush/scrypted 2024-12-22 09:01:34 -08:00
Koushik Dutta
762e058ec5 videoanalyis: reduce default confidence for smart motion sensor 2024-12-22 09:01:30 -08:00
Koushik Dutta
f02509152d docker: improve disk setup and add auto remount 2024-12-21 20:30:44 -08:00
Koushik Dutta
9d92031e4c videoanalysis: make some settings immediate 2024-12-20 11:22:02 -08:00
Koushik Dutta
6d0027d3e8 proxmox: onboot 2024-12-20 09:10:45 -08:00
Koushik Dutta
274e043c81 videoanalysis: add separate crop zone 2024-12-19 18:03:58 -08:00
Koushik Dutta
817a6f5a59 videoanalysis: fix zone normalization 2024-12-19 15:22:04 -08:00
Koushik Dutta
cbdf8873e0 Merge branch 'main' of github.com:koush/scrypted 2024-12-19 14:54:28 -08:00
Koushik Dutta
c9c9e106db videoanalaysis: fix zone persistence 2024-12-19 14:54:23 -08:00
Long Zheng
f3d7ebd2a2 Fix Windows install script NPM/Node version clash (#1662)
* Fix NPM/Node version clash

* Update install-scrypted-dependencies-win.ps1
2024-12-19 12:04:23 -08:00
Koushik Dutta
0ea6b13cb9 videoanalysis: smart occupancy sensor 2024-12-19 11:14:27 -08:00
Koushik Dutta
68cbe9a4f9 videoanalysis: smart occupancy sensor 2024-12-19 10:48:03 -08:00
Koushik Dutta
c7ab9085ff core: more ui fixes 2024-12-19 10:36:03 -08:00
Koushik Dutta
45993b3cb9 snapshot: fix nre on toImage format validaiton 2024-12-19 10:24:30 -08:00
Koushik Dutta
82ce08ab53 core: occupancy ui 2024-12-19 09:40:42 -08:00
Koushik Dutta
262fb32085 core: publish ui 2024-12-19 09:33:05 -08:00
Koushik Dutta
919d2dee85 tensorflow-lite: missing files 2024-12-18 09:40:36 -08:00
Koushik Dutta
1bb7df53c7 mqtt: publish 2024-12-18 09:40:10 -08:00
Koushik Dutta
612cf7b520 postbeta 2024-12-17 21:49:13 -08:00
Koushik Dutta
55a80f1898 server: fix env nre 2024-12-17 21:49:04 -08:00
Koushik Dutta
44ab56a888 tensorflow-lite: threshold cleanup 2024-12-17 11:38:12 -08:00
Koushik Dutta
eaae396861 tensorflow-lite: new default model 2024-12-17 09:22:25 -08:00
Koushik Dutta
cff170a508 postbeta 2024-12-16 19:55:06 -08:00
Koushik Dutta
c811109ee9 sdk/core: rebuild with cjs/es fixes 2024-12-16 19:54:04 -08:00
Koushik Dutta
c8e4502d11 sdk/server: more reliable module env detection 2024-12-16 19:51:25 -08:00
Koushik Dutta
b75c0e0ca1 sdk: ensure import.meta is undefined for webpack 2024-12-16 19:23:14 -08:00
Koushik Dutta
f64c9226a1 postbeta 2024-12-16 08:03:44 -08:00
Koushik Dutta
95dd67cd3a server: combine NODE_PATHs 2024-12-16 08:03:24 -08:00
Koushik Dutta
3ac0ca5c7a sdk: remove old node pty 2024-12-16 07:57:08 -08:00
Koushik Dutta
cd68af9796 core: remove old node pty 2024-12-16 07:54:25 -08:00
Koushik Dutta
9c1be5865b openvino: use relu face 2024-12-15 19:37:00 -08:00
Koushik Dutta
675f23235b postbeta 2024-12-15 13:12:00 -08:00
Koushik Dutta
0824136458 server: allow NODE_PATH override 2024-12-15 13:11:45 -08:00
Koushik Dutta
2b1b65d723 core: publish ui fix for extension toggling new devices 2024-12-15 12:16:26 -08:00
Koushik Dutta
16995ed9e8 core: fix aggregate device 2024-12-15 09:34:22 -08:00
Koushik Dutta
c5fb7d20a0 videoanalysis: fix motion reporting from object detector 2024-12-13 23:38:08 -08:00
Koushik Dutta
8c67f1e0ff tapo: update readme 2024-12-13 12:45:59 -08:00
Koushik Dutta
50e2ae83b4 objectdetector: fixup normalizeBox to allow scalar 2024-12-13 08:23:33 -08:00
Koushik Dutta
1eb4f6fd55 core: publish support for editing camera zones via deviceFilter param 2024-12-12 15:48:12 -08:00
Koushik Dutta
9152512679 proxmox: use restore storage for reset as well 2024-12-12 10:57:48 -08:00
Koushik Dutta
7870ed7eeb reolink: fixup probe 2024-12-12 09:11:48 -08:00
Koushik Dutta
40c0dea505 reolink: validate device info 2024-12-11 21:39:27 -08:00
Koushik Dutta
3542d327ea postbeta 2024-12-11 20:09:42 -08:00
Koushik Dutta
2ef87c21b6 server: allow cluster labels to request plugins 2024-12-11 20:09:33 -08:00
Koushik Dutta
4585f43318 openvino: disable npu for recognition with user input 2024-12-11 15:54:16 -08:00
Koushik Dutta
30da19510a openvino: disable npu for recognition 2024-12-11 15:53:40 -08:00
Koushik Dutta
5ea1c9467f proxmox: fix restore prompt install 2024-12-10 15:47:32 -08:00
Koushik Dutta
1d6eabc9e8 proxmox: restore prompt 2024-12-10 15:39:52 -08:00
Koushik Dutta
9ea4b5a29b proxmox: find a default storage device 2024-12-10 15:29:06 -08:00
Koushik Dutta
539692867b openvino: reenable npu 2024-12-10 12:22:13 -08:00
Koushik Dutta
e796404995 core: deprecate lxc 2024-12-10 10:43:37 -08:00
Koushik Dutta
54b21260d1 core: fix cluster worker rename 2024-12-10 10:23:26 -08:00
Koushik Dutta
be35fb2dc2 postbeta 2024-12-10 09:55:43 -08:00
Koushik Dutta
04065a3487 core/client: publish 2024-12-10 09:42:00 -08:00
Koushik Dutta
ac882c723a server: fix cluster dependencies 2024-12-10 09:40:16 -08:00
Koushik Dutta
02cde6382c server: revert tsconfig change 2024-12-10 09:33:04 -08:00
Koushik Dutta
f942a13e90 client: add cluster manager 2024-12-10 09:32:23 -08:00
Koushik Dutta
6299caac20 server: fix typings 2024-12-10 09:30:29 -08:00
Koushik Dutta
6f0501634f server: move cluster manager 2024-12-10 09:30:13 -08:00
Koushik Dutta
575e544c40 core: Fix nre if clusterManager does not exist 2024-12-09 21:45:24 -08:00
Koushik Dutta
ff448e9c7f core: manage cluster through ui 2024-12-09 21:19:10 -08:00
Koushik Dutta
6173d67bb0 postbeta 2024-12-09 14:18:44 -08:00
Koushik Dutta
4431158bfa server: add various controls for server node in cluster mode 2024-12-09 14:04:43 -08:00
Koushik Dutta
822054e888 videoanalysis: hide decoder option if detection provides it 2024-12-09 10:07:42 -08:00
Koushik Dutta
d7e21d1d44 mqtt: fix exports 2024-12-08 16:08:36 -08:00
Koushik Dutta
6e451a1b06 server: npm audit 2024-12-07 18:53:49 -08:00
Koushik Dutta
57eccd4ad7 Merge branch 'main' into cluster 2024-12-07 18:37:30 -08:00
Koushik Dutta
c2d45e4357 cloud: additional tunnel check 2024-12-07 18:37:16 -08:00
Koushik Dutta
698a4a4a4a postbeta 2024-12-06 12:47:06 -08:00
Koushik Dutta
01493e311d server: fix repl in cluster mode 2024-12-06 12:46:49 -08:00
Koushik Dutta
a6d62365dc postbeta 2024-12-06 11:52:53 -08:00
Koushik Dutta
9b504a280f docker: switch to noble base 2024-12-06 11:52:26 -08:00
Koushik Dutta
5df8689236 docker: update intel for legacy + latest install process. 2024-12-06 11:39:08 -08:00
Koushik Dutta
235d408f1f dockker: test noble 2024-12-06 11:27:09 -08:00
Koushik Dutta
9b4547be85 docker: prevent pip upgrade 2024-12-06 11:14:02 -08:00
Koushik Dutta
0b8bc0d0d1 docker: python3.12 2024-12-06 10:54:05 -08:00
Koushik Dutta
134d4be1b7 docker: noble base 2024-12-06 10:47:01 -08:00
Koushik Dutta
e77487ed15 docker: noble base 2024-12-06 10:46:25 -08:00
Koushik Dutta
6e60fe1c09 openvino: disable npu due to openvino bug 2024-12-06 10:07:43 -08:00
Long Zheng
a7424b3546 Update Windows install script workaround npm issue (#1654)
* Update Windows install script workaround npm issue

* Test removing RunAsAdministrator

* Revert "Test removing RunAsAdministrator"

This reverts commit 46c80964ea.

* Test removing npm fix

* Revert "Test removing npm fix"

This reverts commit 0f9adbeae6.

* Test dump daemon logs

* More test

* More tests

* More tests

* Test

* Test

* Test

* Test

* Cleanup

* Add spawn error handler

* Fix event handler

* Remove node version debug
2024-12-06 09:19:01 -08:00
Koushik Dutta
70cf3488ef openvino: add scrypted_yolov9t_relu_int8_320 2024-12-06 08:49:56 -08:00
Koushik Dutta
d74ac6fb8e server: cleanup thread peers 2024-12-05 21:00:07 -08:00
Koushik Dutta
47cad5d747 mqtt: fix break 2024-12-05 12:58:58 -08:00
Koushik Dutta
4ebb7215c0 server: fix HoL in sendStream by using a dedicated cluster connect 2024-12-05 12:24:55 -08:00
Koushik Dutta
1d55830f10 server: sendStream should also be one way 2024-12-05 11:38:40 -08:00
Koushik Dutta
0bb5c79875 postbeta 2024-12-05 11:37:54 -08:00
Koushik Dutta
e3ca09a80b server/sdk: add support for HttpResponse.sendStream 2024-12-05 11:37:27 -08:00
Koushik Dutta
ef53829ccc core: clean up device groups 2024-12-05 09:38:36 -08:00
Koushik Dutta
5f0cf6b6c2 mqtt: remove scrypted-eval fs hack 2024-12-05 09:38:00 -08:00
Koushik Dutta
59e09825ff postbeta 2024-12-05 09:24:47 -08:00
Koushik Dutta
b4aa20b4cd server: remove legacy storage event 2024-12-05 09:24:36 -08:00
Koushik Dutta
e2eba2a227 openvino: beta 2024-12-05 08:46:36 -08:00
Koushik Dutta
9370a163fd videoanalysis: improve low watermark throttling 2024-12-05 08:45:58 -08:00
Koushik Dutta
c65f38f251 postbeta 2024-12-05 08:45:13 -08:00
Koushik Dutta
83bde83a39 server: ensure cluster client service control 2024-12-05 08:45:03 -08:00
Koushik Dutta
786b4b5ed9 postbeta 2024-12-04 21:32:07 -08:00
Koushik Dutta
f9c1d7704a sdk: fix sourcemap 2024-12-04 21:31:52 -08:00
Koushik Dutta
3162d2be34 Update install-amd-graphics.sh 2024-12-04 20:48:34 -08:00
Koushik Dutta
3f0a788a6a sdk/server: add mode to workers 2024-12-04 17:51:36 -08:00
Koushik Dutta
72504286ea postbeta 2024-12-04 15:59:56 -08:00
Koushik Dutta
c664cc3b4d server/sdk: include/check sdk version for plugin forwards/backwards compat. 2024-12-04 15:59:41 -08:00
Koushik Dutta
99853906b9 postbeta 2024-12-04 11:42:23 -08:00
Koushik Dutta
ea873a527b sdk/server: clean up sdk init race conditions to allow side effect imports 2024-12-04 10:54:28 -08:00
Koushik Dutta
df0b13512a videoanalysis: fix sample history tracking to purge before measurement 2024-12-03 13:42:40 -08:00
Koushik Dutta
1651152eec videoanalysis: publish 2024-12-03 10:06:36 -08:00
Koushik Dutta
7b3ab501b2 server: remove cluster cpu tracking 2024-12-03 00:21:46 -08:00
Koushik Dutta
3a77a3398d videoanalysis: use detection fps as measurement of system load 2024-12-03 00:00:37 -08:00
Koushik Dutta
f2ece1270a openvino: update to relu+int8 models 2024-12-02 22:49:58 -08:00
Koushik Dutta
8b6d8aeae6 Merge branch 'main' into cluster 2024-12-02 22:14:01 -08:00
Koushik Dutta
578bba67f8 postbeta 2024-12-02 19:00:55 -08:00
Koushik Dutta
15fb7d86e2 postbeta 2024-12-02 18:58:00 -08:00
Koushik Dutta
9d23caa66d server: downgrade typescript 2024-12-02 18:57:51 -08:00
Koushik Dutta
c46ed2cef5 postbeta 2024-12-02 18:46:17 -08:00
Koushik Dutta
7dcfdaa98e server: prevent crash on missing cpu usage 2024-12-02 18:46:06 -08:00
Koushik Dutta
ee23c93132 postbeta 2024-12-02 15:41:50 -08:00
Koushik Dutta
b1b0dd8997 server: fix non cluster crash 2024-12-02 15:41:42 -08:00
Koushik Dutta
6cc5a0e04c postbeta 2024-12-02 15:10:52 -08:00
Koushik Dutta
a75b263141 server: cluster cpu usage monitoring 2024-12-02 15:08:56 -08:00
Koushik Dutta
d91ec68e6c sdk: find object cluster worker affinity 2024-12-02 11:02:35 -08:00
Koushik Dutta
8ccc7a6c06 postbeta 2024-12-01 20:09:18 -08:00
Koushik Dutta
a6ece48cc3 server: add cluster worker weight 2024-12-01 17:46:14 -08:00
Koushik Dutta
7398f280cc postbeta 2024-11-30 23:19:40 -08:00
Koushik Dutta
eb1d0f647a server: fix es imports on old node 2024-11-30 23:19:30 -08:00
Koushik Dutta
b5a40b27a9 postbeta 2024-11-30 22:52:37 -08:00
Koushik Dutta
84870b444c server: revert createRequire 2024-11-30 22:49:59 -08:00
Koushik Dutta
339c934dda sdk: rollup fixes 2024-11-30 22:46:12 -08:00
Koushik Dutta
4df0eec70a server: esmodule cleanups 2024-11-30 20:00:41 -08:00
Koushik Dutta
6d268ade69 server: formatting 2024-11-30 09:41:30 -08:00
Koushik Dutta
6b040954a0 esmodule: project cleanup 2024-11-30 09:38:15 -08:00
Koushik Dutta
73d2f5b408 esmodule plugins: wip 2024-11-30 09:09:38 -08:00
Koushik Dutta
71bb2ec80a postbeta 2024-11-29 14:06:02 -08:00
Koushik Dutta
92b120886c server: remove log from eval params 2024-11-29 14:05:52 -08:00
Koushik Dutta
9001d996e2 sdk: fix commonjs entry mangling debug 2024-11-28 22:13:11 -08:00
Koushik Dutta
d060a74689 docker: Update install-amd-graphics.sh 2024-11-28 20:09:51 -08:00
Koushik Dutta
8ba4c46576 docker: Update install-intel-npu.sh 2024-11-28 19:56:16 -08:00
Koushik Dutta
a77f82462d openvino: rollback openvino 2024-11-28 19:53:24 -08:00
Koushik Dutta
3a1401afbb openvino: bump openvino 2024-11-28 19:44:47 -08:00
Koushik Dutta
14ae374916 postbeta 2024-11-28 19:37:55 -08:00
Koushik Dutta
52d915cc68 server: dependency updates 2024-11-28 19:37:44 -08:00
Koushik Dutta
cb501e66c6 sdk: publush 2024-11-28 19:14:34 -08:00
Koushik Dutta
053b43128f Merge branch 'cluster' of github.com:koush/scrypted into cluster 2024-11-28 18:47:41 -08:00
Koushik Dutta
702456a40d sdk: rollup support 2024-11-28 18:25:12 -08:00
Koushik Dutta
17ebbb1656 sdk: rollup support 2024-11-28 18:24:46 -08:00
Koushik Dutta
0f79cd88ce sdk: remove dead dep 2024-11-28 12:41:07 -08:00
Koushik Dutta
76c960100c sdk: remove dead dep 2024-11-28 12:39:11 -08:00
Koushik Dutta
6d56e41651 sample: update 2024-11-28 10:56:56 -08:00
Koushik Dutta
640d66474c postbeta 2024-11-28 10:48:19 -08:00
Koushik Dutta
238c82a354 server: add cluster worker info 2024-11-28 10:42:42 -08:00
Koushik Dutta
25a369403c server: add cluster worker info 2024-11-28 10:41:04 -08:00
Koushik Dutta
b1e1f54af5 server: add hooks to get cluster worker controls 2024-11-28 10:02:08 -08:00
Koushik Dutta
8df38dbebe server: add env control 2024-11-28 09:43:22 -08:00
Koushik Dutta
229dcd3174 postbeta 2024-11-28 09:28:34 -08:00
Koushik Dutta
c3d6dcb6a2 server: pass through service control 2024-11-28 09:28:24 -08:00
Koushik Dutta
0c951519e2 postbeta 2024-11-28 08:57:46 -08:00
Koushik Dutta
1f406ae740 server: pass through service control for cluster mode 2024-11-28 08:57:23 -08:00
Koushik Dutta
ea628a7130 wip: unifi 2024-11-28 08:47:11 -08:00
Koushik Dutta
8d0de7e557 postbeta 2024-11-27 18:39:51 -08:00
Koushik Dutta
e799ada9c9 sdk: fixup clusterWorkerId to be optional 2024-11-26 09:02:01 -08:00
Koushik Dutta
ed498ae418 server/sdk: make worker disposable.
todo: implement python resource pattern?
2024-11-25 11:01:07 -08:00
Koushik Dutta
5b46036b2d sdk: add clusterWorkerId option to generateVideoFrames 2024-11-25 10:53:43 -08:00
Koushik Dutta
8e888bc6a1 Update docker-compose.yml 2024-11-23 22:05:56 -08:00
Koushik Dutta
c5053008b7 docker: use relative path for volume. 2024-11-23 22:04:33 -08:00
Koushik Dutta
7bd4f4053d predict: publish 2024-11-23 21:50:38 -08:00
Koushik Dutta
f83cbfa5e7 predict: use new cluster worker labels 2024-11-23 18:39:29 -08:00
Koushik Dutta
8480713ec6 postbeta 2024-11-23 08:05:26 -08:00
Koushik Dutta
dcae7ce367 server: remove debug code causing crashes 2024-11-23 08:05:17 -08:00
Koushik Dutta
101d362260 openvino: beta 2024-11-22 21:20:09 -08:00
Koushik Dutta
73bdca1be6 postbeta 2024-11-22 21:18:51 -08:00
Koushik Dutta
c407fa0b9f server: ensure alert log goes to console as well 2024-11-22 21:10:35 -08:00
Koushik Dutta
d26c595fd6 server: clean up clustering lifecycle management 2024-11-22 20:57:34 -08:00
Koushik Dutta
38c00f5b9b openvino: fix cluster label to require x64 2024-11-22 19:01:20 -08:00
Koushik Dutta
ab4738973d predict: cluster for should enforce compute/darwin label 2024-11-22 17:08:43 -08:00
Koushik Dutta
ea065f506c predict: fix load balancer 2024-11-21 21:53:09 -08:00
Koushik Dutta
4b7b66c96b postbeta 2024-11-21 21:08:22 -08:00
Koushik Dutta
0462ad228b server: fix non cluster crash 2024-11-21 21:08:13 -08:00
Koushik Dutta
45ac7f2f4e postbeta 2024-11-21 20:54:29 -08:00
Koushik Dutta
6618129e1d server: cluster load balancing 2024-11-21 20:54:20 -08:00
Koushik Dutta
1a72eddcc8 predict: formatting 2024-11-21 15:22:35 -08:00
Koushik Dutta
1c9037dc35 predict: fix worker startup on primary server 2024-11-21 15:22:16 -08:00
Koushik Dutta
2c5b79291f server: python formatting 2024-11-21 14:53:16 -08:00
Koushik Dutta
cd0ab104ea predict: formatting 2024-11-21 14:52:01 -08:00
Koushik Dutta
c6f4c1a669 onnx: implement clustering. and cleanup coreml/openvino. 2024-11-21 14:51:31 -08:00
Koushik Dutta
9f28e38716 openvino: cluster support 2024-11-21 14:37:49 -08:00
Koushik Dutta
ba8f25fde3 postbeta 2024-11-21 14:30:14 -08:00
Koushik Dutta
9f27b2f382 Merge branch 'main' into cluster 2024-11-21 11:20:49 -08:00
Koushik Dutta
96fa6af0fc reolink: fix missing debug setting 2024-11-21 11:20:44 -08:00
Koushik Dutta
eca5fbecdc Merge branch 'main' into cluster 2024-11-21 10:04:47 -08:00
Koushik Dutta
8e0e2854e9 dev: update npm-install.sh 2024-11-21 10:04:42 -08:00
Koushik Dutta
1eb9d938e7 core: publish 2024-11-21 10:04:14 -08:00
Koushik Dutta
095f80e1f9 dev: update npm-install.sh 2024-11-21 10:04:03 -08:00
Koushik Dutta
da1f6118c8 predict: wip coreml clustering across multiple macs 2024-11-20 22:27:20 -08:00
Koushik Dutta
5060748e9d server: implement clustered plugin debugging 2024-11-20 20:53:23 -08:00
Koushik Dutta
25df4f8376 server: fix cluster logging 2024-11-20 20:51:45 -08:00
Koushik Dutta
56fdff3545 server: cluster client error logging 2024-11-20 18:30:28 -08:00
Koushik Dutta
2fbfe2cb65 server: more logging 2024-11-20 18:28:12 -08:00
Koushik Dutta
32ede1f7fe postbeta 2024-11-20 18:16:09 -08:00
Koushik Dutta
1a2ec8ab4e server: log startup 2024-11-20 18:16:01 -08:00
Koushik Dutta
53cab91b02 server: refactor runtime worker creation 2024-11-20 14:53:58 -08:00
Koushik Dutta
02a46a9202 postbeta 2024-11-20 12:38:06 -08:00
Koushik Dutta
69f4de66e9 server: exit hooks for python fork 2024-11-20 12:18:25 -08:00
Koushik Dutta
aed6e0c446 server: wip cluster mode load balancing 2024-11-20 11:39:21 -08:00
Koushik Dutta
432c178f29 sdk: more cluster fixes for python 2024-11-20 10:58:10 -08:00
Koushik Dutta
bcf698daa3 sdk: expose ClusterManager to python 2024-11-20 10:13:54 -08:00
Koushik Dutta
347a957cd3 sdk: add cluster manager 2024-11-20 10:10:47 -08:00
Koushik Dutta
459b95a0e2 server: python cluster worker routing 2024-11-18 21:33:49 -08:00
Koushik Dutta
1c18129449 postbeta 2024-11-18 21:05:37 -08:00
Koushik Dutta
21274df881 server: fix cluster check nre 2024-11-18 21:05:28 -08:00
Koushik Dutta
ca243e79bb server: apply default runtime for cluster fork 2024-11-18 21:03:00 -08:00
Koushik Dutta
924394d365 postbeta 2024-11-18 19:50:15 -08:00
Koushik Dutta
23167da88b server: fork by clusterWorkerId 2024-11-18 19:29:07 -08:00
Koushik Dutta
c1d48e1c6b sdk: add cluster worker request to fork 2024-11-18 15:47:31 -08:00
Koushik Dutta
7a22e17d84 Merge branch 'main' into cluster 2024-11-18 13:46:27 -08:00
Koushik Dutta
75b2ff22ce openvino: regenerate models 2024-11-18 13:46:19 -08:00
Koushik Dutta
edde093140 Merge branch 'main' into cluster 2024-11-18 13:03:14 -08:00
Koushik Dutta
8622934c8b coreml: cluster support 2024-11-18 13:00:24 -08:00
Koushik Dutta
153cc3ed94 server: python cleanup 2024-11-18 12:26:46 -08:00
Koushik Dutta
2ae6113750 server: wip python cluster fork 2024-11-18 11:31:52 -08:00
Koushik Dutta
4ec001c2a2 server: assign workers ids 2024-11-18 10:11:33 -08:00
Koushik Dutta
794ac6c8d2 postbeta 2024-11-18 09:38:13 -08:00
Koushik Dutta
8422ffe55a postbeta 2024-11-17 22:20:51 -08:00
Koushik Dutta
285c07e33e postbeta 2024-11-17 20:43:46 -08:00
Koushik Dutta
ef04398a79 openvino: 9c relu int8 2024-11-17 19:15:43 -08:00
Koushik Dutta
6429ea718a postbeta 2024-11-17 15:38:52 -08:00
Koushik Dutta
5f9147e720 server: fix node cluster ping 2024-11-17 15:38:42 -08:00
Koushik Dutta
ea4922d8e5 onnx: fix provider detection 2024-11-17 10:24:09 -08:00
Koushik Dutta
70293ca827 server: cluster affinity 2024-11-16 19:35:40 -08:00
Koushik Dutta
878487180e postbeta 2024-11-16 19:07:05 -08:00
Koushik Dutta
f094903ed9 server: fix cluster fork liveness leak 2024-11-16 19:06:53 -08:00
Koushik Dutta
5117e217cf core: publish 2024-11-16 11:48:13 -08:00
Koushik Dutta
07c3f2832a postbeta 2024-11-16 11:35:50 -08:00
Koushik Dutta
977666bc3c server: add worker ids 2024-11-16 11:35:39 -08:00
Koushik Dutta
2ec6760308 nvidia: notes 2024-11-16 11:07:51 -08:00
Koushik Dutta
0dbe556835 diagnostics: use a better defaults for detection plugin verification 2024-11-16 09:40:34 -08:00
Koushik Dutta
c4f76df255 onnx: fix execution provider reporting 2024-11-16 09:32:55 -08:00
Koushik Dutta
0bf0ec08ab server: plugin init cleanups 2024-11-15 23:40:38 -08:00
Koushik Dutta
1a2216a7de postbeta 2024-11-15 22:43:29 -08:00
Koushik Dutta
d868c3b3bb server: remove stats checker 2024-11-15 22:43:19 -08:00
Koushik Dutta
882709ea51 server: cluster fork tracking 2024-11-15 22:00:51 -08:00
Koushik Dutta
df249c554c common: persistent fork service 2024-11-15 21:41:07 -08:00
Koushik Dutta
fcbaeb1d1d postbeta 2024-11-15 19:54:12 -08:00
Koushik Dutta
c6dda05fa4 server: force ipv4 on cluster connect 2024-11-15 19:54:01 -08:00
Koushik Dutta
953b7812c5 server: shuffle python cluster code 2024-11-15 19:53:16 -08:00
Koushik Dutta
7434a5c4ba postbeta 2024-11-15 15:06:09 -08:00
Koushik Dutta
b240a17bb0 server: support hostnames in clustering, and auto detection of client cluster addresses for easy image cloning. 2024-11-15 15:03:32 -08:00
Koushik Dutta
aab0507805 Merge branch 'main' into cluster 2024-11-15 11:37:39 -08:00
Koushik Dutta
3e091623a8 docker: add amd kfd device to install script 2024-11-15 11:37:35 -08:00
Koushik Dutta
0871898385 videoanalysis: log filtered detections 2024-11-15 10:06:38 -08:00
Koushik Dutta
eea7e4be32 beta 2024-11-15 10:02:13 -08:00
Koushik Dutta
8167ca85bb postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
a09291114f server: possible fix for electron mac startup hang 2024-11-15 10:02:13 -08:00
Koushik Dutta
39efe0d994 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
21f56216b0 server: fix unnecessary peer creation 2024-11-15 10:02:13 -08:00
Koushik Dutta
8820bac571 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
47a683e385 server: fix ping by providing pong 2024-11-15 10:02:13 -08:00
Koushik Dutta
17f367a373 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
fad0a520ca server: simplify pong 2024-11-15 10:02:13 -08:00
Koushik Dutta
1f0d5dc3b9 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
a965f9b569 server: simplify pong 2024-11-15 10:02:13 -08:00
Koushik Dutta
eb1a388f69 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
b2cf5ac3c7 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
ce10a49f0f server: fix ping/pong 2024-11-15 10:02:13 -08:00
Koushik Dutta
5e31a0db96 server: python cleanup 2024-11-15 10:02:13 -08:00
Koushik Dutta
8f1a673db5 server: refactor cluster 2024-11-15 10:02:13 -08:00
Koushik Dutta
7405476556 server: cluster env var sanitization 2024-11-15 10:02:13 -08:00
Koushik Dutta
7dc86f59bf postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
2d7cef600d server: fix cluster connect logging 2024-11-15 10:02:13 -08:00
Koushik Dutta
5de0f8937b postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
8e8d333ea2 server: cluster logging 2024-11-15 10:02:13 -08:00
Koushik Dutta
d66a6317de zwave: cluster support 2024-11-15 10:02:13 -08:00
Koushik Dutta
49e3fc1438 predict: fix cluster labels 2024-11-15 10:02:13 -08:00
Koushik Dutta
fbe3daa072 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
670216135b server: fix python stats updater 2024-11-15 10:02:13 -08:00
Koushik Dutta
ff903fa891 rebroadcast: fix external urls with ipv6 2024-11-15 10:02:13 -08:00
Koushik Dutta
ebc6ede275 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
4de91d0673 server: fix zipapi rpc bug 2024-11-15 10:02:13 -08:00
Koushik Dutta
3da1d00f6f postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
4ff00a7753 server: fix cluster any label 2024-11-15 10:02:13 -08:00
Koushik Dutta
f245fb257d postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
b1a21a6037 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
0b9f3309a2 postbeta 2024-11-15 10:02:13 -08:00
Koushik Dutta
09b9b33bac server: working python clustering 2024-11-15 10:02:13 -08:00
Koushik Dutta
21d020919a client: update des 2024-11-15 10:02:13 -08:00
Koushik Dutta
02d090cb94 server: fix python cluster server loop missing 2024-11-15 10:02:13 -08:00
Koushik Dutta
817db34357 server: refactor cluster connect, remove dead code 2024-11-15 10:02:13 -08:00
Koushik Dutta
a3eda8cfba server: cleanup fork envs 2024-11-15 10:02:13 -08:00
Koushik Dutta
5a62fdc06b server/sdk: new cluster label format 2024-11-15 10:02:13 -08:00
Koushik Dutta
5ff8a65c4a predict: add cluster label settings to package.json 2024-11-15 10:02:13 -08:00
Koushik Dutta
719dfd2f24 server: plugin device deletion crash fix 2024-11-15 10:02:13 -08:00
Koushik Dutta
7d28d1d9d4 server: wip python clustering 2024-11-15 10:02:13 -08:00
Koushik Dutta
aaa924b9b4 core: publish 2024-11-15 10:02:13 -08:00
Koushik Dutta
f69b93c9fa server: fix consoles in clustered environment 2024-11-15 10:02:13 -08:00
Koushik Dutta
12be06adad rebroadcast: cleanup 2024-11-15 10:02:13 -08:00
Koushik Dutta
f6fa28b584 server: fix cluster host volumes 2024-11-15 10:02:13 -08:00
Koushik Dutta
fc1e5210a5 server: cleanup 2024-11-15 10:02:13 -08:00
Koushik Dutta
7601b8f0d0 server: fixup cluster clients from other addresses 2024-11-15 10:02:13 -08:00
Koushik Dutta
b0557704b2 cleanup 2024-11-15 10:02:13 -08:00
Koushik Dutta
572883ed98 server: functional cluster console 2024-11-15 10:02:13 -08:00
Koushik Dutta
92927c8b93 server: working node cluster fork 2024-11-15 10:02:13 -08:00
Koushik Dutta
11ae57b185 server: wip cluster 2024-11-15 10:02:13 -08:00
Koushik Dutta
9f55f0b32a rpc: add peer const 2024-11-15 10:02:13 -08:00
Koushik Dutta
ef52e0a723 server: cleanup import 2024-11-15 10:02:13 -08:00
Koushik Dutta
3df6af1fcd server: add tls listener 2024-11-15 10:02:13 -08:00
Koushik Dutta
a283cfb429 server: remove legacy socket rpc channel 2024-11-15 10:02:13 -08:00
Koushik Dutta
3ae2dd769a sdk: fork labels 2024-11-15 10:02:13 -08:00
Koushik Dutta
3b916e7e20 server: wip cluster 2024-11-15 10:02:13 -08:00
Koushik Dutta
d93f05a228 server: wip cluster 2024-11-15 10:02:13 -08:00
Koushik Dutta
68183775db reolink: publish 2024-11-15 10:02:02 -08:00
Koushik Dutta
a8db883661 unifi-protect: fix fingerprint on new protect 2024-11-15 10:01:49 -08:00
apocaliss92
4a51caa281 reolink: Add zoom RTSP streams to trackmix cameras (#1635)
* Add zoom RTSP streams to trackmix cameras

* update rtmp streams for POE TrackMix (#1)

* update rtmp streams for POE TrackMix

Fixing resolution of main streams too for Trackmix.

* leave in legacy bcs stream

* flv streams removed

* autotrack bcs stream restored

* additional rtsp streams added only to channel 0

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
Co-authored-by: Joshua Seidel <29733828+JoshuaSeidel@users.noreply.github.com>
2024-11-14 22:08:20 -08:00
Koushik Dutta
c3148b8ed9 server: disable nan serialization completely in python 2024-11-10 12:30:05 -08:00
Koushik Dutta
bc95a15f89 Revert "server: do not serialize python nan in rpc protocol."
This reverts commit e9d73c6faa.
2024-11-10 12:29:26 -08:00
Koushik Dutta
8954de3c93 predict: beta 2024-11-10 10:16:03 -08:00
Koushik Dutta
cbfad097db predict: sanitzation 2024-11-10 10:15:12 -08:00
Koushik Dutta
c9e83c496c openvino: rollback openvino off nightly 2024-11-10 08:51:07 -08:00
Koushik Dutta
442e1883c5 openvino: quantize test 2024-11-10 08:47:51 -08:00
Koushik Dutta
f819e6d29c unifi-protect: send fingerprint events + user id as object detections 2024-11-08 13:03:33 -08:00
Koushik Dutta
261c07f330 docker: remove gst alsa 2024-11-08 10:02:22 -08:00
Koushik Dutta
2328c9dd75 docker: remove build utils 2024-11-08 09:59:22 -08:00
Koushik Dutta
15639052c3 install: update/trim intel binaries 2024-11-08 09:59:02 -08:00
Koushik Dutta
d91c7d89b2 docker: remove pillow simd deps 2024-11-08 09:43:41 -08:00
Koushik Dutta
fbdefbe06a python-codecs: remove pillow simd 2024-11-08 09:42:52 -08:00
Koushik Dutta
832ee0180c postbeta 2024-11-08 09:35:13 -08:00
Koushik Dutta
a616e95c0e detect: use opencv-headless 2024-11-08 09:14:11 -08:00
Koushik Dutta
7ab9208203 tensorflow-lite: update project files 2024-11-08 09:14:02 -08:00
Koushik Dutta
9db6808e85 coreml: bump coremltools, use opencv headless 2024-11-08 09:13:36 -08:00
Koushik Dutta
5d48760fd8 core: publish 2024-11-08 09:13:19 -08:00
Koushik Dutta
6ce2166e0a unifi-protect: Fix unstable ids on camera sensors 2024-11-08 08:24:27 -08:00
Koushik Dutta
201dc30650 onnx: fixup project files 2024-11-07 20:57:33 -08:00
Koushik Dutta
84bb7865fe unifi-protect: fingerprint sensor fixes 2024-11-07 09:23:23 -08:00
Koushik Dutta
ab1cd379a9 unifi-protect: fingerprint sensor beta 2024-11-07 09:07:00 -08:00
Koushik Dutta
9208ca9566 Merge branch 'main' of github.com:koush/scrypted 2024-11-07 08:56:59 -08:00
Koushik Dutta
e62897e14c unifi-protect: build fixes 2024-11-07 08:56:56 -08:00
Koushik Dutta
65559e6685 install: prevent amd graphics on non x86 2024-11-06 17:37:52 -08:00
Koushik Dutta
611b7c50bf docker: add intel npu, amd gpu 2024-11-06 17:28:56 -08:00
Koushik Dutta
e983526455 install: suppress tar delete error 2024-11-06 11:09:11 -08:00
Koushik Dutta
10c167d4a3 install: Update install-intel-npu.sh 2024-11-06 11:08:10 -08:00
Koushik Dutta
0c641ccf6c common: createAsyncQueueFromGenerator should not read as fast as possible. 2024-11-06 10:07:03 -08:00
Koushik Dutta
5899ad866a openvino: invalid device recovery 2024-11-05 08:38:52 -08:00
Koushik Dutta
17ecb56259 openvino: initial yuv support 2024-11-04 12:04:18 -08:00
Koushik Dutta
ffeade08ca postbeta 2024-11-04 10:32:08 -08:00
apocaliss92
49a567fb51 reolink: floodlights (#1633)
* Reolink floodlight support

* Fix on state check

* Flashlight interval removed

* Code cleanup

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-11-03 08:49:30 -08:00
Koushik Dutta
aac104f386 install: doc amdgpu-install 2024-11-01 21:46:59 -07:00
Koushik Dutta
b4aff117ce install: add kfd for amd support 2024-11-01 21:44:39 -07:00
Koushik Dutta
13d4519a35 install: amd cleanup 2024-11-01 21:42:09 -07:00
Koushik Dutta
743102c965 install: amd graphics 2024-11-01 21:41:40 -07:00
Koushik Dutta
315e5bb6e6 proxmox: add support for explicit directories in disk setup script 2024-11-01 14:08:49 -07:00
Koushik Dutta
6ddef853ad predict: publish 2024-11-01 10:52:30 -07:00
Koushik Dutta
5848cf1e5e predict: Fix nans in payloads causing plugin crash, add support for yuv models 2024-11-01 10:34:29 -07:00
Koushik Dutta
f00f650b4f docker: add libvulkan1 2024-10-31 18:22:17 -07:00
Koushik Dutta
e9d73c6faa server: do not serialize python nan in rpc protocol.
This causes protocol failure and plugin to be killed. Javascript behavior is to convert NaN to null.
Mimicing this behavior ensures stability though all JSON dicts are recursively inspected.
2024-10-31 10:44:08 -07:00
Koushik Dutta
b6d601ebc4 sdk: add boolean to SerializableType 2024-10-31 09:20:14 -07:00
Koushik Dutta
1b58b0dd9b sdk: Image ffmpegFormats flag 2024-10-31 09:18:05 -07:00
Koushik Dutta
1b5ef3103e sdk: publish 2024-10-29 12:27:02 -07:00
Koushik Dutta
78236a54b8 postrelease 2024-10-29 12:22:35 -07:00
Koushik Dutta
ec2e4d64fd rebroadcast: set online/offline state without prebuffer requirement 2024-10-29 12:21:40 -07:00
Koushik Dutta
44644448f5 postbeta 2024-10-29 12:07:01 -07:00
Koushik Dutta
0a86d5c4ea server: disable auto transferable Buffers 2024-10-29 12:06:48 -07:00
Koushik Dutta
20282e05ea Merge branch 'main' of github.com:koush/scrypted 2024-10-29 12:05:53 -07:00
Koushik Dutta
9d6b405fa9 postbeta 2024-10-29 12:05:45 -07:00
Koushik Dutta
b82ce5ff45 server: disable auto transferable Buffers 2024-10-29 12:05:33 -07:00
apocaliss92
f461198e1e reolink: battery params supported (#1621)
* Reolink battery params supported

* Style restored

* Battery check interval incresed

* Fix battery checks

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-28 18:36:17 -07:00
Jacob McSwain
7505e6907a feat(sdk): add support for notification channel in NotifierOptions (#1625)
* feat(sdk): add support for notification channel in NotifierOptions

This change spins off from conversation at https://github.com/scryptedapp/homeassistant/pull/1 and allows consumers of the `Notifier` interface to specify a channel for notifications to be sent to. Android platforms can use this to send notifications to a specific channel, allowing the user to have fine-grained control over the audio and priority of the notifications they receive.

* chore(sdk): place Android notification channel under the android object

* fix(automation-actions): remove channel from UI
2024-10-27 01:38:56 -05:00
apocaliss92
c1046d5706 HomeKit: Add flag to not autoenable devices on creation (#1626)
* Add flag to not autoenable devices on creation

* Invert naming logic

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-27 01:38:24 -05:00
Koushik Dutta
a61c06b607 remove dev site 2024-10-26 16:19:52 -05:00
Koushik Dutta
d3df5742e6 update index 2024-10-26 15:35:44 -05:00
Koushik Dutta
68ac42ca46 sdk: new dev site 2024-10-26 11:51:20 -05:00
apocaliss92
bb7c6ef8b9 reolink: Fix check for reolink nvrs (#1624)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-23 09:35:01 -05:00
apocaliss92
446e8ed61e reolink: add nvr flag (#1620)
* Reolink - Fix name/model fetching if homehub

* Checks removed

* style change removed

* Change logic for earlier returns

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-21 14:02:20 -07:00
Koushik Dutta
80372b35f2 npu: update drivers 2024-10-21 11:29:08 -07:00
Koushik Dutta
57eff2f296 Merge branch 'main' of github.com:koush/scrypted 2024-10-21 10:39:44 -07:00
Koushik Dutta
d996088041 sdk: fix deprecation on getCloudEndpoint 2024-10-21 10:39:40 -07:00
apocaliss92
04be70019b Reolink - Fix get ability (#1616)
* Reolink - Fix get ability

* getAbility current behavior kept

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-20 15:20:26 -07:00
Koushik Dutta
51732d0dcd proxmox: preserve hostname 2024-10-19 21:48:19 -07:00
Koushik Dutta
e40bc3ddee proxmox: preserve hostname 2024-10-19 21:38:07 -07:00
Koushik Dutta
3f4409e1c3 Merge branch 'main' of github.com:koush/scrypted 2024-10-19 21:26:23 -07:00
Koushik Dutta
63b7616ab3 proxmox: preserve mac address 2024-10-19 21:26:17 -07:00
apocaliss92
29059691ce Alexa: add option to not auto enable devices (#1615)
Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-19 16:10:42 -07:00
apocaliss92
531a9d28dc reolink: Reolink only-token client added (#1614)
* Reolink only-token client added

* Reolink auth fixes

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-19 15:06:35 -07:00
Koushik Dutta
3314b4d9ca reolink: publish 2024-10-18 20:30:40 -07:00
Koushik Dutta
37df9810c8 diagnostics: deprecate electron-core 2024-10-18 10:39:10 -07:00
Koushik Dutta
47c1cbba3c lxc-docker: shuffle volumes for faster resets 2024-10-18 09:53:52 -07:00
Koushik Dutta
ded7e549bb lxc-docker: link to docs for mount point specifics 2024-10-18 09:25:17 -07:00
Koushik Dutta
abb2b85cec lxc-docker: fix mp restore 2024-10-18 09:16:50 -07:00
Koushik Dutta
7d157d2882 lxc-docker: fix message line length 2024-10-18 09:14:01 -07:00
Koushik Dutta
c6c0a225dd lxc-docker: update messaging 2024-10-18 09:12:22 -07:00
Koushik Dutta
276fc386ec Merge branch 'main' of github.com:koush/scrypted 2024-10-18 09:08:15 -07:00
Koushik Dutta
0b21afd193 lxc-docker: handle moving volumes in migration 2024-10-18 09:08:10 -07:00
Koushik Dutta
1032e58e3b Update config.yaml 2024-10-17 21:06:52 -07:00
Koushik Dutta
4987b01167 Update package.json 2024-10-17 19:26:55 -07:00
Koushik Dutta
28bb8c5b3c proxmox: clarify docs 2024-10-17 14:15:44 -07:00
Koushik Dutta
2160170c3a proxmox: bump to lxc-docker 2024-10-17 14:06:21 -07:00
Koushik Dutta
c0eac9053b proxmox: restore warning 2024-10-17 13:58:46 -07:00
Koushik Dutta
d57501dd42 proxmox: fix restore 2024-10-17 13:53:34 -07:00
Koushik Dutta
264cb0404f proxmox: dont show existing container warning on restore 2024-10-17 13:41:40 -07:00
Koushik Dutta
dc9f4b39a8 proxmox: storage setup docs 2024-10-17 13:38:50 -07:00
Koushik Dutta
653eeceaf2 proxmox: stop container prior to restore. 2024-10-17 13:35:57 -07:00
Koushik Dutta
3d8711947a proxmox: detect force for better error handling 2024-10-17 13:33:02 -07:00
Koushik Dutta
38038d5f30 proxmox: script language cleanup 2024-10-17 13:28:59 -07:00
Koushik Dutta
e21d9c3a0c proxmox: additional installation options if container exists 2024-10-17 13:24:53 -07:00
Koushik Dutta
7b8c014b3b mac: remove libvips 2024-10-17 12:31:06 -07:00
Koushik Dutta
55a30864fd Revert "mac: update python to use whatever is latest"
This reverts commit 4f419ff75c.
2024-10-17 12:30:50 -07:00
Koushik Dutta
4f419ff75c mac: update python to use whatever is latest 2024-10-17 12:26:25 -07:00
Koushik Dutta
638a4f28ad postbeta 2024-10-17 12:09:53 -07:00
Koushik Dutta
8970154b8f lxc-docker: restore prune if pull is requested 2024-10-17 12:05:37 -07:00
Koushik Dutta
c96debaaed lxc-docker: wait 5 minutes prior to pruning 2024-10-17 12:04:46 -07:00
Koushik Dutta
fe7b479235 lxc-docker: use docker compose --pull as appropriate 2024-10-17 11:53:09 -07:00
Koushik Dutta
aa1486e641 postrelease 2024-10-17 11:15:41 -07:00
Koushik Dutta
207f00733e lxc-docker: abort on any container exit. potentially bad with watchtower updates. 2024-10-17 09:32:03 -07:00
Koushik Dutta
bc4b2c956c postbeta 2024-10-17 09:23:34 -07:00
Koushik Dutta
e15578c9ca proxmox: intel microcode 2024-10-16 20:38:12 -07:00
Koushik Dutta
e2c5ee2400 proxmox: intel microcode 2024-10-16 20:38:04 -07:00
Koushik Dutta
dec62ddbc6 proxmox: intel microcode 2024-10-16 20:37:24 -07:00
Koushik Dutta
e7a65c4a28 Merge branch 'main' of github.com:koush/scrypted 2024-10-16 13:32:58 -07:00
Koushik Dutta
127855c57e core: bump lxc intel icd 2024-10-16 13:32:53 -07:00
Koushik Dutta
d9f35ef461 proxmox: broader udev rules 2024-10-16 10:52:00 -07:00
Koushik Dutta
787c452105 sdk: improve deeplinks 2024-10-15 09:56:19 -07:00
Koushik Dutta
3556b326f5 core: update 2024-10-15 09:42:05 -07:00
Koushik Dutta
dd42878a5f Merge branch 'main' of github.com:koush/scrypted 2024-10-15 09:41:26 -07:00
Koushik Dutta
07db378763 sdk: deeplink support 2024-10-14 18:17:55 -07:00
Koushik Dutta
df142635b8 postbeta 2024-10-11 18:32:42 -07:00
Brett Jia
24bcc32532 server: aggressively catch child process pipe errors (#1609)
* server: aggressively catch python child process pipe errors

* document error behavior

* move stdio error handling to setupWorker

* handle undefined stdio
2024-10-11 15:34:44 -07:00
Koushik Dutta
5856ad60dd webrtc: fix opus crash 2024-10-10 10:48:40 -07:00
Koushik Dutta
124da3c1b7 webrtc: max compat mode should reset 2024-10-10 10:36:53 -07:00
Koushik Dutta
005efbfe82 webrtc: add flag that forces opus audio 2024-10-10 10:27:07 -07:00
Koushik Dutta
cb955f403d lxc-docker: remove nvidia container toolkit 2024-10-09 22:43:17 -07:00
Koushik Dutta
fa38d8c560 lxc-docker: ensure a unique WATCHTOWER_HTTP_API_TOKEN is used every launch 2024-10-09 17:56:37 -07:00
Koushik Dutta
0e4a94cd6e install: SCRYPTED_LXC env automatically installs more stuff 2024-10-09 17:44:54 -07:00
Koushik Dutta
a0c3721140 docker: move container toolkit script 2024-10-09 17:43:48 -07:00
Koushik Dutta
7efffe4c51 docker: default values in case env file goes missing 2024-10-09 17:28:01 -07:00
Koushik Dutta
2ff80780f8 install: fix watchtower arg 2024-10-09 16:37:26 -07:00
Koushik Dutta
9a41e3bc29 lxc-docker: force container recreate and move watchtower auto update into modifiable env. 2024-10-09 16:29:36 -07:00
Koushik Dutta
23de4011fb lxc-docker: reenable watchtower 2024-10-09 16:08:57 -07:00
Koushik Dutta
4fba5b9484 install: generate watchtower token at install time via env 2024-10-09 15:28:41 -07:00
Koushik Dutta
0dcfa367a6 Merge branch 'main' of github.com:koush/scrypted 2024-10-09 15:15:56 -07:00
Koushik Dutta
8e63943f53 install: generate watchtower token at install time via env 2024-10-09 15:15:52 -07:00
apocaliss92
e2d78611c5 reolink: preset supports
* Reolink presets supported

* Round changed with ceil to avoid sending 0

* ptzOp detached to a specific one

* Preset command moved as first

* Return added

* Unecessary ptz condition removed

---------

Co-authored-by: Gianluca Ruocco <gianluca.ruocco@xarvio.com>
2024-10-09 14:04:21 -07:00
Koushik Dutta
8a94c268ac nvidia: simplify with new docker image 2024-10-09 13:29:53 -07:00
Koushik Dutta
10bdef414e install: auto enable nvidia gpus and capabilities 2024-10-09 13:06:54 -07:00
Koushik Dutta
317ee80477 install: nvidia container toolkit fixes 2024-10-09 12:26:43 -07:00
Koushik Dutta
851c5caf4d install: nvidia container toolkit 2024-10-09 12:16:32 -07:00
Koushik Dutta
03cfeffca5 install: nvidia container toolkit 2024-10-09 12:16:22 -07:00
Koushik Dutta
196316ad97 install: support 24.04 containers. remove cudnn8 and cuda11. 2024-10-09 11:11:51 -07:00
Koushik Dutta
f7ccdf0795 Merge branch 'main' of github.com:koush/scrypted 2024-10-09 10:39:57 -07:00
Koushik Dutta
64d36513a0 install: support 24.04 containers. remove cudnn8 and cuda11. 2024-10-09 10:39:52 -07:00
David Montgomery
6ae8fd6d96 update broken link (#1605)
* Update install-scrypted-docker-compose.sh

* Update install-scrypted-docker-compose.sh

---------

Co-authored-by: Koushik Dutta <koush@koushikdutta.com>
2024-10-08 17:34:13 -07:00
Koushik Dutta
7448f19b78 install: Update docker-compose.sh 2024-10-07 19:53:49 -07:00
Koushik Dutta
35f0e325c1 common: strict 2024-10-05 20:53:26 -07:00
Koushik Dutta
579e188d06 diagnostics: logging 2024-10-05 20:53:21 -07:00
Koushik Dutta
09e97a2895 lxc-docker: more system maintenance on startup 2024-10-05 11:56:07 -07:00
Koushik Dutta
700856bc2e reolink: use abs movement 2024-10-05 09:55:00 -07:00
Koushik Dutta
26eb69b08a reolink: publish 2024-10-05 08:56:09 -07:00
Koushik Dutta
332d9716f9 reolink: fix double ptz move 2024-10-05 08:55:35 -07:00
Koushik Dutta
511f348cbe onvif: initial ptz preset support 2024-10-04 20:16:44 -07:00
Koushik Dutta
f26b6c3bca unifi-protect: consider host when trying to find stable ids 2024-10-04 17:23:59 -07:00
Koushik Dutta
d38abcd563 core: ptz preset/home support 2024-10-04 15:41:08 -07:00
Koushik Dutta
b71f6e8b7e onvif: preset support 2024-10-04 15:23:46 -07:00
Koushik Dutta
b492e8912e onvif: continuous movement support 2024-10-04 14:57:29 -07:00
Koushik Dutta
e663f5d3fc lxc-docker: use -e 2024-10-04 13:11:51 -07:00
Koushik Dutta
21ac653c66 core: update ui 2024-10-04 12:06:44 -07:00
Koushik Dutta
e6f80be974 core: support updates for lxc docker 2024-10-04 12:03:07 -07:00
Koushik Dutta
7b41e17981 lxc: remove welcome as it messes up dpkg 2024-10-04 11:53:48 -07:00
Koushik Dutta
530961179d lxc-docker: updates 2024-10-04 11:44:53 -07:00
Koushik Dutta
7bb1d75905 proxmox: fix writing /etc/issue 2024-10-03 14:19:26 -07:00
Koushik Dutta
337a74a170 proxmox: pull the docker compose script from repo 2024-10-03 13:45:25 -07:00
Koushik Dutta
e21facb123 proxmox: add docker compose script 2024-10-03 13:42:28 -07:00
Koushik Dutta
15ac061311 proxmox: add docker compose script 2024-10-03 13:41:31 -07:00
Koushik Dutta
f66a300082 docker: cleanup old installs 2024-10-03 13:33:35 -07:00
Koushik Dutta
24d754b5dc lxc: background the update processes 2024-10-03 13:02:43 -07:00
Koushik Dutta
0221d00a17 lxc: change docker-compose.sh path 2024-10-03 12:56:43 -07:00
Koushik Dutta
3c49501c2c proxmox: lxc icon 2024-10-03 12:50:16 -07:00
Koushik Dutta
a81e5337f0 lxc: fix script creation/chmod order 2024-10-03 11:41:33 -07:00
Koushik Dutta
675339f495 lxc: fix script erorr 2024-10-03 11:36:37 -07:00
Koushik Dutta
48c6b90e21 lxc: more docker env tweaks 2024-10-03 11:35:33 -07:00
Koushik Dutta
ccf2b8c67d lxc-docker: disable autorestart 2024-10-03 10:56:05 -07:00
Koushik Dutta
cc97d7d1c1 docker: disable init core dump anyways 2024-10-03 10:39:02 -07:00
Koushik Dutta
6af2f5eecd docker: another attempt at ulimit 2024-10-03 10:27:13 -07:00
Koushik Dutta
1df4c964d7 lxc-docker: disable watchtower 2024-10-03 10:14:29 -07:00
Koushik Dutta
24b5b36a44 docker: disable core dumps in lite container 2024-10-03 09:24:58 -07:00
Koushik Dutta
1da7d25235 Merge branch 'main' of github.com:koush/scrypted 2024-10-03 09:11:39 -07:00
Koushik Dutta
d691b21646 docker: something enabled core dumps in container. disable core dumps in container. 2024-10-03 09:11:34 -07:00
Brett Jia
d691bfcef1 core: clear local url converter cache after 10m (#1595)
* core: clear local url converter cache after 10s

* update to 10m
2024-10-02 12:15:59 -07:00
Koushik Dutta
04d5633690 nvidia: icd mount no longer necessary 2024-10-02 10:05:57 -07:00
Koushik Dutta
dffd20f978 Merge branch 'main' of github.com:koush/scrypted 2024-10-02 09:39:35 -07:00
Koushik Dutta
5fd9579423 nvidia: icd notes 2024-10-02 09:39:28 -07:00
Koushik Dutta
bd7d49833f nvidia: fix container expectations 2024-10-02 09:38:10 -07:00
Brett Jia
701ca5e1e2 objectdetector: extend retention of detection inputs to 10s (#1586) 2024-10-02 09:30:11 -07:00
Koushik Dutta
14cb5a2117 install: can't fix stupid 2024-10-02 09:23:16 -07:00
Koushik Dutta
adf4e797c1 onnx/nvidia docker: bump versions, fix cuda 12 2024-10-02 09:00:14 -07:00
Koushik Dutta
a946be88d3 onnx: docs 2024-10-01 23:56:21 -07:00
Koushik Dutta
4be844f3f7 onnx: update runtime for windows 2024-10-01 23:51:34 -07:00
Koushik Dutta
9eff813619 Merge branch 'main' of github.com:koush/scrypted 2024-10-01 09:29:36 -07:00
Koushik Dutta
e1b5eaa63f google-device-access: rebuild with new sdk 2024-10-01 09:29:29 -07:00
Koushik Dutta
b7f1efc307 diagnostics: typo 2024-09-30 18:47:42 -07:00
Koushik Dutta
12fedc53ee Merge branch 'main' of github.com:koush/scrypted 2024-09-29 15:19:47 -07:00
Koushik Dutta
1c7626c156 diagnostics: fix nre in server addr check 2024-09-29 15:19:42 -07:00
Koushik Dutta
a578623d3f nvidia: more reliable opencl setup 2024-09-28 12:15:30 -07:00
Koushik Dutta
b13d32f3ed amcrest: publish 2024-09-28 10:46:04 -07:00
Koushik Dutta
d34c3aae74 amcrest: dont fail if motion detect reset fails 2024-09-28 10:45:03 -07:00
Koushik Dutta
c27176f0f8 ring: more push updates 2024-09-26 10:07:05 -07:00
Koushik Dutta
be4f4bb6d6 install: update intel drivers 2024-09-25 21:03:52 -07:00
Koushik Dutta
26db89b811 cloud: observe connection termination 2024-09-25 20:19:44 -07:00
Koushik Dutta
6f0738ef07 diagnostics: gpu transform test 2024-09-25 13:06:34 -07:00
Koushik Dutta
1ae1eafddc diagnostics: add detection test 2024-09-25 12:27:17 -07:00
Koushik Dutta
0ecacfd974 openvino: update openvino to 2014.4.0 2024-09-25 08:56:14 -07:00
Koushik Dutta
146a648f39 snapshot: export createVipsMediaObject 2024-09-25 08:55:40 -07:00
Koushik Dutta
7015f26eee ring: heartbeat 2024-09-24 11:42:15 -07:00
Brett Jia
a4e484698d server: implement python listen + listenDevice (#1587)
* server: implement python listen + listenDevice

* fix unregister

* make functions synchronous
2024-09-23 09:34:10 -07:00
Koushik Dutta
1d659a5fb9 onvif: update onvif to support https, publish 2024-09-22 12:01:56 -07:00
Koushik Dutta
80e70b6bb8 ring: update push receiver 2024-09-22 11:28:55 -07:00
Koushik Dutta
ceec1174e3 cloud: expose server id header 2024-09-20 15:52:12 -07:00
Koushik Dutta
b658202d8a cloud: include server id in responses 2024-09-20 15:45:34 -07:00
Koushik Dutta
425ee41ab0 core: publish 2024-09-20 15:06:11 -07:00
Koushik Dutta
3f7b801ffb cloud: server id reporting 2024-09-20 15:06:07 -07:00
Koushik Dutta
ccb7ae0323 core: publish 2024-09-20 10:06:50 -07:00
Koushik Dutta
252c90fb46 cloud: remove reliance on google for login process 2024-09-19 23:11:04 -07:00
Koushik Dutta
2beceaf869 videoanalysis: provide audio 2024-09-19 20:43:25 -07:00
Koushik Dutta
1dbb9a0f63 Merge branch 'main' of github.com:koush/scrypted 2024-09-19 12:03:03 -07:00
Koushik Dutta
85c35f5fb7 amcrest: autoconfigure removes amcrest logo 2024-09-19 12:02:59 -07:00
Koushik Dutta
8966cd7c70 Update install-scrypted-proxmox.sh 2024-09-19 07:22:44 -07:00
Koushik Dutta
60aeae5336 diagnostics: codec check 2024-09-18 16:14:16 -07:00
Koushik Dutta
eef6c3ed3f cloud: use multiple signaling paths 2024-09-18 10:08:57 -07:00
Koushik Dutta
979c430303 cloud: remove dead code 2024-09-18 08:47:51 -07:00
Koushik Dutta
4892b72f37 cloud: use cloudflare as secondary signaling path 2024-09-17 09:19:14 -07:00
Koushik Dutta
3fd81b86d7 webrtc: wait before terminating thread 2024-09-15 21:51:03 -07:00
Koushik Dutta
b3a2789a1d diagnostics: cloud warn 2024-09-15 21:50:33 -07:00
Koushik Dutta
fde5cfa51e webrtc: remove webrtc api transport 2024-09-15 15:04:14 -07:00
Koushik Dutta
1ada7bb3fe common: rtp forwarder ffmpeg path 2024-09-15 13:26:25 -07:00
Koushik Dutta
2445ea909d proxmox: good grief people cant read 2024-09-15 13:26:15 -07:00
Koushik Dutta
7b16e8e969 install: make sure install is performed on proxmox host 2024-09-15 10:33:38 -07:00
Koushik Dutta
1ffe8357e3 diagnostics: print addresses 2024-09-14 12:55:55 -07:00
Koushik Dutta
c96b4730de Merge branch 'main' of github.com:koush/scrypted 2024-09-14 12:40:14 -07:00
Koushik Dutta
d89a8c6072 diagnostics: indicator for test hang/running 2024-09-14 12:40:09 -07:00
Koushik Dutta
8e47bbb153 proxmox: disk script logging 2024-09-14 10:05:38 -07:00
Koushik Dutta
b04bb414d6 proxmox: better disk granularity 2024-09-13 22:31:43 -07:00
Koushik Dutta
bd947fb934 proxmox: add disk 2024-09-13 22:30:25 -07:00
Koushik Dutta
a643960863 proxmox: disk type support 2024-09-13 22:28:14 -07:00
Koushik Dutta
83f869988d proxmox: script formatting 2024-09-13 22:23:40 -07:00
Koushik Dutta
1fc0934b4e proxmox: script formatting 2024-09-13 22:20:13 -07:00
Koushik Dutta
29b7e4151a proxmox: script formatting 2024-09-13 22:11:24 -07:00
Koushik Dutta
ad3c4f9529 proxmox: script formatting 2024-09-13 22:06:07 -07:00
Koushik Dutta
e9026372c1 Merge branch 'main' of github.com:koush/scrypted 2024-09-13 21:50:27 -07:00
Koushik Dutta
9b30064896 proxmox: dir script 2024-09-13 18:13:19 -07:00
Koushik Dutta
c73ffb30c1 proxmox: docs 2024-09-13 18:03:27 -07:00
Koushik Dutta
bae12eecae proxmox: dir sanity check 2024-09-13 18:00:52 -07:00
Koushik Dutta
1440b3811d proxmox: scripts 2024-09-13 17:58:49 -07:00
Koushik Dutta
59a3a97577 diagnostics: words 2024-09-13 10:54:03 -07:00
Koushik Dutta
07f02fe371 postbeta 2024-09-13 10:53:36 -07:00
Koushik Dutta
cf4f4b7c73 diagnostics: more checks 2024-09-12 20:36:14 -07:00
Koushik Dutta
aab0bdfc41 cloud: additional cloudflare failure handling 2024-09-12 18:47:11 -07:00
Koushik Dutta
438f61b729 lxc: mirror docker compose 2024-09-12 18:46:20 -07:00
Koushik Dutta
0b3717439f lxc: relax chown 2024-09-12 13:51:22 -07:00
Koushik Dutta
a9a145bd3e lxc: relax SCRYPTED_NONINTERACTIVE check 2024-09-12 13:29:53 -07:00
Koushik Dutta
2f97b39cbb lxc: service user is root 2024-09-12 13:28:42 -07:00
Koushik Dutta
8bc1fe1588 lxc: apparmor removal should be allowed to fail 2024-09-12 13:27:59 -07:00
Koushik Dutta
90740f3c9d lxc: remove apparmor 2024-09-12 13:25:41 -07:00
Koushik Dutta
f92a12b99c Merge branch 'main' of github.com:koush/scrypted 2024-09-12 13:23:09 -07:00
Koushik Dutta
405453da03 install: lxc docker prototype 2024-09-12 13:23:04 -07:00
Brett Jia
d01fe4310b server: python createMediaManager func (#1574)
* server: python createMediaManager func

* use api's media manager directly
2024-09-12 13:08:03 -07:00
Koushik Dutta
6bcab63e0e install: lxc docker prototype 2024-09-12 13:01:16 -07:00
Koushik Dutta
c2bf7a62ab install: lxc docker prototype 2024-09-12 12:51:51 -07:00
Koushik Dutta
bc631d6c8b diagnostics: recognize ha 2024-09-12 12:02:10 -07:00
Koushik Dutta
66877d1efa core: i am really bad at this 2024-09-12 11:13:01 -07:00
Koushik Dutta
96a4a11503 core: fix level-zero install check 2024-09-12 11:04:01 -07:00
Koushik Dutta
bd0393305b core: trigger restart after level zero removal 2024-09-12 10:51:26 -07:00
Koushik Dutta
9033eadafb docker: remove npu 2024-09-12 10:50:29 -07:00
Koushik Dutta
c42b8ecda2 openvino/lxc: fix crashing 2024-09-12 10:49:18 -07:00
Koushik Dutta
521bb62f10 openvino: better gpu failure fallback 2024-09-11 16:55:20 -07:00
Koushik Dutta
8819f0a249 install: update intel firmware 2024-09-11 16:54:54 -07:00
Koushik Dutta
341cfa1e2f diagnostics: gpu decode test 2024-09-11 12:53:01 -07:00
Koushik Dutta
96335544ad openvino: openvino 2024.2.0 is crashy 2024-09-11 12:52:38 -07:00
Koushik Dutta
ce0adb5706 diagnostics: skip dupes 2024-09-11 10:44:58 -07:00
Koushik Dutta
22fb257214 core: update ui 2024-09-11 10:28:44 -07:00
Koushik Dutta
674034fb7e openvino: GPU to AUTO fallback on error 2024-09-11 10:13:45 -07:00
Koushik Dutta
44dcfe5e12 openvino: rollback 2024-09-11 10:08:30 -07:00
Koushik Dutta
194e8532c3 core: publish 2024-09-11 09:45:40 -07:00
Koushik Dutta
797ef79080 unifi-protect: filter out unadopted cams 2024-09-11 09:28:10 -07:00
Koushik Dutta
56dbecbf3d videoanalsyis: dont allow extension to be disabled. 2024-09-11 08:57:27 -07:00
Koushik Dutta
67acb7725f openvino: fix model execution 2024-09-10 19:56:42 -07:00
Koushik Dutta
a2caad7109 diagnostics: idr check 2024-09-10 17:43:16 -07:00
Koushik Dutta
599d370f7d diagnostics: unifi protect junk snapshots 2024-09-10 15:23:56 -07:00
Koushik Dutta
be284a0df7 diagnostics: (jsonip.com) 2024-09-10 15:17:02 -07:00
Koushik Dutta
030c3432a7 diagnostics: notifier 2024-09-10 15:16:34 -07:00
Koushik Dutta
7d0d26ad31 diagnostics: install validation 2024-09-10 15:04:23 -07:00
Koushik Dutta
6ba8a1dea4 diagnostics: publish 2024-09-10 14:37:40 -07:00
Koushik Dutta
cafb6944f5 diagnostics: stream validation 2024-09-10 14:34:03 -07:00
Koushik Dutta
f800401317 diagnostics: initial commit 2024-09-10 14:17:19 -07:00
Koushik Dutta
d672e2271d sdk: update 2024-09-10 13:21:54 -07:00
Koushik Dutta
3d558e3119 postbeta 2024-09-09 12:50:33 -07:00
Brett Jia
c94945c6d5 server: allow plugins to specify portable python build tags (#1571) 2024-09-09 12:26:01 -07:00
Koushik Dutta
82afc6d53f ha: update 2024-09-08 16:43:50 -07:00
Koushik Dutta
16ba10da21 videoanalysis: deprecate electron core 2024-09-08 16:43:37 -07:00
Koushik Dutta
6f5e0700a2 postrelease 2024-09-08 16:41:04 -07:00
Koushik Dutta
11b81371b4 postrelease 2024-09-08 16:40:29 -07:00
Koushik Dutta
e33cacd15d postbeta 2024-09-06 10:54:31 -07:00
Koushik Dutta
e225b746c4 server: update deps 2024-09-06 10:54:24 -07:00
Koushik Dutta
1e1fda6b9a server: findPluginDevice is not optional 2024-09-06 10:50:06 -07:00
Koushik Dutta
e23c9c22dc onnx: fix platform check 2024-09-05 10:34:22 -07:00
Koushik Dutta
28f1ce9d4e postbeta 2024-09-04 12:19:33 -07:00
Koushik Dutta
5f4e2793ff server: possibly fix bug where rpc object may not be found 2024-09-04 10:36:56 -07:00
Koushik Dutta
1e1755fa7e server: cluster cleanups 2024-09-04 10:17:30 -07:00
Koushik Dutta
ebd56b86e4 postbeta 2024-09-04 09:30:27 -07:00
Koushik Dutta
4607bec07c server: improve fork/thread logging 2024-09-04 09:30:19 -07:00
Koushik Dutta
a26cdfea2a postbeta 2024-09-03 22:45:04 -07:00
Koushik Dutta
6d0da449ad server: simplify convoluted peer key 2024-09-03 22:31:51 -07:00
Koushik Dutta
ad15fe3324 cloud: update deps 2024-09-03 17:20:39 -07:00
Koushik Dutta
fbe3e83884 cameras: move autoconfiguration button so its less accidentally clickable 2024-09-03 16:01:11 -07:00
Koushik Dutta
0d4cf34930 reolink: move some device creation stuff into advanced tab 2024-09-03 15:54:36 -07:00
Koushik Dutta
3a3e15cd74 server: allow main/child thread ipc 2024-09-03 15:26:21 -07:00
Koushik Dutta
8b9cfebbfa cloud: handle mux carrier errors 2024-09-03 08:43:06 -07:00
Koushik Dutta
b3087058a7 google-home/alexa: republish with new sdk for media converter 2024-09-02 08:40:03 -07:00
Koushik Dutta
4e923a78da cloud: fix short lived regression 2024-09-01 20:42:32 -07:00
Koushik Dutta
b5593d6251 cloud: cleanups 2024-09-01 20:14:47 -07:00
Koushik Dutta
40b7b621a0 openvino: update 2024-09-01 08:17:54 -07:00
Koushik Dutta
7104ad6378 openvino: improve device selection 2024-08-29 21:15:19 -07:00
Koushik Dutta
51f893ef63 install: update proxmox and ha 2024-08-29 20:58:54 -07:00
Koushik Dutta
29c5dfd73b core: install npu drivers in lxc 2024-08-29 20:37:42 -07:00
Koushik Dutta
1615f79a0b install: npu driver update 2024-08-29 20:32:35 -07:00
Koushik Dutta
dc5a6126b9 sdk: add id to recorded event on notifications 2024-08-29 08:02:33 -07:00
Koushik Dutta
0fbe3e4686 cloud: upnp no longer default 2024-08-28 13:23:52 -07:00
Koushik Dutta
c9641568f8 core: publish 2024-08-27 21:54:36 -07:00
Koushik Dutta
dceea38eb8 core: publish 2024-08-27 21:31:22 -07:00
Koushik Dutta
cd1fce71e2 postrelease 2024-08-27 21:15:09 -07:00
Koushik Dutta
3b6454f107 cli: add support for version launch hint 2024-08-27 18:30:33 -07:00
Koushik Dutta
d238d8d4ba onnx: fix broken arm64 2024-08-27 11:16:16 -07:00
Koushik Dutta
a24d46f3d2 postbeta 2024-08-27 09:36:56 -07:00
Koushik Dutta
df7deef4aa server/sdk: forks can be associated with specific device/mixin 2024-08-27 09:36:47 -07:00
Koushik Dutta
e94cea0236 Revert "server: revert port contention change"
This reverts commit 57439634e5.
2024-08-27 08:58:22 -07:00
Koushik Dutta
4794a6dbf3 postbeta 2024-08-27 08:50:28 -07:00
Koushik Dutta
57439634e5 server: revert port contention change 2024-08-27 08:50:19 -07:00
Koushik Dutta
89e6e50b12 rebroadcast: reduce logging 2024-08-26 23:04:51 -07:00
Koushik Dutta
c21ef069bd Merge branch 'main' of github.com:koush/scrypted 2024-08-26 14:18:15 -07:00
Koushik Dutta
5d41bb38da postbeta 2024-08-26 14:18:11 -07:00
Koushik Dutta
b289024083 server: fix fork debugging port contention 2024-08-26 14:18:04 -07:00
Brett Jia
56572bcec9 onnx: fix install on linux arm64 (#1564) 2024-08-26 09:29:51 -07:00
Koushik Dutta
3e78209817 postbeta 2024-08-26 08:55:27 -07:00
Koushik Dutta
299204313f server: use constants for plugin markers 2024-08-26 08:55:19 -07:00
Koushik Dutta
88b134f4b9 postbeta 2024-08-26 08:35:02 -07:00
Koushik Dutta
e8bd72a329 server: fix child process flag markers 2024-08-26 08:34:54 -07:00
Koushik Dutta
214dbc8153 postbeta 2024-08-26 08:12:33 -07:00
Koushik Dutta
3f0c706154 server: improve process markers 2024-08-26 08:12:26 -07:00
Koushik Dutta
013131e816 postbeta 2024-08-25 12:36:57 -07:00
Koushik Dutta
0342bf91f6 server: add rimraf 2024-08-25 12:36:46 -07:00
Koushik Dutta
6fb98c7e84 server: remove legacy deps 2024-08-25 12:36:28 -07:00
Koushik Dutta
f4168ff4eb postbeta 2024-08-25 09:58:02 -07:00
Koushik Dutta
a5febd7ca0 server: update deps 2024-08-25 09:57:55 -07:00
Koushik Dutta
31428b4c28 postbeta 2024-08-24 18:21:21 -07:00
Koushik Dutta
3e0dfc6bda install: remove electron 2024-08-24 18:12:44 -07:00
Koushik Dutta
4290eb0abb server: remove electron 2024-08-24 18:12:00 -07:00
Koushik Dutta
fd2d7e9485 server: electron angle setup 2024-08-24 18:10:05 -07:00
Koushik Dutta
a57cf3b1e6 sdk: improve multi entry build 2024-08-24 18:09:50 -07:00
Koushik Dutta
fad485c0d7 Merge branch 'main' of github.com:koush/scrypted 2024-08-23 08:22:41 -07:00
Koushik Dutta
9e3cf83b07 onnx: fix broken onnxruntime-gpu cudnn9 2024-08-23 08:22:35 -07:00
Koushik Dutta
ebe0b6ea7f install: remove intel stuff from lite builds 2024-08-22 16:22:17 -07:00
Koushik Dutta
4ce0ecaaa2 onvif: fix autoconfig with no audio 2024-08-22 12:33:42 -07:00
Koushik Dutta
44264fb50b onnx: make cuda available to windows 2024-08-22 10:27:12 -07:00
Koushik Dutta
ab188bfe80 postbeta 2024-08-21 14:34:05 -07:00
Koushik Dutta
83d32da7f1 server: improve electron enable-features handling 2024-08-21 14:33:57 -07:00
Koushik Dutta
e68b3f401f postbeta 2024-08-21 14:02:44 -07:00
Koushik Dutta
43a73c6d89 server: fix electron bin in npm package 2024-08-21 14:02:12 -07:00
Koushik Dutta
6c6613d841 server: fixup electron bin dir path per platform/version 2024-08-21 14:00:57 -07:00
Koushik Dutta
479ef136a6 postbeta 2024-08-21 13:41:41 -07:00
Koushik Dutta
b42abf377b server: use @electron/get as production dependency 2024-08-21 13:41:05 -07:00
Koushik Dutta
5713935ccc server: break out electron runtimes 2024-08-21 12:51:23 -07:00
Koushik Dutta
09fc609c7f postbeta 2024-08-21 12:22:36 -07:00
Koushik Dutta
e44ba222b8 server: fix convertMediaObjectToJSON back compat 2024-08-21 12:18:30 -07:00
Koushik Dutta
e34a5a7c3d snapshot: fix perma broken nvr snapshots 2024-08-21 12:03:29 -07:00
Koushik Dutta
e490225c4a webrtc: simplify convert paths 2024-08-21 11:50:25 -07:00
Koushik Dutta
e769e8ea98 sdk: remove unnecessary param in debug request 2024-08-21 11:50:00 -07:00
Koushik Dutta
ec5c164552 webrtc: fix type erasure 2024-08-21 11:31:54 -07:00
Koushik Dutta
64a213424d postbeta 2024-08-21 11:10:53 -07:00
Koushik Dutta
e81c454c1e server: fix node thread worker removing handlers that should not be 2024-08-21 11:10:21 -07:00
Koushik Dutta
776307bcbc server: enable SharedArrayBuffer and other stuff for electron 2024-08-21 11:09:31 -07:00
Koushik Dutta
95c97e3eb2 server: fix plugin load causing server crash, fix unhandled rejections caused by plugin kill 2024-08-21 10:59:27 -07:00
Koushik Dutta
08926a35a9 server: use standard debug port for electron 2024-08-21 10:43:51 -07:00
Koushik Dutta
c037548ffb postbeta 2024-08-21 09:52:45 -07:00
Koushik Dutta
462189efc2 server: implement electron debugging 2024-08-21 09:50:22 -07:00
Koushik Dutta
a4fed9c7ad postbeta 2024-08-20 23:20:13 -07:00
Koushik Dutta
3c8f94ab2f server: Fix electron display var 2024-08-20 23:20:04 -07:00
Koushik Dutta
fe3391c89c docker: fix xvfb dep 2024-08-20 22:51:24 -07:00
Koushik Dutta
270b43bed6 postbeta 2024-08-20 22:23:07 -07:00
Koushik Dutta
c0fe12827f server: hide electron window 2024-08-20 22:22:59 -07:00
Koushik Dutta
3bbda53107 postbeta 2024-08-20 22:21:23 -07:00
Koushik Dutta
0d7ee00485 server: electron wip 2024-08-20 22:21:09 -07:00
Koushik Dutta
c605c3ddb5 server: update deps 2024-08-20 20:50:02 -07:00
Koushik Dutta
099ba4f081 server: organize 2024-08-20 20:49:48 -07:00
Koushik Dutta
c14487ac27 server: remove deno 2024-08-20 20:49:23 -07:00
Koushik Dutta
991c31dda8 install: electron deps 2024-08-20 20:35:26 -07:00
Koushik Dutta
3865efd1f7 postbeta 2024-08-19 17:54:18 -07:00
Koushik Dutta
9c5ce45c1e server: catch unhandled iterator teardown throwups 2024-08-19 17:54:08 -07:00
Koushik Dutta
4ab7bc1298 postbeta 2024-08-19 16:04:47 -07:00
Koushik Dutta
0ebbc5ea8f server: sketchy check to determine if buffer is pool buffer 2024-08-19 16:04:38 -07:00
Koushik Dutta
86dcb66e6a postbeta 2024-08-19 15:51:34 -07:00
Koushik Dutta
11831e5d87 server: rpc should handle transport serialization failures and attempt to send plain objects with the error 2024-08-19 15:50:32 -07:00
Koushik Dutta
6b3dc8c1ae postbeta 2024-08-19 13:24:42 -07:00
Koushik Dutta
a49256f073 server: already connected ipc object fast path 2024-08-19 13:24:35 -07:00
Koushik Dutta
ea408377ec postbeta 2024-08-19 13:20:28 -07:00
Koushik Dutta
2da762dfc2 server: working transferible buffers 2024-08-19 13:20:21 -07:00
Koushik Dutta
bfbc6ba6ce rebroadcast: fix build 2024-08-19 12:02:45 -07:00
Koushik Dutta
c2747c80dc server: consolidate peer thread setup 2024-08-19 11:43:10 -07:00
Koushik Dutta
2b58de196e server: use ipc for node threads 2024-08-19 11:07:13 -07:00
Koushik Dutta
731744afbc server: warn on base64 serialization 2024-08-19 09:47:51 -07:00
Koushik Dutta
f4d88493b1 postbeta 2024-08-18 12:47:35 -07:00
Koushik Dutta
265fc4b481 Merge branch 'main' of github.com:koush/scrypted 2024-08-18 12:47:06 -07:00
Koushik Dutta
40a300cff1 server: update console logging location to accomodate vscode filters 2024-08-18 12:47:00 -07:00
Brett Jia
c410907c58 webrtc: remove missing var (#1562) 2024-08-17 23:21:16 -07:00
Brett Jia
199f333fc1 server: allow all application/* mime types (#1561) 2024-08-17 23:21:04 -07:00
Brett Jia
e39bc8c5e6 core: terminal paths via TTYSettings + add TTY interface (#1559) 2024-08-17 16:39:00 -07:00
Brett Jia
a55099de12 webrtc: convert RTCSignalingChannel to FFmpegInput + consolidate all converters (#1558)
* webrtc: add converter from RTCSignalingChannel to FFmpegInput

* consolidate buffer converters to WebRTCBridge as MediaConverter

* consolidate all converters into base plugin device

* remove unused
2024-08-17 10:31:15 -07:00
Koushik Dutta
17900f0589 sdk: fix excessive zipping 2024-08-16 20:32:08 -07:00
Koushik Dutta
075d8bc4ab snapshot: log prebuffer unavailable error 2024-08-16 19:25:41 -07:00
Koushik Dutta
28fce1bb8b Merge branch 'main' of github.com:koush/scrypted 2024-08-16 08:57:22 -07:00
Koushik Dutta
14a2790825 sdk: parallelize build 2024-08-16 08:57:18 -07:00
Roman Sokolov
c2cd491c96 Hikvision Doorbell (#1557)
* Fixed reconnection bugs

* Updated documentation

* hikvision-doorbell version up

* Added support for contact sensor (if it installed on door)

* Refactoring doorbell api

* Fixed some bugs in hikvision doorbell
2024-08-15 15:24:46 -07:00
Koushik Dutta
6301089620 postbeta 2024-08-14 20:28:40 -07:00
Koushik Dutta
c591a87015 server: scope deno into module package 2024-08-14 20:28:33 -07:00
Koushik Dutta
544700ac12 postbeta 2024-08-14 20:22:17 -07:00
Koushik Dutta
2c54dc07ae server: use js for deno-plugin-remote 2024-08-14 20:22:11 -07:00
Koushik Dutta
0dad6eaa76 postbeta 2024-08-14 19:33:11 -07:00
Koushik Dutta
d18b8e0694 server: fix deno stdout 2024-08-14 19:33:03 -07:00
Koushik Dutta
a4130ed047 coreml: update project files 2024-08-14 19:31:52 -07:00
Koushik Dutta
1f89dcb34c common: fix zygote signature 2024-08-14 19:31:31 -07:00
Koushik Dutta
e86ed47533 sdk: fix node import 2024-08-14 13:21:14 -07:00
Koushik Dutta
5fb75e351d postbeta 2024-08-14 12:11:32 -07:00
Koushik Dutta
8ef3fe7a24 server: add support for cross language fork 2024-08-14 11:14:13 -07:00
Koushik Dutta
5c8f034d7c postbeta 2024-08-14 08:43:02 -07:00
Koushik Dutta
561852bc15 server: fixup python remote debugging, fs chdir locations 2024-08-14 08:42:55 -07:00
Koushik Dutta
d14c592d55 vscode-python: proper remote debug fix 2024-08-14 08:33:30 -07:00
Koushik Dutta
bc439d6b7c postbeta 2024-08-14 08:22:55 -07:00
Koushik Dutta
aedb4212fe postbeta 2024-08-14 08:16:43 -07:00
Koushik Dutta
7b780a0eb9 postbeta 2024-08-13 23:21:12 -07:00
Koushik Dutta
6aaaccaece server: revert back to original change that conditionally added unzipped path 2024-08-13 23:21:05 -07:00
Koushik Dutta
0e42b71e4b server: fixup python requirements calc 2024-08-13 23:14:26 -07:00
Koushik Dutta
71a6f9d6a6 vscode-python: revert 2024-08-13 23:03:54 -07:00
Koushik Dutta
68c77aaca4 postbeta 2024-08-13 22:51:41 -07:00
Koushik Dutta
4b73c168b3 vscode-python: update sample with normalized paths 2024-08-13 22:51:18 -07:00
Brett Jia
8f4b67dc5c server: add unzipped path to python module lookup path (#1553)
* server: add unzipped path to python module lookup path

* remove zipPath from sys.path
2024-08-13 22:46:57 -07:00
Koushik Dutta
8a8bee33c1 server: normalize fs path 2024-08-13 22:45:51 -07:00
Koushik Dutta
2b353cf4c8 Merge branch 'main' of github.com:koush/scrypted 2024-08-13 20:13:11 -07:00
Koushik Dutta
6d9cd45936 rebroadcast: add global audio soft mute 2024-08-13 20:13:03 -07:00
Brett Jia
0bc6fadb23 server: allow plugins to customize python installs (#1542)
* server: allow plugins to customize python installs

* move options inside pythonVersion
2024-08-13 18:18:39 -07:00
Koushik Dutta
407f573a29 server: better ipv6 filtering 2024-08-13 12:03:24 -07:00
Koushik Dutta
39674ef9b6 server: fix backup 2024-08-13 10:58:11 -07:00
Koushik Dutta
ffaed01dc3 server: update types 2024-08-13 10:40:49 -07:00
Koushik Dutta
9a144a9a05 postbeta 2024-08-13 10:39:47 -07:00
Koushik Dutta
76e63120f0 server: remove ip dependency for custom implementation 2024-08-13 10:39:37 -07:00
Koushik Dutta
154bc6fef7 postbeta 2024-08-13 10:38:56 -07:00
Koushik Dutta
8302c564c2 cameras: fix autoconfigure math 2024-08-13 09:36:54 -07:00
Koushik Dutta
affda9e94f server: fix anonymous auth + backup/deploy 2024-08-13 09:07:42 -07:00
Koushik Dutta
30148f453c postbeta 2024-08-13 09:07:22 -07:00
Koushik Dutta
259313c454 tensorflow-lite: default model 2024-08-12 21:18:59 -07:00
Koushik Dutta
4f82d49f15 tflite: yolov10 2024-08-12 20:51:06 -07:00
Koushik Dutta
a0b7fc54de cameras: autoconfiguration menu fixes 2024-08-12 17:59:00 -07:00
Koushik Dutta
5501093ff9 core: publish 2024-08-12 12:29:17 -07:00
Koushik Dutta
b2622d92f2 cameras: fix auto config error reporting 2024-08-12 12:26:02 -07:00
Koushik Dutta
957bf742d9 hikvision: auto configure should handle model without audio 2024-08-12 07:50:09 -07:00
Koushik Dutta
b06a3ac55f cameras: dont run configuration in parallel due to race conditions in camera side 2024-08-11 22:20:59 -07:00
Koushik Dutta
9c195594ea webrtc: betas 2024-08-11 21:54:30 -07:00
Koushik Dutta
d32efd6500 amcrest: ad410 autoconfigure fixes 2024-08-11 19:31:01 -07:00
Koushik Dutta
03f1957739 hikvision: ignore vca resource failure 2024-08-11 18:59:59 -07:00
Koushik Dutta
94f564a218 onvif: fix tapo 2024-08-11 18:20:38 -07:00
Koushik Dutta
286aa61a18 hikvision: autoconfigure should disable vca resource 2024-08-11 17:58:44 -07:00
Koushik Dutta
43d30a91f9 cameras: publish autoconfiguration 2024-08-11 17:34:18 -07:00
Koushik Dutta
7be81ab7e2 cameras: more configuration cleanups 2024-08-11 17:31:48 -07:00
Koushik Dutta
31c7c9d86a hikvision: fixup fps calc 2024-08-11 14:26:57 -07:00
Koushik Dutta
820c66311d cameras: autoconfiguration notes 2024-08-11 13:59:27 -07:00
Koushik Dutta
84cbe28a47 Merge branch 'main' of github.com:koush/scrypted 2024-08-11 13:54:40 -07:00
Koushik Dutta
cad1cdd5ce core: publish pending ui changes 2024-08-11 13:54:36 -07:00
Koushik Dutta
2a624a95e5 server: import type for acl for peer dependencies 2024-08-11 13:11:07 -07:00
Koushik Dutta
c6d8333402 reolink: add onvif two way option 2024-08-11 12:25:27 -07:00
Koushik Dutta
96dbb1776c Merge branch 'main' of github.com:koush/scrypted 2024-08-11 11:40:12 -07:00
Koushik Dutta
b43a002650 rebroadcast: fix content base handling when it is a relative path 2024-08-11 11:40:07 -07:00
Koushik Dutta
a58d66d484 docker: use noatime for nvr mounts 2024-08-11 07:59:51 -07:00
Koushik Dutta
bcc9be62e9 reolink: update stream config with docs info and publish 2024-08-11 00:58:34 -07:00
Koushik Dutta
38dd9e2ee2 amcrest: motion reset/setup 2024-08-10 23:56:21 -07:00
Koushik Dutta
3033cd9626 cameras: add autoconfiguration alert 2024-08-10 23:10:05 -07:00
Koushik Dutta
12273b7d1e reolink: fix buikd 2024-08-10 22:46:32 -07:00
Koushik Dutta
afe1421c39 cameras: remove unnecessary codec calls 2024-08-10 22:45:00 -07:00
Koushik Dutta
a9fdb71402 onvif: audio autoconfiguration 2024-08-10 20:26:42 -07:00
Koushik Dutta
9cac4cfd18 hikvision: audio codec configuration 2024-08-10 18:41:20 -07:00
Koushik Dutta
fbaf9b97aa amcrest: auto configure audio 2024-08-10 17:58:56 -07:00
Koushik Dutta
0a55732919 server: fix basic auth handling for demo site 2024-08-10 17:37:30 -07:00
Koushik Dutta
ece0ecbd8f postbeta 2024-08-10 17:37:21 -07:00
Koushik Dutta
d2743465c3 Merge branch 'main' of github.com:koush/scrypted 2024-08-10 15:19:02 -07:00
Koushik Dutta
e41af930c5 server: fix basic auth handling for demo site 2024-08-10 15:18:59 -07:00
Koushik Dutta
582b5182e6 postbeta 2024-08-10 15:18:50 -07:00
Koushik Dutta
2b85aa0f27 intel: fix derp 2024-08-10 14:42:59 -07:00
Koushik Dutta
e74e0b7e21 common: missing file for mp3 handling 2024-08-10 14:17:51 -07:00
Koushik Dutta
70d6813938 rebroadcast/webrtc: fix mp3 handling 2024-08-10 14:17:07 -07:00
Koushik Dutta
c1d84d6e08 amcrest: wip auto configure 2024-08-10 11:06:12 -07:00
Koushik Dutta
5c69c70013 amcrest: wip auto configure 2024-08-10 10:36:26 -07:00
Koushik Dutta
6379aa89ef hikvision: wip autoconfigure 2024-08-09 21:39:43 -07:00
Koushik Dutta
c2756a3a4a hikvision: wip codec configuration 2024-08-09 13:32:22 -07:00
Koushik Dutta
303ced735a cameras: wip codec configuration 2024-08-09 13:15:07 -07:00
Koushik Dutta
bc70803cc0 cameras: wip codec configuration 2024-08-09 10:35:09 -07:00
Koushik Dutta
171b04f267 sdk: Update video stream configuration return type 2024-08-09 09:58:11 -07:00
Koushik Dutta
1cd5c194cc cameras: wip codec configuration 2024-08-08 23:06:50 -07:00
Koushik Dutta
c15fe4281e common: fix auth http body 2024-08-08 21:56:58 -07:00
Koushik Dutta
1bd7f37041 cloud: update push library 2024-08-08 21:56:43 -07:00
Koushik Dutta
170bc5f6ad Merge branch 'main' of github.com:koush/scrypted 2024-08-08 21:30:27 -07:00
Koushik Dutta
8daf74e6db cloud: fix cloudflare unregister 2024-08-08 21:30:22 -07:00
Koushik Dutta
b84adf514e docker: fix hw decode 2024-08-08 17:35:40 -07:00
Roman Sokolov
947aa151a5 Fixed some bugs (#1547)
* Fixed reconnection bugs

* Updated documentation

* hikvision-doorbell version up

---------

Co-authored-by: Roman Sokolov <calm@adguard.com>
2024-08-08 09:24:06 -07:00
Koushik Dutta
12c734fe1b cloud: update cloudflared 2024-08-06 20:44:41 -07:00
Koushik Dutta
724b9332f4 Merge branch 'main' of github.com:koush/scrypted 2024-08-06 20:20:59 -07:00
Koushik Dutta
a1f90607af webrtc: publish with werift race fixes 2024-08-06 20:20:54 -07:00
Koushik Dutta
1a954cc232 deferred: publish 2024-08-06 18:11:29 -07:00
Brett Jia
22cb23a075 rknn: show model name + clean up detection classes (#1545) 2024-08-06 14:13:08 -07:00
Koushik Dutta
608f82cf81 detect: proper model name 2024-08-06 13:33:22 -07:00
Koushik Dutta
2f4608e697 Merge branch 'main' of github.com:koush/scrypted 2024-08-06 10:21:10 -07:00
Koushik Dutta
c08ce3115a webrtc: fix non-trickle negotiation 2024-08-06 10:21:02 -07:00
Koushik Dutta
470c28d6ef homekit: reduce debug hksv duration because people keep filling their disks. 2024-08-06 08:25:44 -07:00
David Montgomery
7ea1d8e85d fix typo (#1544) 2024-08-06 07:08:32 -07:00
Koushik Dutta
1669438312 webrtc: publish 2024-08-05 18:48:25 -07:00
Koushik Dutta
d4b77cac66 proxmox: wip restore rootfs 2024-08-05 18:48:22 -07:00
Koushik Dutta
f1bebd0612 proxmox: wip reset/restore preserving data 2024-08-05 00:33:54 -07:00
Koushik Dutta
003e1f79f0 Revert "proxmox: fix --force hint"
This reverts commit 35cf9f9352.
2024-08-04 23:41:23 -07:00
Koushik Dutta
97702da9ef Merge branch 'main' of github.com:koush/scrypted 2024-08-04 23:39:49 -07:00
Koushik Dutta
35cf9f9352 proxmox: fix --force hint 2024-08-04 23:39:45 -07:00
Koushik Dutta
5225823e8b webrtc: publish 2024-08-04 22:40:46 -07:00
Brett Jia
2569e7c823 sdk: add TTYSettings (#1540)
* sdk: add TerminalSettings

* update to TTYSettings
2024-08-04 21:01:34 -07:00
Koushik Dutta
aa5c4d5064 webrtc: update deps, update zygote invocation. 2024-08-04 21:00:39 -07:00
Koushik Dutta
40ff2a8315 postbeta 2024-08-04 13:45:04 -07:00
Koushik Dutta
bf150712a0 proxmox: flowerbox reboot 2024-08-04 13:37:04 -07:00
Koushik Dutta
92531ff675 proxmox: fix detection 2024-08-04 13:36:05 -07:00
Koushik Dutta
6919c26311 proxmox/docker: host reboot notice 2024-08-04 13:08:43 -07:00
Koushik Dutta
f19c09f239 proxmox: uninstall previous npu per intel docs 2024-08-04 12:47:59 -07:00
Koushik Dutta
7cadb8ffac proxmox: npu driver install support 2024-08-04 12:39:47 -07:00
Koushik Dutta
ea204b24a6 docker/lxc: allow installing the npu fw with flag 2024-08-04 12:32:14 -07:00
Koushik Dutta
45799362ce docker: install npu 2024-08-04 12:20:22 -07:00
Koushik Dutta
2836e10262 docker: npu fw should not be installed in container 2024-08-04 12:18:03 -07:00
Koushik Dutta
a04d463e0f docker/proxmox: add/update intel gpu and npu scripts 2024-08-04 12:17:30 -07:00
Koushik Dutta
3ce8a57daa install: update intel graphics 2024-08-04 11:59:12 -07:00
Koushik Dutta
1647c73375 sdk: fix python generation, publish 2024-08-04 09:29:19 -07:00
Koushik Dutta
b7980b7cbf server: worker pid cleanup 2024-08-04 00:28:42 -07:00
Koushik Dutta
0a6114cc60 server: fix deno kill 2024-08-04 00:26:23 -07:00
Koushik Dutta
149675cfb3 server: fix closure capture 2024-08-04 00:24:57 -07:00
Koushik Dutta
b8eec159bc server: revert and use a global shim 2024-08-04 00:14:59 -07:00
Koushik Dutta
ddb93b28cd Revert "server: use function constructor rather than eval"
This reverts commit 4ed6d1a9fd.
2024-08-04 00:02:13 -07:00
Koushik Dutta
4ed6d1a9fd server: use function constructor rather than eval 2024-08-03 23:42:53 -07:00
Koushik Dutta
bd60e39b24 server: fix deno console 2024-08-03 20:42:43 -07:00
Koushik Dutta
b6636b10f0 sdk: update 2024-08-03 17:26:14 -07:00
Koushik Dutta
8c8beea2eb server: add deno flags 2024-08-03 17:14:50 -07:00
Koushik Dutta
3592a98f2a sdk: update typescript 2024-08-03 17:14:36 -07:00
Koushik Dutta
56f8418d13 postbeta 2024-08-03 10:34:16 -07:00
Koushik Dutta
5bb8ea0f86 server: deno runtime 2024-08-03 10:30:31 -07:00
Koushik Dutta
daddf10035 server: organize imports 2024-08-03 10:29:49 -07:00
Koushik Dutta
2ac8e1509d server: use globalThis rather than global 2024-08-03 10:25:55 -07:00
Koushik Dutta
3cd3208183 server: cpuUsage not available on deno 2024-08-03 10:25:00 -07:00
Koushik Dutta
be217021a2 rpc: remove usage of vm module, embed filename using sourceURL 2024-08-03 10:22:24 -07:00
Koushik Dutta
a2bbb67670 rpc: use globalThis rather than global 2024-08-03 10:21:49 -07:00
Koushik Dutta
465189f4b8 proxmox: add npu 2024-08-03 00:16:37 -07:00
Koushik Dutta
173f7fa4f6 core: publish 2024-08-02 13:56:43 -07:00
Koushik Dutta
d405232d81 server: fix wacky import 2024-08-02 13:45:14 -07:00
Koushik Dutta
673fd95bbd common: remove import 2024-08-01 13:37:06 -07:00
Koushik Dutta
25b2a663c8 server: fix nre in fork 2024-08-01 13:37:01 -07:00
Koushik Dutta
962ecf2cae common: fix zygote opts 2024-08-01 13:28:00 -07:00
Koushik Dutta
4c3f1c43fa server: finish fork filename implementation; 2024-08-01 13:27:46 -07:00
Koushik Dutta
82dfa96699 sdk: support multiple entry points for faster forks 2024-08-01 13:27:31 -07:00
Koushik Dutta
83d3add41a reolink: publish 2024-08-01 12:06:38 -07:00
Koushik Dutta
54db7dc64e server: clustering comments 2024-07-31 22:56:38 -07:00
Koushik Dutta
4c04e9e403 server: implement multi server clustering 2024-07-31 22:51:56 -07:00
Koushik Dutta
de44217f65 core: Fix notificaiton automation 2024-07-31 21:06:22 -07:00
Koushik Dutta
3ae6079615 rebroadcast: publish 2024-07-31 20:29:31 -07:00
Koushik Dutta
3f3409ef1b cloud: publish 2024-07-31 20:27:22 -07:00
Koushik Dutta
fd90b8d5f0 cloud: new cloudflare login flow 2024-07-31 14:14:24 -07:00
Koushik Dutta
782c9930da Merge branch 'main' of github.com:koush/scrypted 2024-07-30 22:49:44 -07:00
Koushik Dutta
d0b46c35a9 server/sdk: wip support for alternative fork main, fork names. add initial workerData message channel. 2024-07-30 22:48:52 -07:00
Koushik Dutta
6c7671dc21 server: fix plugin/thread startup messages 2024-07-30 22:34:59 -07:00
Koushik Dutta
bdc3c204d4 reolink: fix speed 2024-07-30 20:51:57 -07:00
Koushik Dutta
2013830677 reolink: enable speed arg 2024-07-30 16:00:33 -07:00
Koushik Dutta
95906a9ed5 reolink: enable speed arg 2024-07-30 15:59:52 -07:00
Koushik Dutta
6fdd4bd0f4 core: publish ui changes 2024-07-30 11:06:50 -07:00
Koushik Dutta
37cf7aada0 common: remove main thread limitation on zygote 2024-07-30 09:11:07 -07:00
Koushik Dutta
dfdc41626b server: properly handle worker errors 2024-07-30 09:10:42 -07:00
Koushik Dutta
237b3ce0d9 server: cleanup message port references and errors 2024-07-30 08:49:21 -07:00
Koushik Dutta
05745bf3c5 server: use node worker message channel so fork can create forks. 2024-07-30 08:40:46 -07:00
Koushik Dutta
8a6eaa5389 postbeta 2024-07-29 21:38:29 -07:00
Koushik Dutta
7ed298139d coreml: revert changes, require min macos version 2024-07-29 19:17:25 -07:00
Koushik Dutta
82908b82c0 server: enable stable cluster proxyIds 2024-07-29 18:34:18 -07:00
Koushik Dutta
946d88236c rebroadcast: beta 2024-07-29 14:25:30 -07:00
Koushik Dutta
1aa1df885d server: fix connectRPCObject gc race condition 2024-07-29 13:43:52 -07:00
Koushik Dutta
7c94ed9b50 coreml: remove ocr on intel 2024-07-28 22:24:44 -07:00
Koushik Dutta
f7dbff4753 coreml: fix intel mac on catalina 2024-07-28 19:05:42 -07:00
Koushik Dutta
00b5e762a7 webrtc: publish beta 2024-07-28 15:43:54 -07:00
Koushik Dutta
e1440eb76f openvino: use smarter defaults based on detected gpu 2024-07-28 12:19:22 -07:00
Brett Jia
4adb8e4202 server: implement python WritableDeviceState (#1537) 2024-07-28 11:35:27 -07:00
Koushik Dutta
e870370d0c webrtc: sync upstream 2024-07-27 20:35:04 -07:00
Koushik Dutta
f944b76c1f core: admin note on users 2024-07-27 10:44:01 -07:00
Koushik Dutta
62543bdfcf webrtc: fix build 2024-07-26 17:46:25 -07:00
Koushik Dutta
447a321eb7 client: admin flag 2024-07-26 17:45:41 -07:00
Koushik Dutta
d094934bd9 tapo: publish http auth fix 2024-07-26 11:08:39 -07:00
Koushik Dutta
c4f8959072 core: publish 2024-07-26 10:32:55 -07:00
Koushik Dutta
d682bd2ebb reolink: reset siren state 2024-07-26 08:28:53 -07:00
Koushik Dutta
437ab70cd9 homekit: update hap, remove siren from auto sync. 2024-07-26 08:28:25 -07:00
Koushik Dutta
15031cde1f reolink: fix comment 2024-07-26 08:01:13 -07:00
Koushik Dutta
e88008552c reolink: make siren timeout mimic hardware 2024-07-26 08:00:38 -07:00
Koushik Dutta
fd49deefb8 postbeta 2024-07-25 21:56:15 -07:00
Koushik Dutta
1f2973abd2 server: fix plugin deploy when SCRYPTED_DEFAULT_AUTHENTICATION is used 2024-07-25 21:56:03 -07:00
Koushik Dutta
317cd7671f server: fix build 2024-07-25 21:45:44 -07:00
Koushik Dutta
9556efc224 server: update deps, print entire stack on uncaught error 2024-07-25 21:44:10 -07:00
Koushik Dutta
2f9db83868 security: make default listen occur on loopback 2024-07-25 21:06:35 -07:00
Koushik Dutta
c627832ebd security: require explicit address on all server listens 2024-07-25 20:54:47 -07:00
Koushik Dutta
7d2df3af42 security: require explicit address on all server listens 2024-07-25 18:33:16 -07:00
Koushik Dutta
e9288bd4a1 core: publish 2024-07-25 18:32:49 -07:00
Koushik Dutta
191620b55b Merge branch 'main' of github.com:koush/scrypted 2024-07-23 09:22:19 -07:00
Koushik Dutta
90b6fc1e49 core/mqtt: scripting fixes 2024-07-23 09:22:15 -07:00
Koushik Dutta
cd3c748dd0 core: automation builder fixes 2024-07-23 09:18:15 -07:00
Koushik Dutta
34dbc7930e tapo: fix 2 way 2024-07-22 17:40:33 -07:00
Koushik Dutta
112633a776 core: various ui fixes 2024-07-22 14:57:13 -07:00
Koushik Dutta
56416109b1 core: more automation actions 2024-07-21 21:45:32 -07:00
Koushik Dutta
a889abae98 core: notifier support 2024-07-21 15:09:38 -07:00
Koushik Dutta
dcb50ba3ff ring: fix h264 assumption 2024-07-21 10:55:33 -07:00
Koushik Dutta
3c61ddb806 core: publish autoupdate fixes 2024-07-21 10:30:42 -07:00
Koushik Dutta
2a9aba1df8 plugins: publish various 2024-07-21 09:56:32 -07:00
Koushik Dutta
450acbdcb1 Merge branch 'main' of github.com:koush/scrypted 2024-07-21 08:25:42 -07:00
Koushik Dutta
80aff3199a webhook: readme 2024-07-21 08:25:37 -07:00
Brett Jia
834eff20c7 sdk, rebroadcast: support specifying custom ffmpeg path (#1535) 2024-07-21 07:31:26 -07:00
Koushik Dutta
6314f5e45a core: publish 2024-07-20 22:37:48 -07:00
Koushik Dutta
5b3793e810 Merge branch 'main' of github.com:koush/scrypted 2024-07-20 22:20:09 -07:00
Koushik Dutta
9a2bff48c5 core: publish 2024-07-20 22:19:41 -07:00
Brett Jia
aa9903b328 sdk, rebroadcast: don't automatically prebuffer synthetic streams (#1534) 2024-07-20 21:05:47 -07:00
Koushik Dutta
c1f4ae96fa core/rtsp: fix settings bugs 2024-07-20 21:01:17 -07:00
Koushik Dutta
d5995d93e2 Merge branch 'main' of github.com:koush/scrypted 2024-07-20 20:56:04 -07:00
Koushik Dutta
f13844cf3e homekit: publish 2024-07-20 20:56:00 -07:00
Brett Jia
6d7add8272 rebroadcast: support env vars + upstream encoder args (#1533)
* rebroadcast: support env vars + upstream encoder args

* make ffmpegInput override process.env

* make h264EncoderArguments safer

* reorder

* update per feedback
2024-07-20 19:53:22 -07:00
Koushik Dutta
983a683d54 ring: clip support 2024-07-20 15:11:55 -07:00
Koushik Dutta
f3e5cf2a8b core: publish new ui 2024-07-20 14:26:09 -07:00
Koushik Dutta
40db551799 Merge branch 'main' of github.com:koush/scrypted 2024-07-20 14:17:11 -07:00
Koushik Dutta
fdb9e03656 core: publish new ui 2024-07-20 14:17:07 -07:00
Brett Jia
48976b2947 sdk: add env to FFmpegInput + fix python parameterized class generator (#1532)
* sdk: add env to FFmpegInput + fix python parameterized class generator

* downgrade node for gh actions
2024-07-20 13:29:45 -07:00
Koushik Dutta
3ee022c2be core: beta 2024-07-19 23:16:55 -07:00
Koushik Dutta
ab24a61fd3 cameras: update with fixed http auth 2024-07-19 19:53:42 -07:00
Koushik Dutta
8d2237b26f Merge branch 'main' of github.com:koush/scrypted 2024-07-19 17:52:12 -07:00
Koushik Dutta
8ad05bbd5b snapshot: ensure hwaccel none for single frame decodes 2024-07-19 17:52:07 -07:00
Koushik Dutta
7499e79dc7 server: suppress WWW-authenticate 2024-07-19 17:11:24 -07:00
Koushik Dutta
7132278204 common: improve stream end errors 2024-07-19 15:18:13 -07:00
Koushik Dutta
60fa494ed0 Merge branch 'main' of github.com:koush/scrypted 2024-07-19 13:17:57 -07:00
Koushik Dutta
815f204136 core: beta 2024-07-19 10:15:10 -07:00
slyoldfox
fe80fab811 Add more meaningful device DeviceInformation for new UI (#1531) 2024-07-19 09:45:11 -07:00
Koushik Dutta
2699ecd93d core: fix empty automation, rebuild ui 2024-07-18 19:01:23 -07:00
Koushik Dutta
5d634f5876 core: new management console beta 2024-07-18 11:13:17 -07:00
Koushik Dutta
9979789e08 zwave: remove legacy dep 2024-07-18 10:39:51 -07:00
Koushik Dutta
79d2d4e366 zwave: remove legacy dep 2024-07-18 10:37:55 -07:00
Koushik Dutta
90b4bcfec9 actions: fixup static sites workflow 2024-07-18 10:27:37 -07:00
Koushik Dutta
49df286cfa Create static.yml 2024-07-18 10:24:51 -07:00
Koushik Dutta
20edf8a622 move static sites 2024-07-18 10:24:34 -07:00
Koushik Dutta
bb76102171 cloud: fix bug where port reservation failures causes total failure 2024-07-16 23:34:15 -07:00
Koushik Dutta
e71f9b585c cloud: cors for manage.scrypted.app 2024-07-16 13:17:15 -07:00
Koushik Dutta
1effc45f18 sdk: add cloudHref to launcher 2024-07-16 11:27:00 -07:00
Koushik Dutta
2e5e5b7be0 common/core: automation/build fixes for new management site 2024-07-16 09:33:09 -07:00
Koushik Dutta
1df5cfefd0 working scheduler 2024-07-15 20:57:09 -07:00
Koushik Dutta
5d1e2663b8 rtp: fixup promise reject race condition 2024-07-15 14:26:25 -07:00
Koushik Dutta
59441c414b common: revert/fix deferred 2024-07-15 14:26:05 -07:00
Koushik Dutta
419d007445 rtsp: fix unhandled rejection if rtsp client is already destroyed 2024-07-15 13:53:55 -07:00
Koushik Dutta
90bca27bde http auth: improve status code handling 2024-07-15 11:56:39 -07:00
Koushik Dutta
0050624880 http digest auth: fix invalid status code not cleaning up http connections 2024-07-15 11:20:27 -07:00
Koushik Dutta
c4ea7938d1 core: wip automation settings 2024-07-14 23:02:12 -07:00
Koushik Dutta
b5d58455b6 core: transition to settings based automations 2024-07-14 20:11:23 -07:00
Koushik Dutta
82993df715 common: socket failure cleanups 2024-07-14 12:24:09 -07:00
Koushik Dutta
555a688c16 core: use provided nativeid in terminal service 2024-07-14 09:52:44 -07:00
Koushik Dutta
0241a5fb93 core: update sdk and fix build 2024-07-14 09:50:18 -07:00
Koushik Dutta
db7351e7d4 sdk: fix StreamService template args 2024-07-14 09:26:22 -07:00
Koushik Dutta
891e9792f8 sdk: uadd immediate setting flag 2024-07-14 09:17:17 -07:00
Koushik Dutta
97e7333415 core: dead import 2024-07-14 08:17:31 -07:00
Koushik Dutta
dc4dd07ced cloud: cleanup 2024-07-14 07:56:19 -07:00
Koushik Dutta
937f615c8c cloud: earlier unregistration fix for cloudflare 2024-07-14 07:55:38 -07:00
Koushik Dutta
7578cf092e amcrest: use VideoMotionInfo state to reset motion 2024-07-13 20:42:39 -07:00
Koushik Dutta
3041207177 zwave: update to latest zwave-js 2024-07-13 15:45:50 -07:00
Koushik Dutta
46d66122aa Merge branch 'main' of github.com:koush/scrypted 2024-07-12 18:05:58 -07:00
Koushik Dutta
d05e3a92f3 homekit: fix erroneous new subdevice reload 2024-07-12 18:05:53 -07:00
Brett Jia
4a4b077132 sdk: add generic params to StreamService + generate AsyncGenerator type hints in Python (#1527) 2024-07-12 08:08:28 -07:00
Koushik Dutta
cf5e010faf homekit: add codes to readme 2024-07-11 21:47:31 -07:00
Koushik Dutta
46616467f4 common: async queue wrapper for generator 2024-07-11 21:26:13 -07:00
Koushik Dutta
3dcb36adf9 Merge branch 'main' of github.com:koush/scrypted 2024-07-11 20:16:30 -07:00
Roman Sokolov
855940fb03 Hikvision Doorbell Plugin with inheritance (#1400)
* separate plugin

* added SIP "imitation". It almost works

* Refactoring

* Fixed some bugs. Added more UI

* Added descriptions and some fixes

* Stage before beta

* First beta done

* reset common settings

* Adding inheritance from Hikvision Camera plugin

* Added exposing tamper alert device

---------

Co-authored-by: Roman Sokolov <calm@adguard.com>
2024-07-11 16:56:07 -07:00
Brett Jia
1f25e1a308 core: allow specifying command via options (#1522) 2024-07-11 15:38:58 -07:00
Brett Jia
232298d7f4 server: fix python connectRPCObject sha256 (#1525) 2024-07-11 15:38:40 -07:00
Koushik Dutta
fa9b4f1a1c sdk: publish 2024-07-11 13:22:57 -07:00
Brett Jia
355c2719fd sdk: add TTY interface (#1526) 2024-07-11 13:22:18 -07:00
Brett Jia
dfb18ce882 server: fix crash fix on web-based connectRPCObject (#1524) 2024-07-11 09:56:31 -07:00
Koushik Dutta
07187d058b sdk: clippath setting support 2024-07-10 23:59:13 -07:00
Koushik Dutta
5060b5f8c7 homekit: show in scrypted settings 2024-07-10 21:08:37 -07:00
Koushik Dutta
50c628a25e Merge branch 'main' of github.com:koush/scrypted 2024-07-10 19:17:02 -07:00
Koushik Dutta
7bf4609d3d homekit: use html setting 2024-07-10 19:16:57 -07:00
Koushik Dutta
548a8eb321 sdk: update deps 2024-07-10 18:39:57 -07:00
Koushik Dutta
627f9e7a0a sdk: publish 2024-07-10 18:38:16 -07:00
Koushik Dutta
4faf85c988 sdk: update deps 2024-07-10 18:07:36 -07:00
Koushik Dutta
259c6434da Merge branch 'main' of github.com:koush/scrypted 2024-07-10 16:09:34 -07:00
Brett Jia
321d5b364f server: fix python systemManager.getDeviceByName (#1523) 2024-07-10 15:42:24 -07:00
Koushik Dutta
e56491ec27 common: refactor monaco hooks 2024-07-10 14:05:12 -07:00
Koushik Dutta
8fe5d1bace common: monaco typings 2024-07-10 13:17:05 -07:00
Koushik Dutta
4efa58ee8b sdk: add script setting type 2024-07-10 12:45:18 -07:00
Koushik Dutta
8249a5efa1 server: fixup engine.io typings 2024-07-10 11:58:29 -07:00
Koushik Dutta
08b0717407 rpc: move eval into separate file 2024-07-10 11:57:50 -07:00
Koushik Dutta
c277833332 sdk: publish 2024-07-10 11:39:05 -07:00
Koushik Dutta
37d9f2870d Merge branch 'main' of github.com:koush/scrypted 2024-07-10 11:38:15 -07:00
Koushik Dutta
cc71d1292b sdk: add support for day setting 2024-07-10 11:38:10 -07:00
slyoldfox
3ca6841ea2 Support v2 UI for sip and bticino plugins (#1521)
* Fix an undefined error that might occur when sip debug is off
Slight cleanup
Add support for v2 UI

* Decouple voicemail lock device from camera device and only add it for c300x models (c100x doesn't have voicemail)
Add support for v2 UI
Allow changing devaddr setting from UI

* Fix an undefined error that might occur when sip debug is off
Slight cleanup
Add support for v2 UI
2024-07-10 09:31:26 -07:00
Koushik Dutta
c81cdd0df1 server: update deps 2024-07-09 11:19:47 -07:00
Koushik Dutta
bd0cbe5e97 Revert "common: readd server dep"
This reverts commit fdd4eebd96.
2024-07-09 10:48:02 -07:00
Koushik Dutta
fdd4eebd96 common: readd server dep 2024-07-09 10:36:32 -07:00
Koushik Dutta
34eeaf5cce common: use relative import 2024-07-09 17:32:45 +00:00
Koushik Dutta
09c38e427a actions: Update build-sdk.yml 2024-07-09 10:28:07 -07:00
Koushik Dutta
fca2773282 remove wildcard export 2024-07-09 10:06:33 -07:00
Koushik Dutta
c138cc81c0 core: add core to new scrypted settings 2024-07-09 09:22:58 -07:00
Koushik Dutta
91be95e158 core: add support for system device creator 2024-07-09 09:03:53 -07:00
Koushik Dutta
e172b45047 cli: add support for session file path 2024-07-08 15:31:01 -07:00
Koushik Dutta
0a6c07551f cli: missing file 2024-07-08 15:26:56 -07:00
Koushik Dutta
fa33f850f7 cli: rtsp to mp4 converter 2024-07-08 15:25:21 -07:00
Koushik Dutta
605513d165 common: export sleep as relative file due to rollup quirks 2024-07-08 14:04:53 -07:00
Koushik Dutta
d635ab8662 common: bump ts 2024-07-08 14:01:27 -07:00
Koushik Dutta
4862705dcd common: fix sleep export 2024-07-08 13:51:05 -07:00
Koushik Dutta
4d471eb285 sdk/plugins/client/server: add new ScryptedDeviceCreator ui hooks 2024-07-08 09:43:30 -07:00
Koushik Dutta
470d315eaf client: build 2024-07-07 22:53:59 -07:00
Koushik Dutta
4e267e3de9 sdk: publish 2024-07-07 22:45:05 -07:00
Koushik Dutta
bd28cd1766 sdk: update with createdDevice string 2024-07-07 22:28:42 -07:00
Koushik Dutta
f5c324bd68 reolink: fallback if token exchange fails 2024-07-06 15:05:18 -07:00
Koushik Dutta
b7bf995303 mqtt: fix up device creation 2024-07-06 11:48:14 -07:00
Koushik Dutta
68516817aa cloud: fix tunnel registration failure hang 2024-07-06 00:08:43 -07:00
Koushik Dutta
9dc5f2a063 cloud: prefer cloudflared address if available 2024-07-05 17:57:08 -07:00
Koushik Dutta
d2564efe46 cloud: send custom domain header if its in use 2024-07-05 17:47:17 -07:00
Koushik Dutta
696e97914d common: formatting 2024-07-04 20:18:53 -07:00
Koushik Dutta
cafc5da8bf common: remove wildcard sleep export 2024-07-04 19:38:46 -07:00
Koushik Dutta
a24b6432c2 various: fixup strictness 2024-07-04 17:13:30 -07:00
Koushik Dutta
68668c1b91 Merge branch 'main' of github.com:koush/scrypted 2024-07-04 16:53:14 -07:00
Koushik Dutta
460441abd2 common: remove sleep 2024-07-04 16:53:09 -07:00
Koushik Dutta
3875afd002 client: publish 2024-07-04 16:52:47 -07:00
Koushik Dutta
f769c1fbec reolink: add more hw info 2024-07-04 14:50:15 -07:00
Koushik Dutta
644df95f21 reolink: add more hw info 2024-07-04 14:49:05 -07:00
Koushik Dutta
95f1e618f9 unifi-protect: ips 2024-07-04 14:44:15 -07:00
Koushik Dutta
03e6cf1070 Merge branch 'main' of github.com:koush/scrypted 2024-07-02 12:39:00 -07:00
Koushik Dutta
f01a207166 common: export sleep from server 2024-07-02 12:38:55 -07:00
Long Zheng
1795996825 windows: Fix plugin NPM dependencies failing to install on Windows with path containing space (#1517) 2024-06-30 23:15:32 -07:00
Koushik Dutta
375f7bcc09 Merge branch 'main' of github.com:koush/scrypted 2024-06-29 19:29:25 -07:00
Koushik Dutta
76f10ced5f ha: verup 2024-06-29 19:29:21 -07:00
Koushik Dutta
37c791f147 predict: update opencv dep, make required 2024-06-29 15:22:02 -07:00
Koushik Dutta
9a8034eb4c h264: fix bug when stapa packet overflows packetizing a large p frame 2024-06-28 20:00:50 -07:00
Koushik Dutta
ff70ed301e webrtc/homekit: publish mtu changes 2024-06-28 13:14:46 -07:00
Koushik Dutta
3f66594821 reolink: use username and password if it works, fallback to token otherwise 2024-06-28 12:32:14 -07:00
Koushik Dutta
f2cd0218fd reolink: switch to mainEncType marker 2024-06-28 11:12:01 -07:00
Koushik Dutta
028d601674 reolink: automatically remove nonfunctional streams using opaque getAbility api results lol 2024-06-28 10:37:58 -07:00
Koushik Dutta
e06d012875 Revert "Breaks snapshot on doorbell. Not sure why."
This reverts commit 91fbc2fdf8.
2024-06-28 10:35:18 -07:00
Koushik Dutta
5995400414 reolink: log startup error 2024-06-28 09:53:34 -07:00
Koushik Dutta
91fbc2fdf8 Breaks snapshot on doorbell. Not sure why.
Revert "reolink: use Login json api to get around URL escaping limitations with some firmware (#1509)"

This reverts commit fc93a85e21.
2024-06-28 09:42:59 -07:00
Koushik Dutta
6b00324c74 webrtc/homekit: reduce mtu, prep for adaptive bitrate 2024-06-28 09:37:53 -07:00
Koushik Dutta
1369197a11 sdk: revert mtu callback 2024-06-28 09:32:11 -07:00
Koushik Dutta
a30580f3b8 openvino: lock to f16. todo remove multiple precisions. 2024-06-28 09:21:47 -07:00
George Talusan
fc93a85e21 reolink: use Login json api to get around URL escaping limitations with some firmware (#1509) 2024-06-27 21:54:04 -07:00
jstef16
5351d869d4 homekit: fix window covering target position binding (#1512)
Co-authored-by: Jordan Steffan <jordansteffan@Jordans-Mini.localdomain>
2024-06-27 21:50:55 -07:00
Koushik Dutta
a61d9af25c sdk: add hook to set mtu and listen for mtu change requests. 2024-06-27 15:45:36 -07:00
Koushik Dutta
2111413704 reolink: remove debug code 2024-06-27 12:56:54 -07:00
Koushik Dutta
a2781f9af2 reolink/common: siren fixes 2024-06-27 10:51:16 -07:00
Koushik Dutta
09eeae3802 reolink: unhide the doorbell checkbox 2024-06-27 10:24:38 -07:00
Koushik Dutta
0408b7e23d reolink: fix broken doorbell. 2024-06-27 10:15:49 -07:00
Koushik Dutta
ea606de22f postrelease 2024-06-26 09:43:48 -07:00
Koushik Dutta
9fbff43120 Merge branch 'main' of github.com:koush/scrypted 2024-06-25 22:23:08 -07:00
Koushik Dutta
bc358af5fa postrelease 2024-06-25 22:23:03 -07:00
George Talusan
4452568058 reolink: fix deviceprovider for cameras with siren (#1508) 2024-06-25 22:15:23 -07:00
Koushik Dutta
53c4aa7066 Merge branch 'main' of github.com:koush/scrypted 2024-06-25 22:10:51 -07:00
Koushik Dutta
ce5547e4e7 server: Fix bug where mixins are not invalidated after a plugin restart fails, and then later succeeds. 2024-06-25 22:10:45 -07:00
Koushik Dutta
95bdf5c2b5 homekit: Update README.md 2024-06-25 19:18:51 -07:00
Koushik Dutta
8953a96089 homekit: Update README.md 2024-06-25 19:16:58 -07:00
Koushik Dutta
0d270454ab predict: switch everything to yolov9t/c 2024-06-25 15:46:25 -07:00
Koushik Dutta
e740a695c0 h264: refactor/cleanup common utils 2024-06-25 12:41:57 -07:00
Koushik Dutta
78118daa69 rebroadcast: fix hang if ffmpeg exits without any connection 2024-06-25 09:44:06 -07:00
Koushik Dutta
61a824d322 sdk: suppress storage event for hidden values 2024-06-25 09:04:00 -07:00
Koushik Dutta
06bac3c748 reolink: fix settings regression 2024-06-25 07:51:54 -07:00
Koushik Dutta
16b10dc353 postbeta 2024-06-25 00:16:54 -07:00
Koushik Dutta
6892b443e0 server: fix plugin fork storage desync 2024-06-25 00:16:20 -07:00
Koushik Dutta
8b303e037e rebroadcast: delete legacy code 2024-06-25 00:15:53 -07:00
Koushik Dutta
76efef37ea reolink: fix errant device provider on all devices 2024-06-24 18:15:47 -07:00
Koushik Dutta
e64a66aa66 reolink: simple password check, publish pull requests 2024-06-24 18:13:17 -07:00
Koushik Dutta
05578d28c6 rebroadcast: fix resolution reporting 2024-06-24 15:39:05 -07:00
Koushik Dutta
0889aea3be rebroadcast: reduce error logging 2024-06-24 12:24:01 -07:00
Koushik Dutta
a081e6e3c9 rebroadcast: refactor codec and resolution detection 2024-06-24 09:05:20 -07:00
Koushik Dutta
5dfa0889b7 homekit: window covering wip 2024-06-23 19:53:41 -07:00
Koushik Dutta
ed1d09b9be homekit: window covering wip 2024-06-23 19:53:07 -07:00
Koushik Dutta
2d8a986155 Merge branch 'main' of github.com:koush/scrypted 2024-06-23 17:43:38 -07:00
Koushik Dutta
1fb4cfd3b6 homekit: window covering wip 2024-06-23 17:43:34 -07:00
George Talusan
2d987747a2 reolink: add siren support (#1506) 2024-06-23 15:17:52 -07:00
Koushik Dutta
d39e4e3ff1 hikvision: fix channel id on old nvr 2024-06-22 16:48:37 -07:00
Koushik Dutta
012ca48f9a hikvision: Fix older nvr that send malformed boundary events 2024-06-22 12:46:12 -07:00
Koushik Dutta
cca1f3e000 wyze: update dwb and publish beta 2024-06-21 15:51:32 -07:00
Koushik Dutta
40a38cfd31 webrtc: fix icloud private relay 2024-06-20 20:36:56 -07:00
Koushik Dutta
d2b39e8fa3 cloud: handle case where cloud token comes populated from desktop app with no server id. 2024-06-20 13:04:01 -07:00
Koushik Dutta
20101cda2e common: fix audio only rtp parsing 2024-06-20 10:31:28 -07:00
Koushik Dutta
c90724daa6 common: createActivityTimeout 2024-06-20 09:21:21 -07:00
Koushik Dutta
fedb22fab2 common: fix rtp forwarder in some cases when audio does not exist 2024-06-19 20:20:59 -07:00
Koushik Dutta
994f1974d7 Merge branch 'main' of github.com:koush/scrypted 2024-06-19 20:03:30 -07:00
Koushik Dutta
d648fe552d common: fix double rtp packet delivery in some cases 2024-06-19 20:03:23 -07:00
Koushik Dutta
ccafff28cd cloud: update deps and publish 2024-06-19 09:13:29 -07:00
Koushik Dutta
3da49d47af cloud: fix cloudflared exit 2024-06-19 08:37:20 -07:00
George Talusan
e1918cfa89 reolink: add ONVIF objection detection for cameras that can support it (#1502) 2024-06-19 08:00:42 -07:00
Koushik Dutta
7b19204d77 webrtc: fixup for intercom? 2024-06-18 20:20:19 -07:00
Koushik Dutta
5dac1de87e rebroadcast/common: h265 keyframe search 2024-06-18 20:18:59 -07:00
Koushik Dutta
c9a2474f17 Merge branch 'main' of github.com:koush/scrypted 2024-06-18 13:56:12 -07:00
Koushik Dutta
e5d9d0d054 rebroadcast: handle basic h265 idr parsing 2024-06-18 13:56:08 -07:00
Koushik Dutta
1272582510 snapshot: log http endpoit errors 2024-06-18 11:03:33 -07:00
Koushik Dutta
51271a0e02 unif-protect: id remapping fix 2024-06-18 11:03:08 -07:00
Koushik Dutta
9b32952a22 Merge branch 'main' of github.com:koush/scrypted 2024-06-18 10:04:54 -07:00
Koushik Dutta
5b92aea54b webrtc: fix google device access leaks? 2024-06-18 10:04:48 -07:00
Brett Jia
61b59f4ca0 rknn: use numpy < 2.0.0 (#1500) 2024-06-16 18:38:34 -07:00
Koushik Dutta
93f8f43de2 onnx: derp 2024-06-16 16:53:45 -07:00
Koushik Dutta
dc88e0b07f detect: pin numpy to prevent usage of 2.0 2024-06-16 16:50:44 -07:00
Koushik Dutta
14a9f953a9 coreml: lock numpy, new 2.0 breaks stuff 2024-06-16 13:18:46 -07:00
George Talusan
528885d5e2 reolink: save GetAiState to hasObjectDetector so object detector can work (#1497) 2024-06-15 12:19:07 -07:00
Koushik Dutta
e779f37689 proxmox: no one can read 2024-06-14 07:54:26 -07:00
Koushik Dutta
c6c2a8dc49 predict: prevent face recognition on low score faces 2024-06-10 22:11:19 -07:00
Koushik Dutta
d8d2fd25cd predict: fix batch error reporting 2024-06-10 16:02:50 -07:00
Koushik Dutta
301a5b6685 predict: increase face recognition threshold 2024-06-10 13:10:08 -07:00
Koushik Dutta
2a4bac42ed core: opencl update 2024-06-07 13:18:36 -07:00
Koushik Dutta
f55cadedb5 linux: update intel opencl debs 2024-06-07 13:14:48 -07:00
Koushik Dutta
dd9ff45b21 predict: widen text input size from 256 to 384 2024-06-07 10:26:51 -07:00
Koushik Dutta
a0aada2f03 Merge branch 'main' of github.com:koush/scrypted 2024-06-06 10:26:07 -07:00
Koushik Dutta
8499843f31 predict: use locked pillow version 2024-06-06 10:26:01 -07:00
Koushik Dutta
672a33b93b ha: Update config.yaml 2024-06-05 22:56:02 -07:00
Koushik Dutta
f9a744c7dc core: make login 1 week 2024-06-05 21:37:16 -07:00
Koushik Dutta
5b124013b7 predict: fix lpr deskew bugs 2024-06-05 11:14:31 -07:00
Koushik Dutta
d2f1c69e98 predict: shuffle common files out of tflite 2024-06-05 08:30:39 -07:00
Koushik Dutta
2a2f96a771 predict: use smaller image for face detect 2024-06-04 22:15:43 -07:00
Koushik Dutta
dc9b5f447e postrelease 2024-06-04 15:55:09 -07:00
Koushik Dutta
1fb0c01e7e postbeta 2024-06-04 15:53:17 -07:00
Koushik Dutta
014d7b35ac server: ensure plugins get restarted if failing during reload 2024-06-04 15:53:04 -07:00
Koushik Dutta
b08267dab0 server: beta 2024-06-04 13:59:58 -07:00
Koushik Dutta
97d78516f2 postbeta 2024-06-04 13:59:53 -07:00
Koushik Dutta
360c2437c1 postbeta 2024-06-04 13:26:57 -07:00
Koushik Dutta
0b230bfc74 Merge branch 'main' of github.com:koush/scrypted 2024-06-04 12:58:12 -07:00
Koushik Dutta
d25dc8d266 postbeta 2024-06-04 12:57:01 -07:00
Koushik Dutta
5f4d1e99cd postbeta 2024-06-04 12:43:17 -07:00
Koushik Dutta
ee38ef7817 Update bug_report.md 2024-06-04 08:32:06 -07:00
Koushik Dutta
80af38d3e1 Merge branch 'main' of github.com:koush/scrypted 2024-06-03 23:34:05 -07:00
Koushik Dutta
2f19866f05 predict: relax face threshold 2024-06-03 23:34:01 -07:00
Long Zheng
cf1c500e9d common: Enable TypeScript strict for packages/auth-fetch (#1493)
* Add tsconfig strict to packages/auth-fetch

* Refactor switch case

* Revert "Refactor switch case"

This reverts commit b5004664bb.

* Revert switch changes
2024-06-03 17:48:38 -07:00
Koushik Dutta
9a770e9dc9 predict: update models 2024-06-03 15:08:58 -07:00
Koushik Dutta
6dbb8863a0 Merge branch 'main' of github.com:koush/scrypted 2024-06-03 10:38:44 -07:00
Koushik Dutta
5eac8d0ab9 predict: lock opencv version,
roll back to 9c flt
2024-06-03 10:38:36 -07:00
Long Zheng
272bad8f29 cli: Enable TypeScript strict for packages/cli (#1494)
* Enable strict mode on packages/cli

* Fix condition
2024-06-03 10:34:18 -07:00
Koushik Dutta
83a3352862 predict: extract rough text scores 2024-06-02 13:33:54 -07:00
Koushik Dutta
4d5a693208 core: add labels to detection preview 2024-06-02 08:07:48 -07:00
Koushik Dutta
70e7f944c0 postrelease 2024-06-01 22:02:17 -07:00
Koushik Dutta
5a52c03a3d postrelease 2024-06-01 20:09:34 -07:00
Koushik Dutta
f9f597ef01 server: guard entire plugin load block 2024-06-01 13:07:55 -07:00
Koushik Dutta
2e07788c0c server: log plugin load failure 2024-06-01 13:05:56 -07:00
Koushik Dutta
9c0fbc1cb6 common: listenZeroSingleClient configurable timeout 2024-06-01 09:44:51 -07:00
Koushik Dutta
239d49899d unifi-protect: fix id remapping 2024-06-01 09:19:32 -07:00
Koushik Dutta
2d3589b5a3 unifi-protect: fix id remapping 2024-06-01 08:49:37 -07:00
Koushik Dutta
96ec465a38 unifi: more logging 2024-06-01 08:07:24 -07:00
Koushik Dutta
5bb6b87c7d predict: yolov10m 2024-05-31 15:17:24 -07:00
Koushik Dutta
fcfedccaf8 postrelease 2024-05-31 14:01:24 -07:00
Koushik Dutta
98373833fd postrelease 2024-05-31 13:38:43 -07:00
Brett Jia
03588be125 rknn: use correct nativeId for text recognition (#1492) 2024-05-31 13:24:18 -07:00
Koushik Dutta
cdd81daec5 Merge branch 'main' of github.com:koush/scrypted 2024-05-31 10:49:12 -07:00
Koushik Dutta
d64f90c0c8 predict: republish with smaller plate/face models. fix openvino thread bugs 2024-05-31 10:49:08 -07:00
Brett Jia
ec31dee36e onnx: fix text recognition thread names (#1491) 2024-05-31 09:56:18 -07:00
Brett Jia
11f2e88590 rknn: add text recognition (#1490)
* rknn: add text recognition

* disable verbose
2024-05-31 09:56:09 -07:00
Koushik Dutta
bf51ddb2d5 server: checks to ensure plugin restart doesnt ignore zombie states 2024-05-31 08:26:20 -07:00
Koushik Dutta
26000f1828 predict: yolov10 2024-05-30 09:55:28 -07:00
Koushik Dutta
f65485af97 Merge remote-tracking branch 'origin/main' into rebroadcast 2024-05-30 09:37:02 -07:00
Koushik Dutta
72c5690d05 rebroadcast: beta 2024-05-30 09:29:48 -07:00
Koushik Dutta
e076d61122 rebroadcast: fixup reverts 2024-05-30 09:29:14 -07:00
Koushik Dutta
7071808514 Revert "rebroadcast: parser perf refactor"
This reverts commit f677cf7393.
2024-05-30 09:27:27 -07:00
Koushik Dutta
1e2fd46cd3 Revert "rebroadcast: more parser refactor"
This reverts commit 5432b5b917.
2024-05-30 09:24:53 -07:00
Koushik Dutta
e3cdd4326f videoanalysis: label scores 2024-05-30 09:21:07 -07:00
Koushik Dutta
227f932ad8 coreml: yolov10 2024-05-30 09:20:53 -07:00
Koushik Dutta
67cec188ce docker: fix partition detection 2024-05-30 07:49:38 -07:00
Koushik Dutta
1ee276185e sdk: label score 2024-05-28 21:59:59 -07:00
Brett Jia
42ed855b05 actions: replace local install test with setup-scrypted action (#1488)
* actions: replace local install test with setup-scrypted action

* update

* extract server version from package.json

* use package-lock.json
2024-05-28 12:59:13 -07:00
Jonathan Yip
93da4eed30 docker: Add security_opt to allow container to talk to host avahi daemon (#1487) 2024-05-28 09:21:31 -07:00
Long Zheng
a72a596578 homekit: Homekit camera close recording tweaks (#1486)
* Change throw to log

Throw will not work since the `handleFragmentsRequests` async generator is already closed/finished by HAP

* Move isOpen check

HAP still requests fragment after closing the recording stream. Skip processing it.

* Change catch message

* Add another !isOpen in case race condition with await
2024-05-27 10:12:00 -07:00
Brett Jia
72663dd68c installer: allow specifying exact server version to install (#1485)
* Update install-scrypted-dependencies-mac.sh

* Update install-scrypted-dependencies-linux.sh

* Update install-scrypted-dependencies-win.ps1

* Update install-scrypted-dependencies-win.ps1

* Update install-scrypted-dependencies-win.ps1

* Update install-scrypted-dependencies-win.ps1
2024-05-26 12:51:02 -07:00
Koushik Dutta
108d57dbdd Merge remote-tracking branch 'origin/main' into rebroadcast 2024-05-26 09:06:54 -07:00
Brett Jia
bc71fd8515 server: print python interpreter path (#1484) 2024-05-25 22:29:46 -07:00
Koushik Dutta
a51070767b homekit: change default advertiser back to ciao due to issues. use identifying material 2024-05-25 19:26:21 -07:00
Koushik Dutta
269cc4dbc9 rebroadcast: beta 2024-05-24 22:43:18 -07:00
Koushik Dutta
684961fa4b openvino: types 2024-05-24 22:43:11 -07:00
Koushik Dutta
4f60b7e379 sdk: update 2024-05-24 22:42:48 -07:00
Koushik Dutta
5d72061151 ha: publish 2024-05-21 09:19:43 -07:00
Brett Jia
f2c940c1d3 server: add SCRYPTED_COMPATIBILITY_FILE (#1479) 2024-05-19 13:38:57 -07:00
Koushik Dutta
7e817b0b30 rebroadcast: further removal of legacy code 2024-05-19 11:22:10 -07:00
Brett Jia
75bb15d3b7 Revert "server: make fetching network interfaces optional (#1474)" (#1478)
This reverts commit 0160502da8.
2024-05-17 17:39:24 -07:00
Koushik Dutta
ba1a1eff67 onnx: report device in use 2024-05-17 09:08:07 -07:00
Koushik Dutta
5432b5b917 rebroadcast: more parser refactor 2024-05-16 22:33:23 -07:00
Koushik Dutta
f677cf7393 rebroadcast: parser perf refactor 2024-05-15 14:17:06 -07:00
Koushik Dutta
bdf9278131 rebroadcast: initial pass and removing legacy parsers 2024-05-15 10:03:26 -07:00
Koushik Dutta
0ae93a9c3f cli: publish 2024-05-15 09:24:18 -07:00
Long Zheng
72422cdd8b windows: Fix Windows server install with installDir containing space (#1471)
* Fix server install with installDir containing space

* Revert "Fix server install with installDir containing space"

This reverts commit b99ccd3c3d.

* Alternate fix by wrapping each runCommand arg in a quote for Windows
2024-05-15 09:23:05 -07:00
Koushik Dutta
390d1b3329 onnx: add windows cuda support 2024-05-14 15:18:17 -07:00
Koushik Dutta
024e99766a amcrest: fix legacy boundary https://github.com/koush/scrypted/issues/1475 2024-05-14 15:06:21 -07:00
Brett Jia
0160502da8 server: make fetching network interfaces optional (#1474) 2024-05-14 13:40:12 -07:00
Koushik Dutta
f0d65982de postrelease 2024-05-13 19:31:55 -07:00
765 changed files with 57711 additions and 61519 deletions

View File

@@ -13,11 +13,11 @@ Before opening an issue, view the device's Console logs in the Scrypted Manageme
**DO NOT OPEN ISSUES FOR ANY OF THE FOLLOWING:**
* Server setup assistance. Use Discord, Reddit, or Github Discussions.
* Hardware setup assistance. Use Discord, Reddit, or Github Discussions.
* Server or hardware setup assistance. Use Discord, Reddit, or Github Discussions.
* Feature Requests. Use Discord, Reddit, or Github Discussions.
* Packet loss in your camera logs. This is wifi/network congestion.
* HomeKit weirdness. See HomeKit troubleshooting guide.
* Release schedules or timelines. Releases are rolled out unevenly across the different server platforms.
However, if something **was working**, and is now **no longer working**, you may create a Github issue.
Created issues that do not meet these requirements or are improperly filled out will be immediately closed.
@@ -27,6 +27,11 @@ Created issues that do not meet these requirements or are improperly filled out
1. Delete this section and everything above it.
2. Fill out the sections below.
** Before You Submit**
- [ ] I checked that my issue isn't already filed: [Search open issues](https://github.com/koush/scrypted/issues).
- [ ] I checked the relevant camera/device and/or plugin `Log` in the `Management Console` for errors or warnings that may help identify and resolve the issue myself.
**Describe the bug**
A clear and concise description of what the bug is. The issue tracker is only for reporting bugs in Scrypted, for general support check Discord. Hardrware support requests or assistance requests will be immediately closed.
@@ -43,6 +48,9 @@ A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Logs**
Include a `Log` from the device/camera in the management console (and if applicable, the affacted plugin, like HomeKit).
**Server (please complete the following information):**
- OS: [e.g. Ubuntu]
- Installation Method: [e.g. Desktop App, Docker, Local]

2
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
# disable blank issue creation
blank_issues_enabled: false

View File

@@ -7,7 +7,7 @@ on:
pull_request:
paths: ["sdk/**"]
workflow_dispatch:
jobs:
build:
name: Build
@@ -15,11 +15,11 @@ jobs:
defaults:
run:
working-directory: ./sdk
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22.4.1
- run: npm ci
- run: npm run build

View File

@@ -8,10 +8,10 @@ jobs:
name: Push Docker image to Docker Hub
runs-on: self-hosted
env:
NODE_VERSION: '20'
NODE_VERSION: '22'
strategy:
matrix:
BASE: ["jammy"]
BASE: ["noble"]
FLAVOR: ["full", "lite"]
steps:
- name: Check out the repo
@@ -77,13 +77,14 @@ jobs:
cache-from: type=gha
cache-to: type=gha,mode=max
build-nvidia:
name: Push NVIDIA Docker image to Docker Hub
build-vendor:
name: Push Vendor Docker image to Docker Hub
needs: build
runs-on: self-hosted
strategy:
matrix:
BASE: ["jammy"]
BASE: ["noble"]
VENDOR: ["nvidia", "intel"]
steps:
- name: Check out the repo
uses: actions/checkout@v3
@@ -138,11 +139,11 @@ jobs:
build-args: |
BASE=ghcr.io/koush/scrypted-common:${{ matrix.BASE }}-full
context: install/docker/
file: install/docker/Dockerfile.nvidia
file: install/docker/Dockerfile.${{ matrix.VENDOR }}
platforms: linux/amd64,linux/arm64
push: true
tags: |
koush/scrypted-common:${{ matrix.BASE }}-nvidia
ghcr.io/koush/scrypted-common:${{ matrix.BASE }}-nvidia
koush/scrypted-common:${{ matrix.BASE }}-${{ matrix.VENDOR }}
ghcr.io/koush/scrypted-common:${{ matrix.BASE }}-${{ matrix.VENDOR }}
cache-from: type=gha
cache-to: type=gha,mode=max

View File

@@ -20,9 +20,11 @@ jobs:
strategy:
matrix:
BASE: [
["jammy-nvidia", ".s6"],
["jammy-full", ".s6"],
["jammy-lite", ""],
["noble-nvidia", ".s6", "noble-nvidia", "nvidia"],
["noble-intel", ".s6", "noble-intel", "intel"],
["noble-full", ".s6", "noble-full", "full"],
["noble-lite", "", "noble-lite", "lite"],
["noble-lite", ".router", "noble-router", "router"],
]
steps:
- name: Check out the repo
@@ -93,17 +95,25 @@ jobs:
file: install/docker/Dockerfile${{ matrix.BASE[1] }}
platforms: linux/amd64,linux/arm64
push: true
# when publishing a tag (beta or latest), platform and version, create some tags as follows.
# using beta 0.0.1 as an example
# koush/scrypted:v0.0.1-noble-full
# koush/scrypted:beta
# koush/scrypted:beta-nvidia|intel|full|router|lite
# using latest 0.0.2 as an example:
# koush/scrypted:v0.0.2-noble-full
# koush/scrypted:latest
# koush/scrypted:nvidia|intel|full|router|lite
tags: |
${{ format('koush/scrypted:v{1}-{0}', matrix.BASE[0], github.event.inputs.publish_tag || steps.package-version.outputs.NPM_VERSION) }}
${{ matrix.BASE[0] == 'jammy-full' && format('koush/scrypted:{0}', github.event.inputs.tag) || '' }}
${{ github.event.inputs.tag == 'latest' && matrix.BASE[0] == 'jammy-nvidia' && 'koush/scrypted:nvidia' || '' }}
${{ github.event.inputs.tag == 'latest' && matrix.BASE[0] == 'jammy-full' && 'koush/scrypted:full' || '' }}
${{ github.event.inputs.tag == 'latest' && matrix.BASE[0] == 'jammy-lite' && 'koush/scrypted:lite' || '' }}
${{ format('koush/scrypted:v{0}-{1}', github.event.inputs.publish_tag || steps.package-version.outputs.NPM_VERSION, matrix.BASE[2]) }}
${{ matrix.BASE[2] == 'noble-full' && format('koush/scrypted:{0}', github.event.inputs.tag) || '' }}
${{ github.event.inputs.tag == 'latest' && format('koush/scrypted:{0}', matrix.BASE[3]) || '' }}
${{ github.event.inputs.tag != 'latest' && format('koush/scrypted:{0}-{1}', github.event.inputs.tag, matrix.BASE[3]) }}
${{ format('ghcr.io/koush/scrypted:v{1}-{0}', matrix.BASE[0], github.event.inputs.publish_tag || steps.package-version.outputs.NPM_VERSION) }}
${{ matrix.BASE[0] == 'jammy-full' && format('ghcr.io/koush/scrypted:{0}', github.event.inputs.tag) || '' }}
${{ github.event.inputs.tag == 'latest' && matrix.BASE[0] == 'jammy-nvidia' && 'ghcr.io/koush/scrypted:nvidia' || '' }}
${{ github.event.inputs.tag == 'latest' && matrix.BASE[0] == 'jammy-full' && 'ghcr.io/koush/scrypted:full' || '' }}
${{ github.event.inputs.tag == 'latest' && matrix.BASE[0] == 'jammy-lite' && 'ghcr.io/koush/scrypted:lite' || '' }}
${{ matrix.BASE[2] == 'noble-full' && format('ghcr.io/koush/scrypted:{0}', github.event.inputs.tag) || '' }}
${{ github.event.inputs.tag == 'latest' && format('ghcr.io/koush/scrypted:{0}', matrix.BASE[3]) || ''}}
${{ github.event.inputs.tag != 'latest' && format('ghcr.io/koush/scrypted:{0}-{1}', github.event.inputs.tag, matrix.BASE[3]) || '' }}
cache-from: type=gha
cache-to: type=gha,mode=max

44
.github/workflows/static-sites.yml vendored Normal file
View File

@@ -0,0 +1,44 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["main"]
paths: ["sites/static/**", ".github/workflows/static-sites.yml"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload entire repository
path: './sites/static'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

View File

@@ -9,52 +9,28 @@ on:
workflow_dispatch:
jobs:
test_linux_local:
name: Test Linux local installation
runs-on: ubuntu-latest
test_local:
name: Test local installation on ${{ matrix.runner }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
runner: [ubuntu-latest, ubuntu-24.04-arm, macos-14, macos-13, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Run install script
- name: Parse latest server release
id: parse_server
shell: bash
run: |
cat ./install/local/install-scrypted-dependencies-linux.sh | sudo SERVICE_USER=$USER bash
- name: Test server is running
run: |
systemctl status scrypted.service
curl -k --retry 20 --retry-all-errors --retry-max-time 600 https://localhost:10443/
test_mac_local:
name: Test Mac local installation
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Run install script
run: |
mkdir -p ~/.scrypted
bash ./install/local/install-scrypted-dependencies-mac.sh
- name: Test server is running
run: |
curl -k --retry 20 --retry-all-errors --retry-max-time 600 https://localhost:10443/
test_windows_local:
name: Test Windows local installation
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Run install script
run: |
.\install\local\install-scrypted-dependencies-win.ps1
- name: Test server is running
run: |
curl -k --retry 20 --retry-all-errors --retry-max-time 600 https://localhost:10443/
VERSION=$(cat ./server/package-lock.json | jq -r '.version')
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "Will test @scrypted/server@$VERSION"
- name: Install scrypted server
uses: scryptedapp/setup-scrypted@v0.0.2
with:
branch: ${{ github.sha }}
version: ${{ steps.parse_server.outputs.version }}

12
.gitmodules vendored
View File

@@ -1,9 +1,6 @@
[submodule "plugins/unifi-protect/src/unifi-protect"]
path = external/unifi-protect
url = ../../koush/unifi-protect.git
[submodule "plugins/myq/src/myq"]
path = plugins/myq/src/myq
url = ../../koush/myq.git
[submodule "external/ring-client-api"]
path = external/ring-client-api
url = ../../koush/ring
@@ -14,12 +11,6 @@
[submodule "external/werift"]
path = external/werift
url = ../../koush/werift-webrtc
[submodule "plugins/zwave/file-stream-rotator"]
path = plugins/zwave/file-stream-rotator
url = ../../koush/file-stream-rotator.git
[submodule "sdk/developer.scrypted.app"]
path = sdk/developer.scrypted.app
url = ../../koush/developer.scrypted.app
[submodule "plugins/sample-cameraprovider"]
path = plugins/sample-cameraprovider
url = ../../koush/scrypted-sample-cameraprovider
@@ -29,6 +20,3 @@
[submodule "plugins/wyze/docker-wyze-bridge"]
path = plugins/wyze/docker-wyze-bridge
url = ../../koush/docker-wyze-bridge.git
[submodule "plugins/onvif/onvif"]
path = plugins/onvif/onvif
url = ../../koush/onvif.git

3719
common/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -12,12 +12,13 @@
"license": "ISC",
"dependencies": {
"@scrypted/sdk": "file:../sdk",
"@scrypted/server": "file:../server",
"@scrypted/types": "^0.5.27",
"http-auth-utils": "^5.0.1",
"typescript": "^5.3.3"
"typescript": "^5.5.3"
},
"devDependencies": {
"@types/node": "^20.11.0",
"monaco-editor": "^0.50.0",
"ts-node": "^10.9.2"
}
}

View File

@@ -0,0 +1,28 @@
export function createActivityTimeout(timeout: number, timeoutCallback: () => void) {
let dataTimeout: NodeJS.Timeout;
let lastTime = Date.now();
function resetActivityTimer() {
lastTime = Date.now();
}
function clearActivityTimer() {
clearInterval(dataTimeout);
}
if (timeout) {
dataTimeout = setInterval(() => {
if (Date.now() > lastTime + timeout) {
clearInterval(dataTimeout);
dataTimeout = undefined;
timeoutCallback();
}
}, timeout);
}
resetActivityTimer();
return {
resetActivityTimer,
clearActivityTimer,
}
}

View File

@@ -40,7 +40,7 @@ export function createAsyncQueue<T>() {
return false;
if (waiting.length) {
const deferred = waiting.shift();
const deferred = waiting.shift()!;
dequeued?.resolve();
deferred.resolve(item);
return true;
@@ -66,7 +66,7 @@ export function createAsyncQueue<T>() {
dequeued?.reject(new Error('abort'));
};
dequeued.promise.catch(() => {}).finally(() => signal.removeEventListener('abort', h));
dequeued?.promise.catch(() => {}).finally(() => signal.removeEventListener('abort', h));
signal.addEventListener('abort', h);
return true;
@@ -79,7 +79,7 @@ export function createAsyncQueue<T>() {
ended = e || new EndError();
endDeferred.resolve();
while (waiting.length) {
waiting.shift().reject(ended);
waiting.shift()!.reject(ended);
}
return true;
}
@@ -94,7 +94,7 @@ export function createAsyncQueue<T>() {
}
catch (e) {
// the yield above may raise an error, and the queue should be ended.
end(e);
end(e as Error);
if (e instanceof EndError)
return;
throw e;
@@ -123,6 +123,9 @@ export function createAsyncQueue<T>() {
}
return {
[Symbol.dispose]() {
end(new Error('async queue disposed'));
},
get ended() {
return ended;
},
@@ -155,6 +158,23 @@ export function createAsyncQueue<T>() {
}
}
export function createAsyncQueueFromGenerator<T>(generator: AsyncGenerator<T>) {
const q = createAsyncQueue<T>();
(async() => {
try {
for await (const i of generator) {
await q.enqueue(i);
}
}
catch (e) {
q.end(e as Error);
}
q.end();
})();
return q;
}
// async function testSlowEnqueue() {
// const asyncQueue = createAsyncQueue<number>();

View File

@@ -0,0 +1,209 @@
import sdk, { AudioStreamOptions, MediaStreamConfiguration, MediaStreamDestination, MediaStreamOptions, ScryptedDeviceBase, Setting } from "@scrypted/sdk";
export const automaticallyConfigureSettings: Setting = {
key: 'autoconfigure',
title: 'Automatically Configure Settings',
description: 'Automatically configure and valdiate the camera codecs and other settings for optimal Scrypted performance. Some settings will require manual configuration via the camera web admin.',
type: 'boolean',
value: true,
};
export const onvifAutoConfigureSettings: Setting = {
key: 'onvif-autoconfigure',
type: 'html',
value: 'ONVIF autoconfiguration will configure the camera codecs. <b>The camera motion sensor must still be <a target="_blank" href="https://docs.scrypted.app/camera-preparation.html#motion-sensor-setup">configured manually</a>.</b>',
};
const MEGABIT = 1024 * 1000;
function getBitrateForResolution(resolution: number) {
if (resolution >= 3840 * 2160)
return 8 * MEGABIT;
if (resolution >= 2688 * 1520)
return 3 * MEGABIT;
if (resolution >= 1920 * 1080)
return 2 * MEGABIT;
if (resolution >= 1280 * 720)
return MEGABIT;
if (resolution >= 640 * 480)
return MEGABIT / 2;
return MEGABIT / 4;
}
export async function checkPluginNeedsAutoConfigure(plugin: ScryptedDeviceBase, extraDevices = 0) {
if (plugin.storage.getItem('autoconfigure') === 'true')
return;
plugin.storage.setItem('autoconfigure', 'true');
if (sdk.deviceManager.getNativeIds().length <= 1 + extraDevices)
return;
plugin.log.a(`${plugin.name} now has support for automatic camera configuration for optimal performance. Cameras can be autoconfigured in their respective settings.`);
}
export async function autoconfigureCodecs(
getCodecs: () => Promise<MediaStreamOptions[]>,
configureCodecs: (options: MediaStreamOptions) => Promise<MediaStreamConfiguration>,
audioOptions?: AudioStreamOptions,
) {
audioOptions ||= {
codec: 'pcm_mulaw',
bitrate: 64000,
sampleRate: 8000,
};
const codecs = await getCodecs();
const configurable: MediaStreamConfiguration[] = [];
for (const codec of codecs) {
const config = await configureCodecs({
id: codec.id,
});
configurable.push(config);
}
const used: MediaStreamConfiguration[] = [];
for (const _ of ['local', 'remote', 'low-resolution'] as MediaStreamDestination[]) {
// find stream with the highest configurable resolution.
let highest: [MediaStreamConfiguration, number] = [undefined, 0];
for (const codec of configurable) {
if (used.includes(codec))
continue;
for (const resolution of codec.video.resolutions) {
if (resolution[0] * resolution[1] > highest[1]) {
highest = [codec, resolution[0] * resolution[1]];
}
}
}
const config = highest[0];
if (!config)
break;
used.push(config);
}
const findResolutionTarget = (config: MediaStreamConfiguration, width: number, height: number) => {
let diff = 999999999;
let ret: [number, number];
const targetArea = width * height;
for (const res of config.video.resolutions) {
const actualArea = res[0] * res[1];
const diffArea = Math.abs(targetArea - actualArea);
if (diffArea < diff) {
diff = diffArea;
ret = res;
}
}
return ret;
}
// find the highest resolution
const l = used[0];
const resolution = findResolutionTarget(l, 8192, 8192);
// get the fps of 20 or highest available
let fps = Math.min(20, Math.max(...l.video.fpsRange));
let errors = '';
const logConfigureCodecs = async (config: MediaStreamConfiguration) => {
try {
await configureCodecs(config);
}
catch (e) {
errors += e;
}
}
await logConfigureCodecs({
id: l.id,
video: {
width: resolution[0],
height: resolution[1],
bitrateControl: 'variable',
codec: 'h264',
bitrate: getBitrateForResolution(resolution[0] * resolution[1]),
fps,
keyframeInterval: fps * 4,
quality: 5,
profile: 'main',
},
audio: audioOptions,
});
if (used.length === 3) {
// find remote and low
const r = used[1];
const l = used[2];
const rResolution = findResolutionTarget(r, 1280, 720);
const lResolution = findResolutionTarget(l, 640, 360);
fps = Math.min(20, Math.max(...r.video.fpsRange));
await logConfigureCodecs({
id: r.id,
video: {
width: rResolution[0],
height: rResolution[1],
bitrateControl: 'variable',
codec: 'h264',
bitrate: 1 * MEGABIT,
fps,
keyframeInterval: fps * 4,
quality: 5,
profile: 'main',
},
audio: audioOptions,
});
fps = Math.min(20, Math.max(...l.video.fpsRange));
await logConfigureCodecs({
id: l.id,
video: {
width: lResolution[0],
height: lResolution[1],
bitrateControl: 'variable',
codec: 'h264',
bitrate: MEGABIT / 2,
fps,
keyframeInterval: fps * 4,
quality: 5,
profile: 'main',
},
audio: audioOptions,
});
}
else if (used.length == 2) {
let target: [number, number];
if (resolution[0] * resolution[1] > 1920 * 1080)
target = [1280, 720];
else
target = [640, 360];
const rResolution = findResolutionTarget(used[1], target[0], target[1]);
const fps = Math.min(20, Math.max(...used[1].video.fpsRange));
await logConfigureCodecs({
id: used[1].id,
video: {
width: rResolution[0],
height: rResolution[1],
bitrateControl: 'variable',
codec: 'h264',
bitrate: getBitrateForResolution(rResolution[0] * rResolution[1]),
fps,
keyframeInterval: fps * 4,
quality: 5,
profile: 'main',
},
audio: audioOptions,
});
}
else if (used.length === 1) {
// no nop
}
if (errors)
throw new Error(errors);
}

View File

@@ -7,7 +7,6 @@ const { systemManager } = sdk;
export abstract class AutoenableMixinProvider extends ScryptedDeviceBase {
hasEnabledMixin: { [id: string]: string } = {};
pluginsComponent: Promise<any>;
unshiftMixin = false;
constructor(nativeId?: string, public autoIncludeToken = 'v4') {
super(nativeId);
@@ -41,11 +40,19 @@ export abstract class AutoenableMixinProvider extends ScryptedDeviceBase {
return true;
}
checkHasEnabledMixin(device: ScryptedDevice) {
return this.hasEnabledMixin[device.id] === this.autoIncludeToken;
}
shouldUnshiftMixin(device: ScryptedDevice) {
return false;
}
async maybeEnableMixin(device: ScryptedDevice) {
if (!device || device.mixins?.includes(this.id))
return;
if (this.hasEnabledMixin[device.id] === this.autoIncludeToken)
if (this.checkHasEnabledMixin(device))
return;
const match = await this.canMixin(device.type, device.interfaces);
@@ -57,7 +64,7 @@ export abstract class AutoenableMixinProvider extends ScryptedDeviceBase {
this.log.i('auto enabling mixin for ' + device.name)
const mixins = (device.mixins || []).slice();
if (this.unshiftMixin)
if (this.shouldUnshiftMixin(device))
mixins.unshift(this.id);
else
mixins.push(this.id);
@@ -73,5 +80,5 @@ export abstract class AutoenableMixinProvider extends ScryptedDeviceBase {
this.storage.setItem('hasEnabledMixin', JSON.stringify(this.hasEnabledMixin));
}
abstract canMixin(type: ScryptedDeviceType, interfaces: string[]): Promise<string[] | null | undefined | void>;
abstract canMixin(type: ScryptedDeviceType | string, interfaces: string[]): Promise<string[] | null | undefined | void>;
}

View File

@@ -1,17 +0,0 @@
export class Deferred<T> {
finished = false;
resolve!: (value: T|PromiseLike<T>) => this;
reject!: (error: Error) => this;
promise: Promise<T> = new Promise((resolve, reject) => {
this.resolve = v => {
this.finished = true;
resolve(v);
return this;
};
this.reject = e => {
this.finished = true;
reject(e);
return this;
};
});
}

1
common/src/deferred.ts Symbolic link
View File

@@ -0,0 +1 @@
../../server/src/deferred.ts

5
common/src/devices.ts Normal file
View File

@@ -0,0 +1,5 @@
import type { SystemManager } from '@scrypted/types';
export function getAllDevices<T>(systemManager: SystemManager) {
return Object.keys(systemManager.getSystemState()).map(id => systemManager.getDeviceById<T>(id));
}

View File

@@ -0,0 +1,96 @@
import type * as monacoEditor from 'monaco-editor';
export interface StandardLibs {
'@types/node/globals.d.ts': string,
'@types/node/buffer.d.ts': string,
'@types/node/process.d.ts': string,
'@types/node/events.d.ts': string,
'@types/node/stream.d.ts': string,
'@types/node/fs.d.ts': string,
'@types/node/net.d.ts': string,
'@types/node/child_process.d.ts': string,
}
export interface ScryptedLibs {
'@types/sdk/settings-mixin.d.ts': string,
'@types/sdk/storage-settings.d.ts': string,
'@types/sdk/types.d.ts': string,
'@types/sdk/index.d.ts': string,
}
export function createMonacoEvalDefaultsWithLibs(standardLibs: StandardLibs, scryptedLibs: ScryptedLibs, extraLibs: { [lib: string]: string }) {
// const libs = Object.assign(scryptedLibs, extraLibs);
function monacoEvalDefaultsFunction(monaco: typeof monacoEditor, standardLibs: StandardLibs, scryptedLibs: ScryptedLibs, extraLibs: { [lib: string]: string }) {
monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions(
Object.assign(
{},
monaco.languages.typescript.typescriptDefaults.getDiagnosticsOptions(),
{
diagnosticCodesToIgnore: [1108, 1375, 1378],
}
)
);
monaco.languages.typescript.typescriptDefaults.setCompilerOptions(
Object.assign(
{},
monaco.languages.typescript.typescriptDefaults.getCompilerOptions(),
{
moduleResolution:
monaco.languages.typescript.ModuleResolutionKind.NodeJs,
}
)
);
const libs: any = {
...scryptedLibs,
...extraLibs,
};
const catLibs = Object.values(libs).join('\n');
const catlibsNoExport = Object.keys(libs)
.map(lib => libs[lib]).map(lib =>
lib.toString().replace(/export /g, '').replace(/import.*?/g, ''))
.join('\n');
monaco.languages.typescript.typescriptDefaults.addExtraLib(`
${catLibs}
declare global {
${catlibsNoExport}
const log: Logger;
const deviceManager: DeviceManager;
const endpointManager: EndpointManager;
const mediaManager: MediaManager;
const systemManager: SystemManager;
const eventSource: ScryptedDevice;
const eventDetails: EventDetails;
const eventData: any;
}
`,
"node_modules/@types/scrypted__sdk/types/index.d.ts"
);
for (const lib of Object.keys(standardLibs)) {
monaco.languages.typescript.typescriptDefaults.addExtraLib(
standardLibs[lib as keyof StandardLibs],
lib,
);
}
}
return `(function() {
const standardLibs = ${JSON.stringify(standardLibs)};
const scryptedLibs = ${JSON.stringify(scryptedLibs)};
const extraLibs = ${JSON.stringify(extraLibs)};
return (monaco) => {
(${monacoEvalDefaultsFunction})(monaco, standardLibs, scryptedLibs, extraLibs);
}
})();
`;
}

View File

@@ -1,3 +1,5 @@
import type { ScryptedDeviceBase } from "@scrypted/sdk";
export interface ScriptDevice {
/**
* @deprecated Use the default export to specify the device handler.
@@ -6,3 +8,5 @@ export interface ScriptDevice {
handle<T>(handler?: T & object): void;
handleTypes(...interfaces: string[]): void;
}
export declare const device: ScryptedDeviceBase & ScriptDevice;

View File

@@ -1,9 +1,10 @@
import sdk, { MixinDeviceBase, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface, ScryptedInterfaceDescriptors, ScryptedMimeTypes } from "@scrypted/sdk";
import { StorageSettings } from "@scrypted/sdk/storage-settings";
import sdk, { LockState, MixinDeviceBase, PanTiltZoomMovement, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface, ScryptedInterfaceDescriptors, ScryptedMimeTypes } from "@scrypted/sdk";
import { SettingsMixinDeviceBase } from "@scrypted/sdk/settings-mixin";
import { StorageSettings } from "@scrypted/sdk/storage-settings";
import fs from 'fs';
import type { TranspileOptions } from "typescript";
import vm from "vm";
import { createMonacoEvalDefaultsWithLibs, ScryptedLibs, StandardLibs } from "./monaco-libs";
import { ScriptDevice } from "./monaco/script-device";
const { systemManager, deviceManager, mediaManager, endpointManager } = sdk;
@@ -28,22 +29,18 @@ export function readFileAsString(f: string) {
return fs.readFileSync(f).toString();;
}
function getTypeDefs() {
const settingsMixinDefs = readFileAsString('@types/sdk/settings-mixin.d.ts');
const storageSettingsDefs = readFileAsString('@types/sdk/storage-settings.d.ts');
const scryptedTypesDefs = readFileAsString('@types/sdk/types.d.ts');
const scryptedIndexDefs = readFileAsString('@types/sdk/index.d.ts');
function getScryptedLibs(): ScryptedLibs {
return {
settingsMixinDefs,
storageSettingsDefs,
scryptedIndexDefs,
scryptedTypesDefs,
};
"@types/sdk/index.d.ts": readFileAsString('@types/sdk/index.d.ts'),
"@types/sdk/settings-mixin.d.ts": readFileAsString('@types/sdk/settings-mixin.d.ts'),
"@types/sdk/storage-settings.d.ts": readFileAsString('@types/sdk/storage-settings.d.ts'),
"@types/sdk/types.d.ts": readFileAsString('@types/sdk/types.d.ts'),
}
}
export async function scryptedEval(device: ScryptedDeviceBase, script: string, extraLibs: { [lib: string]: string }, params: { [name: string]: any }) {
const libs = Object.assign({
types: getTypeDefs().scryptedTypesDefs,
types: getScryptedLibs()['@types/sdk/types.d.ts'],
}, extraLibs);
const allScripts = Object.values(libs).join('\n').toString() + script;
let compiled: string;
@@ -66,7 +63,6 @@ export async function scryptedEval(device: ScryptedDeviceBase, script: string, e
const allParams = Object.assign({}, params, {
sdk,
fs: require('realfs'),
ScryptedDeviceBase,
MixinDeviceBase,
StorageSettings,
@@ -79,6 +75,7 @@ export async function scryptedEval(device: ScryptedDeviceBase, script: string, e
localStorage: device.storage,
device,
exports: {} as any,
PanTiltZoomMovement,
SettingsMixinDeviceBase,
ScryptedMimeTypes,
ScryptedInterface,
@@ -117,102 +114,18 @@ export async function scryptedEval(device: ScryptedDeviceBase, script: string, e
}
export function createMonacoEvalDefaults(extraLibs: { [lib: string]: string }) {
const safeLibs: any = {};
const standardlibs: StandardLibs = {
"@types/node/globals.d.ts": readFileAsString('@types/node/globals.d.ts'),
"@types/node/buffer.d.ts": readFileAsString('@types/node/buffer.d.ts'),
"@types/node/process.d.ts": readFileAsString('@types/node/process.d.ts'),
"@types/node/events.d.ts": readFileAsString('@types/node/events.d.ts'),
"@types/node/stream.d.ts": readFileAsString('@types/node/stream.d.ts'),
"@types/node/fs.d.ts": readFileAsString('@types/node/fs.d.ts'),
"@types/node/net.d.ts": readFileAsString('@types/node/net.d.ts'),
"@types/node/child_process.d.ts": readFileAsString('@types/node/child_process.d.ts'),
};
for (const safeLib of [
'@types/node/globals.d.ts',
'@types/node/buffer.d.ts',
'@types/node/process.d.ts',
'@types/node/events.d.ts',
'@types/node/stream.d.ts',
'@types/node/fs.d.ts',
'@types/node/net.d.ts',
'@types/node/child_process.d.ts',
]) {
safeLibs[`node_modules/${safeLib}`] = readFileAsString(safeLib)
}
const libs = Object.assign(getTypeDefs(), extraLibs);
function monacoEvalDefaultsFunction(monaco: any, safeLibs: any, libs: any) {
monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions(
Object.assign(
{},
monaco.languages.typescript.typescriptDefaults.getDiagnosticsOptions(),
{
diagnosticCodesToIgnore: [1108, 1375, 1378],
}
)
);
monaco.languages.typescript.typescriptDefaults.setCompilerOptions(
Object.assign(
{},
monaco.languages.typescript.typescriptDefaults.getCompilerOptions(),
{
moduleResolution:
monaco.languages.typescript.ModuleResolutionKind.NodeJs,
}
)
);
const catLibs = Object.values(libs).join('\n');
const catlibsNoExport = Object.keys(libs).filter(lib => lib !== 'sdk')
.map(lib => libs[lib]).map(lib =>
lib.toString().replace(/export /g, '').replace(/import.*?/g, ''))
.join('\n');
monaco.languages.typescript.typescriptDefaults.addExtraLib(`
${catLibs}
declare global {
${catlibsNoExport}
const log: Logger;
const deviceManager: DeviceManager;
const endpointManager: EndpointManager;
const mediaManager: MediaManager;
const systemManager: SystemManager;
const mqtt: MqttClient;
const device: ScryptedDeviceBase & { pathname : string };
}
`,
"node_modules/@types/scrypted__sdk/types/index.d.ts"
);
monaco.languages.typescript.typescriptDefaults.addExtraLib(
libs['settingsMixin'],
"node_modules/@types/scrypted__sdk/settings-mixin.d.ts"
);
monaco.languages.typescript.typescriptDefaults.addExtraLib(
libs['storageSettings'],
"node_modules/@types/scrypted__sdk/storage-settings.d.ts"
);
monaco.languages.typescript.typescriptDefaults.addExtraLib(
libs['sdk'],
"node_modules/@types/scrypted__sdk/index.d.ts"
);
for (const lib of Object.keys(safeLibs)) {
monaco.languages.typescript.typescriptDefaults.addExtraLib(
safeLibs[lib],
lib,
);
}
}
return `(function() {
const safeLibs = ${JSON.stringify(safeLibs)};
const libs = ${JSON.stringify(libs)};
return (monaco) => {
(${monacoEvalDefaultsFunction})(monaco, safeLibs, libs);
}
})();
`;
return createMonacoEvalDefaultsWithLibs(standardlibs, getScryptedLibs(), extraLibs);
}
export interface ScriptDeviceImpl extends ScriptDevice {

View File

@@ -19,7 +19,7 @@ function isPi(model: string) {
export function isRaspberryPi() {
let cpuInfo: string;
try {
cpuInfo = require('realfs').readFileSync('/proc/cpuinfo', { encoding: 'utf8' });
cpuInfo = require('fs').readFileSync('/proc/cpuinfo', { encoding: 'utf8' });
}
catch (e) {
// if this fails, this is probably not a pi
@@ -70,11 +70,7 @@ export function getH264DecoderArgs(): CodecArgs {
],
};
if (isRaspberryPi()) {
ret['Raspberry Pi'] = ['-c:v', 'h264_mmal'];
ret[V4L2] = ['-c:v', 'h264_v4l2m2m'];
}
else if (os.platform() === 'linux') {
if (os.platform() === 'linux') {
ret[V4L2] = ['-c:v', 'h264_v4l2m2m'];
}
else if (os.platform() === 'win32') {

8
common/src/json.ts Normal file
View File

@@ -0,0 +1,8 @@
export function safeParseJson(value: string) {
try {
return JSON.parse(value);
}
catch (e) {
}
}

View File

@@ -79,4 +79,4 @@ export async function bind(server: dgram.Socket, port: number) {
}
}
export { ListenZeroSingleClientTimeoutError, listenZero, listenZeroSingleClient } from "@scrypted/server/src/listen-zero";
export { ListenZeroSingleClientTimeoutError, listenZero, listenZeroSingleClient } from "../../server/src/listen-zero";

View File

@@ -1 +1 @@
export * from '@scrypted/server/src/media-helpers';
export { safeKillFFmpeg, ffmpegLogInitialOutput, safePrintFFmpegArguments } from '../../server/src/media-helpers';

View File

@@ -1,96 +0,0 @@
export interface RefreshPromise<T> {
promise: Promise<T>;
cacheDuration: number;
}
export function singletonPromise<T>(rp: undefined | RefreshPromise<T>, method: () => Promise<T>, cacheDuration = 0) {
if (rp?.promise)
return rp;
const promise = method();
if (!rp) {
rp = {
promise,
cacheDuration,
}
}
else {
rp.promise = promise;
}
promise.finally(() => setTimeout(() => rp.promise = undefined, rp.cacheDuration));
return rp;
}
export class TimeoutError<T> extends Error {
constructor(public promise: Promise<T>) {
super('Operation Timed Out');
}
}
export function timeoutPromise<T>(timeout: number, promise: Promise<T>): Promise<T> {
return new Promise<T>((resolve, reject) => {
const t = setTimeout(() => reject(new TimeoutError(promise)), timeout);
promise
.then(v => {
clearTimeout(t);
resolve(v);
})
.catch(e => {
clearTimeout(t);
reject(e);
});
})
}
export function timeoutFunction<T>(timeout: number, f: (isTimedOut: () => boolean) => Promise<T>): Promise<T> {
return new Promise<T>((resolve, reject) => {
let isTimedOut = false;
const promise = f(() => isTimedOut);
const t = setTimeout(() => {
isTimedOut = true;
reject(new TimeoutError(promise));
}, timeout);
promise
.then(v => {
clearTimeout(t);
resolve(v);
})
.catch(e => {
clearTimeout(t);
reject(e);
});
})
}
export function createPromiseDebouncer<T>() {
let current: Promise<T>;
return (func: () => Promise<T>): Promise<T> => {
if (!current)
current = func().finally(() => current = undefined);
return current;
}
}
export function createMapPromiseDebouncer<T>() {
const map = new Map<string, Promise<T>>();
return (key: any, debounce: number, func: () => Promise<T>): Promise<T> => {
const keyStr = JSON.stringify(key);
let value = map.get(keyStr);
if (!value) {
value = func().finally(() => {
if (!debounce) {
map.delete(keyStr);
return;
}
setTimeout(() => map.delete(keyStr), debounce);
});
map.set(keyStr, value);
}
return value;
}
}

1
common/src/promise-utils.ts Symbolic link
View File

@@ -0,0 +1 @@
../../server/src/promise-utils.ts

View File

@@ -54,18 +54,18 @@ export async function read16BELengthLoop(readable: Readable, options: {
readable.on('readable', read);
await once(readable, 'end');
throw new Error('stream ended');
throw new StreamEndError('read16BELengthLoop');
}
export class StreamEndError extends Error {
constructor() {
super('stream ended');
constructor(where: string) {
super(`stream ended: ${where}`);
}
}
export async function readLength(readable: Readable, length: number): Promise<Buffer> {
if (readable.readableEnded || readable.destroyed)
throw new StreamEndError();
throw new StreamEndError('readLength start');
if (!length) {
return Buffer.alloc(0);
@@ -88,12 +88,12 @@ export async function readLength(readable: Readable, length: number): Promise<Bu
}
if (readable.readableEnded || readable.destroyed)
reject(new Error("stream ended during read"));
reject(new StreamEndError('readLength readable'));
};
const e = () => {
cleanup();
reject(new StreamEndError())
reject(new StreamEndError('readLength end'));
};
const cleanup = () => {

View File

@@ -1,5 +1,5 @@
import { RpcPeer } from "@scrypted/server/src/rpc";
import { createRpcSerializer } from "@scrypted/server/src/rpc-serializer";
import { RpcPeer } from "../../server/src/rpc";
import { createRpcSerializer } from "../../server/src/rpc-serializer";
import type { RTCSignalingSession } from "@scrypted/sdk";
export async function createBrowserSignalingSession(ws: WebSocket, localName: string, remoteName: string) {

View File

@@ -41,15 +41,15 @@ export function isPeerConnectionClosed(pc: RTCPeerConnection) {
|| pc.iceConnectionState === 'closed';
}
function silence() {
let ctx = new AudioContext(), oscillator = ctx.createOscillator();
const dest = ctx.createMediaStreamDestination();
oscillator.connect(dest);
oscillator.start();
const ret = dest.stream.getAudioTracks()[0];
ret.enabled = false;
return ret;
}
// function silence() {
// let ctx = new AudioContext(), oscillator = ctx.createOscillator();
// const dest = ctx.createMediaStreamDestination();
// oscillator.connect(dest);
// oscillator.start();
// const ret = dest.stream.getAudioTracks()[0];
// ret.enabled = false;
// return ret;
// }
function createOptions() {
const options: RTCSignalingOptions = {

View File

@@ -89,27 +89,51 @@ export const H264_NAL_TYPE_FU_B = 29;
export const H264_NAL_TYPE_MTAP16 = 26;
export const H264_NAL_TYPE_MTAP32 = 27;
export const H265_NAL_TYPE_AGG = 48;
export const H265_NAL_TYPE_VPS = 32;
export const H265_NAL_TYPE_SPS = 33;
export const H265_NAL_TYPE_PPS = 34;
export const H265_NAL_TYPE_BLA_W_LP = 16;
export const H265_NAL_TYPE_BLA_W_RADL = 17;
export const H265_NAL_TYPE_BLA_N_LP = 18;
export const H265_NAL_TYPE_IDR_W_RADL = 19;
export const H265_NAL_TYPE_IDR_N_LP = 20;
export const H265_NAL_TYPE_CRA_NUT = 21;
export const H265_NAL_TYPE_FU = 49;
export const H265_NAL_TYPE_SEI_PREFIX = 39;
export const H265_NAL_TYPE_SEI_SUFFIX = 40;
export function findH264NaluType(streamChunk: StreamChunk, naluType: number) {
if (streamChunk.type !== 'h264')
return;
return findH264NaluTypeInNalu(streamChunk.chunks[streamChunk.chunks.length - 1].subarray(12), naluType);
}
export function findH265NaluType(streamChunk: StreamChunk, naluType: number) {
if (streamChunk.type !== 'h265')
return;
return findH265NaluTypeInNalu(streamChunk.chunks[streamChunk.chunks.length - 1].subarray(12), naluType);
}
export function parseH264NaluType(firstNaluByte: number) {
return firstNaluByte & 0x1f;
}
export function findH264NaluTypeInNalu(nalu: Buffer, naluType: number) {
const checkNaluType = nalu[0] & 0x1f;
const checkNaluType = parseH264NaluType(nalu[0]);
if (checkNaluType === H264_NAL_TYPE_STAP_A) {
let pos = 1;
while (pos < nalu.length) {
const naluLength = nalu.readUInt16BE(pos);
pos += 2;
const stapaType = nalu[pos] & 0x1f;
const stapaType = parseH264NaluType(nalu[pos]);
if (stapaType === naluType)
return nalu.subarray(pos, pos + naluLength);
pos += naluLength;
}
}
else if (checkNaluType === H264_NAL_TYPE_FU_A) {
const fuaType = nalu[1] & 0x1f;
const fuaType = parseH264NaluType(nalu[1]);
const isFuStart = !!(nalu[1] & 0x80);
if (fuaType === naluType && isFuStart)
@@ -121,39 +145,52 @@ export function findH264NaluTypeInNalu(nalu: Buffer, naluType: number) {
return;
}
export function getNaluTypes(streamChunk: StreamChunk) {
if (streamChunk.type !== 'h264')
return new Set<number>();
return getNaluTypesInNalu(streamChunk.chunks[streamChunk.chunks.length - 1].subarray(12))
function parseH265NaluType(firstNaluByte: number) {
return (firstNaluByte & 0b01111110) >> 1;
}
export function getNaluFragmentInformation(nalu: Buffer) {
const naluType = nalu[0] & 0x1f;
const fua = naluType === H264_NAL_TYPE_FU_A;
return {
fua,
fuaStart: fua && !!(nalu[1] & 0x80),
fuaEnd: fua && !!(nalu[1] & 0x40),
export function findH265NaluTypeInNalu(nalu: Buffer, naluType: number) {
const checkNaluType = parseH265NaluType(nalu[0]);
if (checkNaluType === H265_NAL_TYPE_AGG) {
let pos = 1;
while (pos < nalu.length) {
const naluLength = nalu.readUInt16BE(pos);
pos += 2;
const stapaType = parseH265NaluType(nalu[pos]);
if (stapaType === naluType)
return nalu.subarray(pos, pos + naluLength);
pos += naluLength;
}
}
else if (checkNaluType === naluType) {
return nalu;
}
return;
}
export function getStartedH264NaluTypes(streamChunk: StreamChunk) {
if (streamChunk.type !== 'h264')
return new Set<number>();
return getNaluTypesInNalu(streamChunk.chunks[streamChunk.chunks.length - 1].subarray(12), true)
}
export function getNaluTypesInNalu(nalu: Buffer, fuaRequireStart = false, fuaRequireEnd = false) {
const ret = new Set<number>();
const naluType = nalu[0] & 0x1f;
const naluType = parseH264NaluType(nalu[0]);
if (naluType === H264_NAL_TYPE_STAP_A) {
ret.add(H264_NAL_TYPE_STAP_A);
let pos = 1;
while (pos < nalu.length) {
const naluLength = nalu.readUInt16BE(pos);
pos += 2;
const stapaType = nalu[pos] & 0x1f;
const stapaType = parseH264NaluType(nalu[pos]);
ret.add(stapaType);
pos += naluLength;
}
}
else if (naluType === H264_NAL_TYPE_FU_A) {
ret.add(H264_NAL_TYPE_FU_A);
const fuaType = nalu[1] & 0x1f;
const fuaType = parseH264NaluType(nalu[1]);
if (fuaRequireStart) {
const isFuStart = !!(nalu[1] & 0x80);
if (isFuStart)
@@ -175,6 +212,70 @@ export function getNaluTypesInNalu(nalu: Buffer, fuaRequireStart = false, fuaReq
return ret;
}
export function getStartedH265NaluTypes(streamChunk: StreamChunk) {
if (streamChunk.type !== 'h265')
return new Set<number>();
return getNaluTypesInH265Nalu(streamChunk.chunks[streamChunk.chunks.length - 1].subarray(12), true)
}
export function getNaluTypesInH265Nalu(nalu: Buffer, fuaRequireStart = false, fuaRequireEnd = false) {
const ret = new Set<number>();
const naluType = parseH265NaluType(nalu[0]);
if (naluType === H265_NAL_TYPE_AGG) {
ret.add(H265_NAL_TYPE_AGG);
let pos = 2;
while (pos < nalu.length) {
const naluLength = nalu.readUInt16BE(pos);
pos += 2;
const stapaType = parseH265NaluType(nalu[pos]);
ret.add(stapaType);
pos += naluLength;
}
}
else if (naluType === H265_NAL_TYPE_FU) {
ret.add(H265_NAL_TYPE_FU);
const fuaType = nalu[2] & 0x3F; // 6 bits
if (fuaRequireStart) {
const isFuStart = !!(nalu[2] & 0x80);
if (isFuStart)
ret.add(fuaType);
}
else if (fuaRequireEnd) {
const isFuEnd = !!(nalu[2] & 0x40);
if (isFuEnd)
ret.add(fuaType);
}
else {
ret.add(fuaType);
}
}
else {
ret.add(naluType);
}
return ret;
}
export function isH265KeyFrameRelatedInSet(naluTypes: Set<number>, allowCodecInfo = true) {
if (naluTypes.has(H265_NAL_TYPE_IDR_N_LP)
|| naluTypes.has(H265_NAL_TYPE_IDR_W_RADL)
|| naluTypes.has(H265_NAL_TYPE_CRA_NUT)
|| naluTypes.has(H265_NAL_TYPE_BLA_N_LP)
|| naluTypes.has(H265_NAL_TYPE_BLA_W_LP)
|| naluTypes.has(H265_NAL_TYPE_BLA_W_RADL)) {
return true;
}
if (allowCodecInfo) {
if (naluTypes.has(H265_NAL_TYPE_VPS)
|| naluTypes.has(H265_NAL_TYPE_SPS)
|| naluTypes.has(H265_NAL_TYPE_PPS))
return true;
}
return false;
}
export function createRtspParser(options?: StreamParserOptions): RtspStreamParser {
let resolve: any;
@@ -190,17 +291,25 @@ export function createRtspParser(options?: StreamParserOptions): RtspStreamParse
'tcp',
...(options?.vcodec || []),
...(options?.acodec || []),
// linux and windows seem to support 64000 but darwin is 32000?
'-pkt_size', '32000',
'-f', 'rtsp',
],
findSyncFrame(streamChunks: StreamChunk[]) {
for (let prebufferIndex = 0; prebufferIndex < streamChunks.length; prebufferIndex++) {
const streamChunk = streamChunks[prebufferIndex];
if (streamChunk.type !== 'h264') {
continue;
if (streamChunk.type === 'h264') {
const naluTypes = getStartedH264NaluTypes(streamChunk);
if (naluTypes.has(H264_NAL_TYPE_SPS) || naluTypes.has(H264_NAL_TYPE_IDR)) {
return streamChunks.slice(prebufferIndex);
}
}
else if (streamChunk.type === 'h265') {
const naluTypes = getStartedH265NaluTypes(streamChunk);
if (findH264NaluType(streamChunk, H264_NAL_TYPE_SPS) || findH264NaluType(streamChunk, H264_NAL_TYPE_IDR)) {
return streamChunks.slice(prebufferIndex);
if (isH265KeyFrameRelatedInSet(naluTypes)) {
return streamChunks.slice(prebufferIndex);
}
}
}
@@ -326,7 +435,7 @@ export class RtspClient extends RtspBase {
hasGetParameter = true;
contentBase: string;
constructor(public url: string) {
constructor(public readonly url: string) {
super();
const u = new URL(url);
const port = parseInt(u.port) || 554;
@@ -438,11 +547,47 @@ export class RtspClient extends RtspBase {
}
}
catch (e) {
this.client.destroy(e);
this.client.destroy(e as Error);
throw e;
}
}
async *handleStream(): AsyncGenerator<{
rtcp: boolean,
header: Buffer,
packet: Buffer,
channel: number,
}> {
while (true) {
const header = await readLength(this.client, 4);
// can this even happen? since the RTSP request method isn't a fixed
// value like the "RTSP" in the RTSP response, I don't think so?
if (header[0] !== RTSP_FRAME_MAGIC) {
if (header.toString() !== 'RTSP')
throw this.createBadHeader(header);
this.client.unshift(header);
// do what with this?
const message = await super.readMessage();
const body = await this.readBody(parseHeaders(message));
continue;
}
const length = header.readUInt16BE(2);
const packet = await readLength(this.client, length);
const id = header.readUInt8(1);
yield {
channel: id,
rtcp: id % 2 === 1,
header,
packet,
}
}
}
async readLoop() {
const deferred = new Deferred<void>();
@@ -504,7 +649,8 @@ export class RtspClient extends RtspBase {
}
}
catch (e) {
deferred.reject(e);
if (!deferred.finished)
deferred.reject(e as Error);
this.client.destroy();
}
};
@@ -540,10 +686,15 @@ export class RtspClient extends RtspBase {
throw new Error('no WWW-Authenticate found');
const { BASIC } = await import('http-auth-utils');
// @ts-ignore
const { parseHTTPHeadersQuotedKeyValueSet } = await import('http-auth-utils/dist/utils');
const authedUrl = new URL(this.url);
const username = decodeURIComponent(authedUrl.username);
const password = decodeURIComponent(authedUrl.password);
if (this.wwwAuthenticate.includes('Basic')) {
const hash = BASIC.computeHash(url);
const hash = BASIC.computeHash({ username, password });
return `Basic ${hash}`;
}
@@ -563,10 +714,6 @@ export class RtspClient extends RtspBase {
REQUIRED_WWW_AUTHENTICATE_KEYS,
) as DigestWWWAuthenticateData;
const authedUrl = new URL(this.url);
const username = decodeURIComponent(authedUrl.username);
const password = decodeURIComponent(authedUrl.password);
const strippedUrl = new URL(url.toString());
strippedUrl.username = '';
strippedUrl.password = '';
@@ -656,7 +803,10 @@ export class RtspClient extends RtspBase {
Accept: 'application/sdp',
});
this.contentBase = response.headers['content-base'] || response.headers['content-location'];;
this.contentBase = response.headers['content-base'] || response.headers['content-location'];
// content base may be a relative path? seems odd.
if (this.contentBase)
this.contentBase = new URL(this.contentBase, this.url).toString();
return response;
}
@@ -1054,7 +1204,7 @@ export class RtspServer {
}
export async function listenSingleRtspClient<T extends RtspServer>(options?: {
hostname?: string,
hostname: string,
pathToken?: string,
createServer?(duplex: Duplex): T,
}) {

View File

@@ -175,6 +175,8 @@ export type RTPMap = ReturnType<typeof parseRtpMap>;
export function parseRtpMap(mline: ReturnType<typeof parseMLine>, rtpmap: string) {
const mlineType = mline.type;
const match = rtpmap?.match(/a=rtpmap:([\d]+) (.*?)\/([\d]+)(\/([\d]+))?/);
let channels = parseInt(match?.[5]) || undefined;
let payloadType = parseInt(match?.[1]);
rtpmap = rtpmap?.toLowerCase();
@@ -222,10 +224,20 @@ export function parseRtpMap(mline: ReturnType<typeof parseMLine>, rtpmap: string
if (mline.payloadTypes?.includes(0)) {
codec = 'pcm_mulaw';
ffmpegEncoder = 'pcm_mulaw';
payloadType = 0;
channels = 1;
}
else if (mline.payloadTypes?.includes(8)) {
codec = 'pcm_alaw';
ffmpegEncoder = 'pcm_alaw';
payloadType = 8;
channels = 1;
}
else if (mline.payloadTypes?.includes(14)) {
codec = 'mp3';
ffmpegEncoder = 'mp3';
payloadType = 14;
channels = 2;
}
else {
// ffmpeg seems to omit the rtpmap type for pcm alaw when creating sdp?
@@ -235,17 +247,29 @@ export function parseRtpMap(mline: ReturnType<typeof parseMLine>, rtpmap: string
// https://en.wikipedia.org/wiki/RTP_payload_formats
codec = 'pcm_alaw';
ffmpegEncoder = 'pcm_alaw';
payloadType = 8;
channels = 1;
}
}
// assigned payload types do not need to provide a clock, there is a default.
let clock = parseInt(match?.[3]);
if (!clock) {
clock = undefined;
if (codec === 'pcm_mulaw' || codec === 'pcm_alaw')
clock = 8000;
else if (codec === 'pcm_s16be')
clock = 16000;
}
return {
line: rtpmap,
codec,
ffmpegEncoder,
rawCodec: match?.[2],
clock: parseInt(match?.[3]),
channels: parseInt(match?.[5]) || undefined,
payloadType: parseInt(match?.[1]),
clock,
channels,
payloadType,
}
}
@@ -355,3 +379,33 @@ export function getSpsPps(
pps: Buffer.from(pps, 'base64'),
}
}
export function getSpsPpsVps(
section: {
fmtp: {
payloadType: number;
parameters: {
[key: string]: string;
};
}[]
}
) {
const parameters = section?.fmtp?.[0]?.parameters;
if (!parameters) {
return {
sps: undefined,
pps: undefined,
vps: undefined,
};
}
const sps = parameters['sprop-sps'];
const pps = parameters['sprop-pps'];
const vps = parameters['sprop-vps'];
return {
sps: sps ? Buffer.from(sps, 'base64') : undefined,
pps: pps ? Buffer.from(pps, 'base64') : undefined,
vps: vps ? Buffer.from(vps, 'base64') : undefined,
}
}

View File

@@ -1 +1 @@
export * from "@scrypted/server/src/sleep"
export { sleep } from "../../server/src/sleep";

View File

@@ -1,19 +1,52 @@
import sdk, { PluginFork } from '@scrypted/sdk';
import worker_threads from 'worker_threads';
import sdk, { ForkOptions, PluginFork } from '@scrypted/sdk';
import { createAsyncQueue } from './async-queue';
import os from 'os';
export type Zygote<T> = () => PluginFork<T>;
export function createZygote<T>(): Zygote<T> {
if (!worker_threads.isMainThread)
return;
export function createService<T, V>(options: ForkOptions, create: (t: Promise<T>) => Promise<V>): {
getResult: () => Promise<V>,
terminate: () => void,
} {
let killed = false;
let currentResult: Promise<V>;
let currentFork: ReturnType<typeof sdk.fork<T>>;
let zygote = sdk.fork<T>();
return {
getResult() {
if (killed)
throw new Error('service terminated');
if (currentResult)
return currentResult;
currentFork = sdk.fork<T>(options);
currentFork.worker.on('exit', () => currentResult = undefined);
currentResult = create(currentFork.result);
currentResult.catch(() => {
currentResult = undefined;
});
return currentResult;
},
terminate() {
if (killed)
return;
killed = true;
currentFork.worker.terminate();
currentFork = undefined;
currentResult = undefined;
}
}
}
export function createZygote<T>(options?: ForkOptions): Zygote<T> {
let zygote = sdk.fork<T>(options);
function* next() {
while (true) {
const cur = zygote;
zygote = sdk.fork<T>();
zygote = sdk.fork<T>(options);
yield cur;
}
}

View File

@@ -1,6 +1,6 @@
{
"compilerOptions": {
"module": "Node16",
"module": "commonjs",
"moduleResolution": "Node16",
"target": "esnext",
"noImplicitAny": true,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-cpu"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>

Before

Width:  |  Height:  |  Size: 667 B

View File

@@ -1,26 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>Scrypted Management Console</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons">
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@300;400;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300;400;500;600;700&display=swap" rel="stylesheet">
</head>
<body>
<noscript>
<strong>We're sorry but web doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

View File

@@ -1,45 +0,0 @@
{
"name": "Scrypted Management Console",
"short_name": "Scrypted",
"icons": [
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-72x72.png",
"sizes": "72x72",
"type": "image/png"
},
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-96x96.png",
"sizes": "96x96",
"type": "image/png"
},
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-144x144.png",
"sizes": "144x144",
"type": "image/png"
},
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-152x152.png",
"sizes": "152x152",
"type": "image/png"
},
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-384x384.png",
"sizes": "384x384",
"type": "image/png"
},
{
"src": "https://koush.github.io/scrypted/plugins/core/ui/img/icons/icon-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "./index.html",
"display": "standalone",
"background_color": "#000000",
"theme_color": "#424242"
}

View File

@@ -1,2 +0,0 @@
User-agent: *
Disallow:

View File

@@ -1,6 +1,6 @@
# Home Assistant Addon Configuration
name: Scrypted
version: "v0.102.0-jammy-full"
version: "v0.139.0-noble-full"
slug: scrypted
description: Scrypted is a high performance home video integration and automation platform
url: "https://github.com/koush/scrypted"

View File

@@ -1,4 +1,4 @@
ARG BASE="20-jammy-full"
ARG BASE="noble-full"
FROM ghcr.io/koush/scrypted-common:${BASE}
WORKDIR /
@@ -16,6 +16,6 @@ ENV NODE_OPTIONS="--dns-result-order=ipv4first"
# changing this forces pip and npm to perform reinstalls.
# if this base image changes, this version must be updated.
ENV SCRYPTED_BASE_VERSION="20240321"
ENV SCRYPTED_BASE_VERSION="20250101"
CMD npm --prefix /server exec scrypted-serve
CMD ["/bin/sh", "-c", "ulimit -c 0; exec npm --prefix /server exec scrypted-serve"]

View File

@@ -6,26 +6,20 @@
# This common file will be used by both Docker and the linux
# install script.
################################################################
ARG BASE="jammy"
ARG REPO="ubuntu"
FROM ${REPO}:${BASE} as header
ARG BASE="noble"
FROM ubuntu:${BASE} AS header
ENV DEBIAN_FRONTEND=noninteractive
# base tools and development stuff
RUN apt-get update && apt-get -y install \
curl software-properties-common apt-utils \
build-essential \
cmake \
ffmpeg \
gcc \
libcairo2-dev \
libgirepository1.0-dev \
pkg-config && \
apt-get -y update && \
apt-get -y upgrade
ARG NODE_VERSION=20
ARG NODE_VERSION=22
RUN apt-get install -y ca-certificates curl gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor --yes -o /etc/apt/keyrings/nodesource.gpg
@@ -41,16 +35,12 @@ RUN apt-get -y install \
python3-setuptools \
python3-wheel
# these are necessary for pillow-simd, additional on disk size is small
# but could consider removing this.
RUN echo "Installing pillow-simd dependencies."
RUN apt-get -y install \
libjpeg-dev zlib1g-dev
# gstreamer native https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c#install-gstreamer-on-ubuntu-or-debian
RUN echo "Installing gstreamer."
# python-codecs pygobject dependencies
RUN apt-get -y install libcairo2-dev libgirepository1.0-dev
RUN apt-get -y install \
gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-alsa \
gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav \
gstreamer1.0-vaapi
# python3 gstreamer bindings
@@ -61,8 +51,9 @@ RUN apt-get -y install \
# allow pip to install to system
RUN rm -f /usr/lib/python**/EXTERNALLY-MANAGED
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install debugpy typing_extensions psutil
# ERROR: Cannot uninstall pip 24.0, RECORD file not found. Hint: The package was installed by debian.
# RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install debugpy
################################################################
# End section generated from template/Dockerfile.full.header
@@ -70,11 +61,20 @@ RUN python3 -m pip install debugpy typing_extensions psutil
################################################################
# Begin section generated from template/Dockerfile.full.footer
################################################################
FROM header as base
FROM header AS base
# intel opencl gpu for openvino
# vulkan
RUN apt -y install libvulkan1
# intel opencl for openvino
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-intel-graphics.sh | bash
# NPU driver will SIGILL on openvino prior to 2024.5.0
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-intel-npu.sh | bash
# amd opencl
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-amd-graphics.sh | bash
# python 3.9 from ppa.
# 3.9 is the version with prebuilt support for tensorflow lite
RUN add-apt-repository -y ppa:deadsnakes/ppa && \
@@ -86,8 +86,8 @@ RUN add-apt-repository -y ppa:deadsnakes/ppa && \
# allow pip to install to system
RUN rm -f /usr/lib/python**/EXTERNALLY-MANAGED
RUN python3.9 -m pip install --upgrade pip
RUN python3.9 -m pip install debugpy typing_extensions psutil
# RUN python3.9 -m pip install --upgrade pip
RUN python3.9 -m pip install debugpy
# Coral Edge TPU
# https://coral.ai/docs/accelerator/get-started/#runtime-on-linux
@@ -95,16 +95,20 @@ RUN echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" |
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get -y update && apt-get -y install libedgetpu1-std
# set default shell to bash
RUN chsh -s /bin/bash
ENV SHELL="/bin/bash"
ENV SCRYPTED_INSTALL_ENVIRONMENT="docker"
ENV SCRYPTED_CAN_RESTART="true"
ENV SCRYPTED_VOLUME="/server/volume"
ENV SCRYPTED_INSTALL_PATH="/server"
RUN test -f "/usr/bin/ffmpeg" && test -f "/usr/bin/python3" && test -f "/usr/bin/python3.9" && test -f "/usr/bin/python3.10"
RUN test -f "/usr/bin/ffmpeg" && test -f "/usr/bin/python3" && test -f "/usr/bin/python3.9" && test -f "/usr/bin/python3.12"
ENV SCRYPTED_FFMPEG_PATH="/usr/bin/ffmpeg"
ENV SCRYPTED_PYTHON_PATH="/usr/bin/python3"
ENV SCRYPTED_PYTHON39_PATH="/usr/bin/python3.9"
ENV SCRYPTED_PYTHON310_PATH="/usr/bin/python3.10"
ENV SCRYPTED_PYTHON312_PATH="/usr/bin/python3.12"
ENV SCRYPTED_DOCKER_FLAVOR="full"

View File

@@ -0,0 +1,9 @@
ARG BASE="ghcr.io/koush/scrypted-common:20-jammy-full"
FROM $BASE
ENV SCRYPTED_DOCKER_FLAVOR="intel"
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-intel-oneapi.sh | bash
# these paths must be updated if oneapi is updated via the install-intel-oneapi.sh script
# note that the 2022.2 seems to be a typo in the intel script...?
ENV LD_LIBRARY_PATH=/opt/intel/oneapi/tcm/1.4/lib:/opt/intel/oneapi/umf/0.11/lib:/opt/intel/oneapi/tbb/2022.2/env/../lib/intel64/gcc4.8:/opt/intel/oneapi/mkl/2025.2/lib:/opt/intel/oneapi/compiler/2025.2/opt/compiler/lib:/opt/intel/oneapi/compiler/2025.2/lib

View File

@@ -1,5 +1,7 @@
ARG BASE="jammy"
FROM ubuntu:${BASE} as header
FROM ubuntu:${BASE} AS header
ENV SCRYPTED_DOCKER_FLAVOR="lite"
ENV DEBIAN_FRONTEND=noninteractive
@@ -10,23 +12,19 @@ RUN apt-get update && apt-get -y install \
apt-get -y update && \
apt-get -y upgrade
ARG NODE_VERSION=20
ARG NODE_VERSION=22
RUN apt-get install -y ca-certificates curl gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor --yes -o /etc/apt/keyrings/nodesource.gpg
RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_"$NODE_VERSION".x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
RUN apt-get update && apt-get install -y nodejs
# intel opencl gpu for openvino
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-intel-graphics.sh | bash
ENV SCRYPTED_INSTALL_ENVIRONMENT="docker"
ENV SCRYPTED_CAN_RESTART="true"
ENV SCRYPTED_VOLUME="/server/volume"
ENV SCRYPTED_INSTALL_PATH="/server"
ENV SHELL="/bin/bash"
RUN test -f "/usr/bin/python3" && test -f "/usr/bin/python3.10"
RUN test -f "/usr/bin/python3" && test -f "/usr/bin/python3.12"
ENV SCRYPTED_PYTHON_PATH="/usr/bin/python3"
ENV SCRYPTED_PYTHON310_PATH="/usr/bin/python3.10"
ENV SCRYPTED_DOCKER_FLAVOR="lite"
ENV SCRYPTED_PYTHON312_PATH="/usr/bin/python3.12"

View File

@@ -1,6 +1,11 @@
ARG BASE="ghcr.io/koush/scrypted-common:20-jammy-full"
FROM $BASE
ENV SCRYPTED_DOCKER_FLAVOR="nvidia"
ENV NVIDIA_DRIVER_CAPABILITIES=all
ENV NVIDIA_VISIBLE_DEVICES=all
# nvidia cudnn/libcublas etc.
# for some reason this is not provided by the nvidia container toolkit
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-nvidia-graphics.sh | bash

View File

@@ -0,0 +1,52 @@
ARG BASE="noble-lite"
FROM ghcr.io/koush/scrypted-common:${BASE}
ENV SCRYPTED_DOCKER_FLAVOR="router"
# tools
RUN apt -y update && apt -y install nano net-tools dnsutils dnsmasq vlan bridge-utils netplan.io nftables isc-dhcp-client cron
RUN rm -f /etc/systemd/system/multi-user.target.wants/dnsmasq.service
RUN rm -f /etc/systemd/system/sysinit.target.wants/systemd-resolved.service
# go + caddy
RUN apt -y install golang-go
RUN apt install -y debian-keyring debian-archive-keyring apt-transport-https
RUN curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-xcaddy-archive-keyring.gpg
RUN curl -1sLf 'https://dl.cloudsmith.io/public/caddy/xcaddy/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-xcaddy.list
RUN apt -y update
RUN apt -y install xcaddy
RUN xcaddy build --with github.com/caddy-dns/cloudflare --output /usr/local/bin/caddy
# nftables
COPY ./router/scrypted-nftables.service /etc/systemd/system
RUN systemctl enable scrypted-nftables
RUN bash -c 'echo include \"/etc/nftables.d/*.conf\"\; > /etc/nftables.conf'
RUN mkdir -p /etc/nftables.d
COPY ./router/01-scrypted.conf /etc/nftables.d
# ipv6 forwarding
COPY ./router/scrypted-ip-forwarding.service /etc/systemd/system
RUN systemctl enable scrypted-ip-forwarding
# install turn server, but disable it too set it up on a per interface basis.
RUN apt -y update && apt -y install coturn && systemctl disable coturn && rm /usr/lib/systemd/system/coturn.service
# install usbmuxd for iphone tethering
# ensure the pairing info stays in persistent storage
RUN apt -y update && apt -y install usbmuxd && rm /usr/lib/systemd/system/usbmuxd.service && ln -sf /server/volume/plugins/\@scrypted/router/usbmuxd /var/lib/lockdown
WORKDIR /
# cache bust
ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache
ARG SCRYPTED_INSTALL_VERSION="latest"
RUN test -n "$SCRYPTED_INSTALL_VERSION"
RUN npx -y scrypted@latest install-server ${SCRYPTED_INSTALL_VERSION}
COPY ./router/scrypted-dhcp-watcher.service /etc/systemd/system/scrypted-dhcp-watcher.service
RUN systemctl enable scrypted-dhcp-watcher
COPY ./router/scrypted.service /etc/systemd/system/scrypted.service
RUN systemctl enable scrypted
WORKDIR /
CMD ["/sbin/init"]

View File

@@ -8,6 +8,9 @@ RUN apt-get update && apt-get -y install \
libavahi-compat-libdnssd-dev \
xz-utils
# killall
RUN apt -y install psmisc
# copy configurations and scripts
COPY fs /
@@ -46,6 +49,6 @@ ENV NODE_OPTIONS="--dns-result-order=ipv4first"
# changing this forces pip and npm to perform reinstalls.
# if this base image changes, this version must be updated.
ENV SCRYPTED_BASE_VERSION="20240321"
ENV SCRYPTED_BASE_VERSION="20250101"
CMD npm --prefix /server exec scrypted-serve
CMD ["/bin/sh", "-c", "ulimit -c 0; exec npm --prefix /server exec scrypted-serve"]

View File

@@ -2,7 +2,7 @@
set -x
NODE_VERSION=20
NODE_VERSION=22
SCRYPTED_INSTALL_VERSION=beta
IMAGE_BASE=jammy
FLAVOR=full

View File

@@ -19,6 +19,9 @@
services:
scrypted:
# LXC usage only
# lxc privileged: true
environment:
# Scrypted NVR Storage (Part 2 of 3)
@@ -29,34 +32,34 @@ services:
# section below.
# - SCRYPTED_NVR_VOLUME=/nvr
- SCRYPTED_WEBHOOK_UPDATE_AUTHORIZATION=Bearer SET_THIS_TO_SOME_RANDOM_TEXT
- SCRYPTED_WEBHOOK_UPDATE_AUTHORIZATION=Bearer ${WATCHTOWER_HTTP_API_TOKEN:-env_missing_fallback}
- SCRYPTED_WEBHOOK_UPDATE=http://localhost:10444/v1/update
# LXC usage only
# lxc - SCRYPTED_INSTALL_ENVIRONMENT=lxc-docker
# Avahi can be used for network discovery by passing in the host daemon
# or running the daemon inside the container. Choose one or the other.
# Uncomment next line to run avahi-daemon inside the container.
# See volumes section below to use the host daemon.
# See volumes and security_opt section below to use the host daemon.
# - SCRYPTED_DOCKER_AVAHI=true
# NVIDIA (Part 1 of 4)
# - NVIDIA_VISIBLE_DEVICES=all
# - NVIDIA_DRIVER_CAPABILITIES=all
# NVIDIA (Part 1 of 2)
# nvidia runtime: nvidia
# NVIDIA (Part 2 of 4)
# runtime: nvidia
# NVIDIA (Part 3 of 4) - Use NVIDIA image, and remove subsequent default image.
# image: ghcr.io/koush/scrypted:nvidia
# NVIDIA (Part 2 of 2) - Use NVIDIA image, and remove subsequent default image.
# Valid images:
# ghcr.io/koush/scrypted
# ghcr.io/koush/scrypted:nvidia
# ghcr.io/koush/scrypted:intel
# ghcr.io/koush/scrypted:lite
image: ghcr.io/koush/scrypted
volumes:
# NVIDIA (Part 4 of 4)
# - /etc/OpenCL/vendors/nvidia.icd:/etc/OpenCL/vendors/nvidia.icd
# Scrypted NVR Storage (Part 3 of 3)
# Modify to add the additional volume for Scrypted NVR.
# The following example would mount the /mnt/sda/video path on the host
# The following example would mount the /mnt/media/video path on the host
# to the /nvr path inside the docker container.
# - /mnt/media/video:/nvr
@@ -71,11 +74,25 @@ services:
# Ensure Avahi is running on the host machine:
# It can be installed with: sudo apt-get install avahi-daemon
# This is not compatible with running avahi inside the container (see above).
# Also, uncomment the lines under security_opt
# - /var/run/dbus:/var/run/dbus
# - /var/run/avahi-daemon/socket:/var/run/avahi-daemon/socket
# Default volume for the Scrypted database. Typically should not be changed.
- ~/.scrypted/volume:/server/volume
# The volume will be placed relative to this docker-compose.yml.
- ./volume:/server/volume
# LXC usage only
# lxc - /var/run/docker.sock:/var/run/docker.sock
# lxc - /root/.scrypted/docker-compose.yml:/root/.scrypted/docker-compose.yml
# lxc - /root/.scrypted/docker-compose.sh:/root/.scrypted/docker-compose.sh
# lxc - /root/.scrypted/.env:/root/.scrypted/.env
# lxc - /mnt:/mnt
# Uncomment the following lines to use Avahi daemon from the host
# Without this, AppArmor will block the container's attempt to talk to Avahi via dbus
# security_opt:
# - apparmor:unconfined
devices: [
# uncomment the common systems devices to pass
# them through to docker.
@@ -86,6 +103,9 @@ services:
# hardware accelerated video decoding, opencl, etc.
# "/dev/dri:/dev/dri",
# AMD GPU
# "/dev/kfd:/dev/kfd",
# uncomment below as necessary.
# zwave usb serial device
@@ -115,12 +135,10 @@ services:
# watchtower manages updates for Scrypted.
watchtower:
environment:
- WATCHTOWER_HTTP_API_TOKEN=SET_THIS_TO_SOME_RANDOM_TEXT
- WATCHTOWER_HTTP_API_TOKEN=${WATCHTOWER_HTTP_API_TOKEN:-env_missing_fallback}
- WATCHTOWER_HTTP_API_UPDATE=true
- WATCHTOWER_SCOPE=scrypted
# remove the following line to never allow docker to auto update.
# this is not recommended.
- WATCHTOWER_HTTP_API_PERIODIC_POLLS=true
- WATCHTOWER_HTTP_API_PERIODIC_POLLS=${WATCHTOWER_HTTP_API_PERIODIC_POLLS:-true}
image: containrrr/watchtower
container_name: scrypted-watchtower
restart: unless-stopped

View File

@@ -1,5 +1,9 @@
#!/bin/bash
# disable core dumps.
# this doesn't disable core dumps on the scrypted service itself, only stuff run by init.
ulimit -c 0
if [[ "${SCRYPTED_DOCKER_AVAHI}" != "true" ]]; then
echo "SCRYPTED_DOCKER_AVAHI != true, won't manage dbus nor avahi-daemon" >/dev/stderr
exit 0

View File

@@ -0,0 +1,44 @@
if [ "$(uname -m)" != "x86_64" ]
then
echo "AMD graphics will not be installed on this architecture."
exit 0
fi
UBUNTU_22_04=$(lsb_release -r | grep "22.04")
UBUNTU_24_04=$(lsb_release -r | grep "24.04")
# needs either ubuntu 22.0.4 or 24.04
if [ -z "$UBUNTU_22_04" ] && [ -z "$UBUNTU_24_04" ]
then
echo "AMD graphics package can not be installed. Ubuntu version could not be detected when checking lsb-release and /etc/os-release."
exit 1
fi
if [ -n "$UBUNTU_22_04" ]
then
distro="jammy"
else
distro="noble"
fi
# https://amdgpu-install.readthedocs.io/en/latest/install-prereq.html#installing-the-installer-package
FILENAME=$(curl -s -L https://repo.radeon.com/amdgpu-install/latest/ubuntu/$distro/ | grep -o 'amdgpu-install_[^ ]*' | cut -d'"' -f1)
if [ -z "$FILENAME" ]
then
echo "AMD graphics package can not be installed. Could not find the package name."
exit 1
fi
set -e
mkdir -p /tmp/amd
cd /tmp/amd
curl -O -L http://repo.radeon.com/amdgpu-install/latest/ubuntu/$distro/$FILENAME
apt -y update
apt -y install rsync
dpkg -i $FILENAME
apt -y update
amdgpu-install --usecase=opencl --no-dkms -y --accept-eula
cd /tmp
rm -rf /tmp/amd

View File

@@ -1,38 +1,109 @@
if [ "$(uname -m)" = "x86_64" ]
if [ "$(uname -m)" != "x86_64" ]
then
# this script previvously apt install intel-media-va-driver-non-free, but that seems to no longer be necessary.
# the intel provided script is disabled since it does not work with the 6.8 kernel in Ubuntu 24.04 or Proxmox 8.2.
# manual installation of the Intel graphics stuff is required.
# echo "Installing Intel graphics packages."
# apt-get update && apt-get install -y gpg-agent &&
# rm -f /usr/share/keyrings/intel-graphics.gpg &&
# curl -L https://repositories.intel.com/graphics/intel-graphics.key | gpg --dearmor --yes --output /usr/share/keyrings/intel-graphics.gpg &&
# echo 'deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu jammy arc' | tee /etc/apt/sources.list.d/intel.gpu.jammy.list &&
# apt-get -y update &&
# apt-get -y install intel-opencl-icd &&
# apt-get -y dist-upgrade;
# manual installation
# https://github.com/intel/compute-runtime/releases/tag/24.13.29138.7
rm -rf /tmp/neo && mkdir -p /tmp/neo && cd /tmp/neo &&
apt-get install -y ocl-icd-libopencl1 &&
curl -O -L https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.16510.2/intel-igc-core_1.0.16510.2_amd64.deb &&
curl -O -L https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.16510.2/intel-igc-opencl_1.0.16510.2_amd64.deb &&
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.13.29138.7/intel-level-zero-gpu-dbgsym_1.3.29138.7_amd64.ddeb &&
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.13.29138.7/intel-level-zero-gpu_1.3.29138.7_amd64.deb &&
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.13.29138.7/intel-opencl-icd-dbgsym_24.13.29138.7_amd64.ddeb &&
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.13.29138.7/intel-opencl-icd_24.13.29138.7_amd64.deb &&
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.13.29138.7/libigdgmm12_22.3.18_amd64.deb &&
dpkg -i *.deb &&
cd /tmp && rm -rf /tmp/neo &&
apt-get -y dist-upgrade;
exit $?
else
echo "Intel graphics will not be installed on this architecture."
exit 0
fi
exit 0
UBUNTU_22_04=$(lsb_release -r | grep "22.04")
UBUNTU_24_04=$(lsb_release -r | grep "24.04")
# needs either ubuntu 22.0.4 or 24.04
if [ -z "$UBUNTU_22_04" ] && [ -z "$UBUNTU_24_04" ]
then
echo "Intel graphics package can not be installed. Ubuntu version could not be detected when checking lsb-release and /etc/os-release."
exit 1
fi
if [ -n "$UBUNTU_22_04" ]
then
distro="jammy"
else
distro="noble"
fi
# no errors beyond this point
set -e
# the intel provided script is disabled since it does not work with the 6.8 kernel in Ubuntu 24.04 or Proxmox 8.2.
# manual installation of the Intel graphics stuff is required.
# echo "Installing Intel graphics packages."
# apt-get update && apt-get install -y gpg-agent &&
# rm -f /usr/share/keyrings/intel-graphics.gpg &&
# curl -L https://repositories.intel.com/graphics/intel-graphics.key | gpg --dearmor --yes --output /usr/share/keyrings/intel-graphics.gpg &&
# echo 'deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu jammy arc' | tee /etc/apt/sources.list.d/intel.gpu.jammy.list &&
# apt-get -y update &&
# apt-get -y install intel-opencl-icd &&
# apt-get -y dist-upgrade;
# need intel-media-va-driver-non-free, but all the other intel packages are installed from Intel github.
echo "Installing Intel graphics packages."
if [ "$distro" == "jammy" ]
then
apt-get update && apt-get install -y gpg-agent &&
rm -f /usr/share/keyrings/intel-graphics.gpg &&
curl -L https://repositories.intel.com/graphics/intel-graphics.key | gpg --dearmor --yes --output /usr/share/keyrings/intel-graphics.gpg &&
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/graphics/ubuntu $distro arc" | tee /etc/apt/sources.list.d/intel.gpu.$distro.list &&
apt-get -y update &&
apt-get -y install intel-media-va-driver-non-free &&
apt-get -y dist-upgrade;
else
apt-get update && apt-get install -y gpg-agent &&
rm -f /usr/share/keyrings/intel-graphics.gpg &&
curl -L https://repositories.intel.com/gpu/intel-graphics.key | gpg --dearmor --yes --output /usr/share/keyrings/intel-graphics.gpg &&
echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu $distro unified" | tee /etc/apt/sources.list.d/intel-gpu-$distro.list &&
apt-get -y update &&
apt-get -y install intel-media-va-driver-non-free &&
apt-get -y dist-upgrade;
fi
rm -rf /tmp/gpu && mkdir -p /tmp/gpu && cd /tmp/gpu
apt-get install -y ocl-icd-libopencl1
# very stupid legacy + current install process conflict.
# install 24.35.30872.22 for legacy support. Then install latest.
# https://github.com/intel/compute-runtime/issues/770#issuecomment-2515166915
# https://github.com/intel/compute-runtime/releases/tag/24.35.30872.22
curl -O -L https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.20/intel-igc-core_1.0.17537.20_amd64.deb
curl -O -L https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17537.20/intel-igc-opencl_1.0.17537.20_amd64.deb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu-dbgsym_1.3.30872.22_amd64.ddeb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu-legacy1-dbgsym_1.3.30872.22_amd64.ddeb
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu-legacy1_1.3.30872.22_amd64.deb
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-level-zero-gpu_1.3.30872.22_amd64.deb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd-dbgsym_24.35.30872.22_amd64.ddeb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd-legacy1-dbgsym_24.35.30872.22_amd64.ddeb
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd-legacy1_24.35.30872.22_amd64.deb
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/intel-opencl-icd_24.35.30872.22_amd64.deb
curl -O -L https://github.com/intel/compute-runtime/releases/download/24.35.30872.22/libigdgmm12_22.5.0_amd64.deb
dpkg -i *.deb
rm -f *.deb
# https://github.com/intel/compute-runtime/releases
# note that at time of commit, IGC supports ubuntu 24.04 only possibly due to their builder being on 24.04.
curl -O -L https://github.com/intel/intel-graphics-compiler/releases/download/v2.12.5/intel-igc-core-2_2.12.5+19302_amd64.deb
curl -O -L https://github.com/intel/intel-graphics-compiler/releases/download/v2.12.5/intel-igc-opencl-2_2.12.5+19302_amd64.deb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/intel-ocloc-dbgsym_25.22.33944.8-0_amd64.ddeb
curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/intel-ocloc_25.22.33944.8-0_amd64.deb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/intel-opencl-icd-dbgsym_25.22.33944.8-0_amd64.ddeb
curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/intel-opencl-icd_25.22.33944.8-0_amd64.deb
curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/libigdgmm12_22.7.0_amd64.deb
# curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/libze-intel-gpu1-dbgsym_25.22.33944.8-0_amd64.ddeb
curl -O -L https://github.com/intel/compute-runtime/releases/download/25.22.33944.8/libze-intel-gpu1_25.22.33944.8-0_amd64.deb
set +e
dpkg -i *.deb
set -e
# the legacy + latest process says this may be necessary but it does not seem to be in a clean environment.
apt-get install --fix-broken
cd /tmp && rm -rf /tmp/gpu
apt-get -y dist-upgrade

View File

@@ -0,0 +1,72 @@
if [ "$(uname -m)" != "x86_64" ]
then
echo "Intel NPU will not be installed on this architecture."
exit 0
fi
UBUNTU_22_04=$(lsb_release -r | grep "22.04")
UBUNTU_24_04=$(lsb_release -r | grep "24.04")
if [ -z "$UBUNTU_22_04" ] && [ -z "$UBUNTU_24_04" ]
then
# proxmox is compatible with ubuntu 22.04, check for /etc/pve directory
if [ -d "/etc/pve" ]
then
UBUNTU_22_04=true
fi
fi
# needs either ubuntu 22.0.4 or 24.04
if [ -z "$UBUNTU_22_04" ] && [ -z "$UBUNTU_24_04" ]
then
echo "Intel NPU will not be installed. Ubuntu version could not be detected when checking lsb-release and /etc/os-release."
exit 0
fi
if [ -n "$UBUNTU_22_04" ]
then
distro="22.04_amd64"
else
distro="24.04_amd64"
fi
dpkg --purge --force-remove-reinstreq intel-driver-compiler-npu intel-fw-npu intel-level-zero-npu
# no errors beyond this point
set -e
rm -rf /tmp/npu && mkdir -p /tmp/npu && cd /tmp/npu
# level zero must also be installed
LEVEL_ZERO_VERSION=1.22.4
# https://github.com/oneapi-src/level-zero
curl -O -L https://github.com/oneapi-src/level-zero/releases/download/v"$LEVEL_ZERO_VERSION"/level-zero_"$LEVEL_ZERO_VERSION"+u$distro.deb
curl -O -L https://github.com/oneapi-src/level-zero/releases/download/v"$LEVEL_ZERO_VERSION"/level-zero-devel_"$LEVEL_ZERO_VERSION"+u$distro.deb
# npu driver
# https://github.com/intel/linux-npu-driver
NPU_VERSION=1.19.0
NPU_VERSION_DATE=20250707-16111289554
curl -O -L https://github.com/intel/linux-npu-driver/releases/download/v"$NPU_VERSION"/intel-driver-compiler-npu_$NPU_VERSION."$NPU_VERSION_DATE"_ubuntu$distro.deb
# firmware can only be installed on host. will cause problems inside container.
if [ -n "$INTEL_FW_NPU" ]
then
curl -O -L https://github.com/intel/linux-npu-driver/releases/download/v"$NPU_VERSION"/intel-fw-npu_$NPU_VERSION."$NPU_VERSION_DATE"_ubuntu$distro.deb
fi
curl -O -L https://github.com/intel/linux-npu-driver/releases/download/v"$NPU_VERSION"/intel-level-zero-npu_$NPU_VERSION."$NPU_VERSION_DATE"_ubuntu$distro.deb
apt -y update
apt -y install libtbb12
dpkg -i *.deb
cd /tmp && rm -rf /tmp/npu
apt-get -y dist-upgrade
if [ -n "$INTEL_FW_NPU" ]
then
echo
echo "###############################################################################"
echo "Intel NPU firmware was installed. Reboot the host to complete the installation."
echo "###############################################################################"
fi

View File

@@ -0,0 +1,18 @@
if [ "$(uname -m)" = "x86_64" ]
then
apt -y update
apt -y install gpg
# download the key to system keyring
curl -1sLf https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor --yes --output /usr/share/keyrings/oneapi-archive-keyring.gpg
# add signed entry to apt sources and configure the APT client to use Intel repository:
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list
apt -y update
apt -y install intel-oneapi-mkl-sycl-blas intel-oneapi-runtime-dnnl intel-oneapi-runtime-compilers
else
echo "NVIDIA graphics will not be installed on this architecture."
fi
exit 0

View File

@@ -0,0 +1,44 @@
UBUNTU_22_04=$(lsb_release -r | grep "22.04")
UBUNTU_24_04=$(lsb_release -r | grep "24.04")
set -e
# Install CUDA for 22.04
# https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=24.04&target_type=deb_network
# Install CUDA for 24.04
# https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=24.04&target_type=deb_network
# Do not apt install nvidia-open, must use cuda-drivers.
if [ -z "$UBUNTU_22_04" ] && [ -z "$UBUNTU_24_04" ]
then
echo "NVIDIA container toolkit can not be installed. Ubuntu version could not be detected when checking lsb-release and /etc/os-release."
exit 1
fi
if [ -n "$UBUNTU_22_04" ]
then
distro="ubuntu2204"
else
distro="ubuntu2404"
fi
apt update -q \
&& apt install -y wget \
&& wget -qO /cuda-keyring.deb https://developer.download.nvidia.com/compute/cuda/repos/$distro/$(uname -m)/cuda-keyring_1.1-1_all.deb \
&& dpkg -i /cuda-keyring.deb;
# https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
apt -y update
apt -y install gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --yes --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt -y update
# is there a way to get a versioned package automatically?
# cuda-drivers does not work with blackwell for some reason, container toolkit it broken IIRC.
apt -y install nvidia-open
apt -y install nvidia-container-toolkit
nvidia-ctk runtime configure --runtime=docker
systemctl restart docker

View File

@@ -1,14 +1,52 @@
if [ "$(uname -m)" = "x86_64" ]
then
UBUNTU_22_04=$(lsb_release -r | grep "22.04")
UBUNTU_24_04=$(lsb_release -r | grep "24.04")
# needs either ubuntu 22.0.4 or 24.04
if [ -z "$UBUNTU_22_04" ] && [ -z "$UBUNTU_24_04" ]
then
echo "NVIDIA graphics package can not be installed. Ubuntu version could not be detected when checking lsb-release and /etc/os-release."
exit 1
fi
if [ -n "$UBUNTU_22_04" ]
then
distro="ubuntu2204"
else
distro="ubuntu2404"
fi
echo "Installing NVIDIA graphics packages."
apt update -q \
&& apt install -y wget \
&& wget -qO /cuda-keyring.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/$(uname -m)/cuda-keyring_1.1-1_all.deb \
&& wget -qO /cuda-keyring.deb https://developer.download.nvidia.com/compute/cuda/repos/$distro/$(uname -m)/cuda-keyring_1.1-1_all.deb \
&& dpkg -i /cuda-keyring.deb \
&& apt update -q \
&& apt install -y cuda-nvcc-11-8 libcublas-11-8 libcudnn8 cuda-libraries-11-8 \
&& apt install -y cuda-nvcc-12-4 libcublas-12-4 libcudnn8 cuda-libraries-12-4;
exit $?
&& apt install -y cuda-nvcc-12-9 libcublas-12-9 libcudnn9-cuda-12 cuda-libraries-12-9;
if [ "$?" != "0" ]
then
echo "Error: NVIDIA graphics packages failed to install."
exit 1
fi
# Update: the libnvidia-opencl.so.1 file is not present in the container image, it is
# mounted via the nvidia container runtime. This is why the following check is commented out.
# this file is present but for some reason the icd file is not created by nvidia runtime.
# if [ ! -f "/usr/lib/x86_64-linux-gnu/libnvidia-opencl.so.1" ]
# then
# echo "Error: NVIDIA OpenCL library not found."
# exit 1
# fi
# the container runtime doesn't mount this file for some reason. seems to be a bug.
# https://github.com/NVIDIA/nvidia-container-toolkit/issues/682
# but the contents are simply the .so file, which is a symlink the nvidia runtime
# will mount in.
mkdir -p /etc/OpenCL/vendors/
echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
else
echo "NVIDIA graphics will not be installed on this architecture."
fi

View File

@@ -1,5 +1,11 @@
#!/usr/bin/env bash
if [ "$SCRYPTED_LXC" ]
then
export SERVICE_USER="root"
export SCRYPTED_NONINTERACTIVE="true"
fi
if [ -z "$SERVICE_USER" ]
then
echo "Scrypted SERVICE_USER environment variable was not specified. Service will not be installed."
@@ -7,6 +13,14 @@ then
fi
function readyn() {
echo
echo
if [ ! -z "$SCRYPTED_NONINTERACTIVE" ]
then
yn="y"
return
fi
while true; do
read -p "$1 (y/n) " yn
case $yn in
@@ -33,6 +47,14 @@ systemctl disable scrypted.service 2> /dev/null
USER_HOME=$(eval echo ~$SERVICE_USER)
SCRYPTED_HOME=$USER_HOME/.scrypted
mkdir -p $SCRYPTED_HOME
# remove various things from a previous local install.
rm -rf $SCRYPTED_HOME/node_modules
rm -rf $SCRYPTED_HOME/install.json
rm -rf $SCRYPTED_HOME/package.json
rm -rf $SCRYPTED_HOME/package-lock.json
# must get this value as grep returns non zero if empty
HAS_NVIDIA=$(lspci | grep -i nvidia)
set -e
cd $SCRYPTED_HOME
@@ -46,13 +68,52 @@ then
usermod -aG docker $SERVICE_USER
fi
WATCHTOWER_HTTP_API_TOKEN=$(echo $RANDOM | md5sum)
WATCHTOWER_HTTP_API_TOKEN=$(echo $RANDOM | md5sum | head -c 32)
echo "WATCHTOWER_HTTP_API_TOKEN=$WATCHTOWER_HTTP_API_TOKEN" > $SCRYPTED_HOME/.env
# remove the following line from .env to disable autoupdates.
# this is not recommended.
echo "WATCHTOWER_HTTP_API_PERIODIC_POLLS=true" >> $SCRYPTED_HOME/.env
DOCKER_COMPOSE_YML=$SCRYPTED_HOME/docker-compose.yml
curl -s https://raw.githubusercontent.com/koush/scrypted/main/install/docker/docker-compose.yml > $DOCKER_COMPOSE_YML
echo "Created $DOCKER_COMPOSE_YML"
curl -s https://raw.githubusercontent.com/koush/scrypted/main/install/docker/docker-compose.yml | sed s/SET_THIS_TO_SOME_RANDOM_TEXT/"$(echo $RANDOM | md5sum | head -c 32)"/g > $DOCKER_COMPOSE_YML
if [ -d /dev/dri ]
if [ -z "$SCRYPTED_LXC" ]
then
sed -i 's/'#' "\/dev\/dri/"\/dev\/dri/g' $DOCKER_COMPOSE_YML
if [ -e /dev/dri ]
then
sed -i 's/'#' "\/dev\/dri/"\/dev\/dri/g' $DOCKER_COMPOSE_YML
fi
if [ -e /dev/kfd ]
then
sed -i 's/'#' "\/dev\/kfd/"\/dev\/kfd/g' $DOCKER_COMPOSE_YML
fi
else
# uncomment lxc specific stuff
sed -i 's/'#' lxc //g' $DOCKER_COMPOSE_YML
# never restart, systemd will handle it
sed -i 's/restart: unless-stopped/restart: no/g' $DOCKER_COMPOSE_YML
sudo systemctl stop apparmor || true
sudo apt -y purge apparmor || true
fi
if [ ! -z "$HAS_NVIDIA" ]
then
readyn "NVIDIA GPU detected. Use NVIDIA image for GPU acceleration?"
if [ "$yn" == "y" ]
then
readyn "NVIDIA image requires the NVIDIA Drivers and Container Toolkit to be installed. This script can install them for you. Install NVIDIA Drivers and Container Toolkit for GPU acceleration?"
if [ "$yn" == "y" ]
then
curl -fsSL https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-nvidia-container-toolkit.sh -o install-nvidia-container-toolkit.sh
chmod +x install-nvidia-container-toolkit.sh
./install-nvidia-container-toolkit.sh
rm install-nvidia-container-toolkit.sh
fi
sed -i 's/'#' nvidia //g' $DOCKER_COMPOSE_YML
sed -i 's/ghcr.io\/koush\/scrypted/ghcr.io\/koush\/scrypted:nvidia/g' $DOCKER_COMPOSE_YML
fi
fi
readyn "Install avahi-daemon? This is the recommended for reliable HomeKit discovery and pairing."
@@ -61,10 +122,12 @@ then
sudo apt-get -y install avahi-daemon
sed -i 's/'#' - \/var\/run\/dbus/- \/var\/run\/dbus/g' $DOCKER_COMPOSE_YML
sed -i 's/'#' - \/var\/run\/avahi-daemon/- \/var\/run\/avahi-daemon/g' $DOCKER_COMPOSE_YML
sed -i 's/'#' security_opt:/security_opt:/g' $DOCKER_COMPOSE_YML
sed -i 's/'#' - apparmor:unconfined/ - apparmor:unconfined/g' $DOCKER_COMPOSE_YML
fi
echo "Setting permissions on $SCRYPTED_HOME"
chown -R $SERVICE_USER $SCRYPTED_HOME
chown -R $SERVICE_USER $SCRYPTED_HOME || true
set +e
@@ -77,8 +140,41 @@ set -e
echo "docker compose pull"
sudo -u $SERVICE_USER docker compose pull
echo "docker compose up -d"
sudo -u $SERVICE_USER docker compose up -d
if [ -z "$SCRYPTED_LXC" ]
then
echo "docker compose up -d"
sudo -u $SERVICE_USER docker compose up -d
else
export DOCKER_COMPOSE_SH=$SCRYPTED_HOME/docker-compose.sh
curl https://raw.githubusercontent.com/koush/scrypted/main/install/proxmox/docker-compose.sh > $DOCKER_COMPOSE_SH
chmod +x $DOCKER_COMPOSE_SH
cat > /etc/systemd/system/scrypted.service <<EOT
[Unit]
Description=Scrypted service
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=$DOCKER_COMPOSE_SH
Restart=always
RestartSec=3
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
EOT
systemctl daemon-reload
systemctl enable scrypted.service
systemctl restart scrypted.service
fi
echo
echo
@@ -89,5 +185,5 @@ echo "Note that it is https and that you'll be asked to approve/ignore the websi
echo
echo
echo "Optional:"
echo "Scrypted NVR Recording storage directory can be configured with an additional script:"
echo "https://docs.scrypted.app/scrypted-nvr/installation.html#docker-volume"
echo "Scrypted NVR Recording storage directory can be configured with an additional script located at:"
echo "https://docs.scrypted.app/scrypted-nvr/recording-storage.html#docker-volume"

View File

@@ -0,0 +1,55 @@
table ip nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
jump postrouting_scrypted
}
chain postrouting_scrypted {
}
chain PREROUTING {
type nat hook prerouting priority dstnat; policy accept;
jump prerouting_scrypted;
}
chain prerouting_scrypted {
}
}
table ip filter {
chain FORWARD {
type filter hook forward priority filter; policy drop;
jump forward_scrypted
}
chain forward_scrypted {
}
}
table ip6 nat {
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
jump postrouting_scrypted
}
chain postrouting_scrypted {
}
chain PREROUTING {
type nat hook prerouting priority dstnat; policy accept;
jump prerouting_scrypted;
}
chain prerouting_scrypted {
}
}
table ip6 filter {
chain FORWARD {
type filter hook forward priority filter; policy drop;
jump forward_scrypted
}
chain forward_scrypted {
}
}

View File

@@ -0,0 +1,11 @@
[Unit]
Description=Scrypted DHCP Watcher
After=network.target
[Service]
ExecStart=/etc/dhcp/scrypted-dhcp-watcher
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,17 @@
[Unit]
Description=ipv6 forwarding
After=network.target
Conflicts=shutdown.target
DefaultDependencies=no
[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=null
ProtectSystem=full
ProtectHome=true
ExecStart=bash -c "sysctl -w net.ipv4.ip_forward=1 && sysctl -w net.ipv6.conf.all.forwarding=1 && sysctl -w net.ipv6.conf.default.forwarding=1"
ExecReload=bash -c "sysctl -w net.ipv4.ip_forward=1 && sysctl -w net.ipv6.conf.all.forwarding=1 && sysctl -w net.ipv6.conf.default.forwarding=1"
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,18 @@
[Unit]
Description=nftables
Documentation=man:nft(8) http://wiki.nftables.org
After=network.target
Conflicts=shutdown.target
DefaultDependencies=no
[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=null
ProtectSystem=full
ProtectHome=true
ExecStart=/usr/sbin/nft -f /etc/nftables.conf
ExecReload=/usr/sbin/nft -f /etc/nftables.conf
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,24 @@
[Unit]
Description=Scrypted
After=network.target
[Service]
WorkingDirectory=/server
ExecStart=/bin/sh -c "ulimit -c 0; exec npm exec scrypted-serve"
Restart=always
RestartSec=5
Environment="SCRYPTED_INSTALL_ENVIRONMENT=docker"
Environment="SCRYPTED_CAN_RESTART=true"
Environment="SCRYPTED_VOLUME=/server/volume"
Environment="SCRYPTED_INSTALL_PATH=/server"
Environment="SCRYPTED_PYTHON_PATH=/usr/bin/python3"
Environment="SCRYPTED_PYTHON312_PATH=/usr/bin/python3.12"
Environment="SCRYPTED_DOCKER_FLAVOR=lite"
Environment="DEBIAN_FRONTEND=noninteractive"
Environment="NODE_OPTIONS=--dns-result-order=ipv4first"
Environment="SCRYPTED_BASE_VERSION=20250101"
Environment="SHELL=/bin/bash"
[Install]
WantedBy=multi-user.target

View File

@@ -96,7 +96,17 @@ then
set +e
sync
mkfs -F -t ext4 "$BLOCK_DEVICE"1
PARTITION_DEVICE="$BLOCK_DEVICE"1
if [ ! -e "$PARTITION_DEVICE" ]
then
PARTITION_DEVICE="$BLOCK_DEVICE"p1
if [ ! -e "$PARTITION_DEVICE" ]
then
echo "Unable to determine block device partition from block device: $BLOCK_DEVICE"
exit 1
fi
fi
mkfs -F -t ext4 "$PARTITION_DEVICE"
sync
# parse/evaluate blkid line as env vars
@@ -118,7 +128,7 @@ then
set -e
removescryptedfstab
mkdir -p /mnt/scrypted-nvr
echo "PARTLABEL=scrypted-nvr /mnt/scrypted-nvr ext4 defaults,nofail 0 0" >> /etc/fstab
echo "UUID=$UUID /mnt/scrypted-nvr ext4 defaults,nofail,noatime,x-systemd.automount 0 0" >> /etc/fstab
mount -a
systemctl daemon-reload
set +e

View File

@@ -1,11 +1,20 @@
################################################################
# Begin section generated from template/Dockerfile.full.footer
################################################################
FROM header as base
FROM header AS base
# intel opencl gpu for openvino
# vulkan
RUN apt -y install libvulkan1
# intel opencl for openvino
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-intel-graphics.sh | bash
# NPU driver will SIGILL on openvino prior to 2024.5.0
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-intel-npu.sh | bash
# amd opencl
RUN curl https://raw.githubusercontent.com/koush/scrypted/main/install/docker/install-amd-graphics.sh | bash
# python 3.9 from ppa.
# 3.9 is the version with prebuilt support for tensorflow lite
RUN add-apt-repository -y ppa:deadsnakes/ppa && \
@@ -17,8 +26,8 @@ RUN add-apt-repository -y ppa:deadsnakes/ppa && \
# allow pip to install to system
RUN rm -f /usr/lib/python**/EXTERNALLY-MANAGED
RUN python3.9 -m pip install --upgrade pip
RUN python3.9 -m pip install debugpy typing_extensions psutil
# RUN python3.9 -m pip install --upgrade pip
RUN python3.9 -m pip install debugpy
# Coral Edge TPU
# https://coral.ai/docs/accelerator/get-started/#runtime-on-linux
@@ -26,16 +35,20 @@ RUN echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" |
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN apt-get -y update && apt-get -y install libedgetpu1-std
# set default shell to bash
RUN chsh -s /bin/bash
ENV SHELL="/bin/bash"
ENV SCRYPTED_INSTALL_ENVIRONMENT="docker"
ENV SCRYPTED_CAN_RESTART="true"
ENV SCRYPTED_VOLUME="/server/volume"
ENV SCRYPTED_INSTALL_PATH="/server"
RUN test -f "/usr/bin/ffmpeg" && test -f "/usr/bin/python3" && test -f "/usr/bin/python3.9" && test -f "/usr/bin/python3.10"
RUN test -f "/usr/bin/ffmpeg" && test -f "/usr/bin/python3" && test -f "/usr/bin/python3.9" && test -f "/usr/bin/python3.12"
ENV SCRYPTED_FFMPEG_PATH="/usr/bin/ffmpeg"
ENV SCRYPTED_PYTHON_PATH="/usr/bin/python3"
ENV SCRYPTED_PYTHON39_PATH="/usr/bin/python3.9"
ENV SCRYPTED_PYTHON310_PATH="/usr/bin/python3.10"
ENV SCRYPTED_PYTHON312_PATH="/usr/bin/python3.12"
ENV SCRYPTED_DOCKER_FLAVOR="full"

View File

@@ -3,7 +3,7 @@
# This common file will be used by both Docker and the linux
# install script.
################################################################
ARG BASE="jammy"
ARG BASE="noble"
FROM ubuntu:${BASE} as header
ENV DEBIAN_FRONTEND=noninteractive
@@ -11,17 +11,12 @@ ENV DEBIAN_FRONTEND=noninteractive
# base tools and development stuff
RUN apt-get update && apt-get -y install \
curl software-properties-common apt-utils \
build-essential \
cmake \
ffmpeg \
gcc \
libcairo2-dev \
libgirepository1.0-dev \
pkg-config && \
apt-get -y update && \
apt-get -y upgrade
ARG NODE_VERSION=20
ARG NODE_VERSION=22
RUN apt-get install -y ca-certificates curl gnupg
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor --yes -o /etc/apt/keyrings/nodesource.gpg
@@ -37,16 +32,12 @@ RUN apt-get -y install \
python3-setuptools \
python3-wheel
# these are necessary for pillow-simd, additional on disk size is small
# but could consider removing this.
RUN echo "Installing pillow-simd dependencies."
RUN apt-get -y install \
libjpeg-dev zlib1g-dev
# gstreamer native https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c#install-gstreamer-on-ubuntu-or-debian
RUN echo "Installing gstreamer."
# python-codecs pygobject dependencies
RUN apt-get -y install libcairo2-dev libgirepository1.0-dev
RUN apt-get -y install \
gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-alsa \
gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav \
gstreamer1.0-vaapi
# python3 gstreamer bindings
@@ -57,8 +48,9 @@ RUN apt-get -y install \
# allow pip to install to system
RUN rm -f /usr/lib/python**/EXTERNALLY-MANAGED
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install debugpy typing_extensions psutil
# ERROR: Cannot uninstall pip 24.0, RECORD file not found. Hint: The package was installed by debian.
# RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install debugpy
################################################################
# End section generated from template/Dockerfile.full.header

View File

@@ -97,7 +97,7 @@ echo "docker compose rm -rf"
sudo -u $SERVICE_USER docker rm -f /scrypted /scrypted-watchtower 2> /dev/null
echo "Installing Scrypted..."
RUN sudo -u $SERVICE_USER npx -y scrypted@latest install-server
RUN sudo -u $SERVICE_USER npx -y scrypted@latest install-server $SCRYPTED_INSTALL_VERSION
cat > /etc/systemd/system/scrypted.service <<EOT

View File

@@ -39,14 +39,13 @@ launchctl unload ~/Library/LaunchAgents/app.scrypted.server.plist || echo ""
echo "Installing Scrypted dependencies..."
RUN_IGNORE xcode-select --install
RUN brew update
RUN_IGNORE brew install node@20
# snapshot plugin and others
RUN brew install libvips
# dlib
RUN brew install cmake
# seems to be necessary for python-codecs' pycairo dependency or something?
RUN_IGNORE gobject-introspection libffi pkg-config
# in sequoia, brew node is unusable because it is not signed and can't access local network unless run as root.
# https://developer.apple.com/forums/thread/766270
RUN_IGNORE curl -L https://nodejs.org/dist/v22.14.0/node-v22.14.0.pkg -o /tmp/node.pkg
RUN_IGNORE sudo installer -pkg /tmp/node.pkg -target /
NODE_PATH=/usr/local # used to pass var test
NODE_BIN_PATH=/usr/local/bin
# gstreamer plugins
RUN_IGNORE brew install gstreamer
@@ -71,27 +70,28 @@ then
fi
RUN python$PYTHON_VERSION -m pip install --upgrade pip
# besides debugpy, none of these dependencies are needed anymore?
# portable python includes typing and does not need typing_extensions.
# opencv-python-headless has wheels for macos.
if [ "$PYTHON_VERSION" != "3.10" ]
then
RUN python$PYTHON_VERSION -m pip install typing
fi
RUN python$PYTHON_VERSION -m pip install debugpy typing_extensions opencv-python psutil
RUN python$PYTHON_VERSION -m pip install debugpy typing_extensions opencv-python
echo "Installing Scrypted Launch Agent..."
RUN mkdir -p ~/Library/LaunchAgents
NODE_PATH=$(brew --prefix node@20)
if [ ! -d "$NODE_PATH" ]
then
echo "Unable to determine node@20 path."
echo "Unable to determine node path."
exit 1
fi
NODE_BIN_PATH=$NODE_PATH/bin
if [ ! -d "$NODE_BIN_PATH" ]
then
echo "Unable to determine node@20 bin path."
echo "Unable to determine node bin path."
echo "$NODE_BIN_PATH does not exist."
exit 1
fi
@@ -121,7 +121,7 @@ then
fi
echo "Installing Scrypted..."
RUN $NPX_PATH -y scrypted@latest install-server
RUN $NPX_PATH -y scrypted@latest install-server $SCRYPTED_INSTALL_VERSION
cat > ~/Library/LaunchAgents/app.scrypted.server.plist <<EOT
<?xml version="1.0" encoding="UTF-8"?>
@@ -154,7 +154,7 @@ cat > ~/Library/LaunchAgents/app.scrypted.server.plist <<EOT
<key>NODE_OPTIONS</key>
<string>$NODE_OPTIONS</string>
<key>PATH</key>
<string>$NODE_BIN_PATH:$PYTHON_BIN_PATH:$BREW_PREFIX/bin:$BREW_PREFIX/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
<string>$PYTHON_BIN_PATH:$NODE_BIN_PATH:$BREW_PREFIX/bin:$BREW_PREFIX/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
<key>HOME</key>
<string>/Users/$USER</string>
<key>SCRYPTED_PYTHON_PATH</key>

View File

@@ -1,3 +1,14 @@
# Check if the script is running as administrator
$IsAdmin = [System.Security.Principal.WindowsPrincipal] [System.Security.Principal.WindowsIdentity]::GetCurrent()
$AdminRole = [System.Security.Principal.WindowsBuiltInRole]::Administrator
if (-not $IsAdmin.IsInRole($AdminRole)) {
# If not, relaunch the script with elevated privileges
$ScriptPath = $PSCommandPath
Start-Process powershell -ArgumentList "-File `"$ScriptPath`"" -Verb RunAs
exit
}
# Set-PSDebug -Trace 1
# stop existing service if any
@@ -8,7 +19,7 @@ sc.exe stop scrypted.exe
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# Install node.js
choco upgrade -y nodejs-lts --version=20.11.1
choco upgrade -y nodejs-lts --version=22.15.0
# Install VC Redist, which is necessary for portable python
choco install -y vcredist140
@@ -22,11 +33,24 @@ $SCRYPTED_WINDOWS_PYTHON_VERSION="-3.9"
# Refresh environment variables for py and npx to work
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
# Workaround Windows Node no longer creating %APPDATA%\npm which causes npx to fail
# Fixed in newer versions of NPM but not the one bundled with Node 2x
# https://github.com/nodejs/node/issues/53538
npm i -g npm
py $SCRYPTED_WINDOWS_PYTHON_VERSION -m pip install --upgrade pip
# besides debugpy, none of these dependencies are needed anymore?
# portable python includes typing and does not need typing_extensions.
# opencv-python-headless has wheels for windows.
py $SCRYPTED_WINDOWS_PYTHON_VERSION -m pip install debugpy typing_extensions typing opencv-python
npx -y scrypted@latest install-server
$SCRYPTED_INSTALL_VERSION=[System.Environment]::GetEnvironmentVariable("SCRYPTED_INSTALL_VERSION","User")
if ($SCRYPTED_INSTALL_VERSION -eq $null) {
npx -y scrypted@latest install-server
} else {
npx -y scrypted@latest install-server $SCRYPTED_INSTALL_VERSION
}
$USER_HOME_ESCAPED = $env:USERPROFILE.replace('\', '\\')
$SCRYPTED_HOME = $env:USERPROFILE + '\.scrypted'
@@ -36,6 +60,8 @@ npm install --prefix $SCRYPTED_HOME @koush/node-windows --save
$NPX_PATH = (Get-Command npx).Path
# The path needs double quotes to handle spaces in the directory path
$NPX_PATH_ESCAPED = '"' + $NPX_PATH.replace('\', '\\') + '"'
# On newer versions of NPM, the NPX might be a .ps1 file which doesn't work with child_process.spawn, change to .cmd
$NPX_PATH_ESCAPED = $NPX_PATH_ESCAPED.replace('.ps1', '.cmd')
$SERVICE_JS = @"
const fs = require('fs');
@@ -49,6 +75,8 @@ child_process.spawn('$NPX_PATH_ESCAPED', ['-y', 'scrypted', 'serve'], {
stdio: 'inherit',
// allow spawning .cmd https://nodejs.org/en/blog/vulnerability/april-2024-security-releases-2
shell: true,
}).on('error', (err) => {
console.error('Error spawning child process', err);
});
"@
@@ -94,6 +122,9 @@ svc.on("install", () => {
svc.on("start", () => {
console.log("Service started");
});
svc.on("error", (err) => {
console.log("Service error", err);
});
svc.install();
"@

View File

@@ -1,84 +0,0 @@
function readyn() {
while true; do
read -p "$1 (y/n) " yn
case $yn in
[Yy]* ) break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no. (y/n)";;
esac
done
}
cd /tmp
SCRYPTED_VERSION=v0.96.0
SCRYPTED_TAR_ZST=scrypted-$SCRYPTED_VERSION.tar.zst
if [ -z "$VMID" ]
then
VMID=10443
fi
echo "Downloading scrypted container backup."
if [ ! -f "$SCRYPTED_TAR_ZST" ]
then
curl -O -L https://github.com/koush/scrypted/releases/download/$SCRYPTED_VERSION/scrypted.tar.zst
mv scrypted.tar.zst $SCRYPTED_TAR_ZST
fi
echo "Checking for existing container."
pct config $VMID
if [ "$?" == "0" ]
then
echo ""
echo "Existing container $VMID found. Run this script with --force to overwrite the existing container."
echo "This will wipe all existing data. Clone the existing container to retain the data, then reassign the owner of the scrypted volume after installation is complete."
echo ""
echo "bash $0 --force"
echo ""
fi
pct restore $VMID $SCRYPTED_TAR_ZST $@
if [ "$?" != "0" ]
then
echo ""
echo "pct restore failed"
echo ""
echo "This may be caused by the server's 'local' storage not supporting containers."
echo "Try running this script again with a different storage device (local-lvm, local-zfs). For example:"
echo ""
echo "bash $0 --storage local-lvm"
echo ""
exit 1
fi
pct set $VMID -net0 name=eth0,bridge=vmbr0,ip=dhcp,ip6=auto
if [ "$?" != "0" ]
then
echo ""
echo "pct set network failed"
echo ""
echo "Ignoring... Please verify your container's network settings."
fi
CONF=/etc/pve/lxc/$VMID.conf
if [ -f "$CONF" ]
then
echo "onboot: 1" >> $CONF
else
echo "$CONF not found? Start on boot must be enabled manually."
fi
echo "Adding udev rule: /etc/udev/rules.d/65-scrypted.rules"
readyn "Add udev rule for hardware acceleration? This may conflict with existing rules."
if [ "$yn" == "y" ]
then
sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0666\"' > /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'KERNEL==\"renderD128\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'KERNEL==\"card0\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"1a6e\", ATTRS{idProduct}==\"089a\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"18d1\", ATTRS{idProduct}==\"9302\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
udevadm control --reload-rules && udevadm trigger
fi
echo "Scrypted setup is complete and the container resources can be started."
echo "Scrypted NVR users should provide at least 4 cores and 16GB RAM prior to starting."

View File

@@ -0,0 +1,18 @@
#!/bin/bash
cd /root/.scrypted
# always immediately upgrade everything in case there's a broken update.
# this will also be preferable for troubleshooting via lxc reboot.
export DEBIAN_FRONTEND=noninteractive
yes | dpkg --configure -a
apt -y --fix-broken install && apt -y update && apt -y dist-upgrade
# force a pull to ensure we have the latest images.
# not using --pull always cause that fails everything on network down
docker compose pull
# do not daemonize, when it exits, systemd will restart it.
# force a recreate as .env may have changed.
# furthermore force recreate gets the container back into a known state
# which is preferable in case the user has made manual changes and then restarts.
WATCHTOWER_HTTP_API_TOKEN=$(echo $RANDOM | md5sum | head -c 32) docker compose up --force-recreate --abort-on-container-exit

View File

@@ -0,0 +1,307 @@
PCT=$(which pct)
if [ -z "$PCT" ]
then
echo "pct command not found. This script must be run on the Proxmox host, not a container."
echo "Installation Documentation: https://docs.scrypted.app/installation.html#proxmox-ve"
exit 1
fi
function readyn() {
while true; do
read -p "$1 (y/n) " yn
case $yn in
[Yy]* ) break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no. (y/n)";;
esac
done
}
cd /tmp
SCRYPTED_VERSION=v0.139.0
SCRYPTED_TAR_ZST=scrypted-$SCRYPTED_VERSION.tar.zst
if [ -z "$VMID" ]
then
VMID=10443
fi
SCRYPTED_BACKUP_VMID=10445
function prepareScryptedRestore() {
pct config $VMID 2>&1 > /dev/null
if [ "$?" != "0" ]
then
echo "VMID $VMID not found."
exit 1
fi
# append existing mac address.
HWADDR=",hwaddr=$(pct config $VMID | grep -oE 'hwaddr=[A-Z0-9:]+' | cut -d '=' -f 2)"
RESTORE_HOSTNAME=$(pct config $VMID | grep -oE 'hostname: [^[:space:]]+' | cut -d ':' -f 2- | tr -d ' ')
pct destroy $SCRYPTED_BACKUP_VMID 2>&1 > /dev/null
RESTORE_VMID=$VMID
VMID=$SCRYPTED_BACKUP_VMID
pct destroy $VMID 2>&1 > /dev/null
}
if [ -n "$SCRYPTED_RESTORE" ]
then
prepareScryptedRestore
fi
echo "Downloading scrypted container backup."
if [ ! -f "$SCRYPTED_TAR_ZST" ]
then
curl -O -L https://github.com/koush/scrypted/releases/download/$SCRYPTED_VERSION/scrypted.tar.zst
mv scrypted.tar.zst $SCRYPTED_TAR_ZST
fi
if [[ "$@" =~ "--force" ]]
then
IGNORE_EXISTING=true
fi
if [ -n "$SCRYPTED_RESTORE" ]
then
IGNORE_EXISTING=true
fi
if [ -z "$IGNORE_EXISTING" ]
then
echo "Checking for existing container."
pct config $VMID
if [ "$?" == "0" ]
then
echo ""
echo "==============================================================="
echo "Existing container $VMID found."
echo "==============================================================="
echo ""
echo "This script can be used ro reinstall Scrypted and reset the container to a factory state."
echo "This preserves existing data. Creating a backup within Scrypted is highly recommended in case the reset fails."
echo "THIS WILL WIPE ADDITIONAL VOLUMES SUCH AS NVR STORAGE. NVR volumes will need to be readded after the restore:"
readyn "Reinstall Scrypted and and retain existing configuration?"
if [ "$yn" != "y" ]
then
echo ""
echo "1. To reinstall and reset Scrypted, run this script with --force to overwrite the existing container."
echo "THIS WILL WIPE THE EXISTING CONFIGURATION:"
echo ""
echo "VMID=$VMID bash $0 --force"
echo ""
echo "2. To reinstall Scrypted and and retain existing configuration, run this script with the environment variable SCRYPTED_RESTORE=true."
echo "This preserves existing data. Creating a backup within Scrypted is highly recommended in case the reset fails."
echo "THIS WILL WIPE ADDITIONAL VOLUMES SUCH AS NVR STORAGE. NVR volumes will need to be readded after the restore:"
echo ""
echo "SCRYPTED_RESTORE=true VMID=$VMID bash $0"
echo ""
echo "3. To install and run multiple Scrypted containers, run this script with the environment variable specifying"
echo "the new VMID=<number>. For example, to create a new LXC with VMID 12345:"
echo ""
echo "VMID=12345 bash $0"
exit 1
fi
SCRYPTED_RESTORE=true
prepareScryptedRestore
fi
fi
if [[ ! "$@" =~ "--storage" ]]
then
HAS_LOCAL_LVM=$(pvesm status | grep local-lvm | grep active)
HAS_LOCAL_ZFS=$(pvesm status | grep local-zfs | grep active)
if [ ! -z "$HAS_LOCAL_LVM" ]
then
RESTORE_STORAGE="--storage local-lvm"
elif [ ! -z "$HAS_LOCAL_ZFS" ]
then
RESTORE_STORAGE="--storage local-zfs"
else
echo "Could not determine a valid storage device. One may need to be specified manually."
fi
fi
pct stop $VMID 2>&1 > /dev/null
pct restore $VMID $SCRYPTED_TAR_ZST $RESTORE_STORAGE $@
if [ "$?" != "0" ]
then
echo ""
echo "The Scrypted container installation failed (pct restore error)."
echo ""
echo "This may be because the server's 'local' storage device is not being a valid"
echo "location for containers."
echo "Try running this script again with a different storage device like"
echo "'local-lvm' or 'local-zfs'."
echo ""
echo "#############################################################################"
echo -e "\033[32mPaste the following command into this shell to install to local-lvm instead:\033[0m"
echo ""
if [ -n "$SCRYPTED_RESTORE" ]
then
echo "bash $0 --storage local-lvm"
else
echo "SCRYPTED_RESTORE=true bash $0 --storage local-lvm"
fi
echo "#############################################################################"
echo ""
echo ""
exit 1
fi
pct set $VMID -net0 name=eth0,bridge=vmbr0,ip=dhcp,ip6=auto$HWADDR
if [ "$?" != "0" ]
then
echo ""
echo "pct set network failed"
echo ""
echo "Ignoring... Please verify your container's network settings."
fi
if [ -n "$RESTORE_HOSTNAME" ]
then
pct set $VMID --hostname $RESTORE_HOSTNAME
if [ "$?" != "0" ]
then
echo ""
echo "pct hostname restore failed"
echo ""
echo "Ignoring... Please verify your container's dns settings."
fi
fi
CONF=/etc/pve/lxc/$VMID.conf
if [ -f "$CONF" ]
then
echo "onboot: 1" >> $CONF
else
echo "$CONF not found? Start on boot must be enabled manually."
fi
if [ -n "$SCRYPTED_RESTORE" ]
then
echo ""
echo ""
echo "This script will reset the Scrypted container to a factory state while preserving existing data."
echo "IT IS RECOMMENDED TO CREATE A BACKUP INSIDE SCRYPTED FIRST."
readyn "Are you sure you want to continue?"
if [ "$yn" != "y" ]
then
exit 1
fi
echo "Stopping scrypted..."
pct stop $RESTORE_VMID 2>&1 > /dev/null
echo "Preparing rootfs reset..."
# remove the empty data volume from the downloaded image.
pct set $SCRYPTED_BACKUP_VMID --delete mp0 && pct set $SCRYPTED_BACKUP_VMID --delete unused0
if [ "$?" != "0" ]
then
echo "Failed to remove data volume from image."
exit 1
fi
# create a backup that contains only the root disk.
rm -f *.tar
vzdump $SCRYPTED_BACKUP_VMID --dumpdir /tmp
# this moves the data volume from the current scrypted instance to the backup target to preserve it during
# the restore.
pct move-volume $RESTORE_VMID mp0 --target-vmid $SCRYPTED_BACKUP_VMID --target-volume mp0
if [ "$?" != "0" ]
then
echo "Failed to move data volume to backup."
exit 1
fi
# arguments: from to mp hide-warning
function move_volume() {
HAS_VOLUME=$(pct config $1 | grep $3:)
if [ -n "$HAS_VOLUME" ]
then
echo "Moving $3..."
# this may error and there may be recording loss. bailing at ths point is already too late.
pct move-volume $1 $3 --target-vmid $2 --target-volume $3
# volume must be inside /mnt to get into docker container
INSIDE_MNT=$(echo $HAS_VOLUME | grep /mnt)
if [ -z "$INSIDE_MNT" -a -z "$4" ]
then
echo "##################################################################"
echo "The following mount point is not visible to the"
echo "Scrypted docker container within the LXC:"
echo ""
echo "$HAS_VOLUME"
echo ""
echo "This recordings directory will be unavailable."
echo "The mount point must be updated to a path within /mnt."
echo "https://docs.scrypted.app/scrypted-nvr/recording-storage.html#proxmox-ve-mount-point"
echo "##################################################################"
fi
fi
}
# try moving 5 volumes, any more than that seems unlikely
move_volume $RESTORE_VMID $SCRYPTED_BACKUP_VMID mp1 hide-warning
move_volume $RESTORE_VMID $SCRYPTED_BACKUP_VMID mp2 hide-warning
move_volume $RESTORE_VMID $SCRYPTED_BACKUP_VMID mp3 hide-warning
move_volume $RESTORE_VMID $SCRYPTED_BACKUP_VMID mp4 hide-warning
move_volume $RESTORE_VMID $SCRYPTED_BACKUP_VMID mp5 hide-warning
VMID=$RESTORE_VMID
echo "Restoring with reset image..."
pct restore --force 1 $VMID *.tar $RESTORE_STORAGE $@
echo "Restoring volumes..."
move_volume $SCRYPTED_BACKUP_VMID $VMID mp0 hide-warning
move_volume $SCRYPTED_BACKUP_VMID $VMID mp1
move_volume $SCRYPTED_BACKUP_VMID $VMID mp2
move_volume $SCRYPTED_BACKUP_VMID $VMID mp3
move_volume $SCRYPTED_BACKUP_VMID $VMID mp4
move_volume $SCRYPTED_BACKUP_VMID $VMID mp5
pct destroy $SCRYPTED_BACKUP_VMID
fi
echo "Enabling startup on boot..."
pct set $VMID -onboot 1
readyn "Add udev rule for hardware acceleration? This may conflict with existing rules."
if [ "$yn" == "y" ]
then
echo "Adding udev rule: /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0666\"' > /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"drm\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"kfd\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"accel\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"1a6e\", ATTRS{idProduct}==\"089a\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
sh -c "echo 'SUBSYSTEM==\"usb\", ATTRS{idVendor}==\"18d1\", ATTRS{idProduct}==\"9302\", MODE=\"0666\"' >> /etc/udev/rules.d/65-scrypted.rules"
udevadm control --reload-rules && udevadm trigger
fi
# check if intel
INTEL=$(cat /proc/cpuinfo | grep GenuineIntel)
if [ ! -z "$INTEL" ]
then
readyn "Install intel-microcode package? This will update your CPU and GPU firmware."
if [ "$yn" == "y" ]
then
echo "Installing intel-microcode..."
# remove it first to allow reinsertion
sed -i 's/main contrib non-free-firmware/main/g' /etc/apt/sources.list
sed -i 's/main/main contrib non-free-firmware/g' /etc/apt/sources.list
apt update
apt install -y intel-microcode
echo "#############################"
echo "System Reboot is recommended."
echo "#############################"
fi
fi
echo "Scrypted setup is complete and the container resources can be started."
echo ""
echo "Scrypted NVR servers should run the disk setup script in the documentation to add storage prior to starting the container."

BIN
install/proxmox/lxc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -0,0 +1,74 @@
#!/bin/bash
NVR_STORAGE=$1
NVR_STORAGE_DIRECTORY=$2
DISK_TYPE="large"
if [ ! -z "$FAST_DISK" ]
then
DISK_TYPE="fast"
fi
if [ -z "$NVR_STORAGE" ]; then
echo ""
echo "Error: Directory name not provided. Usage:"
echo ""
echo "bash $0 directory-name [/optional/path/to/storage]"
echo ""
exit 1
fi
if [ -z "$VMID" ]
then
VMID="10443"
fi
FILE="/etc/pve/lxc/$VMID.conf"
# valdiate file exists
if [ ! -f "$FILE" ]; then
echo "Error: $FILE not found."
echo "If the Scrypted container id is not 10443, please set the VMID environment variable prior to running this script."
exit 1
fi
if [ ! -z "$NVR_STORAGE_DIRECTORY" ]
then
if [ ! -d "$NVR_STORAGE_DIRECTORY" ]
then
echo ""
echo "Error: $NVR_STORAGE_DIRECTORY directory not found."
echo ""
exit 1
fi
else
STORAGE="/mnt/pve/$NVR_STORAGE"
if [ ! -d "$STORAGE" ]
then
echo "Error: $STORAGE not found."
echo "The Proxmox Directory Storage must be created using the UI prior to running this script."
exit 1
fi
# use subdirectory doesn't conflict with Proxmox storage of backups etc.
NVR_STORAGE_DIRECTORY="$STORAGE/mounts/scrypted-nvr"
fi
# create the hidden folder that can be used as a marker.
mkdir -p $NVR_STORAGE_DIRECTORY/.nvr
chmod 0777 $NVR_STORAGE_DIRECTORY
echo "Stopping Scrypted..."
pct stop "$VMID"
echo "Modifying $FILE."
if [ -z "$ADD_DISK" ]
then
echo "Removing previous $DISK_TYPE lxc.mount.entry."
sed -i "/mnt\/nvr\/$DISK_TYPE/d" "$FILE"
fi
echo "Adding new $DISK_TYPE lxc.mount.entry."
echo "lxc.mount.entry: $NVR_STORAGE_DIRECTORY mnt/nvr/$DISK_TYPE/$NVR_STORAGE none bind,optional,create=dir" >> "$FILE"
echo "Starting Scrypted..."
pct start $VMID

View File

@@ -27,7 +27,7 @@ echo "external/werift > npm install"
npm install
popd
for directory in ffmpeg-camera rtsp amcrest onvif hikvision unifi-protect webrtc homekit
for directory in rtsp ffmpeg-camera amcrest onvif hikvision reolink unifi-protect webrtc homekit
do
echo "$directory > npm install"
pushd plugins/$directory

View File

@@ -27,7 +27,8 @@ async function getAuth(options: AuthFetchOptions, url: string | URL, method: str
++credential.count;
const nc = ('00000000' + credential.count).slice(-8);
const cnonce = [...Array(24)].map(() => Math.floor(Math.random() * 16).toString(16)).join('');
const uri = new URL(url).pathname;
const parsedURL = new URL(url);
const uri = parsedURL.pathname + parsedURL.search;
const { DIGEST, buildAuthorizationHeader } = await import('http-auth-utils');
@@ -70,7 +71,7 @@ async function getAuth(options: AuthFetchOptions, url: string | URL, method: str
export function createAuthFetch<B, M>(
h: fetcher<B, M>,
parser: (body: M, responseType: HttpFetchResponseType) => Promise<any>
parser: (body: M, responseType: HttpFetchResponseType | undefined) => Promise<any>
) {
const authHttpFetch = async <T extends HttpFetchOptions<B>>(options: T & AuthFetchOptions): ReturnType<typeof h<T>> => {
const method = getFetchMethod(options);
@@ -84,22 +85,40 @@ export function createAuthFetch<B, M>(
if (initialHeader && !hasHeader(headers, 'Authorization'))
setHeader(headers, 'Authorization', initialHeader);
const controller = new AbortController();
options.signal?.addEventListener('abort', () => controller.abort(options.signal?.reason));
const initialResponse = await h({
...options,
ignoreStatusCode: true,
signal: controller.signal,
// need to intercept the status code to check for 401.
// all other status codes will be handled according to the initial request options.
checkStatusCode(statusCode) {
// can handle a 401 if an credential is provided.
// however, not providing a credential is also valid, and should
// fall through to the normal response handling which may be interested
// in the 401 response.
if (statusCode === 401 && options.credential)
return true;
if (options?.checkStatusCode === undefined || options?.checkStatusCode) {
const checker = typeof options?.checkStatusCode === 'function' ? options.checkStatusCode : checkStatus;
return checker(statusCode);
}
return true;
},
responseType: 'readable',
});
if (initialResponse.statusCode !== 401 || !options.credential) {
if (!options?.ignoreStatusCode)
checkStatus(initialResponse.statusCode);
// if it's not a 401, just return the response.
if (initialResponse.statusCode !== 401) {
return {
...initialResponse,
body: await parser(initialResponse.body, options.responseType),
};
}
let authenticateHeaders: string | string[] = initialResponse.headers.get('www-authenticate');
let authenticateHeaders: string | string[] | null = initialResponse.headers.get('www-authenticate');
if (!authenticateHeaders)
throw new Error('Did not find WWW-Authenticate header.');

View File

@@ -9,6 +9,7 @@
"inlineSources": true,
"declaration": true,
"resolveJsonModule": true,
"strict": true
},
"include": [
"src/**/*"

Some files were not shown because too many files have changed in this diff Show More