Aller au contenu

Messages recommandés

Posté(e)

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

  • Like 5
Posté(e)
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.vfib

plutôt cool
je vais essayer de mettre cela en place quand je rentre
merci.et bonne année

Envoyé de mon ONEPLUS A5000 en utilisant Tapatalk

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

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)

Posté(e)

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.

 

Posté(e)

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 

Capture d’écran 2018-10-04 à 23.34.11.png

Capture d’écran 2018-10-04 à 23.34.39.png

Posté(e)

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 ?

  • Upvote 1
Posté(e)

Merci à toi je savais pas qu’il fallait renseigner l’adresse de la HC2 dans la petite fenêtre 

tout fonctionne maintenant  :)

Posté(e) (modifié)

petite question j'ai pas trouvé les lignes pour inclure les icônes suivant les états de UPS merci 

Modifié par domo
Posté(e)

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...

1592755184_EatonEllipsePro1200.png.c49a7cbb0e61f33a784c6f436737b417.png

1232944577_EatonEllipsePro1200-00.png.08d34ced1b768a91404dc3c743704e66.png

748014759_EatonEllipsePro1200-50.png.1b2c1065d5ba0601e690ee97f5ec3182.png

1824781235_EatonEllipsePro1200-OFF.png.451f86bf3d381bc6674458b420163689.png

382009268_EatonEllipsePro1200-100.png.0c2a60e95f77017a8255ecbedc27b7e5.png

1509032337_EatonEllipsePro1200-ON.png.8ba7ad33e846ce6f109f319b27752c2a.png

1341853342_EatonEllipsePro1200-Secteur.png.5508bb34e598018ac462ba61d99307f4.png

 

  • Like 1
Posté(e)

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 

Posté(e)

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.

Posté(e)

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 

Posté(e) (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.

Capture d’écran 2018-10-07 à 23.19.15.png

Modifié par domo
Posté(e)

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...

  • 1 an après...
Posté(e)

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 :

image.png.1a52eb7dc7d28c669869ba7ee6f3c9e1.png

 

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.

 

Posté(e)

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 :

image.png.5b39fb60a81353be09fea5df10974dae.png

 

 

Puis j'ai forcé le TCP sur 5000 :

image.png.261a043a6117a75ca2b5b83ec22a3862.png

 

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.)

 

×
×
  • Créer...