Page 10 of 10

Re: HowTo: monitor Synology NAS

Posted: Saturday 18 April 2020 8:55
by svdhaar
Hi,

I'm trying to get the general temperature in this scripts.
This returns value: 0

I'm running domoticz on a ds214se. Is there an issue with the oid?



# Temperature NAS
NAS_TEMP=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.1.2`
echo "NAS_TEMP:" $nastemp

# Send data
echo "Sending data to device#:" $NAS_TEMP_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_TEMP_IDX&nvalue=0&svalue=$nastemp"
echo "Data sent"

Re: HowTo: monitor Synology NAS

Posted: Saturday 18 April 2020 9:14
by EddyG
I am running DSM 6.2 and it works.
To get temperatures from harddisks use: 1.3.6.1.4.1.6574.2.1.1.6
You will get the temperature from every harddisk as 1.3.6.1.4.1.6574.2.1.1.6.0 1.3.6.1.4.1.6574.2.1.1.6.1 etc....

Free tester on: https://www.paessler.com/tools/snmptester

NAS_TEMP=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.1.2`
echo "NAS_TEMP:" $nastemp

Wrong variable use should be echo "NAS Temp: "$NAS_TEMP Same for the curl command

Re: HowTo: monitor Synology NAS

Posted: Saturday 18 April 2020 9:24
by svdhaar
EddyG wrote: Saturday 18 April 2020 9:14 I am running DSM 6.2 and it works.
To get temperatures from harddisks use: 1.3.6.1.4.1.6574.2.1.1.6
You will get the temperature from every harddisk as 1.3.6.1.4.1.6574.2.1.1.6.0 1.3.6.1.4.1.6574.2.1.1.6.1 etc....

Free tester on: https://www.paessler.com/tools/snmptester
I only have issues with The HD temps. Only the general temp is returning blank.

The variable change did the job! Thanks

Re: HowTo: monitor Synology NAS

Posted: Saturday 18 April 2020 13:52
by svdhaar
Another question:

I've added the FAN status to my script.
The data is 1 = ok 2 = not ok (From the MIB documentation)

I've added a virtual sensor, type text. it is updates nicely. But a sensor of type text is a bit ugly in the web gui.

2 questions: 1. is it possible to use a different type of sensor? Or, is it possible to use like conditional formatting. When 1 is returned, a green color, when 2 is returned, a red color.

Re: HowTo: monitor Synology NAS

Posted: Saturday 18 April 2020 18:41
by EddyG
You could use a Type General with Subtype Alert.
See: https://www.domoticz.com/wiki/DzVents:_ ... ert_sensor

Re: HowTo: monitor Synology NAS

Posted: Saturday 18 April 2020 19:51
by dressie
svdhaar wrote: Saturday 18 April 2020 13:52 Another question:

I've added the FAN status to my script.
The data is 1 = ok 2 = not ok (From the MIB documentation)

I've added a virtual sensor, type text. it is updates nicely. But a sensor of type text is a bit ugly in the web gui.

2 questions: 1. is it possible to use a different type of sensor? Or, is it possible to use like conditional formatting. When 1 is returned, a green color, when 2 is returned, a red color.
I'm trying to add it too, and send it to an ' Alert Sensor" but I can't seem to get it to work. This is what I have in my script:

Code: Select all

 # Fan alert
        FANUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP  1.3.6.1.4.1.6574.1.4.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_FAN_ALERT&nvalue=$FANUnit&svalue=FAN"
Any thoughts?

Re: HowTo: monitor Synology NAS

Posted: Sunday 19 April 2020 6:58
by svdhaar
dressie wrote: Saturday 18 April 2020 19:51
svdhaar wrote: Saturday 18 April 2020 13:52 Another question:

I've added the FAN status to my script.
The data is 1 = ok 2 = not ok (From the MIB documentation)

I've added a virtual sensor, type text. it is updates nicely. But a sensor of type text is a bit ugly in the web gui.

2 questions: 1. is it possible to use a different type of sensor? Or, is it possible to use like conditional formatting. When 1 is returned, a green color, when 2 is returned, a red color.
I'm trying to add it too, and send it to an ' Alert Sensor" but I can't seem to get it to work. This is what I have in my script:

Code: Select all

 # Fan alert
        FANUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP  1.3.6.1.4.1.6574.1.4.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_FAN_ALERT&nvalue=$FANUnit&svalue=FAN"
Any thoughts?
I've got it working with:

FAN_STATUS=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.1.4.1`
echo "FAN_STATUS:" $FAN_STATUS

# Send data
echo "Sending data to device#:" $NAS_FAN_STAT_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_FAN_STAT_IDX&nvalue=0&svalue=$FAN_STATUS"
echo "Data sent"

Re: HowTo: monitor Synology NAS

Posted: Sunday 19 April 2020 7:19
by svdhaar
EddyG wrote: Saturday 18 April 2020 18:41 You could use a Type General with Subtype Alert.
See: https://www.domoticz.com/wiki/DzVents:_ ... ert_sensor
Thanks!
Any idea what the syntax should be? If it is 1, it should be green, if it is 2 it should be red..

I use this code to update the sensor:

curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_FAN_STAT_IDX&nvalue=0&svalue=$FAN_STATUS"
echo "Data sent"


Fixed it :-)

# Fan status
FAN_STATUS=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.1.4.1`
echo "FAN_STATUS:" $FAN_STATUS
if expr $FAN_STATUS =<> "1" ; then
# Send data
echo "Sending data to device#:" $NAS_FAN_STAT_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_FAN_STAT_IDX&nvalue=4&svalue=$FAN_STATUS"
echo "Data sent"
else

# Send data
echo "Sending data to device#:" $NAS_FAN_STAT_IDX
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_FAN_STAT_IDX&nvalue=1&svalue=$FAN_STATUS"
echo "Data sent"
fi

Re: HowTo: monitor Synology NAS

Posted: Sunday 10 January 2021 20:00
by lukev
mmm.... i'm getting this error after I followed every step in the tutorial:

Code: Select all

./nas.sh: line 125: unexpected EOF while looking for matching `"'
./nas.sh: line 128: syntax error: unexpected end of file
Any ideas?

Re: HowTo: monitor Synology NAS

Posted: Sunday 14 February 2021 12:54
by peidor
svdhaar wrote: Saturday 18 April 2020 8:47
multinet wrote: Monday 13 April 2020 13:05 Hello

Does anyone have the correct OID for DSM6.2+ ?

Since I upgraded to this version my script is faulty on HDSPace calculation

on this part
# Free space volume in Go
HDUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDTotal=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))

# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"

# Free space volume in percent
HDTotal=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDUsed=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.52` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
HDFreePerc=$((($HDUsed * 100) / $HDTotal))
# Send data
curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"

Thank you
.41 works for me! DSM6.2
I use .44 for DSM 6.2.3-25426 Update 3

Re: HowTo: monitor Synology NAS

Posted: Tuesday 31 August 2021 23:55
by RobbieT1974
I modified the code because some items where no longer working with DSM7.0.
In addition to that I decided I wanted to have the UPS data in Domoticz.

So I have added that too.

I use a cheap APC ups type CS350 which is connected to my nas via a usb cable.

My Domoticz system runs of the same UPS, so it is nice to know when a shutdown is going to happen.
(Now a Raspberry Pi 3B+ with an SSD, will become a NUC with an Intel J4105 Celeron.)

Modified the crontab entry, otherwise the script would not run completely (replacing spaces in a string would not work) from cron.
The /bin/bash entry is new here:

Code: Select all

*/5 * * * * /bin/bash /home/pi/domoticz/scripts/nas.sh (= every 5 minutes)
And here the code of nas.sh after modification.
The memory percentage calculation is modified to suit the amount of RAM in my nas. (6144)
I have a DS218+ with 6Gb of RAM installed.

Code: Select all

 #!/bin/bash

