Делаем кнопку 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 &
Еще больше интересных статей
Механические шнурки. Finita
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Как баллы от MakerWorld превратить в реальные деньги !?
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Продолжаем традицию
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
пока так.



Комментарии и вопросы
Таки вы не ответили на мои воп...
посадочное 140 по внутреннему....
Дрыгостолы...Это превосходные....
Здравствуйте. Подскажите пожал...
Подскажите чем или как можно р...
Добрый день! Подскажите, нужно...
Доброго времени суток господа...