Promethean AP5 (IRBIS, Панель МЭШ): различия между версиями

Материал из IT в школе
Перейти к навигацииПерейти к поиску
Строка 148: Строка 148:


</syntaxhighlight>
</syntaxhighlight>
В частности для разблокировки пульта используется команда 
<syntaxhighlight lang="bash">
panel.py 3701012F
</syntaxhighlight>
ответ 01 будет означать что пульт разблокирован


=== WakeupOnLan на панели ===
=== WakeupOnLan на панели ===

Версия 10:00, 24 апреля 2023

Большинство московских школ оборудовано панелями Promethean AP5 Технически панель состоит из контроллера отображение, работающего на ОС Андроид и компютера OPS - стандартизированного модуля с ПК , исполняющего в оригинале Windows 10, поверх которого запущена оболочка. Связь между Android и Windows осуществляется через HDMI (передача изображения) и USB-Ethernet (команды). При установке МОС USB-Ethernet адаптер был отключен, и команды перестали передаваться. Для возобновления возможности передачи команд на интерфейсе enp0s20f0u3 необходимо установить адрес 192.168.254.253/24.

ifconfig enp0s20f0u3 192.168.254.253/24

Тогда по адресу 192.168.254.254 будет доступен Android. Можно подключиться к нему командой adb connect 192.168.254.254:5555, подтвердив на экране С ПУЛЬТА подключение. После чего можно войти командой adb shell и осмотреться


Структура команд, передаваемых на Andoid описана здесь.https://support.prometheanworld.com/s/ap5-and-ap6-rs232-get-status-command?language=en_US Несмотря на то, что в описании упоминается RS232, команды могут передаваться по UDP на определенный порт. 8903 Ниже приведена программа на python для передачи управляющих кодов на доску.

#!/usr/bin/python3

import socket
import sys

if len(sys.argv) == 2:
    msg = sys.argv[1]
