본문 바로가기

옥토프린트 플러그인 개발

OctoPrint Plugin 만들기 #12 (설치하기) OctoPrint Plugin 만들기 #12 (설치하기) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 동작 화면 □ 설치 방법 1. 개발 소스가 있는 폴더를 zip 파일로 압축한다. 2. 압축 완료 3. Octoprint의 설정 메뉴에서 Plugin Manager로 들어간다. 4. ... from an uploaded archive의 Browse 버튼을 클릭 5. 방금 전 압축한 파일을 선택한다. 6. Install Button을 클릭한다. 7. 설치 진행 중... 8. 완료되면 Restart Now 버튼을 클릭! 9. 설치가 완료된 모습 □ Source Code [ __init__.py ] 1234567891011121314151617181920212223242526272829303132333435.. 더보기
OctoPrint Plugin 만들기 #11 (시리얼 통신시 별도 쓰레드를 만들어 데이터 전송) OctoPrint Plugin 만들기 #11 (시리얼 통신시 별도 쓰레드를 만들어 데이터 전송) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 필요 함수 - queue.get() : 할일 꺼내기 - queue.put() : 할일 추가 - queue.task_done() : 할일 완료 처리 - thread.start() : 쓰레드 시작 - _plugin_manager.send_plugin_message : Octoprint Back-End에서 Front-End로 데이터 전송 - onDataUpdaterPluginMessage : Octoprint Back-End에서 Front-End로 데이터 전송시 이벤트 발생 [ __init__.py ] 123456789101112131415161718192021222.. 더보기
OctoPrint Plugin 만들기 #10 (Arduino로부터 전송된 설정값을 Base64로 디코딩하여 저장) OctoPrint Plugin 만들기 #10 (Arduino로부터 전송된 설정값을 Base64로 디코딩) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 필요 함수 - namedtuple - struct.pack - struct.unpack - base64.b64encode - base64.b64decode [ __init__.py ] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788from collections import namedtuplefrom str.. 더보기
OctoPrint Plugin 만들기 #9 (온도 그래프 Update시 send_plugin_message 이용하기) OctoPrint Plugin 만들기 #9 (온도 그래프 Update시 send_plugin_message 이용하기) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 필요 함수 - Back End : send_plugin_message - Front End : onDataUpdaterPluginMessage [ Back End ] 1234567891011121314151617181920212223242526272829 def checkTemperature(self): try: if self.device.is_open == True : # Serial data send msg = 'CMD O'+self.ControlObjectToID['TempCurrent']+' R0\n' self.device.write.. 더보기
OctoPrint Plugin 만들기 #7 (온도 그래프 추가) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 온도 그래프 추가 Chart.js 활용 □ 변경된 UI 1. Chart.js 설치 ① https://www.chartjs.org/docs/latest/에서 Chart.js를 다운 받는다. ② 플러그인 js 폴더에 「Chart.js」와 「Chart.min.js」를 복사한다. 2. 플러그인 asset으로 등록 123456 def get_assets(self): return dict( js=["js/chambermanager.js", "js/Chart.js", "js/Chart.min.js"], css=["css/chambermanager.css"], less=["less/chambermanager.less"] )Colored by Color Scriptercs.. 더보기
OctoPrint Plugin 만들기 #6 (Setting UI 추가) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ Setting UI 추가 □ Source Code [__init__.py] 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 def connectToDevice(self, port, baudrate, timeout) : try: self.device.port = port self.device.baudrate = baudrate self.device.timeout = timeout self.device.open() self.device.flush() msg = 'CMD O0 R0\n' self.device.writelines(msg.encode('a.. 더보기
OctoPrint Plugin 만들기 #5 (설정값 저장하기) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 설정값 저장하기 (Settingsplugin) octoprint.plugin.SettingsPlugin 활용 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879# coding=utf-8import octoprint.plugin class ChamberManagerPlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplatePlugin, octoprint.plugin.SettingsPlugin.. 더보기
OctoPrint Plugin 만들기 #4 (주기적 호출 추가: RepeatedTimer) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ 주기적 호출 추가 (Repeated Timer) 옥토프린트의 내부 모듈 octoprint.util의 RepeatedTimer 활용 from octoprint.util import RepeatedTimer def on_after_startup(self): #옥토프린트 구동이 완료되면 타이머 시작 self.start_Timer() def start_Timer(self): #1초마다 checkTimer를 호출하도록 설정 self._timer = RepeatedTimer(1.0, self.checkTimer, run_first=True) self._timer.start() def checkTimer(self): # 온도 설정을 읽는 함수 호출 self.checkT.. 더보기
OctoPrint Plugin 만들기 #3 (Blueprintplugin 추가) 옥토 프린트 플러그인 만들기 (챔버 매니저) □ Blueprintplugin 추가 octoprint.plugin.BlueprintPlugin 활용 ※ 각 버튼을 클릭하면 정해진 시리얼포트로 명령어 전송 기능 추가 1. UI 2. Hyper V에 설치된 옥토프린트 플러그인에서 시리얼로 데이터를 전송 결과 3. Source Code [chambermanager.js] 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001.. 더보기
Hyper V에서 Guest OS Serial Port 활성화 Hyper V에서 Guest OS를 설치한 직후 시리얼 포트를 확인해보면 보이지 않는다. 그러나, 파워쉘에서 아래와 같이 vm용 시리얼 포트에 네임드 파이프를 연결하면 Guest OS에서 시리얼포트가 활성화 된다. □ Host OS 명령어 입력 set-vmcomport -vmname VM이름 -number 1 \\.\pipe\test get-vmcomport -vmname VM이름 VMName Name Path ------ ---- ---- VM이름 COM 1 \\.\pipe\test VM이름 COM 2 □ Guest OS 시리얼 포트 확인 dmesg | grep tty [ 0.000000] console [tty0] enabled [ 0.783156] 00:01: ttyS0 at I/O 0x3f8 (i.. 더보기