어떻게 하루도 안 되는 시간 안에 강력한 사물인터넷 원형을 구축할 것인가--제1부분
안정적이고 효과적인 원형을 만드는 것은 모든 웹이나 삽입식 개발자에게 매우 중요하다.그러나 원형을 생성하려면 다음 문제를 처리해야 합니다.
항목
많은 사물인터넷 프로젝트는 센서로부터 데이터를 읽는 데만 관심을 갖는다.그러나 진정한 원형에 대해서는 사물인터넷 센서 노드에서 클라우드, 그리고 클라우드에서 실행기까지 데이터의 양방향성이 필요합니다.네트워크 개발에 대해 더 많은 지식을 가지고 있고, 삽입식 시스템에 대해 더 적은 지식을 가진 모든 사람들에게 센서와 집행기의 정의입니다.
대부분의 사물인터넷 프로젝트의 전체 구조는 다음과 같다.
따라서, 원형을 신속하게 만들 수 있는 예시 프로그램을 만듭니다.다음과 같은 구성 요소를 사용합니다.
필요한 사항:
시작해보도록 하겠습니다.
첫 번째 단계는 하드웨어가 도착하기를 기다릴 때 노드 RED를 설정할 수 있습니다.Node RED는 강력한 저코드 프로그래밍 도구로 Node 기반 이벤트 드라이버에 적용됩니다.js.하드웨어 장치 간의 흐름을 그래픽 방식으로 쉽게 연결한 다음 한 번만 누르면 배치할 수 있습니다.노드 빨간색은 노드에 구축됩니다.js.Node.js에 익숙하다고 가정합니다. 익숙하지 않으면 https://nodejs.org/에서 이해하고 설치할 수 있습니다.)
빨간색 노드 설치
TL;DR: 프로그램을 빠르게 테스트하려면 이 부분을 건너뛰고 포장된 부분으로 이동하십시오. 이 부분은 프로젝트의 빠른 시작 버전을 가리키는 링크가 있습니다.
그러나 이 기능을 직접 구축하고 최종적으로 최신 버전의 Node RED로 작업을 업데이트하는 방법에 대해 알고 싶으면 아래의 상세한 설명을 따르십시오.
Node RED를 설치하고 설치, 보호 및 실행하려면 약간의 작업이 필요하므로 다음 단계를 완료하십시오.우선, 최신 안정적인 버전을 확보하세요.우리의 목적에서 우리는 git를 사용할 것이다.
git clone [email protected]:node-red/node-red.git node-red-private
cd node-red-private
## Let's move the latest stable version as of 2020-07-01
git checkout 1.1.0
## And create our branch for experimenting
git checkout -b iot-proto
## Install deps and build the app
npm install
npm run build
## Start the app
npm start
이제 노드 RED가 시작되고 실행되어야 합니다. 대개 http://localhost:1880입니다.이 창을 열면 다음과 같은 인터페이스가 표시됩니다.이것은 좋은 시작이지만, 안전성이 없어서, 모든 물건이 현지에서 운행된다.이런 설정은 엄숙한 원형 디자인에 적용되지 않기 때문에 우리는 이렇게 익살스럽게 표현하고 싶지 않다.
https://donthitsave.com/comic/2016/07/15/it-works-on-my-computer
노드 RED에 자격 증명 추가
Node RED에 보안을 추가하려면 인터페이스(정적 자산), 시각 형상 편집기 및 API를 보호하는 것이 좋습니다.이를 위해서는 Securing Node-RED에 관한 공식 지침을 따르십시오.증거를 추가하려면 암호를 만들고 해시를 가져오는 방법이 필요합니다.Node RED에는 Node RED admin이라는 간단한 도구가 있습니다.다음과 같은 방법으로 설치할 수 있습니다.
$ npm install --save-dev node-red-admin
## Here is the dir where we will put our configurations
$ mkdir data
우리도 같은 디렉터리에 설치하자 Arduino plugin.$ cd data
$ npm install @arduino/node-red-contrib-arduino-iot-cloud
이제 비밀번호를 만듭니다.스크립트는 상호 작용으로 암호를 요청합니다.# ./node_modules/node-red-admin/node-red-admin.js hash-pw
Password:
$2b$08$xGtfBswU4BF53FymNK9oae/Oz56d35W4/xxxxxxxxxxxx9cbC
되돌아오는 문자열은 우리가 설정에서 사용할 수 있는 해시입니다.js 파일. the Github repo of Node-RED에서 올바른 설정 파일을 찾을 수 있습니다.이 서류부터 시작해서 필요에 따라 조정합시다.우선, 우리는adminAuth 부분에 대한 주석을 취소하고 다음과 같이 변경해야 한다.adminAuth: {
type: "credentials",
users: [{
username: process.env.NODERED_USERNAME || "admin",
password: process.env.NODERED_PASSWORD_HASH,
permissions: "*"
}]
},
이것은 환경 변수를 사용하여 암호의 해시 값을 설정할 수 있도록 합니다.(우리는 방금 node red admin의hash pw 명령으로 그것을 만들었습니다.) 사용자 이름과 'admin' 으로 되돌아갑니다.이는 파일의 다른 부분에도 적용됩니다.
httpStaticAuth: {
user: process.env.NODERED_USERNAME,
pass: process.env.NODERED_PASSWORD_HASH
},
And
credentialSecret: process.env.NODERED_CREDENTIAL_SECRET,
My complete settings file is available at [[ xxxxx ]]
The final important step is to set the port.
uiPort: process.env.PORT || 1880,
Be sure to save your work in a proper directory. Usually, Node-RED saves the data into $HOME/.node-red, but this will not work well with our setup in Heroku, nor is useful to have the source code revisions for our work. So I added...
flowFile: 'data/flows.json',
And
userDir: 'data/',
The full file settings.js without comments is less than 40 lines.
module.exports = {
// the tcp port that the Node-RED web server is listening on
uiPort: process.env.PORT || 1880,
mqttReconnectTime: 15000,
serialReconnectTime: 15000,
debugMaxLength: 1000,
flowFile: 'data/flows.json',
credentialSecret: process.env.NODERED_CREDENTIAL_SECRET,
userDir: 'data/',
adminAuth: {
type: "credentials",
users: [{
username: process.env.NODERED_USERNAME || "admin",
password: process.env.NODERED_PASSWORD_HASH,
permissions: "*"
}]
},
httpStaticAuth: {
user: process.env.NODERED_USERNAME || "admin",
pass: process.env.NODERED_PASSWORD_HASH
},
functionGlobalContext: {
},
exportGlobalContextKeys: false,
logging: {
console: {
level: "info",
metrics: false,
audit: false
}
},
editorTheme: {
projects: {
enabled: false
}
}
}
환경 변수 설정
To declare the needed variables, you can create a local .env file like this one:
NODERED_PASSWORD_HASH='yourpassword-hash-from-the-node-red-admin-output'
NODERED_USERNAME='admin'
NODERED_CREDENTIAL_SECRET='averylongsecretofyourchoice'
Now let’s load those variables and start Node-RED again.
$ export $(cat .env | xargs)
$ npm run build
$ npm start
As soon as we see the Node-RED interface again, we will be prompted with a password.
Our server is now secure, but still running locally. And after the login, we should be able to see the new Arduino plugin available in the left palette.
The Arduino IoT Cloud plugin for Node-RED allows Node-RED to read data from the sensors, send a payload back to the board, inject a value in one of our Arduino IoT Cloud properties, and access the historical values of a property. A property is the logical web representation of either a sensor or an actuator.
Now it’s time to make everything simpler and use Heroku to deploy Node-RED to our staging environment.
Heroku CLI 설치
Heroku is a PaaS vendor that makes it easy and fast to deploy apps to the cloud. We’ll use the Heroku CLI to set up and deploy to Heroku from our local machine. (The best way to install and understand how this works is by following the official tutorial on how to install Heroku CLI.) Once installed, in the same directory of our Node-RED instance, run
$ heroku login -i
heroku: Enter your login credentials
Email [[email protected]]:
Password: **************
Two-factor code: ******
Logged in as [email protected]
Then create a new app.
$ heroku create
Creating app... done, ⬢ arcane-castle-06470
https://arcane-castle-06470.herokuapp.com/ | https://git.heroku.com/arcane-castle-06470.git
And finally give it a better, memorizable name:
$ heroku apps:rename node-red-arduino
Renaming arcane-castle-06470 to node-red-arduino... done
https://node-red-arduino.herokuapp.com/ | https://git.heroku.com/node-red-arduino.git
Git remote heroku updated
▸ Don't forget to update git remotes for all other local checkouts of the app.
From now on, we’ll let Heroku handle the heavy work with deploying and running the app, as it supports Node.js and grunt out of the box.
To run Node-RED locally with Heroku, mimicking 100% what will happen in production, you can run...
$ heroku local
This will open the app at http://localhost:5000. However, we want to run and deploy our app on Heroku. This is just a matter of setting our vars and then pushing to the Heroku git endpoint.
## This will set the proper variables in Heroku. You can skip this if you want to use the Heroku Web UI to set your variables
$ cat .env | xargs heroku config:set
## Now deploy our app!
$ git push heroku iot-proto:master
And see it online!
그것을 싸라
We now have a secure Node-RED instance running on Heroku and ready to hook up to our Arduino boards.
I’ve also built a quick way to reproduce the steps I’ve shown in detail. Full instructions are available at my node-red-iot repo on Github.
Here’s a recap of what we learned today:
- The most common IoT Architectures
- Setting up Node-RED locally
- Adding security to Node-RED
- Add environment variables and manage settings
- Install Heroku CLI
- Deploy our Node-RED instance to Heroku
다음 단계
In the next article, I’ll show you how to create our embedded system on the Arduino boards, connect them to our Node-RED instance, then create and save a flow to our Heroku instance that is resilient to restarts. Finally, I’ll show you how to create a custom application on top of this setup using JavaScript.
Reference
이 문제에 관하여(어떻게 하루도 안 되는 시간 안에 강력한 사물인터넷 원형을 구축할 것인가--제1부분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mastrolinux/how-to-build-a-robust-iot-prototype-in-less-than-a-day-part-1-4o2l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)