diff --git a/rd_unb2c.py b/rd_unb2c.py
index bbb3992dd488b4eee94d781923f5b48fff3fd467..8f450498cfcb64dd7959b68f2d91ab8572409955 100644
--- a/rd_unb2c.py
+++ b/rd_unb2c.py
@@ -16,9 +16,10 @@ from UniBoard2_I2C import *
 I2CBUSNR=3
 
 class c_node:
-    def __int__(self, number):
+    def __init__(self, number):
         self.node_number = number
         self.pols=[]
+        self.set_i2c_switches()
         for pol in list(LOC_POLS.keys()):
             self.pols.append(c_pol(pol))
         self.ddr=[]
@@ -29,6 +30,7 @@ class c_node:
                 self.qsfp.append(c_qsfp(qsfp_cnt))
 
     def read_all(self):
+        self.set_i2c_switches()
         for pol in self.pols:
             pol.read_all()
         for ddr in self.ddr:
@@ -63,35 +65,48 @@ class c_qsfp:
         self.temp = 0
         self.volt = 0
         self.status = False
+        self.select_qsfp()
+        self.qsfp_cage = I2C(QSFP_I2C_ADDR)
+        self.qsfp_cage.bus = I2CBUSNR
 
     def select_qsfp(self):
         node_switch = I2C(NODE_I2C_SWITCH)
         node_switch.bus = I2CBUSNR
         ret_ack = node_switch.write_bytes(0x0, QSFP_PORT[self.port])
         if ret_ack < 1:
-            print("Node I2C switch not found")
-            self.status = True
+#           print("Node I2C switch not found")
+            self.status = False 
         else:
-            self.status = False
+            self.status = True
 
-    def read_temp(selfs):
-        ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_TEMP, 2)
-        if ret_ack < 1 :
+    def read_temp(self):
+        self.select_qsfp()
+        print("read QSFP")
+        ret_ack, raw_ret = self.qsfp_cage.read_bytes(QSFP_TEMP, 2)
+        if (ret_ack < 1) | (raw_ret[:2]=='ff'):
+#            stri = "No QSFP found in port {0}".format(self.port)
+#            print(stri)
             self.status=False
         else:
             ret_value = []
             ret_value.append(int(raw_ret[:2], 16))
             ret_value.append(int(raw_ret[2:], 16))
             self.temp = (ret_value[0] * 256 + ret_value[1]) / 256
+            self.status=True
 
-    def read_volt(selfs):
-        ret_ack, raw_ret = QSFP_cage.read_bytes(QSFP_VOLT, 2)
-        if ret_ack < 1 :
+    def read_volt(self):
+        self.select_qsfp()
+        ret_ack, raw_ret = self.qsfp_cage.read_bytes(QSFP_VOLT, 2)
+        if (ret_ack < 1) | (raw_ret[:2]=='ff') :
+            stri = "No QSFP found in port {0}".format(self.port)
+            print(stri)
             self.status=False
         else:
+            ret_value=[]
             ret_value.append(int(raw_ret[:2], 16))
             ret_value.append(int(raw_ret[2:], 16))
             self.volt = (ret_value[0] * 256 + ret_value[1]) * 0.0001
+            self.status=True
 
     def read_all(self):
         self.read_temp()
@@ -99,13 +114,14 @@ class c_qsfp:
 
     def print_status(self):
         if self.status:
-            stri = "Slot {0} : QSFP Temperature QSFP  {1:3.2f} gr. C  Voltage {2:3.2f} V".format(self.port self.temp, self.volt)
+            stri = "Slot {0} : QSFP Temperature QSFP  {1:3.2f} gr. C  Voltage {2:3.2f} V".format(self.port, self.temp, self.volt)
             print(stri)
 
 
 class c_ddr:
     def __init__(self, bank):
         self.bank = bank
+        self.status=False
         if self.bank == 0:
             self.ddr_dev = I2C(MB_I_TEMP_I2C_ADDR)
         else:
@@ -125,12 +141,15 @@ class c_ddr:
     def read_temp(self):
         ret_ack, raw_ret = self.ddr_dev.read_bytes(MB_TEMP_REG, 2)
         if ret_ack < 1:
-            stri = "No DDR moduel in slot {0} node  {1}".format(module, node_nr)
+#           stri = "No DDR moduel in slot {0}".format(self.bank)
+#           print(stri)
+            self.status=False
         else:
             ret_value = []
             ret_value.append(int(raw_ret[:2], 16))
             ret_value.append(int(raw_ret[2:], 16))
-            temp = (((ret_value[0] & 0x1F) * 0x100) + (ret_value[1] & 0xFC)) * 0.0625
+            self.temp = (((ret_value[0] & 0x1F) * 0x100) + (ret_value[1] & 0xFC)) * 0.0625
+            self.status=True
 
     def read_all(self):
         self.set_i2c_switch()
@@ -138,7 +157,7 @@ class c_ddr:
 
     def print_status(self):
         if self.status:
-            stri = "Temperature DDR4 in slot {0} is {2:3.2f} C".format(self.bank, temp)
+            stri = "Temperature DDR4 in slot {0} is {1:3.2f} C".format(self.bank, self.temp)
             print(stri)
 
 
@@ -390,7 +409,7 @@ if 0:
     for node_cnt in range(4):
         for qsfp_cnt in range(6):
             read_qsfp(node_nr = node_cnt, module=qsfp_cnt)
-else:
+#else:
     for node_cnt in range(4):
         read_pol(node_cnt, LOC_POWER_CORE)
 #    read_pol(-1,0x01)
@@ -407,9 +426,10 @@ else:
     if ret_ack < 1:
         print("Node I2C switch not found")
 
-node = c_node(0)
-node.read_all()
-node.print_status()
+for cnt in range(2):
+    node = c_node(cnt)
+    node.read_all()
+    node.print_status()
 #for pol in list(LOC_POLS.keys()):
 #    polletje = c_pol(pol)
 #    polletje.print_status()