라즈베리 파이의 GPIO를 사용하여 파이썬에서 운동을 감지하고 사이렌을 작동시키는 홈 보안 프로그램을 만들었습니다. 사용자는 라스베리 파이에 연결된 NFC 태그에 NFC 태그를 사용하여 시스템을 활성화/비활성화합니다.다른 스레드에서 비틀어 진 프로토콜 메서드 호출
이렇게하려면 항상 비 차단 방식으로 nfc 태그를 확인해야하며 동시에 센서가 비 차단 상태인지 지속적으로 확인해야합니다. 더 많은 평행선이 필요하지만이 두 점만으로도 충분하다고 생각합니다.
지금 당장은 내가 시작/멈추는 쓰레드를 사용합니다. - Stopping a thread after a certain amount of time - 이것이 최적의 방법인지는 확실하지 않지만 시스템은 정상적으로 작동합니다.
이제는 웹 소켓을 통해 알림 기능을 제공하기 위해 기능을 확장하려고합니다. 나는의 send 메소드를 호출 할 수있는 방법 그래서
from twisted.internet import reactor
from autobahn.websocket import WebSocketServerFactory, \
WebSocketServerProtocol, \
listenWS
def thread1(stop_event):
while(not stop_event.is_set()):
stop_event.wait(4)
print "checking sensor"
# sensor_state = GPIO.input(11)
if sensor_state == 1:
# how can I call send_m("sensor detected movement") #<---
t1_stop_event.set()
t1_stop_event = Event()
t1 = Thread(target=thread1, args=(t1_stop_event,))
class EchoServerProtocol(WebSocketServerProtocol):
def onMessage(self, msg, binary):
print "received: "+msg
print "stopping thread1"
t1_stop_event.set()
def send_m(self, msg):
self.sendMessage(msg)
if __name__ == '__main__':
t1.start()
factory = WebSocketServerFactory("ws://localhost:9000")
factory.protocol = EchoServerProtocol
listenWS(factory)
reactor.run()
: 나는 여기
내가 그것을하려고하는 방법에 대한 예제 코드입니다 ..이 트위스트와 함께 할 수 있지만, 내가 혼란 스러워요 발견 thread1과 같은 스레드의 서버 프로토콜?
이것은 매우 설명적인 답변입니다. 감사합니다. 나는 이것이 내 질문에 답할 수 있다고 생각하며 나는이 프로젝트로 돌아갈 때 며칠 만에 그것을 점검 할 것이다. 며칠 * 응답 * 버튼을 지연 시키면 문제가되지 않기를 바랍니다. – kapcom01