Делаем кнопку stop для octoprint на Raspberry pi
Всем привет!
Чтобы оперативно остановить текущую печать решил сделать физическую кнопку остановки. Действие аналогично кнопке Cancel веб-интерфейса.
Берем обычную тактовую кнопку и резистор 1кОм. На тестах выяснилось, что цифровой вход необходимо подключить на землю через керамический конденсатор примерно на 0.1мкФ , иначе могут идти ложные срабатывания кнопки от помех.
Делал навесной пайкой:
Подключаем к малинке. В /home/pi/scripts/button_stop.py создаем код обработки кнопки и остановки печати через API октопринта:
import RPi.GPIO as GPIO
import requests
import sys
import json
import signal
import time
apikey="Ваш апикей"
host="127.0.0.1"
port=5000
pin_button=20 # пин кнопки
class OctoprintAPI:
def __init__(self, address, port, api_key):
self.host = address
self.s = requests.Session()
self.s.headers.update({'X-Api-Key': api_key,
'Content-Type': 'application/json'})
self.base_address = 'http://' + address + ':' + str(port)
def cancel_job(self):
r = self.s.post(self.base_address + '/api/job', json={'command': 'cancel'})
if r.status_code != 204:
raise Exception("Error: {code} - {content}".format(code=r.status_code, content=r.content.decode('utf-8')))
def run_and_handle(method, *_args):
try:
result = method(*_args)
except:
pass
def button_callback(channel):
if GPIO.input(pin_button):
octo_api = OctoprintAPI(host, port, apikey)
run_and_handle(octo_api.cancel_job)
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin_button, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.add_event_detect(pin_button,GPIO.RISING,callback=button_callback)
try:
signal.pause()
GPIO.remove_event_detect(pin_button)
GPIO.cleanup()
except:
GPIO.remove_event_detect(pin_button)
GPIO.cleanup()
В button_callback необходимо проверять состояние кнопки с помошью if GPIO.input(pin_button): так как событие GPIO.RISING спрабатывает почему-то два раза: на нажатие и отпускание кнопки.
Скрипт для запуска, можно закинуть в rc.local.
#!/bin/sh
cd /home/pi/scripts/
sudo python3 ./button_stop.py &
Еще больше интересных статей
SL_ST U FEEDER (Питатель для SMD)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
SL_ST FEEDER (Питатель для SMD Pick and Place)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
&nbs...
Придумал, экструдер.....
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
А я сделал из овна и палок, ку...
Тем летом двоих закосил газоно...
Шаи-Хулуд поинтереснее кротов....
Здравствуйте. При печати кубик...
Проволка доходит до середины э...
На кораблике видно что на неко...
Сразу для любителей обсуждать...