josephcastry Posté(e) le 13 février 2017 Signaler Posté(e) le 13 février 2017 Bonjour, Je souhaite créer une scène automatique qui ping régulièrement un de mes serveurs et en cas de non réponse le démarre (WOL). J'ai essayé d'utiliser le script que j'ai trouvé sur internet, mais il faut cliquer manuellement sur un virtual device. En somme, j'ai souvent des coupure de courant. J'aimerais que quand la HC2 redémarre, il test si mes serveurs sont en marche, et qu'il les relance le cas échéant. Merci de votre aide
Did Posté(e) le 13 février 2017 Signaler Posté(e) le 13 février 2017 Bonjour, Pour appuyer automatiquement sur le bouton d'un VD, tu peux le faire avec GEA. GEA.add(true, 30, "", {"VirtualDevice", 535, 1},{"Time", "00:00", "00:01"}}) où 535 est l'Id du VD et 1, le numéro du bouton (à adapter à ton VD). Tu peux répéter la ligne avec des horaires différents pour appuyer plusieurs fois par jour.
josephcastry Posté(e) le 13 février 2017 Auteur Signaler Posté(e) le 13 février 2017 Bonjour et merci de la réponse. N'y a t'il pas un moyen plus simple d'écrire une scène qui effectuerait les actions suivantes : - Pinger mon serveur toutes les x minutes - Si faux wol de mon serveur
Did Posté(e) le 13 février 2017 Signaler Posté(e) le 13 février 2017 Peut-être en adaptant le VD de @Lazer "Network Monitor" où tu remplacerais l'adresse IP par celle de ton serveur. https://www.domotique-fibaro.fr/topic/5973-network-monitor/
Lazer Posté(e) le 13 février 2017 Signaler Posté(e) le 13 février 2017 Ca ne sera jamais du vrai "ping", ce n'est pas possible avec le LUA de la HC2. En te basant sur le VD Network Monitor, tu peux faire un faux ping, qui consiste à se connecter sur un port ouvert du serveur, et en déduire son fonctionnement. Encore faut-il que tu serveur aie au moins un port ouvert (ce qui est normalement le cas pour un serveur....) Ensuite, pour réveiller le serveur en WOL, tu peux : - utiliser le plugin Fibaro officiel - utiliser les quelques lignes de LUA partagées par Krikroff sur le forum (qui est à mon avis une meilleure solution, cela permet d'avoir tout le code dans une seule et même scène, et de ne pas dépendre d'un plugin extérieur qui est susceptible de changer d'ID, et de remplir ton interface)
josephcastry Posté(e) le 13 février 2017 Auteur Signaler Posté(e) le 13 février 2017 Nickel Ca fonctionne parfaitement. Encore une petite question, j'essai de mettre des retours chariots dans une variable de type string, mais rien n'y fait. J'ai essayé cela : logOut = logOut .. "\r\nSearch on the local network, try #" .. retry .. " please wait..."; fibaro:debug(logOut)
Lazer Posté(e) le 14 février 2017 Signaler Posté(e) le 14 février 2017 c'est du html, qui n'interprète pas les retours chariots. Essaye plutôt avec des balises <br> ou <br/> mais je te le déconseille, la fenêtre de debug emploie un CSS particulier pour afficher les lignes, si tu mets du textes sur plusieurs lignes ça va te pourrir tout ton affichage. Plutôt que de sauter des lignes pour la mise en forme, je te conseille l'emploi de couleurs <font color="red">blah blah</font>
josephcastry Posté(e) le 14 février 2017 Auteur Signaler Posté(e) le 14 février 2017 c'est du html, qui n'interprète pas les retours chariots. Essaye plutôt avec des balises ou mais je te le déconseille, la fenêtre de debug emploie un CSS particulier pour afficher les lignes, si tu mets du textes sur plusieurs lignes ça va te pourrir tout ton affichage. Plutôt que de sauter des lignes pour la mise en forme, je te conseille l'emploi de couleurs blah blahEnvoyé de mon iPhone en utilisant Tapatalk
josephcastry Posté(e) le 14 février 2017 Auteur Signaler Posté(e) le 14 février 2017 En fait le but est d'afficher le résultat dans un champ étiquette du virtuel device. Il interprète mal les balise ou
josephcastry Posté(e) le 14 février 2017 Auteur Signaler Posté(e) le 14 février 2017 En fait le but est d'afficher le résultat dans un champ étiquette du virtuel device. Il interprète mal les balise ou Ça fonctionne nickel avec Merci pour l'aide
pepite Posté(e) le 15 février 2017 Signaler Posté(e) le 15 février 2017 Bonjour, tu peux partager stp :-)
pepite Posté(e) le 15 février 2017 Signaler Posté(e) le 15 février 2017 Ça m'intéresse :-) pour le code :-)
josephcastry Posté(e) le 15 février 2017 Auteur Signaler Posté(e) le 15 février 2017 Le code du bouton du VD : --[[ %% properties %% globals --]] -- convert MAC adress, every 2 Chars (7-bit ASCII), to one Byte Char (8-bits) local function convertMacAddress(address) local s = string.gsub(address, ":", ""); local x = ""; -- will contain converted MAC for i=1, 12, 2 do x = x .. string.char(tonumber(string.sub(s, i, i+1), 16)); end return x; end -- IP adress local _ipAddress = "192.168.1.x"; -- MAC adress local _macAddress = convertMacAddress("xx:xx:xx:xx:xx:xx"); -- 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; local _pingPort = 22; -- Process result (displayed into a label of VD) local logOut = "" -- recursive function to ping device local function _ping(retry) retry = retry or 0; --open the socket local tcpSocket = Net.FTcpSocket(_ipAddress, _pingPort); --set the read timeout tcpSocket:setReadTimeout(250); --notify user logOut = logOut .. "<br/>Search on the local network, try #" .. retry .. " please wait..."; --send packet local bytes, errorCode = tcpSocket:write("ping"); --check for error if errorCode == 0 then tcpSocket:disconnect(); tcpSocket = nil; return true; else if retry < 4 then logOut = logOut .. "<br/>Retry process, please wait..."; fibaro:sleep(1000); return _ping(retry + 1); end tcpSocket:disconnect(); tcpSocket = nil; return false; end end -- function to wake on computer local function _wakeonlan() for i = 1, 16 do _magicPacket = _magicPacket .. _macAddress; end logOut = logOut .. "<br/>Magic packet successfully created"; local socket = Net.FUdpSocket(); socket:setBroadcast(true); local bytes, errorCode = socket:write(_magicPacket, _broadcastAddress, _wakeOnLanPort); -- clean up memory soket = nil; --check for error if errorCode == 0 then logOut = logOut .. "<br/>Magic packet sent"; else logOut = logOut .. "<br/>Magic paquet failed"; end return; end -- Start process logOut = "Start process"; fibaro:call(fibaro:getSelfId(), "setProperty", "ui.result.value",''); fibaro:sleep(750); --ping device, secure with pcall to catch errors. local f, result = pcall(_ping); if (f) then if (result == true) then logOut = logOut .. "<br/>Computer has been found, is awake and listening."; fibaro:sleep(750); else --Send push notification fibaro:call(48, "sendDefinedPushNotification", "38"); logOut = logOut .. "<br/>Computer was not found !"; fibaro:sleep(750); _wakeonlan(); fibaro:sleep(750); end else logOut = logOut .. "<br/>Error: " .. result; end -- Display result on label of VD fibaro:call(fibaro:getSelfId(), "setProperty", "ui.result.value",logOut); fibaro:debug(logOut) J'ai aussi mis un champs étiquette pour afficher le résultat. Il faut bien sur adapter l'adresse IP et l'adresse MAC. Je lance à partir d'une scène auto qui vérifie que mon serveur est bien en marche. 1
josephcastry Posté(e) le 19 février 2017 Auteur Signaler Posté(e) le 19 février 2017 Bonjour, Encore une petite question concernant les périphériques virtuels : Je voudrais faire apparaitre le module virtuel comme une ampoule (ON/OFF) J'ai bien mis deux boutons dans mon VD J'appelle le bouton ON par une scene toutes les 10mns (pour vérifier que l'ordi est bien en fonction) J'essai d'afficher le status (pour l'appli mobile) : if (result == true) then fibaro:call(fibaro:getSelfId(),'turnOn'); else fibaro:call(fibaro:getSelfId(),"pressButton","2"); --Appel du button off pour le changement d'icone du VD fibaro:call(fibaro:getSelfId(),'turnOff'); end Ca ne change rien dans l'appli mobile
pepite Posté(e) le 20 février 2017 Signaler Posté(e) le 20 février 2017 Mode boulet "ON" Heuu, j'ai pas compris la question ;-) Comme une lampe ? Mode boulet OFF
josephcastry Posté(e) le 20 février 2017 Auteur Signaler Posté(e) le 20 février 2017 C'est vrai que je n'ai pas été très clair. En fait ce que je voudrais, c'est que mon périphérique apparaisse dans les applications mobiles avec un état (Eteint ou Allumé).Un peu comme un volet roulant, ou encore une ampoule.
Lazer Posté(e) le 20 février 2017 Signaler Posté(e) le 20 février 2017 pas possible, il faudrait des plugins utilisateurs pour cela, si Fibaro veut bien les ajouter un jour (on peut rêver)....
josephcastry Posté(e) le 20 février 2017 Auteur Signaler Posté(e) le 20 février 2017 pas possible, il faudrait des plugins utilisateurs pour cela, si Fibaro veut bien les ajouter un jour (on peut rêver)....Merci pour l'info. Ils sont plutôt bien chez Fibaro, ca devrait venir
Lazer Posté(e) le 20 février 2017 Signaler Posté(e) le 20 février 2017 euh..... disons que ça existait dans les v4 Beta, mais ça a été retiré, et ils n'ont aucune intention de le remettre... donc on risque d'attendre assez longtemps (si ce n'est indéfiniment) Si tu veux savoir comment cela fonctionnait, cherche Virtual Sensor et Virtual Switch de Krikroff
Messages recommandés