else:
    print("Send command to AP6 Prometean board")
    print("010200F9 Power Get  1/2")
    print("010101F9 Power On")
    print("010100F8 Power Off")
    print("010300FA Power Get Auto-Power Off 0/1")
    print("010400FB Power Set Auto Power Off")
    print("010500FC Power Complete shutdown ")
    print("030100FA Sys Get Firmware Version Scaler")
    print("030200FB Sys Get Firmware Version Touch")
    print("030300FC Sys Get Touch Serial No")
    print("030400FD Sys Get Panel Serial No")
    print("030500FE Sys Get Model Number")
    print("030600FF Sys Set Factory Reset")
    print("0C020004 vol Get val")
    print("0C000103 vol Up")
    print("0C000002 vol Down")
    print("0C010003 vol Set(0-100)")
    print("020200FA mute Get 0/1")
    print("020001F9 mute  On")
    print("020000F8 mute Off")
    print("30020028 source Get 0129/062e/0830/0931/0a32/133b/143c/123a/0b33")
    print("30010128 source AV")
    print("3001062D source YPbPr")
    print("3001082F source VGA")
    print("30010930 source HDMI 1")
    print("30010A31 source HDMI 2")
    print("3001133A source HDMI 3")
    print("30011239 source OPS")
    print("30010B32 source Multi-Media")
    print("31020029 ops Get Installed 0/1")
    print("3103002A ops Get 0/1")
    print("31010129 ops On")
    print("3101022A ops Shutdown")
    print("3202002A Freeze Get 0/1")
    print("3201012A Freeze On")
    print("3201022B Freeze Off")
    print("3502002D Blank Get 0/1")
    print("3501002C Blank On")
    print("3501012D Blank BOff")
    print("3602002E Touch Get Lock mode 0/1")
    print("3601002D Touch Lock On")
    print("3601012E Touch Lock Off")
    print("3702002F RC Get RC 0/1")
    print("3701002E RC Lock On")
    print("3701012F RC Lock Off")
    print("38020030 Remote Get 0/1")
    print("38010130 Remote On")
    print("3801002F Remote Off")
    print("39020031 Standby Get 0-2m/1-5m/2-10m/3-20m/4-30m")
    print("39010030 Standby Set 0-4")
    print("3A020032 Shutdown time GET 0-30m/1-45m/2-60m/3-90m/4-120m")
    print("3A010031 Shutdown time SET 0-4")
    print("3401002B Picture Get 002b/012c/022d/032e")
    print("3402002C Picture set Lightness")
    print("3402012D Picture set Standard")
    print("3402022E Picture set Soft")
    print("3402032F Picture set User")
    print("3403002D Contrast Get ")
    print("3404002E Contrast Set ")
    print("3405002F Brightness Get ")
    print("34060030 Brightness Set ")
    print("34070031 Sharpness Get ")
    print("34080032 Sharpness Set ")
    print("34090033 Color Temp Get 0033/0134/0235/0336")
    print("340A0034 Color Temp Cold")
    print("340A0135 Color Temp Natrue")
    print("340A0236 Color Temp Warm")
    print("340A0337 Color Temp User")
    print("340B0035 Backlight Get")
    print("340C0036 Backlight Set 0-100")
    print("340F0039 Backlight Get 0038/0139/023a/033b")
    print("340E0038 Backlight Standard")
    print("340E0139 Backlight Auto")
    print("340E023A Backlight Eye Protection")
    print("340E033B Backlight Energy")
    print("340D0037 Backlight Set Picture Reset")
    print("40000137 RC Power")
    print("40000C42 RC Menu")
    print("40000D43 RC Exit")
    print("40000E44 RC Cursor Up ")
    print("40000F45 RC Cursor Down ")
    print("40001046 RC Cursor Right")
    print("40001147 RC Cursor Left ")
    print("40001248 RC Enter  ")
    print("40001349 RC Audio Mute")
    print("4000144A RC Volume Up ")
    print("4000154B RC Volume Down ")
    print("40001A50 RC Picture Mode")
    print("40001B51 RC Sound Mode ")
    print("40001C52 RC Sleep Timer ")
    print("40001E54 RC Program Information ")
    print("40001F55 RC Freeze ")
    print("40002056 RC Input Source")
    print("40002157 RC Discrete input MultiMedia")
    print("40002258 RC Discrete Input VGA")
    print("40002359 RC Discrete Input HDMI1")
    print("4000245A RC Discrete Input HDMI2")
    print("4000255B RC Discrete Input HDMI3")
    print("4000275D RC OPS")
    print("4000285E RC Discrete Volume Mute On")
    print("4000295F RC Discrete Volume Mute Off")
    print("40002A60 RC Discrete Input AV")
    exit(1)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.sendto(bytes("F6"+msg+"6F", "utf-8"), ("192.168.254.254", 8903))

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sa = ("192.168.254.253", 8904)
s.bind(sa)
data, address = s.recvfrom(4096)
s=data.decode('utf-8')
if s[0:2]=="F6":
   s=s[6:-4]
   if(len(s)>4):
     print(bytearray.fromhex(s).decode())
   else:
     print(s)
else:
   print("Ans: "+s)

В частности для разблокировки пульта используется команда

panel.py 3701012F

ответ 01 будет означать что пульт разблокирован


WakeupOnLan на панели

WOL на панели работает и по умолчанию включен, НО по умолчанию не подается питание ни на модуль OPS ни на андроид.

Чтобы это изменить, необходимо в настройках панели (пультом) вклучить опцию 'Удаленное управление' (рядом с WOL)

Тогда произойдет следующее:

  1. Android на панели будет постоянно включен после первого включения, и подаст питание на OPS
  2. OPS будет воспринимать команды WOL после того как Вы отключите OPS.
  3. Кнопка питания будет просто гасить экран, не выключая ни Android ни OPS
  4. Если Вы выключили OPS, на экране будет надпись "нет сигнала" и после некоторого времени (непонятно как оно определяется) возникнет запрос на включение OPS

Такой режим работы нельзя назвать очень удобным, но что есть, то есть.

PS очень хочется что-то поменять и к Android есть доступ - можно исправить все что угодно. Только вот что?