WOL TvDomSamsung

Bonjour,

J’ai un soucis, impossible de faire fonctionner le WOL sur ma TV QLED 2020 alors que cela fonctionne parfaitement depuis l’application fing de mon iphone.
Test réalisé en IP direct et Broadcast.
Par contre si j’utilise le plugin network cela fonctionne, mais il faut que j’envoi la commande deux fois d’affilée…
Une idée?

Merci
nicolas

Bonjour,

J’ai le même problème avec ma tv

  • TvDomSamsung à jour en version stable image (nov 2020).
  • Jeedom : Version 4.1.18

Problème :

J’arrive a contrôler la télévision mais j’ai un souci avec le WOL.

Quand je souhaite allumer la TV éteinte depuis un petit moment impossible de l’allumer. Mais si elle vient de s’éteindre, je peux l’allumer par le plugin.

@Bercolly, avec le plugin Network j’arrive à l’allumer via WOL.
Dans ton plugin, j’ai essayé de mettre le même paramétrage sans succès.
Aurais-tu une idée de ce qu’il faudrait modifier pour faire un test ?

Voici les logs pour la config direct :

[2021-01-30 11:07:51][DEBUG] : Sub modèle : 0
[2021-01-30 11:07:55][DEBUG] : Exec commande  OnOff
[2021-01-30 11:07:55][DEBUG] : eqLogic.cmd -> fn sendKey ( 1 touche) ->  KEY_POWER
[2021-01-30 11:07:55][DEBUG] : TvParametres->getInstanceFromConfig parametres json -> [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "direct"], [wol_subnet : ""], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 11:07:55][DEBUG] : TvConnector::getInstance() -> class ConnectorImpl_Tizen_Modeles_K
[2021-01-30 11:07:55][DEBUG] : creation connector modele -> ConnectorImpl
[2021-01-30 11:07:55][DEBUG] : before send   [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "direct"], [wol_subnet : ""], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 11:07:55][DEBUG] : websocket delai 500000
[2021-01-30 11:07:58][DEBUG] : $_status avant affect erreur [status : 0 reception-] code_err socket : 0 -  -  - 0]
[2021-01-30 11:07:58][DEBUG] : websocket  Could not connect to : wss://192.168.1.82:8002/api/v2/channels/samsung.remote.control?name=amVlZG9tLnRpemVuLmFwcC5zYW1zdW5n&token=40576133 error: Connection refused
[2021-01-30 11:07:58][DEBUG] : $_status apres affect erreur [status : 1 reception-Connection refused] code_err socket : 0 -  -  - 0]
[2021-01-30 11:07:58][DEBUG] : retour $_status  [status : 1 reception-Connection refused] code_err socket : 0 -  -  - 0]
[2021-01-30 11:07:58][DEBUG] : commStatus after send   [status : 1 reception-Connection refused] code_err socket : 0 -  -  - 0]
[2021-01-30 11:07:58][DEBUG] : canWake - wol : [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "direct"], [wol_subnet : ""], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 11:07:58][DEBUG] : test avec KEY_POWER Comm.status =  '1' canWakeOnLan = 'true'
[2021-01-30 11:07:58][DEBUG] : canWake - wol : [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "direct"], [wol_subnet : ""], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 11:07:58][DEBUG] : Tv en erreur et WOL on ==> activation WOL
[2021-01-30 11:07:58][DEBUG] : WOL  IP  '192.168.1.82'
[2021-01-30 11:07:58][DEBUG] : WOL  MAC  '24:xx:xx:xx:xx:AE'
[2021-01-30 11:07:58][DEBUG] : WOL  SubNet  'null'
[2021-01-30 11:07:58][DEBUG] : retour WOL   success
[2021-01-30 11:07:58][DEBUG] : sendToTv.$communicationStatus: [status : 0 wol-success] code_err socket : 0 -  -  - 0]

Voici les logs pour a config Broadcast suivante (comme le plugin Network) :

