Skip to content

Instantly share code, notes, and snippets.

@arseniy899
Forked from BoKKeR/button.py
Created May 4, 2018 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arseniy899/e3ed434c3b981eef3b5fc574707e2063 to your computer and use it in GitHub Desktop.
Save arseniy899/e3ed434c3b981eef3b5fc574707e2063 to your computer and use it in GitHub Desktop.
basic button
# coding=iso-8859-15
import RPi.GPIO as GPIO
import time
import json
import requests
API = "<API-KEY>" # api-ключ OctoPrint
extTemps = [0, 210, 235] # предустановленные температуры экструдера
bedTemps = [0, 80, 95] # предустановленные температуры подогрева столика
redPin = 22
yellowPin = 27
greenPin = 17
headers = {'X-Api-Key': API,"Content-Type":"application/json"}
ip = 'http://127.0.0.1/api/'
jobUrl = ip+'job'
posUrl = ip+'printer/printhead'
extrUrl = ip+'printer/tool'
bedUrl = ip+'printer/bed'
customUrl = ip+'printer/command'
GPIO.setmode(GPIO.BCM)
#GPIO.setmode(GPIO.BOARD)
GPIO.setup(greenPin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(yellowPin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(redPin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
print ("start")
s = requests.Session()
state = ""
extInd = 0
bedInd = 0
def sendPause(action):
print "Executing CMD: "+action
contents = json.dumps({"command":"pause","action":action})
requests.post(jobUrl, data=contents, headers=headers)
return
def sendJobCMD(cmd):
print "Executing CMD: "+cmd
contents = json.dumps({"command":cmd})
requests.post(jobUrl, data=contents, headers=headers)
return
def buttonParse(green, yellow, red):
global pressedYforRestart
global extInd
global bedInd
global extTemps
global bedTemps
print "green="+str(green)+";yellow="+str(yellow)+";red="+str(red)
st = json.loads((requests.get(jobUrl, headers=headers)).content)["state"]
st = st.lower()
if(green == False):
if(st == "operational"):
sendJobCMD("start")
elif(st == "paused"):
sendPause("resume")
elif(st == "printing"):
sendPause("pause")
pressedYforRestart = False
if(yellow == False):
if(st == "operational"):
extInd+=1
if( extInd==len(extTemps)):
extInd = 0
contents = json.dumps({"command":"target","targets":{"tool0":extTemps[extInd]}})
print requests.post(extrUrl, data=contents, headers=headers)
print "Sent "+contents+" to "+extrUrl
elif(st == "paused"):
if(pressedYforRestart== False):
contents = json.dumps({"absolute":False,"z":10,"command":"jog"})
print requests.post(posUrl, data=contents, headers=headers)
print "Sent "+contents+" to "+posUrl
contents = json.dumps({"commands":["M18"],"parameters":{}})
print requests.post(customUrl, data=contents, headers=headers)
print "Sent "+contents+" to "+customUrl
pressedYforRestart = True
else:
sendJobCMD("restart")
pressedYforRestart = False
elif(st == "printing"):
sendPause("pause")
if(red == False):
if(st == "operational"):
bedInd +=1
if( bedInd==len(extTemps)):
bedInd = 0
contents = json.dumps({"target":bedTemps[bedInd],"command":"target"})
requests.post(bedUrl, data=contents, headers=headers)
print "Sent "+contents+" to "+bedUrl
elif(st == "paused"):
sendJobCMD("cancel")
elif(st == "printing"):
sendJobCMD("cancel")
pressedYforRestart = False
return
pressedYforRestart = False
waitingForKeyUp = False
while True:
green = GPIO.input(greenPin)
yellow = GPIO.input(yellowPin)
red = GPIO.input(redPin)
time.sleep(0.1)
if (green == True or yellow == True or red == True):
if(waitingForKeyUp == False):
buttonParse(green == False, yellow == False, red == False)
waitingForKeyUp = True
elif(waitingForKeyUp == True):
waitingForKeyUp = False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment