Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ZoneController:
- def __init__(self, name, number, description, gpio, enabled, running):
- self.zone_name = name
- self.zone_number = number
- self.description = description
- self.gpio = gpio
- self.enabled = enabled
- self.running = running
- GPIO.setup(self.gpio, GPIO.OUT)
- @classmethod
- def read_config(cls, zone_name):
- with engine.begin() as conn:
- stmt = select([zones]).where(zones.c.zone_name.in_(zone_name))
- return [
- cls(
- name=row[zones.c.zone_name],
- number=row[zones.c.zone_number],
- description=row[zones.c.description],
- gpio=row[zones.c.gpio],
- enabled=row[zones.c.enabled],
- running=row[zones.c.running],
- )
- for row in conn.execute(stmt).fetchall()
- ]
- def run(self):
- if self.enabled:
- if self.running:
- print(f'Zone {self.zone_number} ({self.zone_name}) is already running.')
- else:
- self.running = True
- with engine.begin() as conn:
- conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.running: True}))
- conn.execute(zones_currently_running.update().values({zones_currently_running.c.currently_running: True}))
- GPIO.output(self.gpio, True)
- print(f'Zone {self.zone_number} ({self.zone_name}) is now RUNNING.')
- else:
- print(f'ERROR: Zone {self.zone_number} ({self.zone_name}) is DISABLED. Please enable it first.')
- def stop(self):
- if self.enabled:
- if self.running:
- self.running = False
- with engine.begin() as conn:
- conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.running: False}))
- conn.execute(zones_currently_running.update().values({zones_currently_running.c.currently_running: False}))
- GPIO.output(self.gpio, False)
- print(f'Zone {self.zone_number} ({self.zone_name}) is now STOPPED.')
- else:
- print(f'Zone {self.zone_number} ({self.zone_name}) is not currently running.')
- else:
- print(f'ERROR: Zone {self.zone_number} ({self.zone_name}) is DISABLED. Please enable it first.')
- def enable(self):
- if self.enabled:
- print(f'Zone {self.zone_number} ({self.zone_name}) is already enabled.')
- else:
- self.enabled = True
- with engine.begin() as conn:
- conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.enabled: True}))
- print(f'Zone {self.zone_number} ({self.zone_name}) has been enabled.')
- def disable(self):
- if self.enabled:
- if self.running:
- print(f'Zone {self.zone_number} ({self.zone_name}) is currently running.')
- print(f'Shutting off Zone {self.zone_number} ({self.zone_name}) before disabling.')
- self.stop()
- self.enabled = False
- with engine.begin() as conn:
- conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.enabled: False}))
- print(f'Zone {self.zone_number} ({self.zone_name}) has been disbled.')
- else:
- print(f'Zone {self.zone_number} ({self.zone_name}) is already disabled.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement