Aller au contenu

WakeOnLan


jjacques68

Messages recommandés

Alors je suis entrain de me casser la tête pour faire le WakeOnLan que l'on connaissait déjà sur la HC2...

 

Un grand merci au(x) personne(s) ayant développée(s) cela sur la HC2... j'ai fait un copié coller un adaptant.

 

Mais je suis confronté au problème de l'adresse de BoradCast...

 

Il semblerait que l'instruction setBroadcast(true) n'existe pas !!

 

Voici le code  du QA : (il n'y a pas tout ! juste la fonction principale qui pose problème)

 

----------------------------------------------------------------------------
function QuickApp:TurnOnPc(MacAdresse)
----------------------------------------------------------------------------
    local macAddress = self:convertMacAddress(MacAdresse)
    -- Create Magic Packet 6 x FF
    local magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff)
    -- Broadcast Address
    local broadcastAddress = "255.255.255.255"
    -- Default port used
    local wakeOnLanPort = 9

    for i = 1, 16 do
        magicPacket = magicPacket..macAddress
    end
    
    --self.sockOn:setBroadcast(true)
    self:debug(broadcastAddress)
    self.sockOn:connect(tostring(broadcastAddress), tonumber(wakeOnLanPort),{

        success = function()
            self:debug("Socket ON - opened")            
            fibaro.sleep(100)
            
            self.sockOn:write(magicPacket, {
                success = function() self:debug("Socket On - Data sended") end,
                error = function(err)
                            self:debug("Socket On - error sending data : "..err)
                            self:Close_SocketOn()
                            fibaro.setTimeout(3000, function() self:TurnOnPc(MacAdresse) end)
                        end
            })
        end,

        error = function(err)
            self:debug("Socket On - error opening : ",err)
            self:Close_SocketOn()
            fibaro.setTimeout(3000, function() self:TurnOnPc(MacAdresse) end)          
        end
    })
end

 

et j'ai l'erreur suivante :

Socket On - error opening : Network is unreachable

 

Si quelqu'un à des idées !! :) 

Lien vers le commentaire
Partager sur d’autres sites

Tu as repris le code d'ici ? :)

 

https://www.domotique-fibaro.fr/topic/107-wake-on-lan-wol-dã©marrer-son-ordinateur-ã -distance/

 

Net.FUdpSocket() n'est tout juste pas supporté ;)

 

Lien vers le commentaire
Partager sur d’autres sites

Ce n’est pas envisageable de faire de l’UDP sur une connexion TCP. Il faut attendre que Fibaro réintroduise dans une prochaine mise à jour.

Lien vers le commentaire
Partager sur d’autres sites

Dans le cas qui nous concerne Braodcast = UDP

Ils sont fort chez Fibaro: un HC2 pour allumer / un HC3 pour éteindre... Très fort

Faut pas qu’ils lisent le sujet ils ne vont jamais réintégrer UDPSocket

  • Like 1
  • Haha 2
Lien vers le commentaire
Partager sur d’autres sites

Moi je ne pense pas toute l'économie va tourner au ralenti pendant 1 ou 2 mois est fibaro à je pense pas mal de monde qui ont des debug suites aux migrations foirés

 

Envoyé de mon BLA-L29 en utilisant Tapatalk

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Ils faudrait que la HC3 soit disponible

Après je pense que quelques uns attendent les premiers retours de gens comme toi qu'ont eu le courage de faire le saut. Ce qui bloque aussi c'est le fait de devoir tout ré inclure sur la HC3 c'est je pense la meilleure solution pour avoir une installation propre.

 

Envoyé de mon BLA-L29 en utilisant Tapatalk

 

 

 

 

 

 

  • Like 2
Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

ah haaaa ! :) 

 

il y a bien qqch oui, Wake On Lan...

 

un QA, avec un champs MacAdresse, et un bouton search...

ainsi un bouton d’action où on sait pas trop ce que sait, mais si tu cliques dessus le PC s’allume... ;) 

 

Dans l’API, on peut voir le champs MacAdresse et l’action turnOn...

 

