
import RPi.GPIO as io
import requests
import sys

class Switch(object):
    def __init__(self, **kwargs):
        self.pin = kwargs["pin"]
        io.setup(self.pin, io.IN)

    @property
    def is_on(self):
      return io.input(self.pin)


PINS = (8, 16, 18)
switches = set()

def has_free():
    global switches
    return not all([s.is_on for s in switches])

def call_api(is_on):
    r = requests.post("SERVER_ADDRESS",
                     params={"is_free": "yes" if is_on else "no"})

if __name__ == "__main__":
    io.setmode(io.BOARD)
    for pin in PINS:
        switches.add(Switch(pin=pin))
    try:
        previous_state = has_free()
        while True:
            state = has_free()
            if state is not previous_state:
                call_api(state)
            previous_state = state
    except KeyboardInterrupt:
        pass


import RPi.GPIO as io
import sys

class Switch(object):
    def __init__(self, **kwargs):
        self.pin = kwargs["pin"]
        io.setup(self.pin, io.IN)

    @property
    def is_on(self):
      return io.input(self.pin)


PINS = (8, 16, 18)
server_url = sys.argv[1]
switches = set()

def has_free():
    global switches
    return not all([s.is_on for s in switches])

def call_api(url, is_on):
    r = requests.post(url, params={"is_free": "yes" if is_on else "no"})

if __name__ == "__main__":
    io.setmode(io.BOARD)
    for pin in PINS:
        switches.add(Switch(pin=pin))
    try:
        previous_state = has_free()
        while True:
            state = has_free()
            if state is not previous_state:
                call_api(server_url, state)
            previous_state = state
    except KeyboardInterrupt:
        pass

Set server URL with command line argument
Set server URL with command line argument

  
  import RPi.GPIO as io
- import requests
  import sys
  
  class Switch(object):
      def __init__(self, **kwargs):
          self.pin = kwargs["pin"]
          io.setup(self.pin, io.IN)
  
      @property
      def is_on(self):
        return io.input(self.pin)
  
  
  PINS = (8, 16, 18)
+ server_url = sys.argv[1]
  switches = set()
  
  def has_free():
      global switches
      return not all([s.is_on for s in switches])
  
- def call_api(is_on):
+ def call_api(url, is_on):
+     r = requests.post(url, params={"is_free": "yes" if is_on else "no"})
-     r = requests.post("SERVER_ADDRESS",
-                      params={"is_free": "yes" if is_on else "no"})
  
  if __name__ == "__main__":
      io.setmode(io.BOARD)
      for pin in PINS:
          switches.add(Switch(pin=pin))
      try:
          previous_state = has_free()
          while True:
              state = has_free()
              if state is not previous_state:
-                 call_api(state)
+                 call_api(server_url, state)
              previous_state = state
      except KeyboardInterrupt:
          pass
  
Set server URL with command line argument
## Code Before:

import RPi.GPIO as io
import requests
import sys

class Switch(object):
    def __init__(self, **kwargs):
        self.pin = kwargs["pin"]
        io.setup(self.pin, io.IN)

    @property
    def is_on(self):
      return io.input(self.pin)


PINS = (8, 16, 18)
switches = set()

def has_free():
    global switches
    return not all([s.is_on for s in switches])

def call_api(is_on):
    r = requests.post("SERVER_ADDRESS",
                     params={"is_free": "yes" if is_on else "no"})

if __name__ == "__main__":
    io.setmode(io.BOARD)
    for pin in PINS:
        switches.add(Switch(pin=pin))
    try:
        previous_state = has_free()
        while True:
            state = has_free()
            if state is not previous_state:
                call_api(state)
            previous_state = state
    except KeyboardInterrupt:
        pass

## Instruction:
Set server URL with command line argument
## Code After:

import RPi.GPIO as io
import sys

class Switch(object):
    def __init__(self, **kwargs):
        self.pin = kwargs["pin"]
        io.setup(self.pin, io.IN)

    @property
    def is_on(self):
      return io.input(self.pin)


PINS = (8, 16, 18)
server_url = sys.argv[1]
switches = set()

def has_free():
    global switches
    return not all([s.is_on for s in switches])

def call_api(url, is_on):
    r = requests.post(url, params={"is_free": "yes" if is_on else "no"})

if __name__ == "__main__":
    io.setmode(io.BOARD)
    for pin in PINS:
        switches.add(Switch(pin=pin))
    try:
        previous_state = has_free()
        while True:
            state = has_free()
            if state is not previous_state:
                call_api(server_url, state)
            previous_state = state
    except KeyboardInterrupt:
        pass
