Hallo,
ich habe folgendes Problem:
innerhalb einer Logik habe ich eine Funktion(siehe unten), die eine Lüfter Drehzahl über eine sh-Objekt prüft. Ich habe gemerkt dass mir das sh Objekt in Funktionen nicht zu Verfügung steht. Aus diesem Grund übergebe ich es an die Funktion.
Der Funktionsaufruf sieht wie folgt aus:
Als zweiter Parameter wird der gewünschte Wert übergeben.
Der dritte Parameter ist das sh-Objekt.
Die Funktion prüft dann ob die Lüfter bereits in der gewünschten Stufe laufen.
Falls das nicht so ist, wird der neue Wert an das entsprechende Item gesendet.
Die Logausgabe an dieser Stelle sieht wie folgt aus:
Trotz allem wird der Wert nicht gesetzt.
Kann es sein dass das Konstrukt mit der Funktion und der Übergabe des sh-Objekts nicht zulässig ist ?
Danke vorab.
ich habe folgendes Problem:
innerhalb einer Logik habe ich eine Funktion(siehe unten), die eine Lüfter Drehzahl über eine sh-Objekt prüft. Ich habe gemerkt dass mir das sh Objekt in Funktionen nicht zu Verfügung steht. Aus diesem Grund übergebe ich es an die Funktion.
Der Funktionsaufruf sieht wie folgt aus:
if change_ventilation_status(floor['floor'], 19, sh):
Der dritte Parameter ist das sh-Objekt.
Die Funktion prüft dann ob die Lüfter bereits in der gewünschten Stufe laufen.
Falls das nicht so ist, wird der neue Wert an das entsprechende Item gesendet.
Code:
# set's a new value for ventilation, but only if neccessary def change_ventilation_status(floor, value_to_set, sh): # get the current ventilation status for this floor current_value = eval('sh.' + floor + '_floor.ventilation_status' + '()' ) logger.info('current value on ' + floor + ' floor: ' + str(current_value)) if current_value == value_to_set: logger.info('No action neccessary on ' + floor + ' floor') return False else: if value_to_set == 19: text='stop' elif value_to_set == 45: text='heat recovery low' elif value_to_set == 130: text='heat recovery high' elif value_to_set == 253: text='open circuit high' elif value_to_set == 0: text='manual' else: text='NOT DEFINED' logger.info('setting new ventilation status on ' + floor + ' floor: ' + text) logger.info('sh.' + floor + '_floor.ventilation_control' + '(' + str(value_to_set) + ')') exec('sh.' + floor + '_floor.ventilation_control' + '(' + str(value_to_set) + ')') return True
Die Logausgabe an dieser Stelle sieht wie folgt aus:
Code:
2014-11-24 17:21:31 INFO ventilation_automation sh.second_floor.ventilation_control(45)
Kann es sein dass das Konstrukt mit der Funktion und der Übergabe des sh-Objekts nicht zulässig ist ?
Danke vorab.
Kommentar