PATH='/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin'

 # Settings

 NASIP="192.168.1.?"             # NAS IP Address
 PASSWORD="?????"         # SNMP Password
 DOMO_IP="192.168.1.?"           # Domoticz IP Address
 DOMO_PORT="8080"            # Domoticz Port
 NAS_IDX="280"                 # NAS Switch IDX
 NAS_HD1_TEMP_IDX="277"        # NAS HD1 Temp IDX
 NAS_HD2_TEMP_IDX="278"        # NAS HD2 Temp IDX
 NAS_HD_SPACE_IDX="279"        # NAS HD Space IDX in Go
 NAS_HD_SPACE_PERC_IDX="276"   # NAS HD Space IDX in %
 NAS_CPU_IDX="274"             # NAS CPU IDX
 NAS_MEM_IDX="275"             # NAS MEM IDX
 NAS_UPS_MANUFACTURER_IDX="515"     # NAS UPS MANUFACTURER IDX
 NAS_UPS_MODEL_IDX="516"            # NAS UPS MODEL IDX
 NAS_UPS_STATUS_IDX="517"           # NAS UPS STATUS IDX
 NAS_UPS_CHARGE_VALUE_IDX="514"     # NAS UPS CHARGE VALUE IDX
 
 
 # Check if NAS in online 

 PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`

 echo $PINGTIME
 if expr "$PINGTIME" '>' 0
 then
   curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
 
       if [ $? -eq 0 ] ; then
        echo "NAS already ON"
     
        # Temperature HD1
        HDtemp1=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
 
        # Temperature HD2
        HDtemp2=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
 
        # Free space volume in Go
        HDUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+ was 51
        HDTotal=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
 
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
 
        # Free space volume in percent
        HDTotal=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
     	HDFreePerc=$((($HDUsed * 100) / $HDTotal))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
 
	# CPU utilisation
        CpuUser=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	CpuSystem=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	CpuUse=$(($CpuUser + $CpuSystem))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
 
        # Free Memory Available in %
	MemAvailable=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
        MemAvailableinMo=$(($MemAvailable / 1024))
	MemUsepercent=$((($MemAvailableinMo * 100) / 6144))
        # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
 
    # UPS Charge value
    UPSchargevalue=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.3.1.1.0`
             # Send data
             curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_CHARGE_VALUE_IDX&nvalue=0&svalue=$UPSchargevalue"
 
    # UPS Status
    UPSstatus=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.2.1.0`
        TmpSts="${UPSstatus%\"}"
        UPSstatus="${TmpSts#\"}"
        echo $UPSstatus
           case $UPSstatus in
               OL) UPSstatTxt="ONLINE"
                   ;;
               OB) UPSstatTxt="ON%20BATTERY"
                   ;;
               LB) UPSstatTxt="LOW%20BATTERY"
                   ;;
               HB) UPSstatTxt="HIGH%20BATTERY"
                   ;;
               RB) UPSstatTxt="REPLACE%20BATTERY"
                   ;;
               CHRG) UPSstatTxt="CHARGING"
                   ;;
               DISCHRG) UPSstatTxt="DISCHARGING"
                   ;;
               BYPASS) UPSstatTxt="BYPASS"
                   ;;
               CAL) UPSstatTxt="CALIBRATION"
                   ;;
               OFF) UPSstatTxt="OFF"
                   ;;
               OVER) UPSstatTxt="OVERLOAD"
                   ;;
               TRIM) UPSstatTxt="SMARTTRIM"
                   ;;
               BOOST) UPSstatTxt="BOOST"
                   ;;
               FSD) UPSstatTxt="FORCE%20SHUTDOWN"
                   ;;
               *) UPSstatTxt="STATUS%20UNKNOWN"
                   ;;
                esac
                # Send data
                curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_STATUS_IDX&nvalue=0&svalue=$UPSstatTxt"
                echo $UPSstatTxt
    # UPS Manufacturer
    UPSmanufacturer=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.1.2.0`
        TmpMfg1="${UPSmanufacturer%\"}"
        TmpMfg2="${TmpMfg1#\"}"
        TmpMfg3="${TmpMfg2// /%20}"
        UPSmanufacturerTxt=$TmpMfg3
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_MANUFACTURER_IDX&nvalue=0&svalue=$UPSmanufacturerTxt"
        echo $UPSmanufacturerTxt 
    # UPS Model
    UPSmodel=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.1.1.0`
        TmpMod1="${UPSmodel%\"}"
        TmpMod2="${TmpMod1#\"}"
        TmpMod3="${TmpMod2// /%20}"
        UPSmodelTxt=$TmpMod3
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_MODEL_IDX&nvalue=0&svalue=$UPSmodelTxt"
        echo $UPSmodelTxt 
else
        echo "NAS ON"
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=On"
 
        # Temperature HD1
        HDtemp1=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"
 
        # Temperature HD2
        HDtemp2=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"
 
        # Free space volume in Go
        HDUnit=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDTotal=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
 
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"
 
        # Free space volume in percent
        HDTotal=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDUsed=`snmpget -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
     	HDFreePerc=$((($HDUsed * 100) / $HDTotal))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"
 
	# CPU utilisation
        CpuUser=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	CpuSystem=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	CpuUse=$(($CpuUser + $CpuSystem))
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"
 
        # Free Memory Available in %
	MemTotal=`snmpget -v 2c -c $PASSWORD -O qv $NASIP .1.3.6.1.4.1.2021.4.5.0`
    MemTotalinMo=$(($MemTotal / 1024))	
	MemAvailable=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
	MemAvailableinMo=$(($MemAvailable / 1024))
	MemUsepercent=$((($MemAvailableinMo * 100) / MemTotalinMo))
        # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
 
    # UPS Charge value
    UPSchargevalue=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.3.1.1.0`
             # Send data
             curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_CHARGE_VALUE_IDX&nvalue=0&svalue=$UPSchargevalue"
 
    # UPS Status
    UPSstatus=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.2.1.0`
        TmpSts="${UPSstatus%\"}"
        UPSstatus="${TmpSts#\"}"
		echo $UPSstatus
           case $UPSstatus in
               OL) UPSstatTxt="ONLINE"
                   ;;
               OB) UPSstatTxt="ON%20BATTERY"
                   ;;
               LB) UPSstatTxt="LOW%20BATTERY"
                   ;;
               HB) UPSstatTxt="HIGH%20BATTERY"
                   ;;
               RB) UPSstatTxt="REPLACE%20BATTERY"
                   ;;
               CHRG) UPSstatTxt="CHARGING"
                   ;;
               DISCHRG) UPSstatTxt="DISCHARGING"
                   ;;
               BYPASS) UPSstatTxt="BYPASS"
                   ;;
               CAL) UPSstatTxt="CALIBRATION"
                   ;;
               OFF) UPSstatTxt="OFF"
                   ;;
               OVER) UPSstatTxt="OVERLOAD"
                   ;;
               TRIM) UPSstatTxt="SMARTTRIM"
                   ;;
               BOOST) UPSstatTxt="BOOST"
                   ;;
               FSD) UPSstatTxt="FORCE%20SHUTDOWN"
                   ;;
               *) UPSstatTxt="STATUS%20UNKNOWN"
                   ;;
                esac
                # Send data
                curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_STATUS_IDX&nvalue=0&svalue=$UPSstatTxt"
                echo $UPSstatTxt 
    # UPS Manufacturer
    UPSmanufacturer=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.1.2.0`
        TmpMfg1="${UPSmanufacturer%\"}"
        TmpMfg2="${TmpMfg1#\"}"
        TmpMfg3="${TmpMfg2// /%20}"
        UPSmanufacturerTxt=$TmpMfg3
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_MANUFACTURER_IDX&nvalue=0&svalue=$UPSmanufacturerTxt"
        echo $UPSmanufacturerTxt 
    # UPS Model
    UPSmodel=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.4.1.1.0`
        TmpMod1="${UPSmodel%\"}"
        TmpMod2="${TmpMod1#\"}"
        TmpMod3="${TmpMod2// /%20}"
        UPSmodelTxt=$TmpMod3
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_UPS_MODEL_IDX&nvalue=0&svalue=$UPSmodelTxt"
        echo $UPSmodelTxt   
      fi
 
 else
        curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
        if [ $? -eq 0 ] ; then
                echo "NAS already OFF"
                exit
        else
                echo "NAS OFF"
                # Send data
                curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=Off"
        fi
 fi

