Giao diện HTTP trivum
25-Jul-2023
Giao diện HTTP trivum nhận các yêu cầu mà trình duyệt web có thể kiểm tra dễ dàng và trả về các câu trả lời ở định dạng XML.
1. Lệnh
1.1. ZoneCommand
Cho phép thực hiện những việc cơ bản như chuyển vùng hoặc thay đổi âm lượng.
/xml/zone/runCommand.xml?zone=@zoneId&command=commandNumber
zoneId
ID của một khu vực. Để biết danh sách các ID có thể có, hãy xem cấu hình web trong
Tự động hóa /trivum API
hoặc xem ví dụ getAll.xml bên dưới.
Một số Bộ truyền động có thể không giải quyết vùng đầu tiên bằng @0 mà bằng @1 do (các) tệp cấu hình nội bộ, không được sử dụng. Để khắc phục điều này, bạn có thể đặt lại toàn bộ cấu hình bằng cách: |
Thay vì @0
, tên vùng có thể được cung cấp. Nếu nó chứa các ký tự đặc biệt, hãy viết lại chúng bằng %
:
/xml/zone/runCommand.xml?zone=living%20room&command=…
commandNumber
Đây là một lệnh số với các giá trị có thể có:
ZONECMD_POWER_OFF 001 ZONECMD_MUTE 002 toggle mute ZONECMD_MUTE_ON 680 since v9.29 ZONECMD_MUTE_OFF 681 since v9.29 ZONECMD_VOLUME_INC 003 ZONECMD_VOLUME_DEC 004 ZONECMD_VOLUME_INC2 009 ZONECMD_VOLUME_DEC2 010 ZONECMD_VOLUME_INC5 011 ZONECMD_VOLUME_DEC5 012 ZONECMD_ALLOFF 015 ZONECMD_SNOOZE 017 ZONECMD_LOCAL_SOURCE 019 if present (LineIn) ZONECMD_USE_PREV_SOURCE 029 see Zones / zone / KNX/HTTP sources ZONECMD_JOIN 030 ZONECMD_UNJOIN 031 ZONECMD_USE_NEXT_SOURCE 041 see Zones / zone / KNX/HTTP sources ZONECMD_USE_NEXT_ZONE 042 see Zones / zone / KNX/HTTP sources ZONECMD_DEFAULT_STREAMING 050 if present ZONECMD_DEFAULT_TUNER 051 if present ZONECMD_VOLUME_DEC_1 080 ZONECMD_VOLUME_DEC_10 089 ZONECMD_VOLUME_INC_1 090 ZONECMD_VOLUME_INC_10 099 MULTIKEY_BASIC_FORWARD 400 skip to next track, preset MULTIKEY_BASIC_BACKWARD 401 skip to prev. track, preset MULTIKEY_BASIC_FASTFORWARD 402 MULTIKEY_BASIC_FASTBACKWARD 403 MULTIKEY_BASIC_PLAYPAUSE 406 MULTIKEY_PLAY 431 MULTIKEY_PAUSE 432 MULTIKEY_STOP 433 MULTIKEY_STATION_DOWN 490 MULTIKEY_STATION_UP 491 MULTIKEY_NEXT_ALBUM 493 MULTIKEY_PREVIOUS_ALBUM 494 MULTIKEY_NEXT_PLAYLIST 495 MULTIKEY_PREVIOUS_PLAYLIST 496 ZONECMD_START_PAGING_1 500 ZONECMD_START_PAGING_32 531 ZONECMD_STOP_PAGING_1 550 ZONECMD_STOP_PAGING_32 581 ZONECMD_STOP_PAGING_ALL 599 ZONECMD_PRESET_1 600 ZONECMD_PRESET_7 606 ZONECMD_GROUP_START_1 621 ZONECMD_GROUP_START_8 628 ZONECMD_GROUP_STOP 630 ZONECMD_GROUP_STOP_1 631 ZONECMD_GROUP_STOP_8 638 ZONECMD_GROUP_STOP_ALL 639 ZONECMD_STREAMING_NOPLAY 641 ZONECMD_VOLUME_00 900 ZONECMD_VOLUME_99 999 ZONECMD_ROOM_VOLUME_00 1000 ZONECMD_ROOM_VOLUME_99 1099
Ví dụ
gọi | function |
---|---|
|
Liệt kê tất cả ID vùng có thể có. |
|
Nhận trạng thái của một khu vực duy nhất. Các tham số tùy chọn là: &addSourceBasicData &addSourceStatusData |
|
Liệt kê các vùng có thông tin nhóm đầy đủ. |
|
Chuyển vùng đầu tiên sang phát trực tuyến mặc định. |
|
Tắt vùng đầu tiên. |
|
Tắt tất cả các vùng. |
|
Mute on |
|
Tắt tiếng |
1.2. Đặt nguồn vùng
Chọn nguồn vùng theo tên ngắn
/xml/zone/set.xml?zone=@0&source=@shortSourceName
shortSourceName
văn bản | hành động | nhận xét |
---|---|---|
|
đầu vào tương tự đầu tiên |
Tùy thuộc vào kiểu thiết bị, 0 đến 8 đầu vào tương tự được hỗ trợ. |
|
giá trị đặt trước của bộ chỉnh FM đầu tiên |
Yêu cầu định cấu hình bộ dò đài FM mặc định cho vùng. |
`f2 |
trivum yêu thích đầu tiên |
|
|
đầu tiên trivum danh sách phát |
|
|
giá trị đặt sẵn cho giai điệu đầu tiên |
|
|
nguồn luồng mặc định của vùng |
chơi lựa chọn gần đây |
|
bộ thu sóng FM mặc định của vùng |
đang phát tần số gần đây |
Ví dụ
cuộc gọi API |
nhận xét |
|
chuyển sang đầu vào analog đầu tiên |
|
chuyển sang bộ thu sóng FM mặc định của vùng và phát tần số gần đây |
|
chuyển sang bộ thu sóng FM mặc định của khu vực và trạm phát cài sẵn 3 |
|
chuyển sang phát trực tuyến mặc định của vùng và phát trivum yêu thích 2 |
|
chuyển sang phát trực tuyến mặc định của vùng và phát TuneIn webradio cài sẵn 5 |
|
Chỉ C4: dùng nguồn bằng khe cắm thẻ n. (n >= 0) |
|
Tắt tất cả các vùng. |
1.3. Đặt thuộc tính vùng
Thay đổi các giá trị cơ bản trong một vùng, như âm lượng, tắt tiếng, cân bằng hoặc âm trầm.
cuộc gọi API |
nhận xét |
|
cài đặt âm lượng (0 … 100) |
|
giống như |
|
đặt số dư, từ -15 (toàn bộ bên trái) đến 15 (toàn bộ bên phải) |
|
đặt giảm hoặc tăng âm trầm, từ -15 đến 15 |
|
đặt giảm hoặc tăng âm bổng, từ -15 đến 15 |
1.4. trivum Yêu thích
Để tạo ra các mục yêu thích tầm thường:
-
phát một số nội dung nhạc, chẳng hạn như album NAS
-
sau đó chọn
…
ở phía trên bên phải -
sau đó chọn "Thêm vào trivum yêu thích".
Nhận danh sách các mục yêu thích tầm thường:
/api/v1/trivum/favorite.xml
Chơi một yêu thích tầm thường:
/xml/zone/set.xml?source=@f1&zone=@0
Bạn cũng có thể thêm tùy chọn:
tùy chọn |
nhận xét |
|
chọn một bản nhạc bắt đầu ngẫu nhiên |
|
chơi theo thứ tự ngẫu nhiên vĩnh viễn |
1.5. danh sách phát trivum
Lấy danh sách trivum danh sách phát:
/api/v1/trivum/playlist.xml
Phát danh sách phát trivum:
/xml/zone/set.xml?source=@y1&zone=@0
Bạn cũng có thể thêm tùy chọn:
tùy chọn |
nhận xét |
|
bắt đầu từ một đường ngẫu nhiên |
|
chỉ phát các bản nhạc ngẫu nhiên |
1.6. TuneIn yêu thích
Chúng cũng có thể được tạo bởi …
ở trên cùng bên phải trong khi đài TuneIn đang phát.
Nhận danh sách các mục yêu thích của TuneIn:
/api/v1/tunein/favorite.xml
Chơi một TuneIn yêu thích:
/xml/zone/set.xml?source=@i1&zone=@0
1.7. Cài đặt trước FM
Liệt kê các cài đặt trước FM:
/xml/system/getTunerStationList.xml
Trên C4, phần này hiển thị danh sách các cài đặt trước FM trên toàn hệ thống, nhưng không có cài đặt trước cục bộ nào được lưu trên mỗi thẻ dò sóng FM.
1.8. Trạng thái và điều khiển NAS
cuộc gọi API |
nhận xét |
|
nhận trạng thái thư viện NAS |
|
chạy lại toàn bộ NAS scan |
1.9. Quản lý nhóm
Các nhóm có thể được tạo, thay đổi hoặc xóa bằng một cuộc gọi:
/xml/zone/createGroup.xml?zone=zVisu&oldgroup=zMaster&members=++----------
Thông số:
tên |
nhận xét |
zVisu |
chỉ mục của vùng hiện tại của máy khách trực quan |
zMaster |
chỉ mục của chủ nhóm có nhạc sẽ được sử dụng (nếu cả hai vùng hiện đang phát các nguồn khác nhau) |
+/- |
các ký tự cho biết bằng đồ thị khu vực nào sẽ tham gia
trong một nhóm. ví dụ: với hệ thống 4 vùng, hãy nhập 4 ký tự
trở xuống (tự động được lấp đầy bằng |
Ví dụ: vùng thứ hai tham gia phát lại vùng đầu tiên
-
vùng đầu tiên đang phát một luồng, vùng thứ hai đang phát bộ thu sóng FM, tất cả các vùng khác đều tắt.
-
khu vực thứ hai sẽ được thêm vào một nhóm có khu vực đầu tiên,
và khu vực này sẽ tiếp quản âm nhạc từ khu vực đầu tiên (luồng).
/xml/zone/createGroup.xml?zone=1&oldgroup=0&members=++--
Kết quả: vùng thứ hai bắt đầu phát cùng luồng với vùng đầu tiên.
Ví dụ: vùng đầu tiên tham gia phát lại vùng thứ hai
-
vùng đầu tiên đang phát một luồng, vùng thứ hai đang phát bộ thu sóng FM, tất cả các vùng khác đều tắt.
-
khu vực đầu tiên nên được thêm vào một nhóm có khu vực thứ hai và nó sẽ tiếp quản âm nhạc từ khu vực thứ hai (bộ chỉnh âm).
/xml/zone/createGroup.xml?zone=0&oldgroup=1&members=++--
Kết quả: vùng đầu tiên bắt đầu phát cùng một bộ chỉnh FM như vùng thứ hai.
Điều này có nghĩa là nếu cả hai khu vực đang phát các nguồn khác nhau thì
"oldgroup" sẽ quyết định bản nhạc nào sẽ phát sau khi nhóm tham gia.
Ví dụ: vùng thứ hai nên rời khỏi nhóm
/xml/zone/createGroup.xml?zone=0&oldgroup=0&members=+---
Có liên quan ở đây là sự thay đổi từ +
thành -
trong danh sách thành viên.
Thay đổi mức âm lượng trong một nhóm
Trong một nhóm, các khu vực thường không sử dụng các mức âm lượng riêng biệt,
nhưng sự thay đổi về âm lượng sẽ ảnh hưởng đến tất cả các thành viên trong nhóm.
Sự phụ thuộc lẫn nhau này được xử lý bằng lệnh gọi:
/xml/zone/setVolume.xml
Theo mặc định, cuộc gọi này sẽ không chỉ đơn giản là đặt một mức âm lượng tuyệt đối, mà nó bước một chút theo hướng của một âm lượng mục tiêu nhất định. Điều này được sử dụng tốt nhất với nút + hoặc - trong trực quan hóa của bạn.
cuộc gọi API |
nhận xét |
|
Giảm âm lượng nhóm cho cả nhóm. id là bất kỳ ID khu vực nào từ nhóm. Âm lượng của tất cả các thành viên khu vực sẽ giảm đi một vài bước. |
|
Tăng âm lượng nhóm lên cho cả nhóm. Âm lượng của tất cả các thành viên vùng sẽ tăng lên một vài bước. |
|
Tăng âm lượng của một bước vùng duy nhất một cách khôn ngoan, không ảnh hưởng đến các thành viên khác trong nhóm. |
|
Giảm âm lượng của một bước vùng duy nhất một cách khôn ngoan, không ảnh hưởng đến các thành viên khác trong nhóm. |
|
Dừng bước âm lượng ngay lập tức. |
|
Đặt âm lượng tuyệt đối cho một vùng duy nhất, cách ly với các thành viên khác trong nhóm. (Sử dụng cẩn thận.) |
Để nhận thông tin về mức âm lượng mới trong một nhóm, hãy thực hiện lệnh gọi getChanges và xem danh sách trạng thái âm lượng.
/xml/zone/getChanges.xml?zone=@0&visuid=90&apiLevel=2&now
Kết quả ví dụ, nếu được nhóm, theo vùng/trạng thái:
<zone> ... <status> <volume>17</volume> - volume of zone making the getChanges call ... <group> <zone>0</zone> <volume>17</volume> - volume for zone id 0 </group> <group> <zone>1</zone> <volume>26</volume> - volume for zone id 1 </group> <group> ... </group> <groupMembers>2</groupMembers> </status> </zone>
Để có giải thích đầy đủ về getChanges, hãy xem Nhận trạng thái vùng.
1.10. Phân trang
Phân trang phải được cấu hình trong cấu hình web. Sau đó, các cuộc gọi sau đây có thể được sử dụng:
Bắt đầu phân trang
/xml/paging/start.xml
Thông số
tên | description |
---|---|
|
ID phân trang, 0 - 31 |
|
tùy chọn, 5 - 100. nếu không được cung cấp mức âm lượng phân trang đã định cấu hình được sử dụng. |
|
tùy chọn, 5 - 100 giây. nếu không được cung cấp, cài đặt dừng đã định cấu hình sẽ được sử dụng. |
Ví dụ
/xml/paging/start.xml?id=0&volume=10&autostoptime=10
Phân trang tự động dừng sau thời gian xác định, nhưng bạn có thể dừng phân trang sớm hơn bằng cách gọi:
/xml/paging/stop.xml?id=0
2. Lựa chọn âm nhạc tương tác
Bắt đầu với:
/xml/system/getWebTouchMenu.xml? which=music&zone=@0&visuid=90
Điều này tạo ra các bản ghi như:
<row> <type>action</type> <mode>menu</mode> <action>/xml/system/getWebTouchMenu.xml?which=trivumFavorites&keypad=4</action> <icon>/imgs/visuIconServiceFavorites_128px.png</icon> <text>trivum_20favorites</text> </row>
sau đó, mỗi bản ghi:
-
giải mã và hiển thị trường văn bản trong trực quan hóa của bạn.
_20
có nghĩa là ký tự có Mã Ascii 0x20 (dấu cách). -
nếu chạm vào, hãy gọi url hành động và hiển thị cấp menu tiếp theo.
Đừng dựa vào sự sẵn có vĩnh viễn của các cấp menu cụ thể. |
3. Nhận trạng thái vùng
3.1. đồng bộ
Thăm dò trạng thái của một khu vực bằng một lệnh gọi API ngắn:
/xml/zone/getChanges.xml?zone=@0&visuid=90&apiLevel=2&now
Thông số
tên |
hàm |
|
một số từ 1 đến 99 để xác định phiên bản trực quan hóa bên ngoài của bạn. |
|
phải luôn là 2. điều này sẽ tạo ra các đối tượng |
|
yêu cầu máy chủ trả lại trạng thái vùng mới ngay lập tức và đóng kết nối. |
|
nếu hai trực quan hóa truy cập vào cùng một máy chủ với cùng một visuid
thì lỗi "được sử dụng hai lần" có thể xuất hiện. trong trường hợp này, hình ảnh gần đây nhất của
nên thêm |
Giới thiệu về các đơn vị điều khiển (Visualizations)
Nếu bạn gửi yêu cầu với visuid=90
thì một đối tượng Control Unit có ID 90 sẽ được tạo trong máy chủ.
Bạn có thể lấy danh sách các Đơn vị Điều khiển hiện tại trong cấu hình web, bên dưới Đơn vị Điều khiển.
Sau lần truy cập đầu tiên, thiết bị được liệt kê là "Không được định cấu hình". Ngay sau khi bạn thay đổi cấu hình của nó, chẳng hạn như bằng cách đặt tùy chọn "Off bằng cách nhấn nhanh vào power", tùy chọn này được gọi là Configured và sau này, việc dọn dẹp danh sách Đơn vị Điều khiển sẽ không xóa tùy chọn này.
Nếu không có yêu cầu nào đối với thiết bị này, sau một thời gian, nó sẽ được liệt kê trong "các thiết bị điều khiển hiện không hoạt động".
3.2. không đồng bộ
Điều này có nghĩa là một lệnh gọi HTTP sẽ không trả về ngay lập tức mà sẽ bị chặn cho đến khi có gì đó thay đổi.
Thí dụ:
/xml/zone/getChanges.xml?zone=@0&visuid=90&apiLevel=2
Lưu ý rằng & now
bị thiếu. Điều sau sẽ xảy ra:
trong lệnh gọi API đầu tiên:
Thiết bị Điều khiển có ID 90 được tạo và liên kết với vùng đầu tiên.
Lệnh gọi API trả về ngay lập tức với dữ liệu trạng thái đầy đủ của khu vực.
trên tất cả các lệnh gọi API khác:
Thiết bị Điều khiển 90 hiện có được sử dụng lại. Lệnh gọi API có thể bị chặn cho đến khi:
-
đã hết thời gian chờ (khoảng 10 giây). trong trường hợp này, bạn nhận được câu trả lời như sau:
<rows><system><timeout>1</timeout>
-
hoặc cho đến khi có gì đó thay đổi, ví dụ, khối lượng trong khu vực.
nếu (nhiều) dữ liệu trạng thái đã thay đổi tại máy chủ giữa hai lệnh gọi getChanges, thì lệnh gọi đó có thể không bị chặn, nhưng trả về trạng thái mới ngay lập tức.
khi bạn nhận được thời gian chờ, chỉ cần chạy lại getChanges ngay lập tức. điều này có nghĩa là bạn có thể chạy getChanges không ngừng, trong một vòng lặp, chẳng hạn như trong một luồng I/O riêng biệt. Bởi vì một yêu cầu chỉ trả về các thay đổi, điều này sẽ không gây ra sự cố tải với máy chủ.
khi bạn không nhận được thời gian chờ, tức là cuộc gọi trở lại ngay lập tức hoặc sau vài giây (ngay khi có gì đó thay đổi), sau đó xử lý dữ liệu trạng thái rồi chạy lại yêu cầu getChanges.
3.3. Phụ lục: ví dụ sơ đồ cho Ứng dụng Visu Client
3.3.1. Ứng dụng chủ đề đơn
Điều này yêu cầu bạn có thể kiểm tra, bằng ngôn ngữ lập trình của mình, nếu dữ liệu trả lời cho một ổ cắm tồn tại (thông qua lệnh gọi select()).
Chủ đề chính
-
bắt đầu: gửi
/xml/zone/getChanges.xml?visuid=90&now
-
bắt đầu vòng lặp: cập nhật GUI.
-
xử lý các sự kiện đầu vào từ người dùng.
-
gửi các lệnh đồng bộ như:
/xml/zone/runCommand.xml?…
nhận trả lời, kiểm tra rc VÀ xử lý dữ liệu trạng thái xml
(giống như với trả lời getChanges) -
kiểm tra xem dữ liệu trả lời có tồn tại cho cuộc gọi getChanges đang diễn ra
(bằng mã C: select() cuộc gọi trên ổ cắm)
NẾU có dữ liệu từ máy chủ trivum:-
Tìm kiếm
<userdata name="rc">0</userdata>
.
Nếu KHÔNG xuất hiện
_ xử lý lỗi và đợi vài giây.
Khác nếu KHÔNG phải là thời gian chờ
_ xử lý trả lời xml (dữ liệu trạng thái)
Endif
lệnh gọi không đồng bộ (chỉ gửi)
/xml/zone/getChanges.xml&visuid=90&onlyChanges
Endif
-
-
nếu không có dữ liệu từ máy chủ đến trong vòng 1 phút
-
cuộc gọi không đồng bộ (chỉ cần gửi)
/xml/zone/getChanges.xml&visuid=90&onlyChanges
endif
-
-
chạy lại vòng lặp
-
3.3.2. Ví dụ ứng dụng hai luồng
Có thể được sử dụng nếu bạn muốn chạy tính năng chặn nhận trên các ổ cắm trong luồng I/O riêng biệt.
Chủ đề chính
-
cập nhật GUI.
-
xử lý các sự kiện đầu vào từ người dùng.
-
gửi các lệnh đồng bộ như:
/xml/zone/runCommand.xml?…
nhận trả lời, kiểm tra rc VÀ xử lý dữ liệu trạng thái xml
(giống như với trả lời getChanges) -
nhận dữ liệu trạng thái và lỗi từ Status Thread.
-
chạy lại vòng lặp này.
Chuỗi trạng thái
-
NẾU ở vòng lặp đầu tiên:
-
gửi
/xml/zone/getChanges.xml?visuid=90&now
KHÁC -
gửi
/xml/zone/getChanges.xml?visuid=90&onlyChanges
-
-
nhận trả lời (điều này bị chặn tối đa 10 giây)
-
Tìm kiếm
<userdata name="rc">0</userdata>
.
Nếu điều này KHÔNG xuất hiện thì đã xảy ra lỗi.
Đảm bảo không chỉ chạy lại vòng lặp khi có lỗi,
mà ít nhất hãy đợi vài giây và thông báo cho Chủ đề chính. -
Tìm kiếm
<rows><system><timeout>1</timeout>
.
NẾU có cái này-
chạy lại vòng lặp ngay lập tức.
KHÁC -
xử lý dữ liệu trạng thái trả lời,
và sao chép dữ liệu trạng thái mới vào Chủ đề chính.
-
-
chạy lại vòng lặp này.