[2021-01-30 10:47:04][DEBUG] : Exec commande  OnOff
[2021-01-30 10:47:04][DEBUG] : eqLogic.cmd -> fn sendKey ( 1 touche) ->  KEY_POWER
[2021-01-30 10:47:04][DEBUG] : TvParametres->getInstanceFromConfig parametres json -> [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "broadcast"], [wol_subnet : "192.168.1.255"], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 10:47:04][DEBUG] : TvConnector::getInstance() -> class ConnectorImpl_Tizen_Modeles_K
[2021-01-30 10:47:04][DEBUG] : creation connector modele -> ConnectorImpl
[2021-01-30 10:47:04][DEBUG] : before send   [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "broadcast"], [wol_subnet : "192.168.1.255"], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 10:47:04][DEBUG] : websocket delai 500000
[2021-01-30 10:47:07][DEBUG] : $_status avant affect erreur [status : 0 reception-] code_err socket : 0 -  -  - 0]
[2021-01-30 10:47:07][DEBUG] : websocket  Could not connect to : wss://192.168.1.82:8002/api/v2/channels/samsung.remote.control?name=amVlZG9tLnRpemVuLmFwcC5zYW1zdW5n&token=40576133 error: Connection refused
[2021-01-30 10:47:07][DEBUG] : $_status apres affect erreur [status : 1 reception-Connection refused] code_err socket : 0 -  -  - 0]
[2021-01-30 10:47:07][DEBUG] : retour $_status  [status : 1 reception-Connection refused] code_err socket : 0 -  -  - 0]
[2021-01-30 10:47:07][DEBUG] : commStatus after send   [status : 1 reception-Connection refused] code_err socket : 0 -  -  - 0]
[2021-01-30 10:47:07][DEBUG] : canWake - wol : [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "broadcast"], [wol_subnet : "192.168.1.255"], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 10:47:07][DEBUG] : test avec KEY_POWER Comm.status =  '1' canWakeOnLan = 'true'
[2021-01-30 10:47:07][DEBUG] : canWake - wol : [eqLogicId : 378][remote : "192.168.1.82":8002], [tvApp : "jeedom.tizen.app.samsung"], [modele_tv : "tizen"], [sub_modele_tv : 0], [modele_k_delai : 0], [ssl : 1], [wol : 1], [wol_mode : "broadcast"], [wol_subnet : "192.168.1.255"], [mac tv : "24:xx:xx:xx:xx:AE"], [tokenAuth : 40576133]
[2021-01-30 10:47:07][DEBUG] : Tv en erreur et WOL on ==> activation WOL
[2021-01-30 10:47:07][DEBUG] : WOL  IP  '192.168.1.82'
[2021-01-30 10:47:07][DEBUG] : WOL  MAC  '24:xx:xx:xx:xx:AE'
[2021-01-30 10:47:07][DEBUG] : WOL  SubNet  '192.168.1.255'
[2021-01-30 10:47:07][DEBUG] : WOL error result/   8
[2021-01-30 10:47:07][DEBUG] : sendToTv.$communicationStatus: [status : 1 error-8] code_err socket :  -  -  - 0]
[2021-01-30 10:47:07][ERROR] : Erreur Tv sendkey() [status : 1 error-8] code_err socket :  -  -  - 0]
[2021-01-30 10:47:07][ERROR] : Erreur exécution de la commande [Salon][Samsung 55NU7093][OnOff] : Erreur Tv sendKey() [status : 1 error-8] code_err socket :  -  -  - 0]

Je ne suis pas un expert en réseau mais dans Wireshark, je ne vois pas de trame partir du serveur jeedom via le plugin (broadcast).
image

image

Depuis le plugin Network, j’ai la trame suivante

Si je lance la commande depuis jeedom, la TV s’allume bien:
image

Bonjour,

Le plugin network fait un WOL direct. C’est à dire sur l’adresse IP du dispositif.

J’utilise le même package que le plugin network.
En regardant de plus près, j’ai constaté qu’il y avait une différence sur une classe.

Je n’ai pas une télé WOL et je ne peux donc pas tester.
Peux-tu faire une modification sur du code du plugin ?

Si oui, je t’indiquerai quoi faire. C’est relativement simple.

A+
Bernard

Oui je veux bien faire la modif.

Merci de ton aide

RE,
Merci pour ton aide.

Voici la modification à appliquer :
Avec nano (éditeur) ouvrir le fichier suivant :
sudo nano /var/www/html/plugins/TvDomSamsung/3rdparty/vendor/tomnomnom/tomnomnom/phpwol/Phpwol/Socket.php

Remplacer la ligne suivante :
$sentBytes = @socket_sendto($socket, $data, strlen($data), MSG_DONTROUTE, $broadcastIP, $port);

par

$sentBytes = @socket_sendto($socket, $data, strlen($data), 0, $broadcastIP, $port);

Faire un CTRL/o pour enregistrer
puis CTRL/x pour quitter

Configurer le wol du plugin avec option direct.
Puis tester la modification en essayant d’allumer la TV.

Si cela marche, tester avec l’option broadcast : 255.255.255.0
Me tenir au courant
A+
Bernard

Bonsoir,

C’est moi qui te remercie pour ton aide.
Je viens de voir ton message, j’avais oublié de mettre suivre le message et j’ai pas eu la notif.
Je viens de faire la modif dans le fichier à l’instant, et ça fonctionne avec l’option broadcast 255.255.255.0.

C’est vraiment top merci beaucoup.
Je te recontacterai pour un autre sujet concernant le plugin qui ne s’affiche pas en version mobile mais c’est pas l’objet de cette discution.

Bonne soirée
@+

Merci pour les tests.
As-tu essayé avec l’option wol direct ?

A+
Bernard

Je vais le faire et je te tiens au courant, la ma femme est devant la tv :slight_smile:

Pas de problème !
Merci.
Bonne soirée.

J’ai testé en direct ça ne fonctionne pas.
De même en broadcast ça ne fonctionne pas si je met 192.168.1.255 (comme dans le plugin network)

Mais je confirme que ça fonctionne bien en broadcast 255.255.255.0.
Je suis dispo pour d’autre test si besoin.
@+

