2017-03-11 2 views
0

저는 STACKOVERFLOW와 Node-RED를 처음 접했고 Bluemix Plaform의 Node-Red에서 인큐베이터 프로젝트를 만들었습니다.노드 빨간색의 모듈에 대해 특정 시간 간격을 추가하는 방법은 무엇입니까?

기본적으로 arduino에서 MQTT를 통해 데이터를 가져오고, 함수 노드는 수신 된 온도 및 습도 값을 임계 값과 비교합니다. 이 계산 된 데이터에 기초하여 MQTT를 다시 사용하여 arduino로 조치 명령이 다시 송신됩니다.

여기에 나는 또한 분석에 대한 몇 가지 대시 보드 노드를 추가 한 프로젝트에서 프로젝트의 기본 흐름

Project Flow

입니다.

주된 질문은이 프로젝트에 단계를 추가하는 방법입니다. 감각의 단계는 서로 다른 시간 간격.

1 단계 : 비교를위한 임계 값은 'XX' 3 초기 일 동안해야한다.

2 단계 : 비교를위한 임계 값은 'YY'다음 7 일이어야합니다.

3 단계 : 비교를위한 임계 값은 다음 구일에 대한 'ZZ'해야한다.

4 단계 : 비교를위한 임계 값은 'NN'의 향후 오일해야한다.

프로젝트에 총 4 단계가 있습니다.

기본적으로 임계 값은 X 여야하며 3 일 후에 임계 값을 변경해야합니다. 이 과정은 4 회의 시간 간격 (4 단계)을 갖기 때문에 3 회 발생해야합니다. I이 사용 도시 프로젝트 흐름을 달성 할 수있는 방법

..

는 I의 Arduino에서이 목적을 위해 밀리 초() 함수를 사용하기 위해 사용된다. 그러나 Node-Red에서 옵션을 찾지 못했습니다.

enter image description here enter image description here

반복 기능 노드 적색

+0

정말 당신이 여기에 단계적으로 무엇을 의미하는지 분명하지 않다, 추가 할 수있는 질문을 수정하시기 바랍니다 자세한 내용 – hardillb

답변

0

당신이 그것을 평가하고 당신이 지금 어떤 단계 구축하는 case 또는 If/Else 논리를 가지고 다음 시작해야되는 날을 저장하는 전역 변수를 사용합니다 참조하십시오. http://nodered.org/docs/writing-functions.html#storing-data

하면됩니다 NodeRed 인스턴스가 실행되는 동안 유지됩니다. NodeRed를 재시작하면 다시 설정해야합니다.그리고 당신은 어떤 기본 가치로 돌아갈 때를 이해해야 할 논리가 필요합니다.

아래의 샘플 코드를 편집하면 global.get/set을 사용하는 방법을 보여줍니다. 이것이 사업 목적이라면 나는 여기보다 더 조심하고 날짜 처리를 고려할 것입니다!

//Get current time and time started. Initialize if doesn't exist 
timestp = Date.now(); 
if (!global.get('dateStarted')){ 
global.set('dateStarted', timestp); 
} 

var dateStarted = global.get('dateStarted'); 

//Check what stage 
if (dateStarted == timestp){ 
    node.warn("I'm new" +timestp); 
} 
// A day holds 86,400,000 milliseconds. This needs more verification!! 
else if (dateStarted > (timestp + (86400000 * 3))){ 
    node.warn("3 days or more" +dateStarted); 
} 
+0

"dateStarted는"여기에 무엇입니까? 나는 이전에 선언하지 않았다 ... – Nikhil

0

를 주입 노드 페이로드는 요구되는 스케줄에 전송 될 수있다.

시작시 한 번만 삽입 옵션은 실제로 발사되기 전에 짧은 간격을 기다렸다가 다른 노드에 올바르게 인스턴스화 할 수있는 기회를 제공합니다.