Advertisement
MD500_Pilot

Untitled

Apr 17th, 2020
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.56 KB | None | 0 0
  1. class ZoneController:
  2.     def __init__(self, name, number, description, gpio, enabled, running):
  3.         self.zone_name = name
  4.         self.zone_number = number
  5.         self.description = description
  6.         self.gpio = gpio
  7.         self.enabled = enabled
  8.         self.running = running
  9.         GPIO.setup(self.gpio, GPIO.OUT)
  10.  
  11.     @classmethod
  12.     def read_config(cls, zone_name):
  13.         with engine.begin() as conn:
  14.             stmt = select([zones]).where(zones.c.zone_name.in_(zone_name))
  15.             return [
  16.                 cls(
  17.                     name=row[zones.c.zone_name],
  18.                     number=row[zones.c.zone_number],
  19.                     description=row[zones.c.description],
  20.                     gpio=row[zones.c.gpio],
  21.                     enabled=row[zones.c.enabled],
  22.                     running=row[zones.c.running],
  23.                 )
  24.                 for row in conn.execute(stmt).fetchall()
  25.             ]
  26.  
  27.     def run(self):
  28.         if self.enabled:
  29.             if self.running:
  30.                 print(f'Zone {self.zone_number} ({self.zone_name}) is already running.')
  31.             else:
  32.                 self.running = True
  33.                 with engine.begin() as conn:
  34.                     conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.running: True}))
  35.                     conn.execute(zones_currently_running.update().values({zones_currently_running.c.currently_running: True}))
  36.                 GPIO.output(self.gpio, True)
  37.                 print(f'Zone {self.zone_number} ({self.zone_name}) is now RUNNING.')
  38.         else:
  39.             print(f'ERROR: Zone {self.zone_number} ({self.zone_name}) is DISABLED. Please enable it first.')
  40.  
  41.     def stop(self):
  42.         if self.enabled:
  43.             if self.running:
  44.                 self.running = False
  45.                 with engine.begin() as conn:
  46.                     conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.running: False}))
  47.                     conn.execute(zones_currently_running.update().values({zones_currently_running.c.currently_running: False}))
  48.                 GPIO.output(self.gpio, False)
  49.                 print(f'Zone {self.zone_number} ({self.zone_name}) is now STOPPED.')
  50.             else:
  51.                 print(f'Zone {self.zone_number} ({self.zone_name}) is not currently running.')
  52.         else:
  53.             print(f'ERROR: Zone {self.zone_number} ({self.zone_name}) is DISABLED. Please enable it first.')
  54.  
  55.     def enable(self):
  56.         if self.enabled:
  57.             print(f'Zone {self.zone_number} ({self.zone_name}) is already enabled.')
  58.         else:
  59.             self.enabled = True
  60.             with engine.begin() as conn:
  61.                 conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.enabled: True}))
  62.             print(f'Zone {self.zone_number} ({self.zone_name}) has been enabled.')
  63.  
  64.     def disable(self):
  65.         if self.enabled:
  66.             if self.running:
  67.                 print(f'Zone {self.zone_number} ({self.zone_name}) is currently running.')
  68.                 print(f'Shutting off Zone {self.zone_number} ({self.zone_name}) before disabling.')
  69.                 self.stop()
  70.             self.enabled = False
  71.             with engine.begin() as conn:
  72.                 conn.execute(zones.update().where(zones.c.zone_name == self.zone_name).values({zones.c.enabled: False}))
  73.             print(f'Zone {self.zone_number} ({self.zone_name}) has been disbled.')
  74.         else:
  75.             print(f'Zone {self.zone_number} ({self.zone_name}) is already disabled.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement