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:
Hệ thống/Sao lưu/Khôi phục/Đặt lại tất cả dữ liệu cấu hình

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

/xml/zone/getAll.xml

Liệt kê tất cả ID vùng có thể có.

/xml/zone/get.xml?zone=@0

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

/xml/zone/getSelection.xml?grouped

Liệt kê các vùng có thông tin nhóm đầy đủ.

/xml/zone/runCommand.xml?zone=@0&command=50

Chuyển vùng đầu tiên sang phát trực tuyến mặc định.

/xml/zone/runCommand.xml?zone=@0&command=1

Tắt vùng đầu tiên.

/xml/zone/runCommand.xml?zone=@0&command=15

Tắt tất cả các vùng.

/xml/zone/runCommand.xml?zone=@0&command=680

Mute on

/xml/zone/runCommand.xml?zone=@0&command=681

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

a

a1
a3

đầu vào tương tự đầu tiên
đầu vào tương tự đầu tiên
đầu vào tương tự thứ ba

Tùy thuộc vào kiểu thiết bị, 0 đến 8 đầu vào tương tự được hỗ trợ.

p

p5

giá trị đặt trước của bộ chỉnh FM đầu tiên
giá trị đặt trước của bộ dò đài FM thứ năm

Yêu cầu định cấu hình bộ dò đài FM mặc định cho vùng.

f

`f2

trivum yêu thích đầu tiên
thứ hai trivum yêu thích

y

y2

đầu tiên trivum danh sách phát
thứ hai trivum danh sách phát

i

i2

giá trị đặt sẵn cho giai điệu đầu tiên
giá trị đặt sẵn cho giai điệu thứ hai

s

nguồn luồng mặc định của vùng

chơi lựa chọn gần đây

t

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

/xml/zone/set.xml?zone=@0&source=@a1

chuyển sang đầu vào analog đầu tiên

/xml/zone/set.xml?zone=@0&source=@t

chuyển sang bộ thu sóng FM mặc định của vùng và phát tần số gần đây

/xml/zone/set.xml?zone=@0&source=@p3

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

/xml/zone/set.xml?zone=@0&source=@f2

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

/xml/zone/set.xml?zone=@0&source=@i5

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

/xml/zone/set.xml?zone=@1@source=@n

Chỉ C4: dùng nguồn bằng khe cắm thẻ n. (n >= 0)

/xml/zone/runCommand.xml?zone=@0&command=15

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

/xml/zone/set.xml?zone=@0&volume=10

cài đặt âm lượng (0 …​ 100)

/xml/zone/set.xml?zone=@0&action=1

giống như /xml/zone/runCommand.xml để chạy lệnh số, trong trường hợp này ZONECMD_POWER_OFF (1)

/xml/zone/set.xml?zone=@0&balance=0

đặt số dư, từ -15 (toàn bộ bên trái) đến 15 (toàn bộ bên phải)

/xml/zone/set.xml?zone=@0&bass=-5

đặt giảm hoặc tăng âm trầm, từ -15 đến 15

/xml/zone/set.xml?zone=@0&treble=5

đặ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

&sequence=random-sequential

chọn một bản nhạc bắt đầu ngẫu nhiên

&sequence=random-random

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

&sequence=random-sequential

bắt đầu từ một đường ngẫu nhiên

&sequence=random-random

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

/xml/system/getMusicCenterStatus.xml

nhận trạng thái thư viện NAS

/xml/system/scanMusicCenterShares.xml

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

/xml/zone/setVolume.xml?id=@0&volume=0

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.

/xml/zone/setVolume.xml?id=@0&volume=99

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.

/xml/zone/setVolume.xml?id=@0&groupMemberVolume=99

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.

/xml/zone/setVolume.xml?id=@0&groupMemberVolume=0

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.

/xml/zone/setVolume.xml?id=@0&stop

Dừng bước âm lượng ngay lập tức.

/xml/zone/setVolume.xml?id=@0&groupMemberVolume=50&absolute

Đặ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

ID phân trang, 0 - 31

volume

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.

autostoptime

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&amp;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ể.
Đặc biệt là các menu do dịch vụ âm nhạc cung cấp có thể thay đổi theo thời gian.

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

visuid

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.
trong tài liệu API này, visuid=90 được sử dụng cho các yêu cầu thử nghiệm.

apiLevel

phải luôn là 2. điều này sẽ tạo ra các đối tượng button xml. trong keypad/basic.

now

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.
không có &now thì cuộc gọi sẽ bị chặn cho đến khi hết thời gian chờ hoặc cho đến khi thay đổi thông tin trạng thái vùng.

reload=1

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 &reload=1 vào lần gọi đầu tiên, để cho biết rõ ràng đó là hình ảnh trực quan gần đây nhất.

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.