2017-04-21 2 views
0

새 나무 딸기 파이로 테스트 중이며 노드 - 빨강으로 시작하여 장애물이 있습니다.기능 노드 - 빨강 나무 딸기

스위치가 트리거 될 때 끝나는 루프를 만들려고하지만 while 루프를 입력하면 "alarm"변수를 다시 읽지 않고 무한 루프를 반복하지 않습니다.

context.data = context.data || {}; 
 
switch (msg.topic){ 
 
\t case "alarma": 
 
\t \t context.data.alarma = msg.payload; 
 
\t \t msg = null; 
 
\t \t break; 
 

 
\t case "pi/13": 
 
\t  context.data.contacto = msg.payload; 
 
\t  msg = null; 
 
\t  break; 
 
} 
 

 
if(context.data.alarma === true && context.data.contacto == 1) 
 
{ 
 

 
    while(context.data.alarma === true) 
 
    { 
 
     
 
     context.data.alarma = msg.payload; 
 
     node.send({payload:true}); 
 
    } 
 
} 
 
return {payload:"stop"};

내가 모든 코드를 넣어 시도에 "할 - 동안"나는 또한 동안과 같은 일에 다시 전체 스위치 블록을 넣어 시도, 루프하지만 실패 . 어떤 아이디어?

나는 경보 시스템을 만들고 있는데,이 스위치 (문 열림 및 비활성화)와 문에있는 연락처가 있습니다. 알람이 활성화되고 접점이 열리면 알람이 울립니다 (사실로 돌아갑니다). 다시 연락처를 닫으면 알람이 끊어집니다 (즉, 내가하지 않은 것입니다). 알람 비활성화 스위치가 활성화되어있는 경우에만 연결을 끊고 싶습니다. . 스위치를 끄지 않으면 알람이 계속 울리기를 원합니다. 또한 while 루프가 너무 빠르지는 않지만 여전히 작동하지 않도록 지연을 도입하려고 시도했습니다. 내가 원하는 것은 실제로 루프 내부의 변수를 아는 것입니다.

감사합니다.

답변

0

변수가 실제로 변경되지 않기 때문에 그 루프는 너무 단단히 돌아 오지 않으므로 Node-RED는 변수를 변경할 메시지를 처리하지 못합니다.

또한 payload: true

와 메시지의 1000 년대를 보낼 것입니다 당신은, 그렇지 {payload: 'stop'} (즉 거짓이 아닌 중지해야합니까?) 경우

if(context.data.alarma === true && context.data.contacto == 1) 
{ 
    return {payload:true}); 
} else { 
    return {payload:"stop"}; 
} 
단지 return {payload: true}, 모든 루프를 필요가 없습니다
관련 문제