Re: HowTo: monitor Synology NAS

Posted: Wednesday 01 September 2021 8:10
by EddyG
For what purpose do you use 'UPSmanufacturer' and UPSmodel in Domoticz? Does that change overtime?

Re: HowTo: monitor Synology NAS

Posted: Wednesday 01 September 2021 21:46
by RobbieT1974
You are right, those (manufacturer and model) serve no purpose at all.

Looking back at it, the only thing the ups data provides for me is info in the Domoticz screen.
For switching off the server when the ups shuts down I use nut.

Could have used nut to get the ups info in Domoticz as well.

Re: HowTo: monitor Synology NAS

Posted: Tuesday 07 May 2024 18:30
by averter
This setup works fairly well and many of the tips written in the forum are useful. However, the disk temperatures are oscillating between 0 and 31ºC for some reason
chart.png
chart.png (277.24 KiB) Viewed 2129 times
I'm on DSM7 and have been using the following script

Code: Select all

#!/bin/bash

# Settings

NASIP="192.168.1.150"            # NAS IP Address
PASSWORD="xxxxxxxxxxxxxxxxxxxxx" # SNMP Password
DOMO_IP="192.168.1.151"          # Domoticz IP Address
DOMO_PORT="8080"		# Domoticz Port
NAS_IDX="60"			# NAS Switch IDX
NAS_HD1_TEMP_IDX="61"		# NAS HD1 Temp IDX
NAS_HD2_TEMP_IDX="62"		# NAS HD2 Temp IDX
NAS_HD_SPACE_IDX="66"		# NAS HD Space IDX in Go
NAS_HD_SPACE_PERC_IDX="65"	# NAS HD Space IDX in %
NAS_CPU_IDX="63"		# NAS CPU IDX
NAS_MEM_IDX="64"		# NAS MEM IDX


# Check if NAS in online 

PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`

echo $PINGTIME
if expr "$PINGTIME" '>' 0
then
  curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null

      if [ $? -eq 0 ] ; then
       echo "NAS already ON"
      
       # Temperature HD1
       HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"

       # Temperature HD2
       HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"

       # Free space volume in Go
       HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))

       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"

       # Free space volume in percent
       HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
    	HDFreePerc=$((($HDUsed * 100) / $HDTotal))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"

	# CPU utilisation
       CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	CpuUse=$(($CpuUser + $CpuSystem))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"

       # Free Memory Available in %
	MemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
       MemAvailableinMo=$(($MemAvailable / 1024))
	MemUsepercent=$((($MemAvailableinMo * 100) / 1024))
       # Send data
      curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
     
else
       echo "NAS ON"
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=On"

       # Temperature HD1
       HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"

       # Temperature HD2
       HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"

       # Free space volume in Go
       HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))

       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"

       # Free space volume in percent
       HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
    	HDFreePerc=$((($HDUsed * 100) / $HDTotal))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"

	# CPU utilisation
       CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
	CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
	CpuUse=$(($CpuUser + $CpuSystem))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"

       # Free Memory Available in %
	MemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
       MemAvailableinMo=$(($MemAvailable / 1024))
	MemUsepercent=$((($MemAvailableinMo * 100) / 1024))
       # Send data
      curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"

     fi

else
       curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
       if [ $? -eq 0 ] ; then
               echo "NAS already OFF"
               exit
       else
               echo "NAS OFF"
               # Send data
               curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=Off"
       fi
fi
Does anyone has stumbled upon the same issue? Thanks in advance.

Re: HowTo: monitor Synology NAS

Posted: Tuesday 28 May 2024 7:12
by averter
curious wrote: Friday 27 January 2017 21:57 When I run the script I mostly get the message Timeout : no response
When pinging the ip-adres I get an answer within about .420 ms

Besides that I get an error message :
line 44: ( - ) * / 1024 / 1024 / 1024: syntax error: operand expected (error token is ") * / 1024 / 1024 / 1024")
But that can be caused by the time outs ?

The script in line 43 and 44 is :

Code: Select all

 HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.41`  # Change OID to .38 on DSM 5.1 or .41 on DSM 6.0+
        HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
I can't see anything wrong, the only thing I changes is .36 to .41
I have a synology 213J running on DSM 6.0+

NB: When running a single command like :
HDUsed=`snmpget -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.41`
I sometimes get a result but not often (time out)
My issue is exactly the same as yours. I've changed my cronjob to output the log

Code: Select all

*/5 * * * * /home/pi/domoticz/scripts/nas.sh 1> /dev/null 2> /home/pi/some_job.err
and every 25 minutes or so the NAS makes some unusual noise, the temperature values return zero, and the contents of the some_job.err file becomes

Code: Select all

Timeout: No Response from 192.168.1.5
Timeout: No Response from 192.168.1.5
Timeout: No Response from 192.168.1.5
Timeout: No Response from 192.168.1.5
/home/pi/domoticz/scripts/nas.sh: line 44: ( - 201822598) *  / 1024 / 1024 / 1024: syntax error: operand expected (error token is "/ 1024 / 1024 / 1024")
NOTE: the code runs fine by hand and most of times. It is an occasional, but rather predictable (every 25 minutes) event, so maybe the way to address this is with a conditional statement? I've also run some tests and the timelapse of pinging does not give it away either: it is fairly constant at 600ms.
My DSM is version 7.2 and the nas.sh code that I'm using is

Code: Select all

#!/bin/bash

# Settings

NASIP="192.168.1.5"             # NAS IP Address
PASSWORD="????????????????????" # SNMP Password
DOMO_IP="192.168.1.162"         # Domoticz IP Address
DOMO_PORT="8080"		# Domoticz Port
NAS_IDX="60"			# NAS Switch IDX
NAS_HD1_TEMP_IDX="61"		# NAS HD1 Temp IDX
NAS_HD2_TEMP_IDX="62"		# NAS HD2 Temp IDX
NAS_HD_SPACE_IDX="66"		# NAS HD Space IDX in Go
NAS_HD_SPACE_PERC_IDX="65"	# NAS HD Space IDX in %
NAS_CPU_IDX="63"		# NAS CPU IDX
NAS_MEM_IDX="64"		# NAS MEM IDX


# Check if NAS in online 

PINGTIME=`ping -c 1 -q $NASIP | awk -F"/" '{print $5}' | xargs`

echo $PINGTIME
if expr "$PINGTIME" '>' 0
then
    curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=getdevices&rid=$NAS_IDX" | grep "Status" | grep "On" > /dev/null
    
    if [ $? -eq 0 ] ; then
       echo "NAS already ON"
	
       # Temperature HD1
       HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"

       # Temperature HD2
       HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"

       # Free space volume in Go
       HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))

       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"

       # Free space volume in percent
       HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFreePerc=$((($HDUsed * 100) / $HDTotal))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"

	# CPU utilisation
       CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
       CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
       CpuUse=$(($CpuUser + $CpuSystem))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"

       # Free Memory Available in %
       MemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
       MemAvailableinMo=$(($MemAvailable / 1024))
       MemUsepercent=$((($MemAvailableinMo * 100) / 1024))
       # Send data
      curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"
     
else
       echo "NAS ON"
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=On"

       # Temperature HD1
       HDtemp1=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.0`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD1_TEMP_IDX&nvalue=0&svalue=$HDtemp1"

       # Temperature HD2
       HDtemp2=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.6574.2.1.1.6.1`
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD2_TEMP_IDX&nvalue=0&svalue=$HDtemp2"

       # Free space volume in Go
       HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))

       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_IDX&nvalue=0&svalue=$HDFree"

       # Free space volume in percent
       HDTotal=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -c $PASSWORD -v2c -O qv $NASIP .1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFreePerc=$((($HDUsed * 100) / $HDTotal))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_HD_SPACE_PERC_IDX&nvalue=0&svalue=$HDFreePerc"

       # CPU utilisation
       CpuUser=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.9.0`
       CpuSystem=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.11.10.0`
       CpuUse=$(($CpuUser + $CpuSystem))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_CPU_IDX&nvalue=0&svalue=$CpuUse"

       # Free Memory Available in %
       MemAvailable=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.4.1.2021.4.6.0`
       MemAvailableinMo=$(($MemAvailable / 1024))
       MemUsepercent=$((($MemAvailableinMo * 100) / 1024))
       # Send data
       curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=udevice&idx=$NAS_MEM_IDX&nvalue=0&svalue=$MemUsepercent"

     fi

else
    curl -s "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=getdevices&rid=$NAS_IDX" | grep "Status" | grep "Off" > /dev/null
    if [ $? -eq 0 ] ; then
        echo "NAS already OFF"
        exit
    else
        echo "NAS OFF"
        # Send data
        curl -s -i -H "Accept: application/json" "http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&param=switchlight&idx=$NAS_IDX&switchcmd=Off"
    fi
fi

Re: HowTo: monitor Synology NAS

Posted: Tuesday 28 May 2024 11:38
by averter
I've made a few extra tests and based on this webpage
https://www.baeldung.com/linux/snmpwalk ... out-values
one can set timeout values to improve the success rate. After a few tests I was able to avoid any timeout errors, by setting the interval at 5 seconds with 3 retries. However, the disk temperature values still return zero and the NAS does some clicking noise at every 25 minutes. If I comment out the snmpwalk commands for temperature this does not happen anymore, and I've confirmed that it happens for any of my two disks. I've checked that my commands are correct using

Code: Select all

snmpwalk -v 2c -c"mypassword" 192.168.1.5 1.3.6.1.4.1.6574.2.1.1.6
which returns

Code: Select all

SYNOLOGY-DISK-MIB::diskTemperature.0 = INTEGER: 30
SYNOLOGY-DISK-MIB::diskTemperature.1 = INTEGER: 31
and so I am not sure what else to do...(head scratching). There is a possibly related post in synology's forum
https://community.synology.com/enu/forum/17/post/82156

Re: HowTo: monitor Synology NAS

Posted: Wednesday 18 September 2024 19:08
by Sjaak
Hi, I used the monitor script for years to monitor my NAS disk usage, but I recently upgraded to DSM 7.1.1 and now it doesn't work any more.

Does anyone know the correct OID for DSM 7.1.1?

Code: Select all

       # Free space volume in Go
       HDUnit=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.4.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDTotal=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.5.55` # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDUsed=`snmpwalk -v 2c -c $PASSWORD -O qv $NASIP 1.3.6.1.2.1.25.2.3.1.6.55`  # Change OID to .38 on DSM 5.1, .41 on DSM 6.0, 42 on DSM 6.1, 44 for DSM 6.2.3
       HDFree=$((($HDTotal - $HDUsed) * $HDUnit / 1024 / 1024 / 1024))
.55 also doesn't work

Re: HowTo: monitor Synology NAS

Posted: Wednesday 18 September 2024 19:38
by waltervl
Perhaps this tip will help you to find the correct OID https://domoticz.com/forum/viewtopic.ph ... 78#p279178

Re: HowTo: monitor Synology NAS

Posted: Monday 23 September 2024 14:09
by Sjaak
Thanx, found it:

Code: Select all

pi@domoticz:~/domoticz/scripts $ snmpget -c xxxxxx -v2c -O qv xxx.xxx.xxx.xxx 1.3.6.1.2.1.25.2.3.1.3.48
"/volume1"
With 48 everything works again!