Как определить, что кабель локальной сети не подключен к телевизору Samsung (модель: QE55Q6FNA) (Tizen 3.6)

Я создаю приложение для Samsung TV на JavaScript, используя webapis.js, теперь у меня возникла проблема с определением, когда кабель LAN подключен/отсоединен. Мой телевизор подключен к интернету через коммутатор. Когда я отсоединяю интернет-кабель от коммутатора, я могу определить это через webapis.network.isConnectedToGateway();, но когда я отсоединяю кабель LAN от коммутатора, мое приложение на телевизоре зависает, инструменты разработчика выдают ошибку: "Отладка подключения был закрыт Причина: Websocket отключен", поэтому я даже не могу отладить этот случай. Я уже пробовал сохранять логи в cookies/LocalStorage, но они удаляются при отключении инструментов разработчика.

Итак, как определить, что кабель LAN не подключен к телевизору. Примечание. Мне не нужно знать, когда GATEWAY_DISCONNECTED, а нужно знать, когда LAN_CABLE_DETACHED.

Вот что я пробовал до сих пор:

function getIsConnected () {
        try {
            /// This will throw an exception when LAN is disconnected
            var isConnectedToGateway = webapis.network.isConnectedToGateway();

            console.log("isCableConnected value :: " + isConnectedToGateway);

            return isConnectedToGateway;

             /// won't help me here as when LAN is detached that doesn't work
            //return Device.getNetworkConnectionType() === "LAN";
        } catch (e) {
            log.info("isCableConnected error :: " + e.message);
            return 0;
        }
    }


/// I've also tried this, without any succes
webapis.network.getActiveConnectionType();

/// It only determines 2 states: GATEWAY_CONNECTED = 4; & GATEWAY_DISCONNECTED = 5;
/// which is not what I need 
webapis.network.addNetworkStateChangeListener(function (data) {
     if (data === 2) { // LAN_CABLE_DETACHED
       // never gets here
     } else if (data === 1) { // LAN_CABLE_ATTACHED
      // never gets here either
     }
}


person Krusader    schedule 22.01.2020    source источник


Ответы (1)


Я могу предложить вам использовать Systeminfo Public Web API для ваших целей.

Вы можете использовать:

tizen.systeminfo.getPropertyValue("ETHERNET_NETWORK", (s) => {console.log(s)}, (e) => {console.log(e)})

чтобы определить, подключен ли сетевой кабель.

Вы можете добавить прослушиватель уведомлений об изменении этого статуса с помощью:

tizen.systeminfo.addPropertyValueChangeListener("ETHERNET_NETWORK", (s) => {console.log(s)})

и вы будете получать события при подключении/отключении кабеля.

EDIT: вы можете использовать общедоступный веб-API, чтобы определить, находится ли сеть в одном из двух состояний:

  • сетевой кабель подключен к телевизору, но сетевой коммутатор не имеет доступа к Интернету (значение кабель равно "ATTACHED"):
> tizen.systeminfo.getPropertyValue("ETHERNET_NETWORK", (s) => {console.log(s)}, (e) => {console.log(e)})
SystemInfoEthernetNetwork {cable: "ATTACHED", status: "DISCONNECTED", ipAddress: "", ipv6Address: "", macAddress: "ab:cd:ef:ab:cd:ef", …}
  • сетевой кабель не подключен к телевизору (значение кабель равно "DETACHED"):
> tizen.systeminfo.getPropertyValue("ETHERNET_NETWORK", (s) => {console.log(s)}, (e) => {console.log(e)})

SystemInfoEthernetNetwork {cable: "DETACHED", status: "DEACTIVATED", ipAddress: "", ipv6Address: "", macAddress: "ab:cd:ef:ab:cd:ef", …}

В веб-API не поддерживается регистрация прослушивателя на физическом уровне, как указано в docs: "Прослушиватель изменений, зарегистрированный в свойстве ETHERNET_NETWORK, срабатывает при изменении свойств ipAddress и ipv6Address (сетевой уровень)."

person 15kokos    schedule 23.01.2020
comment
Говоря кабель, вы имеете в виду LAN или просто интернет-кабель от коммутатора до стены? Я намеренно упомянул в своем вопросе, что я могу определить, когда срабатывает GATEWAY_DISCONNECTED, то есть когда отсоединен кабель от стены. Чего я не могу определить, так это когда кабель LAN отсоединен от телевизора. - person Krusader; 25.01.2020
comment
@Krusader Я отредактировал свой ответ, чтобы объяснить, как Web API частично поддерживает ваш сценарий. - person 15kokos; 27.01.2020
comment
К сожалению, это не работает. Когда я отсоединяю интернет-кабель от коммутатора, getPropertyValue("ETHERNET_NETWORK" срабатывает со следующими значениями: cable: "ATTACHED" и status: "CONNECTED" - person Krusader; 02.02.2020