【Node-RED】Node-RED로부터 Anaconda 가상 환경상의 Python을 실행한다【Anaconda】【Python】
12023 단어 Python3파이썬PostgreSQLAnacondanode-red
하고 싶은 일
특징
하고 싶은 것 이미지
1. Node-RED에서 postgreSQL에 연결하여 csv 파일 만들기
2. Node-RED에서 bat 파일 실행
3. bat 파일에서 conda 환경을 활성화하고 Python 프로그램을 실행합니다.
4. Python 프로그램에 대한 I/F 파일 지정
실행 환경
목표
1. Node-RED에서 postgreSQL에 연결하여 csv 파일 만들기
필요한 노드는 5개. 다음 노드는 다음 순서로 결합됩니다.
1) 【기능】function 노드
- 목적 : SQL 문을 조립
- 사용법 : msg.payload에 SQL 문을 직접 기술
function 노드에 대한 설명 이미지msg.select = "SELECT val"
msg.from = "FROM public.sensordata "
msg.where = "where sensor ='湿度センサー'"
msg.orderBy = "order by datetime desc"
msg.limit = "limit 1000"
msg.payload = msg.select
msg.payload += " " + msg.from
msg.payload += " " + msg.where
msg.payload += " " + msg.orderBy
msg.payload += " " + msg.limit
return msg;
2) 【스토리지】postgres 노드
- 목적 : postgreSQL에 연결하여 SQL을 실행합니다.
- 사용방법 : 표준 사용법
3) 【기능】json to csv converter 노드
- 목적 : postgre 노드가 json 형식으로 반환되므로 csv 형식으로 변환
- 사용방법 : 표준 사용법
4) 【기능】function 노드
- 목적: 파일명 지정
- 사용법 : msg.filename에 csv 파일의 전체 경로 지정
function 노드에 대한 설명 이미지// 例)msg.rootpath = "C:\\temp\\conda"
// 例)msg.timestampはinjectノードから取得
msg.filename = msg.rootpath + "\\indata\\" + msg.timestamp + ".csv";
return msg;
5) 【스토리지】file 노드
- 목적: csv 파일 만들기
- 사용법 : 파일명에는 공백을 지정 (공백의 경우, msg.filename에의 설정치로 파일을 작성)
2. Node-RED에서 bat 파일 실행
필요한 노드는 2개. 다음 노드는 다음 순서로 결합됩니다.
포인트
msg.select = "SELECT val"
msg.from = "FROM public.sensordata "
msg.where = "where sensor ='湿度センサー'"
msg.orderBy = "order by datetime desc"
msg.limit = "limit 1000"
msg.payload = msg.select
msg.payload += " " + msg.from
msg.payload += " " + msg.where
msg.payload += " " + msg.orderBy
msg.payload += " " + msg.limit
return msg;
// 例)msg.rootpath = "C:\\temp\\conda"
// 例)msg.timestampはinjectノードから取得
msg.filename = msg.rootpath + "\\indata\\" + msg.timestamp + ".csv";
return msg;
필요한 노드는 2개. 다음 노드는 다음 순서로 결합됩니다.
포인트
1) 【기능】function 노드
- 목적: 실행 명령어 조립
- 사용법 : msg.payload에 실행할 명령 설정
function 노드에 대한 설명 이미지
// 実行するbatファイルのフルパス 例)"C:\\temp\\conda\\ExecPython.bat" ※指定したPythonプログラムを実行するbatファイルの
msg.command = msg.execPythonCmd
// 第1引数 例)"test.py" ※実行するPythonプログラムのファイル名
msg.arg_1 = msg.execPythonNm
// 第2引数 例)実行するPythonプログラムへのI/F(入力ファイル)
msg.arg_2 = "indata\\" + msg.timestamp + ".csv"
// 第3引数 例)実行するPythonプログラムへのI/F(出力ファイル)
msg.arg_3 = "outdata\\" + msg.timestamp + ".csv"
msg.payload = msg.command + " " + msg.arg_1 + " " + msg.arg_2 + " " + msg.arg_3
return msg;
2) 【기능】exec 노드
- 목적: 명령 실행
- 사용법 : 명령에는 공백을 지정. msg.payload의 확인란을 선택합니다.
3. bat 파일에서 conda 환경을 활성화하고 Python 프로그램을 실행합니다.
ExecPython.batrem 実行フォルダに移動
rem 例)C:\temp\conda 配下に実行環境が整備済の場合
cd /d C:\temp\conda
rem condaを有効にする
call activateConda.bat
rem Pythonを実行する
rem %1:実行するPythonのファイル名
rem %1~7:実行するPythonへの引数
python %1 %2 %3 %4 %5 %6 %7
activateConda.batconda activate [有効にしたい環境名 例)base]
4. Python 프로그램에 대한 I/F 파일 지정
test.pyimport sys
# 引数を取得する
args = sys.argv
import pandas as pd
sensordata = pd.read_csv(args[1])
print(sensordata.describe())
sensordata.describe().to_csv(args[2], index=True)
실행
준비 1) 실행 파일 준비
3, 4에 기재된 파일은 다음과 같이 저장된다.
준비 2) 플로우 작성
1, 2에 기재된 흐름을 준비한다.
아래와 같이 실행에 필요한 정보를 function 노드에 기재하면 관리가 편할지도.
※「inject 노드→실행 조건 설정→1→2」의 순서로 실행하는 플로우를 작성
실행 조건 설정msg.timestamp = msg.payload
msg.rootpath = "C:\\temp\\conda"
msg.execPythonCmd = "C:\\temp\\conda\\ExecPython.bat"
msg.execPythonNm = "test.py"
return msg;
실행 결과
indata 폴더에 저장된 csv 파일을 읽고 간단한 통계를 outdata 폴더로 출력
결론
IoT의 플랫폼으로서는 「Node-RED」, 데이터 과학의 플랫폼으로서는 「Anaconda+Python+JupyterNotebook」
를 들 수 있을까 생각합니다만, 이것들이 심리스에 연결되면 DX가 진행되지 않을까 기대하고 있습니다.
Reference
이 문제에 관하여(【Node-RED】Node-RED로부터 Anaconda 가상 환경상의 Python을 실행한다【Anaconda】【Python】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kewton/items/9e4fc18981550401d6c9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
rem 実行フォルダに移動
rem 例)C:\temp\conda 配下に実行環境が整備済の場合
cd /d C:\temp\conda
rem condaを有効にする
call activateConda.bat
rem Pythonを実行する
rem %1:実行するPythonのファイル名
rem %1~7:実行するPythonへの引数
python %1 %2 %3 %4 %5 %6 %7
conda activate [有効にしたい環境名 例)base]
test.py
import sys
# 引数を取得する
args = sys.argv
import pandas as pd
sensordata = pd.read_csv(args[1])
print(sensordata.describe())
sensordata.describe().to_csv(args[2], index=True)
실행
준비 1) 실행 파일 준비
3, 4에 기재된 파일은 다음과 같이 저장된다.
준비 2) 플로우 작성
1, 2에 기재된 흐름을 준비한다.
아래와 같이 실행에 필요한 정보를 function 노드에 기재하면 관리가 편할지도.
※「inject 노드→실행 조건 설정→1→2」의 순서로 실행하는 플로우를 작성
실행 조건 설정msg.timestamp = msg.payload
msg.rootpath = "C:\\temp\\conda"
msg.execPythonCmd = "C:\\temp\\conda\\ExecPython.bat"
msg.execPythonNm = "test.py"
return msg;
실행 결과
indata 폴더에 저장된 csv 파일을 읽고 간단한 통계를 outdata 폴더로 출력
결론
IoT의 플랫폼으로서는 「Node-RED」, 데이터 과학의 플랫폼으로서는 「Anaconda+Python+JupyterNotebook」
를 들 수 있을까 생각합니다만, 이것들이 심리스에 연결되면 DX가 진행되지 않을까 기대하고 있습니다.
Reference
이 문제에 관하여(【Node-RED】Node-RED로부터 Anaconda 가상 환경상의 Python을 실행한다【Anaconda】【Python】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kewton/items/9e4fc18981550401d6c9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
msg.timestamp = msg.payload
msg.rootpath = "C:\\temp\\conda"
msg.execPythonCmd = "C:\\temp\\conda\\ExecPython.bat"
msg.execPythonNm = "test.py"
return msg;
IoT의 플랫폼으로서는 「Node-RED」, 데이터 과학의 플랫폼으로서는 「Anaconda+Python+JupyterNotebook」
를 들 수 있을까 생각합니다만, 이것들이 심리스에 연결되면 DX가 진행되지 않을까 기대하고 있습니다.
Reference
이 문제에 관하여(【Node-RED】Node-RED로부터 Anaconda 가상 환경상의 Python을 실행한다【Anaconda】【Python】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kewton/items/9e4fc18981550401d6c9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)