Aller au contenu

Arreter Ou Rebooter Votre Synology Avec La Hc2


Messages recommandés

Posté(e)

Alors moi dans le Panneau Variable je n'ai pas Global j'ai variable et Variable prédéfinies :(

 

Je vasi regarder pourquoi le dernier NAS ne regain pas comme les autres ...

 

 

Posté(e)

pour les variables globales elles sont écrites en dur sur le disque de la hc2.
Je ne sais pas si tu es sous xpenology ou pas car j'ai eu quelques soucis de réveil avec mon hp gen7. Il faut aussi activer la fonction WOL sur le NAS

Envoyé de mon SM-G901F en utilisant Tapatalk

Posté(e)

je connais pas les vrai synology sur xpenology il faut aussi activer le wol dans le bios.
peux tu réveiller le synology avec l assistant synology. cela va permettre de savoir si ton synology est bien configuré. si tu as une freebox tu peux aussi envoyer un paquet magique

Envoyé de mon SM-G901F en utilisant Tapatalk

Posté(e)

Non non j'te jure j'le connais bien ça config est propre WOL sur les 4 porte IP fixe partout VLAN Identique a la Box et au routeur internet .. J'ai du merder la config de ce VD ou je vérifierais la MAC dans les variable ;)

Posté(e)

les lettres tu les rentres en majuscule ou minuscule car j'ai eu aussi ce problème seul les majuscules fonctionnés

 

Envoyé de mon SM-G901F en utilisant Tapatalk

 

 

 

 

  • 2 mois après...
Posté(e)

Bonjour,

J'essaye de connecter mon NAS Syno (DS918+) mais sans succès....

Suis sous DSM 6.1.5 15254 update1

NB1 création des variables

image.png.61978a9a9e88254e027221d2adc305a4.png

NB2 création du module: Adresse IP ? et Port ? c peut être de la que vient mon problème?

image.png.2da162cb0423857cb28cfde246a1e1ab.png

NB3 Redémarrer

--------------------------------------------------
-- Synology DSM
-- Reboot the disk station
-- janvier 2015
--------------------------------------------------

-- User configurable variables
local login = fibaro:getGlobal("LoginNAS1");
local password = fibaro:getGlobal("MdpNAS1");

-- System variables
local selfID = fibaro:getSelfId();
local ip = fibaro:get(selfID, "192.168.1.55"); -----ici c bien " ou '
local port = fibaro:get(selfID, "5000");-------------idem
local Synology = Net.FHttp(ip, tonumber(port));
local API_AUTH_ERROR_CODE = {
    [0]   = "Sans erreur.",
    [100] = "Erreur inconnue.",
    [101] = "Compte non spécifié.",
    [400] = "Mot de passe invalide.",
    [401] = "Compte désactivé.",
    [402] = "Permission refusée.",
    [403] = "Unique mot de passe non spécifié.",
    [404] = "Autentification erronée."
};
local API_RECORD_ERROR_CODE = {
    [400] = "Exécution ratée.",
};

-- Discover available APIs and corresponding information
payload = "/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.API.Auth";
response, status, errorCode = Synology:GET(payload);
if tonumber(status) == 200 then
    jsonTable = json.decode(response);
      local version = jsonTable.data["SYNO.API.Auth"].maxVersion;
    if version >= 2 then
        fibaro:debug("Version API Synology OK");
        pathAuth = jsonTable.data["SYNO.API.Auth"].path;
        fibaro:debug("Chemin API Synology = "..pathAuth);
        cgiUsed="/entry.cgi";
        apiUsed="SYNO.Core.System";
        if version < 6 then
            cgiUsed="/dsm/system.cgi";
            apiUsed="SYNO.DSM.System";
        end

        -- Create new login session
        payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Login&version=2&account="..login.."&passwd="..password.."&session=DSM&format=sid";
        response, status, errorCode = Synology:GET(payload);
        if tonumber(status) == 200 then
            jsonTable = json.decode(response);
            if jsonTable.success == true then
                SID = jsonTable.data.sid;
                fibaro:debug("SID API Synology = ["..SID.."]");

                -- Reboot the disk station
                payload = "/webapi"..cgiUsed.."?api="..apiUsed.."&version=1&method=reboot&_sid="..SID;
                response, status, errorCode = Synology:GET(payload);
                if tonumber(status) == 200 then
                    fibaro:debug("Response ["..response.."]");
                    jsonTable = json.decode(response);
                    if jsonTable.success == true then
                        fibaro:log("Redémarrage OK");
                        fibaro:debug('<span style="color:green;">Redémarrage Disk Station Synology OK</span>');
                    else
                        fibaro:log("Erreur");
                        fibaro:debug('<span style="color:red;">Disk Station Synology n\'a pas redémarré</span>');
                    end
                    --
                else
                    fibaro:log("Erreur");
                    fibaro:debug('<span style="color:red;">Erreur : '..API_AUTH_ERROR_CODE[tonumber(errorCode)]..'</span>');
                      --fibaro:debug('<span style="color:red;">Erreur : '..errorCode..'</span>');
                end
                -- Destroy current login session
                payload = "/webapi/"..pathAuth.."?api=SYNO.API.Auth&method=Logout&version=2&session=DSM&_sid="..SID;
                response, status, errorCode = Synology:GET(payload);
                fibaro:debug(status);
            else
                fibaro:log("Erreur");
                fibaro:debug('<span style="color:red;">Erreur : '..API_AUTH_ERROR_CODE[tonumber(jsonTable.error.code)]..'</span>');
            end
        else
            fibaro:log("Erreur");
            fibaro:debug('<span style="color:red;">Erreur : Authentification API ratée</span>');
        end
    else
        fibaro:log("Erreur");
        fibaro:debug('<span style="color:red;">Erreur : Version API Synology trop vieille : <b>DSM 4.0-2251</b> est requise</span>');
    end
else
    fibaro:log("Erreur");
    fibaro:debug('<span style="color:red;">Erreur : Impossible de se connecter au Disk Station Synology</span>');
end

 

NB4 Réveiller

-- convert MAC adress, every 2 Chars (7-bit ASCII), to one Byte Char (8-bits)
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

fibaro:log("Réveiller");

-- MAC adress
local _macAdd = fibaro:getGlobal("MacNAS1");
local _macAddress = convertMacAddress(_macAdd);
-- Create Magic Packet 6 x FF
local _magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
-- Broadcast Address
local _broadcastAddress = fibaro:getGlobal("BcastNAS");
-- Default port used
local _wakeOnLanPort = 9;

fibaro:sleep(750);

for i = 1, 16 do
  _magicPacket = _magicPacket .. _macAddress;
end

fibaro:log("Magic packet créé");

fibaro:sleep(1000);

socket = Net.FUdpSocket();
socket:setBroadcast(true);

local bytes, errorCode = socket:write(_magicPacket, _broadcastAddress, _wakeOnLanPort);
--check for error
if errorCode == 0 then
  fibaro:log("Envoyé");
else
  fibaro:log("Envoi raté");
end

-- clean up memory
socket = nil;

fibaro:log("Attendre le réveil.");

 

NB5 Boucle principale

-- Interval d'execution en minutes
local pollingTime = 10;

-- ID du virtual device
local selfID = fibaro:getSelfId();
fibaro:call(selfID, "pressButton", "3");

fibaro:sleep(pollingTime * 60000);

 

Merci pour votre aide.....

 

 

Posté(e)

Si tu ne précises pas l'ip ni le port de ton NAS, il ne va pas te deviner

Envoyé de mon Nexus 5 en utilisant Tapatalk

Posté(e) (modifié)

Bonsoir,

 

En effet, il faut mettre l'adresse IP du NAS et le port (5000 par défaut, sinon, celui que vous avez modifié dans DSM pour un accès en HTTP) dans la capture NB2.

Et il ne faut pas toucher au code des boutons.

 

Voilà ... :)

 

