Делаем кнопку 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 &
Еще больше интересных статей
Домашняя палка-доставалка.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Внезапно 3D-печать в Пятерочке
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
MMRU (Multi Material Russian Upgrade) (Часть 6: Анонс новой механики)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
А мне кстати МАКО нравится. По...
Ну мне НИТ нравится, да есть (...
там есть место под доп. драйве...
Коллеги подскажите есть ли как...
Всем добрый день!Требуется спе...
Здравствуйте всем кто читает д...
Не могу понять почему образовы...