[Node-red] Custom node 오류 - 중복사용 불가

2022. 12. 22. 16:56개발/Node-red

 

2022.11.21 - [기록/개발 노트] - [Node-red] Schedule node 수정 - 4

 

[Node-red] Schedule node 수정 - 4

2022.11.21 - [기록/개발 노트] - [Node-red] Custom node 수정 - 3 [Node-red] Custom node 수정 - 3 마지막 수정 후 보완할 점들 mqtt 통신 불안정 mqtt 통신 불안정에 따른 Node-red 서버 중지 ( cmd 에서 자주 node-red 종료

iruk.tistory.com

2022.12.05 - [기록/개발 노트] - [Node-red] Relay node 제작

 

[Node-red] Relay node 제작

2022.11.21 - [기록/개발 노트] - [Node-red] Schedule node 수정 - 4 [Node-red] Schedule node 수정 - 4 2022.11.21 - [기록/개발 노트] - [Node-red] Custom node 수정 - 3 [Node-red] Custom node 수정 - 3 마지막 수정 후 보완할 점들 mq

iruk.tistory.com

MQTT 통신을 사용하는 노드를 제작했었다.

동작에는 아무 문제가 없었지만 사용하면서 한 가지 오류가 발생했다.

MQTT 를 사용하지 않는 기존에 제작한 노드

'스케쥴노드' 는 복수개의 선택이 가능하다.

 

하지만

 

위와 같이 MQTT 를 사용하는 노드는 중복이 안된다.

두 노드의 차이점을 비교해보았다.


HTML 파일

<!-- schedule 노드 ( 오류발생 노드 ) -->
<script type="text/javascript">
    RED.nodes.registerType('라이트토크',{
        category: '릴레이노드',
        color: '#C0DEED',
        defaults: {
	    	name: {value:""},
			id : {value : "", required: true},
            startTime : {value : ""},
            endTime : {value : ""},
            heat : {value : ""},
            cool : {value : ""},
            exha : {value : ""},
            led : {value : ""}
        },
        inputs:1,
        outputs:4,
        icon: "file.png",
        label: function() {
            return this.name||"라이트토크";
        },
        oneditsave: function() {
            var id = $("#node-config-input-id").val();
            //var startTime = $("#node-config-input-startTime").val();
            //var endTime = $("#node-config-input-endTime").val(); 2022-11-17 수정
            //console.log(id);
            var node = this;
            node.id = id;
            //node.startTime = startTime;
            //node.endTime = endTime; 2022-11-17 수정
        },
        oneditprepare : function() {
            $("#node-config-input-id").show();
            var node = this;
        }
    });
</script>

MQTT 사용하는 schedule 노드의 .html 파일이다.

<!-- 오류 없는 노드 ( mqtt 미사용 )-->
<script type="text/javascript">
    RED.nodes.registerType('스케쥴노드',{
        category: '릴레이노드',
        color: '#DDA0DD',
        defaults: {
            name: {value:""},
            startTime : {value : ""},
            endTime : {value : ""}
        },
        inputs:1,
        outputs:1,
        icon: "file.png",
        label: function() {
            return this.name||"스케쥴노드";
        }
    });
</script>

MQTT 없이 동작하는 오류 없는 노드 .html 파일이다.

노드 명, 카테고리 등 오류라고 할만한 부분이 딱히 없다.

package.json 파일

// schedule 노드 ( 오류발생 노드 ) 
{
  "name": "lighttalk_schedule_nodes",
  "version": "1.0.6",
  "description": "schedule node for node-red",
  "main": "lighttalk.js",
  "node-red": {
    "nodes": {
      "lighttalk_schedule": "lighttalk.js"
    },
    "version": ">=2.0.0"
  },
  "keywords": [
    "node-red"
  ],
// 오류 없는 노드 ( mqtt 미사용 )
{
  "name": "lighttalk_schedule_no_mqtt",
  "version": "1.0.0",
  "description": "sending payload with schedule",
  "dependencies": {
    },
  "keywords": [ "node-red" ],
  "main": "schedule_nomqtt.js",
  "node-red" : {
    "nodes": {
        "schedule_nomqtt": "schedule_nomqtt.js"
    }
  },

npm 관련 package.json 파일도 딱히 오류가 없다.

name 이나 .js 파일도 겹치지 않는다.

 

html, package.json 을 제외한

javascript 파일도

딱히 오류가 없다. javascript 파일은

동작 구현에 관한 소스이므로

복수개의 노드를 사용하는데

영향을 미칠만한게 전혀 없다.

 

두 노드의 가장 큰 차이점은 

MQTT 사용 유무 이다.

 

만약 MQTT를 미사용하는

또 다른 하나의 노드를 생성해

그 노드가 복수 사용이 가능하다면

MQTT가 확실히 문제라고 생각이 들었다.

 

2022.12.21 - [기록/개발 노트] - [Node-red] 새로운 릴레이 노드 제작 - 1

 

[Node-red] 새로운 릴레이 노드 제작 - 1

2022.12.09 - [기록/개발 노트] - [Node-red] Schedule 노드 ( mqtt x ) 제작 [Node-red] Schedule 노드 ( mqtt x ) 제작 2022.11.21 - [기록/개발 노트] - [Node-red] Schedule node 수정 - 4 [Node-red] Schedule node 수정 - 4 2022.11.21 - [기

iruk.tistory.com

 

그래서 위 링크에서 제작했던 노드를

한 번 테스트 해보았다.

똑같은 오류가 발생한다.

<!-- html 파일 -->
<script type="text/javascript">
    RED.nodes.registerType('사다리',{
        category: '테스트용',
        color: '#ff7f50',
        defaults: {
	    	name: {value:""},
			id : {value : "", required: true},
            startTime : {value : ""},
            endTime : {value : ""},
            heat : {value : ""},
            cool : {value : ""},
            exha : {value : ""},
            led : {value : ""}
        },
        inputs:1,
        outputs:4,
        icon: "file.png",
        label: function() {
            return this.name||"사다리";
        }
    });
</script>
// package.json 파일
{
  "name": "ladder_test",
  "version": "1.0.0",
  "description": "ladder html testing",
  "main": "index.js",
  "node-red": {
    "nodes": {
      "test_l": "ladderTest.js"
    },
    "version": ">=2.0.0"
  },
  "keywords": [
    "node-red"
  ],

html 에서 오류도 없고

package.json 에서 mqtt 사용도 안하는데

같은 오류가 발생한다.

 

이 노드가 오류가 발생 안했으면

MQTT가 원인 이었을텐데

 

이러면 다른 오류들을 앞으로 찾아봐야할 것 같다.