Node-RED로 할 수 있는 것 part4 (자작 노드편)

3931 단어 node-red

소개



하고 싶은 일


  • Node-RED에서 무엇을 할 수 있는지 알아보십시오
  • part4 (자작 노드 편)에서는 노드를 자작하는 방법을 검증했습니다.
  • 이번에는 choice라는 무작위로 복권을 당기는 기능 노드를 작성합니다.
  • 로컬 설치 만 수행하고 라이브러리에 게시하지 않습니다


  • Node-RED 요약 기사


  • Node-RED 계열의 기사 정리

  • 참고로 한 기사


  • Node-RED 노드를 만드는 단계
  • Node-RED 일본 사용자회 : 최초의 노드 개발

  • 운영 환경


  • OS : CentOS Linux release 7.5.1804 (Core)
  • Node-RED : v0.19.5
  • docker : 18.09.1
  • Node-RED 이미지 : nodere/node-red-docker (IMAGE ID/d4f07b39b24d)
  • Docker를 사용하지만 호스트에 서도 괜찮을 것이라고 생각합니다.


  • 면책 조항


  • 검증을 통해 확실하다고 생각되는 정보를 싣고 있습니다 만, 잘못되었을 가능성도 제로가 아니기 때문에, 참고 정도로 이용해 주세요.
  • 본래는 코드와 실행 결과의 콘솔 로그도 올려야 합니다만, 수와 양이 많기 때문에, 일단은 화면 이미지까지로 시켜 주세요.

  • 조사 결과



    로컬 설치 흐름


  • settings.js에로드 할 노드 폴더를 추가합니다.
  • 원본 노드에 대한 html 및 js 파일 만들기
  • Node-RED 재부팅

  • settings.js 설정


  • 다음 구성 파일의 위치에 노드 폴더 추가
  • // settings.js
    // XXXにノード用フォルダのパスを記載する
    
    // Node-RED scans the `nodes` directory in the install directory to find nodes.
    // The following property can be used to specify an additional directory to scan.
    nodesDir: 'XXX',
    

    새 노드 만들기



    html 파일


  • 외관 및 입출력 포트 수, 도움말 메시지 결정
  • <script type="text/javascript">
        RED.nodes.registerType('Choice',{
            category: 'function', //functionノードとして登録
            color: '#a6bbcf', // 色
            defaults: {
                name: {value:""} // プロパティ
            },
            inputs:1, // 入力端子数
            outputs:1, // 出力端子数
            icon: "file.png", // アイコン
            label: function() {
                return this.name||"Choice"; // ラベル
            }
        });
    </script>
    
    <script type="text/x-red" data-template-name="Choice">
        <div class="form-row">
            <label for="node-input-name"><i class="icon-tag"></i> Name</label>
            <input type="text" id="node-input-name" placeholder="Name">
        </div>
    </script>
    
    <script type="text/x-red" data-help-name="Choice">
        <p>くじを引く</p> // ヘルプのメッセージ
    </script>
    

    js 파일


  • 처리의 실체를 기술한다
  • module.exports = function(RED) {
        function ChoiceNode(config) { //関数の定義
            RED.nodes.createNode(this,config);
            var node = this;
            this.on('input', function(msg) { // インプットに対応するイベント
        // ここからくじ引きのロジックの本体
        var result = "???"
        var val = Math.floor( Math.random() * 4); 
        switch (val){
        case 0:
             result = "はずれ";
             break;
        case 1:
             result = "10点が当たりました"
             break;
        case 2:
             result = "50点が当たりました"
                 break;
        case 3:
             result = "100点が当たりました"
             break;
        default:
                 result = "はずれ";
             break;
        }
            msg.payload = result;
                node.send(msg);
            });
        }
        RED.nodes.registerType("Choice",ChoiceNode); // イベントの登録
    }
    

    화면 이미지

    좋은 웹페이지 즐겨찾기