Bonjour,

A la lecture des specs, l’adresse subnet est du type 255 … et non une adresse IP.
En fait le plugin network ne fonctionne qu’avec un appel direct et ne tient pas compte du masque subnet.
Donc le plugin Samsung en mode broadcast applique la spec et fonctionne si l’adresse de subnet est correctement renseignée.

Par contre, je ne vois pas pourquoi il ne fonctionne pas en mode direct. Je vais regarder de plus près.

A+
Bernard

Effectivement j’ai mal lu la ligne dans ton plugin, c’est le masque de sous réseau qu’il fallait renseigner. Moi j’avais mis l’ip de broadcast (comme sur le plugin network).

De ce que je me souviens de mes cours de réseau de l’époque :
Plage d’IP : 192.168.1.1 à 192.168.1.254
IP Broadcast : 192.168.1.255
Subnet mask : 255.255.255.0

Si tu trouves une piste pour le mode direct, je veux bien tester.

Bonne soirée

Bonjour,

J’ai apporté des modifications au plugin pour résoudre le problème du WOL
La version est disponible en beta.

Pour résumer la situation:
Si on utilise le WakeOnlan, il y a deux options:
option directe : il faut fournir une adresse IP sur le réesau local se terminant par 255 ( dans la plupart des cas)

option broadcast, il faut fournir un masque de sous réseau la plupart du temps de type : 255.255.255.0 qui sera appliquée à l’adresse IP du TV .

Fais moi signe si tu peux tester cette version beta.

A+
Bernard

Bonjour,

Je viens d’installer et de tester la beta.
Voici le résultat de mes tests le WAL fonctionne en mettant l’IP de broadcast.
En revanche, il faut impérativement mettre un champ dédié pour l’IP de broadcast.
Et surtout garder celui de l’IP de la TV qui est utilisé pour les commandes de la TV (VOL, MENU, …)
Concernant le mode broadcast cela fonctionne bien avec le masque de sous réseau.

N’hésites pas à me contacter pour d’autres tests

Bonjour,

C’est dimanche et pas sûr que je comprenne tout.

Pour le WOL il y a deux options :
si mode direct coché fournir une adresse IP du type : 192.168.1.255 par exemple.
si mode broadcast fournir un masque de sous réseau du type : 255.255.255.0. Dans ce cas l’ip de broadcast est calculée à partir de l’IP de la tv en lui appliquant le masque de sous-réseau fourni au niveau du broadcast.

Est-ce que tu as pu activer les deux options et ont-elles fonctionné correctement.

A+
Bernard

Les fonctions Wake On Lan ont fonctionnés correctement pour les 2 cas, mais la plage d’ip couverte par mon routeur pour les clients va de 192.168.1.2 à 192.168.1.254 (ex : ma tv a l’ip 192.168.1.82).
Cela veut dire que si l’on renseigne l’ip 192.168.1.255 (Ip de broadcast de mon réseau local), le WAL fonctionne mais cela ne correspond pas à mon appareil (téléviseur), du coup, je peux uniquement allumer la télé et ne rien faire d’autre car les autres commandes (ex changement de chaine,…) doivent avoir l’IP réel du téléviseur.

C’est pour cela que je me demandais s’il ne fallait pas faire cet écran pour le mode Direct
image
L’adresse « IP TV » servirait pour les commandes du plugin et la « Broadcast IP » pour le wake on lan.

Concernant le mode Bradcast c’est parfait ne rien changer
image

Par exemple le plugin network qui fait du direct a cette configuration :
image

Je ne sais pas si je suis suffisament clair dans mes explications
@+

Re,

Normalement, dans la config du plugin si tu choisis wol mode direct tu dois saisir l’adresse IP direct, c-a-d 192.168.1.255. Et dans ce cas tu as bien deux adresses IP une pour la Tv commande ordinaires et une adresse WOL.

Dans la copie d’écran que tu présentes pour le mode WOL, je ne vois pas clairement la zone de sasie de cette adresse WOL! Est-elle affichée quand tu cliques sur WOL - Direct ?
A+
Bernard

RE,

As-tu bien installé la version beta ?
A+
Bernard

RE,

En fait je n’avais pas validé la bascule de git vers beta.
Donc, tu ne pouvais pas l’avoir chargée.
Désolé.

Si tu as un moment, télécharge depuis market/beta.

Et essaie les deux options de wol.

A+
Bernard

Effectivement j’avais la mauvaise beta (j’avais pas vérifié la version).

Je viens de tester le mode direct mais ça ne fonctionne pas. J’ai le log suivante :

[2021-01-31 16:39:15][ERROR] : Erreur Tv sendkey() [status : 1 error WOL-adresse MAC invalide] code_err socket :  -  -  - 0]
[2021-01-31 16:39:15][ERROR] : Erreur exécution de la commande [TV][Samsung 55NU7093][OnOff] : Erreur Tv sendKey() [status : 1 error WOL-adresse MAC invalide] code_err socket :  -  -  - 0]

J’ai aussi la même chose avec le mode Broadcast (même erreur)