Skip to content

Commit

Permalink
shutdown on pin
Browse files Browse the repository at this point in the history
  • Loading branch information
Boris committed Nov 12, 2024
1 parent da18f75 commit 80415a1
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 2 deletions.
1 change: 1 addition & 0 deletions default.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ fire_servo_range = [65, 150] #90 is onder de buis
fire_delay = 1.0
stepper_range = [0, 300] # tweak this not sure about the range, was not used in old code
communicator = "raw"
shutdown_pin = 17

[gcode]
port = "COM8"
Expand Down
27 changes: 26 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import argparse
import time

from communicator.communicator_mock import MockCommunicator
from communicator.communicator_serial import SerialCommunicator
from controller.sjoel_controller_gcode import SjoelControllerGcode
from server.sjoel_server_socket import SjoelServerSocket
from settings.device_settings import CommunicatorType
from settings.device_settings import CommunicatorType, DeviceSettings
from settings.hosting_settings import HostingSettings


Expand Down Expand Up @@ -59,10 +60,34 @@ def create_app(config: HostingSettings | None = None):
else:
raise ValueError("Invalid communicator type")

if device_settings.shutdown_pin is not None:
import pigpio
pi = pigpio.pi()
pi.set_mode(device_settings.shutdown_pin, pigpio.INPUT)
pi.set_pull_up_down(device_settings.shutdown_pin, pigpio.PUD_DOWN)
pi.callback(device_settings.shutdown_pin, pigpio.RISING_EDGE, lambda: shutdown(device_settings))

# Create server
return SjoelServerSocket(controller).init()


def shutdown(device_settings: DeviceSettings):
print("Shutting down")

import os
os.system("sudo shutdown -h now")

if device_settings.shutdown_led_pin is not None:
import pigpio
pi = pigpio.pi()
pi.set_mode(device_settings.shutdown_led_pin, pigpio.OUTPUT)
while True:
pi.write(device_settings.shutdown_led_pin, 1)
time.sleep(0.1)
pi.write(device_settings.shutdown_led_pin, 0)
time.sleep(0.1)


if __name__ == '__main__':
# load settings
hosting_settings = parse_hosting_settings()
Expand Down
3 changes: 2 additions & 1 deletion settings/device_settings.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import enum
from typing import Literal

import toml
from pydantic import BaseModel
Expand All @@ -18,6 +17,8 @@ class DeviceSettings(BaseModel):
fire_delay: float
stepper_range: tuple[int, int]
communicator: CommunicatorType
shutdown_pin: int | None = None
shutdown_led_pin: int | None = None
gcode: GcodeSettings | None = None
raw: RawControlsSettings | None = None

Expand Down

0 comments on commit 80415a1

Please sign in to comment.