Barelle Posté(e) le 31 décembre 2017 Signaler Posté(e) le 31 décembre 2017 Hello, Comme vous le savez, nos matériels électroniques n’apprécient pas du tout les coupures électriques. Pour cela, il est plus que recommandé d’utiliser un onduleur (ou UPS, "Uninterruptible Power Supply")… Le VD que je vous propose ici permet l’interrogation du serveur UPS résidant sur un NAS Synology (auquel l’onduleur est connecté par un port USB). Il met à jour une variable globale (appelée UpsStatus par défaut) avec les valeurs "power-line" ou "battery" selon que l’onduleur est sur secteur ou sur batterie. Cette variable globale permet le lancement de la scène ci-après qui : - lors d’un passage sur batterie, après le délai "delayBeforePowerOff" réalisera l’arrêt de la HC2 ; - lors du retour de l’alimentation, appuiera sur le bouton "WOL" du VD. Là aussi, le réveil se fera après un délai "delayBeforeWakeUp". Ces délais ont pour objet de s’affranchir de retours temporaires de tension. --[[ %% properties %% events %% globals UpsStatus --]] local globalVarName = "UpsStatus"; -- values "power-line" or "battery" local wolVdId = "337"; local wolVdBtnId = "11"; local delayBeforePowerOff = 5; -- minutes local delayBeforeWakeUp = 5; -- minutes local debug = true; function trace(text, color) color = color or "white"; if debug then fibaro:debug("<font color='"..color.."'>"..text.."</font>"); end end -- trace function tracerr(text, color) color = color or "red"; fibaro:debug("<font color='red'>ERROR! </font>".."<font color='"..color.."'>"..text.."</font>"); end -- tracerr function wakeOnLan() fibaro:call(wolVdId, "pressButton", wolVdBtnId); end -- wakeOnLan local sourceTrigger = fibaro:getSourceTrigger(); trace("sourceTrigger[type] = " .. sourceTrigger["type"], "deepskyblue"); if (sourceTrigger["type"] == "global") then if (sourceTrigger["name"] ~= globalVarName) then tracerr("unknown global "..sourceTrigger["name"].." exiting"); fibaro:abort(); end elseif (sourceTrigger["type"] == 'other') then trace("Scene triggered manually", "lightgreen"); -- inform user local upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus ~= nil) then trace(globalVarName.." = "..upsStatus, "lightgreen"); fibaro:abort(); end else tracerr("unexpected trigger type ".. sourceTrigger["type"], "orange"); fibaro:abort(); end if (fibaro:countScenes() > 1) then trace("Script already running, exiting.", "green"); return; end local upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus == nil) then tracerr("global "..globalVarName.." = nil"); fibaro:abort(); end if (upsStatus == "power-line") then local i = 0; for i = 1, (delayBeforeWakeUp * 6) do -- check every 10 seconds during delayBeforeWakeUp minutes fibaro:sleep(10 * 1000); -- ten seconds upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus ~= "power-line") then trace("Still on battery, aborting", "orange"); fibaro:abort(); -- not stable end end -- Time to wake up devices trace("Waking up devices", "lightgreen"); wakeOnLan(); elseif (upsStatus == "battery") then local i = 0; for i = 1, (delayBeforePowerOff * 6) do -- check every 10 seconds during delayBeforePowerOff minutes fibaro:sleep(10*1000); -- ten seconds upsStatus = fibaro:getGlobalValue(globalVarName); if (upsStatus ~= "battery") then trace("Power is back, shut down aborted", "orange"); fibaro:abort(); end end -- shutdown HC2 gracefully trace("shutting down", "lightgreen"); fibaro:sleep(10*1000); HomeCenter.SystemService.shutdown(); else tracerr("global "..globalVarName.." unknown value: "..upsStatus); end Installation du VD : - Importer le VD, - Renseigner l’adresse IP du NAS connecté à l’onduleur, le port TCP 3493 est optionnel. - Les username et password présents dans le code du bouton Update fonctionnent pour un Synology. - Dans le code du bouton WOL, vous devrez préciser les adresses MAC des matériels que vous souhaitez réveiller. Il va de soi qu’ils devront être paramétrés pour accepter les "magic packets" afin d’être réveillés (pour les PC vérifier les paramètres de la carte réseau). - Pour les Nas Synology, il faut activer le WOL : "Panneau de configuration", "Matériel et alimentation", onglet "Général", cocher "Activer WOL sur le réseau local x". - Et ne pas oublier d’activer le serveur réseau UPS : "Panneau de configuration", "Matériel et alimentation", onglet "UPS", cocher "Activer la prise en "charge UPS" et "Activer le serveur réseau UPS"). - Enfin bien sûr, trouver une jolie icône pour les boutons du VD. Installation de la scène : - Préciser l’id du VD réalisant le WOL dans "wolVdId". - et le numéro du bouton à appuyer "wolVdBtnId". Pour ceux qui veulent personnaliser le VD, le code du bouton "Update" contient, à la fin, une description des principaux champs retournés par les serveurs UPS, Tous ne sont pas implémentés par Synology ou mon onduleur. Configuration utilisée pour les tests : - HC2 : 4.153 Beta - Onduleur : Eaton Ellipse PRO 1200 - NAS : Synology DS1010+ with DSM 5.2-5967 Update 6 Joyeux réveillon et bonne année à tous… UPS.vfib 5
mprinfo Posté(e) le 31 décembre 2017 Signaler Posté(e) le 31 décembre 2017 super travail merci. personnellement j'utilise le VD de@lazer car mon ups à une carte réseau Envoyé de mon SM-G901F en utilisant Tapatalk
pepite Posté(e) le 1 janvier 2018 Signaler Posté(e) le 1 janvier 2018 Merciiiii du beau boulot!! Envoyé de mon Nexus 5X en utilisant Tapatalk
kioneoranga Posté(e) le 1 janvier 2018 Signaler Posté(e) le 1 janvier 2018 Hello, Comme vous le savez, nos matériels électroniques n’apprécient pas du tout les coupures électriques. Pour cela, il est plus que recommandé d’utiliser un onduleur (ou UPS, "Uninterruptible Power Supply")… Le VD que je vous propose ici permet l’interrogation du serveur UPS résidant sur un NAS Synology (auquel l’onduleur est connecté par un port USB). Il met à jour une variable globale (appelée UpsStatus par défaut) avec les valeurs "power-line" ou "battery" selon que l’onduleur est sur secteur ou sur batterie. Cette variable globale permet le lancement de la scène ci-après qui : - lors d’un passage sur batterie, après le délai "delayBeforePowerOff" réalisera l’arrêt de la HC2 ; - lors du retour de l’alimentation, appuiera sur le bouton "WOL" du VD. Là aussi, le réveil se fera après un délai "delayBeforeWakeUp". Ces délais ont pour objet de s’affranchir de retours temporaires de tension. --[[%% properties%% events%% globalsUpsStatus--]]local globalVarName = "UpsStatus"; -- values "power-line" or "battery"local wolVdId = "337";local wolVdBtnId = "11";local delayBeforePowerOff = 5; -- minuteslocal delayBeforeWakeUp = 5; -- minuteslocal debug = true;function trace(text, color) color = color or "white";if debug then fibaro:debug("<font color='"..color.."'>"..text.."</font>");endend -- tracefunction tracerr(text, color) color = color or "red"; fibaro:debug("<font color='red'>ERROR! </font>".."<font color='"..color.."'>"..text.."</font>");end -- tracerrfunction wakeOnLan()fibaro:call(wolVdId, "pressButton", wolVdBtnId);end -- wakeOnLanlocal sourceTrigger = fibaro:getSourceTrigger();trace("sourceTrigger[type] = " .. sourceTrigger["type"], "deepskyblue");if (sourceTrigger["type"] == "global") thenif (sourceTrigger["name"] ~= globalVarName) then tracerr("unknown global "..sourceTrigger["name"].." exiting"); fibaro:abort();endelseif (sourceTrigger["type"] == 'other') thentrace("Scene triggered manually", "lightgreen");-- inform userlocal upsStatus = fibaro:getGlobalValue(globalVarName);if (upsStatus ~= nil) then trace(globalVarName.." = "..upsStatus, "lightgreen"); fibaro:abort();endelsetracerr("unexpected trigger type ".. sourceTrigger["type"], "orange");fibaro:abort();endif (fibaro:countScenes() > 1) then trace("Script already running, exiting.", "green");return;endlocal upsStatus = fibaro:getGlobalValue(globalVarName);if (upsStatus == nil) thentracerr("global "..globalVarName.." = nil");fibaro:abort();endif (upsStatus == "power-line") thenlocal i = 0;for i = 1, (delayBeforeWakeUp * 6) do -- check every 10 seconds during delayBeforeWakeUp minutes fibaro:sleep(10 * 1000); -- ten seconds upsStatus = fibaro:getGlobalValue(globalVarName);if (upsStatus ~= "power-line") then trace("Still on battery, aborting", "orange"); fibaro:abort(); -- not stableendend-- Time to wake up devicestrace("Waking up devices", "lightgreen");wakeOnLan();elseif (upsStatus == "battery") thenlocal i = 0;for i = 1, (delayBeforePowerOff * 6) do -- check every 10 seconds during delayBeforePowerOff minutes fibaro:sleep(10*1000); -- ten seconds upsStatus = fibaro:getGlobalValue(globalVarName);if (upsStatus ~= "battery") then trace("Power is back, shut down aborted", "orange"); fibaro:abort();endend-- shutdown HC2 gracefullytrace("shutting down", "lightgreen");fibaro:sleep(10*1000);HomeCenter.SystemService.shutdown();elsetracerr("global "..globalVarName.." unknown value: "..upsStatus);end Installation du VD : - Importer le VD, - Renseigner l’adresse IP du NAS connecté à l’onduleur, le port TCP 3493 est optionnel. - Les username et password présents dans le code du bouton Update fonctionnent pour un Synology. - Dans le code du bouton WOL, vous devrez préciser les adresses MAC des matériels que vous souhaitez réveiller. Il va de soi qu’ils devront être paramétrés pour accepter les "magic packets" afin d’être réveillés (pour les PC vérifier les paramètres de la carte réseau). - Pour les Nas Synology, il faut activer le WOL : "Panneau de configuration", "Matériel et alimentation", onglet "Général", cocher "Activer WOL sur le réseau local x". - Et ne pas oublier d’activer le serveur réseau UPS : "Panneau de configuration", "Matériel et alimentation", onglet "UPS", cocher "Activer la prise en "charge UPS" et "Activer le serveur réseau UPS"). - Enfin bien sûr, trouver une jolie icône pour les boutons du VD. Installation de la scène : - Préciser l’id du VD réalisant le WOL dans "wolVdId". - et le numéro du bouton à appuyer "wolVdBtnId". Pour ceux qui veulent personnaliser le VD, le code du bouton "Update" contient, à la fin, une description des principaux champs retournés par les serveurs UPS, Tous ne sont pas implémentés par Synology ou mon onduleur. Configuration utilisée pour les tests : - HC2 : 4.153 Beta - Onduleur : Eaton Ellipse PRO 1200 - NAS : Synology DS1010+ with DSM 5.2-5967 Update 6 Joyeux réveillon et bonne année à tous…UPS.vfibplutôt coolje vais essayer de mettre cela en place quand je rentremerci.et bonne annéeEnvoyé de mon ONEPLUS A5000 en utilisant Tapatalk
domo Posté(e) le 4 octobre 2018 Signaler Posté(e) le 4 octobre 2018 merci pour ce VD j'ai deux problèmes 1 sur mon syno quand je coche "activer le serveur réseau UPS" et que je clic sur appliquer la case se décoche toute seul et le 2 dans le debug udapte j'ai une erreur sur mon username j'ai bien renseigné et je suis en admin , merci de ton aide [DEBUG] 22:10:44: ERROR! connect, USERNAME bad response, err=1, response=ERR ACCESS-DENIED [DEBUG] 22:10:44: unable to connect to UPS server (XXX.XXX.XXX.XXX:3493)
Barelle Posté(e) le 4 octobre 2018 Auteur Signaler Posté(e) le 4 octobre 2018 Merci pour ce merci If faudrait vérifier que le serveur UPS est bien lancé sur le Syno, quelle est ta version de DSM. Attention le username et le password sont ceux indiqués en dur dans le VD, sauf à avoir modifié le paramétrage du serveur UPS.
domo Posté(e) le 4 octobre 2018 Signaler Posté(e) le 4 octobre 2018 voici se que j'ai , on peut voir les infos du UPS et la version c'est DSM 5.2-5967 Update 8 pour le UPS j'ai rien touché comme réglage
Barelle Posté(e) le 5 octobre 2018 Auteur Signaler Posté(e) le 5 octobre 2018 J'ai bien la même version de DSM. En revanche, dans mon paramétrage la case Activer le serveur réseau UPS est bien cochée, ce qui permet d'ajouter l'adresse IP de la HC2 dans la liste des Périphériques DiskStation autorisés. Je pense que la source du problème provient du fait que le serveur réseau UPS n'est pas lancé. Ne devant exclure aucune idée, même si je n'y crois pas trop, as-tu essayé de vider le cache de ton navigateur et de changer de navigateur ? 1
domo Posté(e) le 5 octobre 2018 Signaler Posté(e) le 5 octobre 2018 Merci à toi je savais pas qu’il fallait renseigner l’adresse de la HC2 dans la petite fenêtre tout fonctionne maintenant
Barelle Posté(e) le 5 octobre 2018 Auteur Signaler Posté(e) le 5 octobre 2018 Il s'agit d'une sécurité qui permet d'indiquer explicitement au serveur UPS les clients autorisés.
domo Posté(e) le 5 octobre 2018 Signaler Posté(e) le 5 octobre 2018 merci d'avoir pris le temps et les explications tes au top
domo Posté(e) le 5 octobre 2018 Signaler Posté(e) le 5 octobre 2018 (modifié) petite question j'ai pas trouvé les lignes pour inclure les icônes suivant les états de UPS merci Modifié le 5 octobre 2018 par domo
Barelle Posté(e) le 5 octobre 2018 Auteur Signaler Posté(e) le 5 octobre 2018 Et pour cause, dans la version publiée ci-dessus, elles n'y figurent pas. Ci-joint, une nouvelle version avec les icônes : UPS-0.2.vfib Et les icônes qui vont bien (numéro à adapter à partir de la ligne 20 du bouton Update... 1
domo Posté(e) le 5 octobre 2018 Signaler Posté(e) le 5 octobre 2018 impeccable tout fonctionne par contre dans input voltage j'ai juste la lettre V dans fréquence j'ai HZ dans power j'ai VA real power W j'ai pas de chiffres il doit y en avoir ? j'ai testé la coupure de courant la HC2 s'arrête proprement par contre elle ne redémarre pas au bout de 15 min d'attente, la HC2 doit redémarré combien de temps après le rétablissement du courant
Barelle Posté(e) le 6 octobre 2018 Auteur Signaler Posté(e) le 6 octobre 2018 Pour les valeurs non affichées, il faudrait vérifier dans la fenêtre de Debug du bouton Update les lignes relatives à la table payload pour s’assurer que ces valeurs sont bien retournées par le serveur UPS du Synology. Une fois la HC2 arrêtée, elle ne redémarrera pas toute seule : on lui a demandé de s'arrêter proprement, donc elle reste à l'arrêt jusqu'à une intervention extérieure, appui sur power on par exemple, d’autant plus qu'une tension en entrée de la HC2 est toujours présente. On justement voulu l'arrêter avant que l'onduleur ne soit plus en mesure de l'alimenter. Description de la logique actuelle : Dans le cas d'une coupure d'alimentation de l'onduleur, ce VD est informé et, via la scène associée, une fois le délai delayBeforePowerOff écoulé lancera l'arrêt de la HC2. Si l'alimentation de l'onduleur est rétablie alors la scène par appui sur le bouton WOL du VD pourra réveiller des matériels non connectés à l'onduleur et qui ont fait l'objet d'un arrêt brutal lors de la perte de tension. Logique qui pourrait être implémentée, si l'envie m'en prend... Lors d'un retour de tension, comme maintenant, pouvoir réveiller des matériels arrêtés. En revanche, par exploitation de la donnée battery.runtime, déterminer le moment où la HC2 n'a d'autre choix que de s'arrêter proprement.
domo Posté(e) le 7 octobre 2018 Signaler Posté(e) le 7 octobre 2018 Ok merci pour cette explication je pensais que t’as scène arrêter la hc2 proprement pour éviter un arrêt brutal mais à la reprise du courant qu’elle ce rallumerai aussi sans action d’une personne , je vais jeter un coup d’œil dans le debug pour voir merci
domo Posté(e) le 7 octobre 2018 Signaler Posté(e) le 7 octobre 2018 (modifié) voici ce que j'ai en debug et l'affichage du VD [DEBUG] 23:18:12: writeSocket, data=LIST VAR UPS[DEBUG] 23:18:12: payload[battery.charge]=100[DEBUG] 23:18:12: payload[battery.charge.low]=20[DEBUG] 23:18:12: payload[battery.runtime]=1337[DEBUG] 23:18:12: payload[battery.type]=PbAc[DEBUG] 23:18:12: payload[device.mfr]=EATON[DEBUG] 23:18:12: payload[device.model]=Ellipse ECO 800[DEBUG] 23:18:12: payload[device.serial]=000000000[DEBUG] 23:18:12: payload[device.type]=ups[DEBUG] 23:18:12: payload[driver.name]=usbhid-ups[DEBUG] 23:18:12: payload[driver.parameter.pollfreq]=30[DEBUG] 23:18:12: payload[driver.parameter.pollinterval]=5[DEBUG] 23:18:12: payload[driver.parameter.port]=auto[DEBUG] 23:18:12: payload[driver.version]=SDS5-2-2015Q1branch-5619-150904[DEBUG] 23:18:12: payload[driver.version.data]=MGE HID 1.33[DEBUG] 23:18:12: payload[driver.version.internal]=0.38[DEBUG] 23:18:12: payload[input.transfer.high]=264[DEBUG] 23:18:12: payload[input.transfer.low]=184[DEBUG] 23:18:12: payload[outlet.1.desc]=PowerShare Outlet 1[DEBUG] 23:18:12: payload[outlet.1.id]=2[DEBUG] 23:18:12: payload[outlet.1.status]=on[DEBUG] 23:18:12: payload[outlet.1.switchable]=no[DEBUG] 23:18:12: payload[outlet.2.desc]=PowerShare Outlet 2[DEBUG] 23:18:12: payload[outlet.2.id]=3[DEBUG] 23:18:12: payload[outlet.2.status]=on[DEBUG] 23:18:12: payload[outlet.2.switchable]=no[DEBUG] 23:18:12: payload[outlet.desc]=Main Outlet[DEBUG] 23:18:12: payload[outlet.id]=1[DEBUG] 23:18:12: payload[outlet.power]=25[DEBUG] 23:18:12: payload[outlet.switchable]=no[DEBUG] 23:18:12: payload[output.frequency.nominal]=50[DEBUG] 23:18:12: payload[output.voltage]=230.0[DEBUG] 23:18:12: payload[output.voltage.nominal]=230[DEBUG] 23:18:12: payload[ups.beeper.status]=enabled[DEBUG] 23:18:12: payload[ups.delay.shutdown]=20[DEBUG] 23:18:12: payload[ups.delay.start]=30[DEBUG] 23:18:12: payload[ups.firmware]=02[DEBUG] 23:18:12: payload[ups.load]=20[DEBUG] 23:18:12: payload[ups.mfr]=EATON[DEBUG] 23:18:12: payload[ups.model]=Ellipse ECO 800[DEBUG] 23:18:12: payload[ups.power.nominal]=800[DEBUG] 23:18:12: payload[ups.productid]=ffff[DEBUG] 23:18:12: payload[ups.serial]=000000000[DEBUG] 23:18:12: payload[ups.status]=OL CHRG[DEBUG] 23:18:12: payload[ups.timer.shutdown]=-1[DEBUG] 23:18:12: payload[ups.timer.start]=-1[DEBUG] 23:18:12: payload[ups.vendorid]=0463[DEBUG] 23:18:12: UPS is on line. Modifié le 7 octobre 2018 par domo
Barelle Posté(e) le 8 octobre 2018 Auteur Signaler Posté(e) le 8 octobre 2018 Pour les valeurs non affichées, je crains ne rien pouvoir, le serveur UPS du NAS ne les remonte pas, probablement car elles ne sont pas fournies par l'onduleur. Tu pourrais sans doute faire évoluer le VD (interface et code) soit en substituant ces valeurs indisponibles par d'autres susceptibles de t'intéresser, soit en les supprimant... Les définitions des différentes valeurs figurent dans un commentaires à la fin du code du bouton Update...
GuiGui3Gma Posté(e) le 29 avril 2020 Signaler Posté(e) le 29 avril 2020 Salut à tous, Je viens de brancher mon NAS DS218 sur un onduleur APC. Je me suis empressé de tester le VD de BARELLE, plus que complet, sur la HC2. Helas... je ne parviens pas à exécuter l'Update. Dans les Logs, j'ai l'info suivante : J'ai bien renseigné l'IP du NAS, en laissant le port TCP=0. J'ai aussi renseigné la variable "username' et "password" Mon NAS tourne sous DSM 6.2.2. Une idée de ce que c'est, cet errorCode 2 ?? Merci.
mprinfo Posté(e) le 29 avril 2020 Signaler Posté(e) le 29 avril 2020 pour le port mets voir 5000 pour voir
Barelle Posté(e) le 29 avril 2020 Auteur Signaler Posté(e) le 29 avril 2020 Il ne faut pas changer le code utilisateur et le mot de passe, en conservant le port 3493.
GuiGui3Gma Posté(e) le 29 avril 2020 Signaler Posté(e) le 29 avril 2020 Merci pour vos conseils. Alors j'ai supprimé puis ré installer le VD en laissant le code utilisateur + mot de pass et en laissant le port TCP sur 0 : Puis j'ai forcé le TCP sur 5000 : En renseignant mes Id et Pass, ca ne marche pas non plus. Pour info, j'ai un VD pour la supervision du Syno qui fonctionne nickel (VD de fdp2.)
Barelle Posté(e) le 29 avril 2020 Auteur Signaler Posté(e) le 29 avril 2020 Il est nécessaire de conserver le port 3493, celui du serveur UPS du NAS.
GuiGui3Gma Posté(e) le 29 avril 2020 Signaler Posté(e) le 29 avril 2020 YES !!! En mettant le port 3493 dans la case TCP : CA MARCHE ! Merci Barelle.
Messages recommandés