J’en déduis que l’on peut paramétrer l’@Mac à souhait et l’activer quand on le souhaite du coup !

 

OK j’essaye dans la journée et dépose le code de la fonction pour faire le WOL.

En espérant que ce champs @Mac soit dispo en écriture...

 

dommage de ne pas avoir accès au code source du QA...

Lien vers le commentaire
Partager sur d’autres sites

alors : 

 

print(json.encode(api.put("/devices/456", {macAddress='90:2b:34:9d:e6:d6'})))
fibaro.call(456, "turnOn")

 

donne : 

 

[DEBUG] 31.03.2020 08:03:58: /usr/share/lua/5.3/json/util.lua:55: bad argument #1 to 'for iterator' (table expected, got number)

 

?????

Lien vers le commentaire
Partager sur d’autres sites

Et bien, il manque le "properties".

Quelque chose dans ce genre là :

 

api.put("/devices/456",  {properties={macAddress='90:2b:34:9d:e6:d6'}})

 

Aux erreurs de syntaxe près, je ne peux pas tester.

Lien vers le commentaire
Partager sur d’autres sites

pourtant !!!

 

{
  "id": 456,
  "name": "Wake on LAN",
  "roomID": 248,
  "type": "com.fibaro.wakeOnLan",
  "baseType": "com.fibaro.multimedia",
  "enabled": true,
  "visible": true,
  "isPlugin": true,
  "parentId": 0,
  "viewXml": true,
  "configXml": true,
  "interfaces": [],
  "properties": {
    "categories": [
      "multimedia"
    ],
    "dead": false,
    "deadReason": "",
    "deviceControlType": 0,
    "deviceIcon": 28,
    "emailNotificationID": 0,
    "emailNotificationType": 0,
    "icon": {
      "path": "plugins/com.fibaro.wakeOnLan/img/icon.png",
      "source": "HC"
    },
    "log": "",
    "logTemp": "",
    "macAddress": "90:2b:34:9d:e6:d6",
    "manufacturer": "",
    "model": "",
    "mute": false,
    "power": false,
    "pushNotificationID": 0,
    "pushNotificationType": 0,
    "saveLogs": true,
    "smsNotificationID": 0,
    "smsNotificationType": 0,
    "state": "",
    "ui.config.macAddress.caption": "MAC address",
    "ui.config.macAddress.enabled": true,
    "ui.config.section1.caption": "Configuration",
    "ui.config.section1.enabled": true,
    "userDescription": "",
    "volume": 0
  },
  "actions": {
    "setMute": 1,
    "setVolume": 1,
    "turnOff": 0,
    "turnOn": 0
  },
  "created": 1585632130,
  "modified": 1585632130,
  "sortOrder": 382
}

donc même avec ça : 

ça passe pas...

 

print(json.encode(api.put("/devices/456", {properties={macAddress="90:2b:34:9d:e6:d6"}})))
fibaro.call(456, "turnOn")
[DEBUG] 31.03.2020 18:03:35: /usr/share/lua/5.3/json/util.lua:55: bad argument #1 to 'for iterator' (table expected, got number)

 

Modifié par jjacques68
Lien vers le commentaire
Partager sur d’autres sites

Mais euh... tu essayes de faire quoi ?

api.put il faut l'exécuter tout seul, pas dans un json.encode lui même dans un print, ça n'a aucun sens. Ou alors je n'ai pas compris ce que tu cherches à faire.

Lien vers le commentaire
Partager sur d’autres sites

Euh, mais ça fonctionne ça ???

 

Faudrait encore que api.put renvoie un json, et j'ai vraiment des doutes, il a plus de chance de renvoyer un booléen voire un entier

Tu devrais récupérer son retour dans une variable, et tester son type avec la fonction type() justement, avant de faire ce genre de suppositions.

 

Mais peut être que sur HC3 la fonction api.put a changé par rapport à la HC2

 

 

Euh en fait avant de valider mon message j'ai relu l'erreur, et il te le dit texto : "table expected, got number)"

C'est clair pourtant, donc je suis dans le vrai

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...