Checking sensors in an environment
The idea with objects is they maintain the data that they own. Try to avoid having the object hold onto other data just because it uses it. This makes later refactoring harder.
Below is a sketch of what the process chain might look like.

class Sensor(object):
    def process(self, conditions):
        if not self.is_respecting_conditions(conditions):
            raise Exception("Fill me in properly")

        self.apply(conditions)

class Module(object):
    def process(self):
        for s in self.sensors:
            try:
                s.process(self.conditions)
            except:  # Handle actual exception here
                pass  # whatever work is needed

class Environment(object):
    def process(self):
        for m in self.modules:
            m.process()


This assumes that the conditions are per module. If they are per Environment then you could would add the condition parameter to the process method of the Module object.