|
|
- try:
- from adafruit_shell import Shell
- except ImportError:
- raise RuntimeError("The library 'adafruit_shell' was not found. To install, try typing: sudo pip3 install adafruit-python-shell")
-
- shell = Shell()
- shell.group = 'ADAFRUIT'
-
- def main():
- shell.clear()
- print("""This script will install Adafruit
- fan service, which will turn on an
- external fan controlled by a given pin
-
- Operations performed include:
- - In /boot/config.txt, enable camera
- - apt-get update
- - Install Python libraries:
- picamera, pygame, PIL
- - Downgrade SDL library for pygame
- touch compatibility
- - Download Dropbox Updater and
- Adafruit Pi Cam software
-
- Run time 1+ minutes. Reboot not required.
-
- """)
-
- if not shell.argument_exists('y'):
- if not shell.prompt("CONTINUE?", default='n'):
- print("Canceled.")
- shell.exit()
- print("Continuing...")
- # check init system (technique borrowed from raspi-config):
- shell.group = 'FAN'
- shell.info('Checking init system...')
- if shell.run_command("which systemctl", True) and shell.run_command("systemctl | grep '\-\.mount'", True):
- print("Found systemd, OK!")
- elif os.path.isfile("/etc/init.d/cron") and not os.path.islink("/etc/init.d/cron"):
- shell.bail("Found sysvinit, but we require systemd")
- else:
- shell.bail("Unrecognised init system")
-
- shell.info('Adding adafruit_fan.service')
- contents = """[Unit]
- Description=Fan service for some Adafruit boards
- After=network.target
-
- [Service]
- Type=oneshot
- ExecStartPre=-/bin/bash -c 'echo 4 >/sys/class/gpio/export'
- ExecStartPre=/bin/bash -c 'echo out >/sys/class/gpio/gpio4/direction'
- ExecStart=/bin/bash -c 'echo 1 >/sys/class/gpio/gpio4/value'
-
- RemainAfterExit=true
- ExecStop=/bin/bash -c 'echo 0 >/sys/class/gpio/gpio4/value'
- StandardOutput=journal
-
- [Install]
- WantedBy=multi-user.target"""
- shell.write_text_file("/etc/systemd/system/adafruit_fan.service", contents, append=False)
-
- shell.info('Enabling adafruit_fan.service')
- shell.run_command("sudo systemctl enable adafruit_fan.service")
- shell.run_command("sudo systemctl start adafruit_fan.service")
- shell.info('Done!')
- print("You can stop the fan service with 'sudo systemctl stop adafruit_fan.service'")
- print("You can start the fan service with 'sudo systemctl start adafruit_fan.service'")
-
-
- # Main function
- if __name__ == "__main__":
- shell.require_root()
- main()
|