diff --git a/roles/collectd/templates/cuda_collectd.py.j2 b/roles/collectd/templates/cuda_collectd.py.j2
index e004238c170cdfea1f2fea45f6d93f2456c71360..a0b9411babf9cb49c3feacefb6dd3b7a5ea8b194 100644
--- a/roles/collectd/templates/cuda_collectd.py.j2
+++ b/roles/collectd/templates/cuda_collectd.py.j2
@@ -1,11 +1,16 @@
 #!/usr/bin/env python
 
-import collectd
+try:
+    import collectd
+    from collectd import Values
+except:
+    from fakeCollectd import Values
 import subprocess
 import xml.etree.ElementTree as ET
 
+
 def read(data=None):
-        vl = collectd.Values(type='gauge')
+        vl = Values(type='gauge')
         vl.plugin = 'cuda'
 
         out = subprocess.check_output(['nvidia-smi', '-q', '-x'])
@@ -30,6 +35,18 @@ def read(data=None):
                             values=[1e6 * float(gpu.find('utilization/gpu_util').text.split()[0])])
                 except:
                     pass
-
-collectd.register_read(read)
+                try:
+                    vl.dispatch(type='gauge', type_instance='power_state',
+                            values=[int(gpu.find('power_readings/power_state').text.split()[0][1:])])
+                except:
+                    pass
+                try:
+                    vl.dispatch(type='gauge', type_instance='power_draw',
+                            values=[float(gpu.find('power_readings/power_draw').text.split()[0])])
+                except:
+                    pass
+try:
+    collectd.register_read(read)
+except:
+    readtest()