Modifié par Kana-chan
Posté(e) (modifié)

Merci Jojo et Kana-chan

ok je viens de modifier mais j'ai tjrs ceci

image.png.5b92147dbdc1aa1541e75daaae9adea2.png

 

Modifié par Ghoosti
Posté(e)

et ici c bon ?

NB3 Redémarrer

--------------------------------------------------
-- Synology DSM
-- Reboot the disk station
-- janvier 2015
--------------------------------------------------

-- User configurable variables
local login = fibaro:getGlobal("LoginNAS1");
local password = fibaro:getGlobal("MdpNAS1");

-- System variables
local selfID = fibaro:getSelfId();
local ip = fibaro:get(selfID, "192.168.1.55"); -----ici c bien " ou '
local port = fibaro:get(selfID, "5000");-------------idem

Posté(e) (modifié)

Et que donne les traces ?

Aller sur le bouton Debogger du bouton Etat.

Cliquer sur Demarrer et voir ce qui s'affiche.

 

Voilà ... :D

 

P.S. : C'est pas bon ça :
 

local ip = fibaro:get(selfID, "192.168.1.55"); -----ici c bien " ou '
local port = fibaro:get(selfID, "5000");-------------idem

Remettre comme c'etait aussi.

Il faut avoir :

VD_Synology_NAS_Config.png.dabf102f9c75877b8b1d4ccf95ea6d6e.png

et cela dans le code :

SynologyConfigBouton.png.0100b7ed1b248eff0072b5700266f5eb.png

 

Modifié par Kana-chan
Explications
Posté(e) (modifié)

Hmmm, je ne connais pas cette erreur.

Le mieux est de supprimer le VD et le réimporter.

Puis de renseigner l'IP et le port comme dans ma capture et sauver.

Si les variables globales sont bonnes (dans la partie "Variables:" et non "Variables prédéfinies"), en cliquant sur le bouton Etat, tout se mettra à jour.

 

Voilà ... :)

 

Modifié par Kana-chan
Posté(e)
Le 22/07/2017 à 12:02, Kana-chan a dit :

Bonjour domo,

 

Voici la dernière (je l'espère !! :D) version avec la prise en charge de la température des disques dur.

Pouvez-vous tester de votre coté ?

 

Merci ... :P

 

Synology_NAS.vfib

Il faut prendre celui-là.

 

Voilà ... :)

 

×
×
  • Créer...