Tras leer el blog de Antonio sobre la integración de una NAS Synology con Fibaro me he ido a poner manos a la obra pero yo poseo una HCL así que lo que se comenta en ese blog no aplica, aunque me ha ayudado muchísimo (gracias).
Le he dedicado un poco de tiempo a realizar las modificaciones oportunas para realizar más o menos lo mismo.
Los pasos son similares a lo que comenta Antonio en este blog:
http://www.domoticadomestica.com/como-integrar-tu-nas-y-tu-sai-en-tu-red-domotica-con-el-home-center-2-de-fibaro/Pero los poseedores de una HCL tenemos varios problemas:
- No podemos utilizar LUA
- No podemos cargar un VD con LUA
- En los VD, mediante entorno gráfico, no puedes asignar un valor al Label
Para solventar los problemas, mira que se pone difícil con HCL, lo primero que he buscado es alguna manera de cambiar el valor del Label, al final lo he encontrado atacando a la API mediante HTTP:
http://
$HOMECENTER_IP/api/callAction?
deviceID=115&name=setProperty&arg1=ui.
NASTemp.value&arg2=
$TemperaturaNAS$HOMECENTER_IP: IP de tu HCL
deviceID: ID del VD que quieres modificar
NASTemp: ID del Label
$TemperaturaNAS: Valor que quieres poner
Pongo una captura de mi VD para que veáis como obtener los datos ver imagen Datos.
Una vez que sabemos como podemos cambiar el valor de los Label ya he pasado a crear el VD final con los siguientes datos:
Nomenclatura: LABEL - ID
Temperature - NASTemp
Status Fan NAS - NASFan
Status Fan CPU - NASFanCPU
UPS Load %- NASLoadUPS
Bat. Charge % - NASBatteryLoadUPS
Status HDD0 - NASStatusHDD0
Status HDD1 - NASStatusHDD1
Status HDD2 - NASStatusHDD2
Status HDD3 - NASStatusHDD3
Temp HDD0 - NASTempHDD0
Temp HDD1 - NASTempHDD1
Temp HDD2 - NASTempHDD2
Temp HDD3 - NASTempHDD3
Una vez tenemos esto seguimos los mismos pasos que en el blog para crear el script en la Synology.
Destacar que yo tengo una DS916+ con DSM 6 y los MIBs de SNMP los he tenido que buscar de nuevo en este doc:
http://usdl.synology.com/download/Document/MIBGuide/Synology_DiskStation_MIB_Guide.pdfY ahora lo importante, el script que lo hace todo:
#!/bin/bash
HOMECENTER_IP="****" # Tu IP
HOMECENTER_LOGIN="****" # Tu Usuario
HOMECENTER_MDP="****" # Tu contraseña de admin
# Devuelve la cadena segun estado del disco
# 1=Normal 2=Sin Datos 3=Sin Particionar 4=Particion Dañada 5=Disco Dañado
declare result
function StatusHDD ()
{
case $1 in
1)
result="Normal"
;;
2)
result="Sin%20Datos"
;;
3)
result="Sin%20Particion"
;;
4)
result="Part.%20Dañada"
;;
5)
result="Disco%20Dañado"
;;
esac
}
#Temperatura NAS
TemperaturaNAS=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.1.2`
TemperaturaNAS+="%20C"
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASTemp.value&arg2=$TemperaturaNAS"
#Estado ventilador NAS 1=Normal 2=Fallo
EstadoVentiladorNAS=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.1.4.1`
if [ $EstadoVentiladorNAS = 1 ]; then
EstadoVentiladorNAS="Normal"
else
EstadoVentiladorNAS="Fail"
fi
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASFan.value&arg2=$EstadoVentiladorNAS"
#Estado ventilador CPU 1=Normal 2=Fallo
EstadoVentiladorCPU=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.1.4.2`
if [ $EstadoVentiladorCPU = 1 ]; then
EstadoVentiladorCPU="Normal"
else
EstadoVentiladorCPU="Fail"
fi
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASFanCPU.value&arg2=$EstadoVentiladorCPU"
#Carga de trabajo SAI
LoadUPS=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.4.2.12.1`
LoadUPS=`echo $LoadUPS | awk {'print int($1)'}`
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASLoadUPS.value&arg2=$LoadUPS"
#Estado carga bateria SAI
BatteryLoadUPS=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.4.3.1.1`
BatteryLoadUPS=`echo $BatteryLoadUPS | awk {'print int($1)'}`
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASBatteryLoadUPS.value&arg2=$BatteryLoadUPS"
#Status Disco 0
StatusHDD0=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.5.0`
StatusHDD $StatusHDD0
StatusHDD0=$result
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASStatusHDD0.value&arg2=$StatusHDD0"
#Status Disco 1
StatusHDD1=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.5.1`
StatusHDD $StatusHDD1
StatusHDD1=$result
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASStatusHDD1.value&arg2=$StatusHDD1"
#Status Disco 2
StatusHDD2=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.5.2`
StatusHDD $StatusHDD2
StatusHDD2=$result
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASStatusHDD2.value&arg2=$StatusHDD2"
#Status Disco 3
StatusHDD3=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.5.3`
StatusHDD $StatusHDD3
StatusHDD3=$result
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASStatusHDD3.value&arg2=$StatusHDD3"
#Temp Disco 0
TempHDD0=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.6.0`
TempHDD0+="%20C"
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASTempHDD0.value&arg2=$TempHDD0"
#Temp Disco 1
TempHDD1=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.6.1`
TempHDD1+="%20C"
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASTempHDD1.value&arg2=$TempHDD1"
#Temp Disco 2
TempHDD2=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.6.2`
TempHDD2+="%20C"
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASTempHDD2.value&arg2=$TempHDD2"
#Temp Disco 3
TempHDD3=`snmpwalk -v 2c -c public -O qv localhost 1.3.6.1.4.1.6574.2.1.1.6.3`
TempHDD3+="%20C"
curl --user $HOMECENTER_LOGIN:$HOMECENTER_MDP "http://$HOMECENTER_IP/api/callAction?deviceID=115&name=setProperty&arg1=ui.NASTempHDD3.value&arg2=$TempHDD3"
Con este script creamos una tarea programada en la Synology, ahora se pueden poner intervalos más cortos de tiempo yo lo he puesto cada 10 min.
Por seguridad he creado un usuario dentro del HCL que solo tiene acceso a este VD.
El resultado es el siguiente ver imagen Resultado.
Hacerlo de esta manera te ahorras de crear variables globales pero por contra no puedes utilizarlas para tratar con ellas en una escena, se podría modificar el código para que también rellenara las variables globales por si se necesitan