Node-RED ile Görsel Olarak Programlama: Nesnelerin İnternetini Kolaylıkla Kablolama

Yayınlanan: 2022-03-11

Programlama yoluyla, basit talimat dizilerini izleyerek makinelerin karmaşık davranışları taklit etmesini sağlıyoruz. Assembly, C, Python ve JavaScript gibi metinsel programlama dillerini kullanmak, bunu yapmanın başlıca yollarından biridir. Bu programlama dillerinin tasarımcıları, anlamlı sözdizimi, sağlam programlama yapıları ve güçlü araç zincirleri aracılığıyla program yazma deneyimini olabildiğince kolay hale getirmek için sayısız saatler harcadılar. Ancak, bu programlama dillerinin tümü ortak bir özelliği paylaşır: metinsel kaynak kodu.

Programları metin olarak yazmak işe yarar ve çoğu durumda işe yarar. Bununla birlikte, programları görsel olarak ifade etme yeteneği genellikle arzu edilir. Daha büyük bir sistemin çeşitli bileşenleri aracılığıyla bilgi akışını tasarlayabilmek çoğu zaman ihtiyaç duyulan tek şeydir. Görsel programlama araçları ayrıca programlamada yeni olan ve değişkenler, işaretçiler, sinyaller, kapsamlar vb. gibi çeşitli kavramları ele almakta zorlanan herkese karşı hoşgörülüdür.

Node-RED Kullanarak Donanım Cihazlarını API'lerle Bağlayın

Node-RED, görsel olarak programlama için bir araçtır. İlişkileri ve işlevleri görsel olarak gösterir ve kullanıcının herhangi bir dil yazmadan programlama yapmasını sağlar. Node-RED, düğümleri ekleyip çıkarabileceğiniz ve birbirleriyle iletişim kurmalarını sağlamak için bunları birbirine bağlayabileceğiniz tarayıcı tabanlı bir akış düzenleyicisidir.

Node-RED'de her düğüm şu iki türden biridir: bir enjekte düğümü veya bir işlev düğümü . Enjekte düğümler herhangi bir girdi gerektirmeden bir mesaj üretir ve mesajı kendisine bağlı bir sonraki düğüme iletir. İşlev düğümleri ise bir girdi alır ve üzerinde biraz çalışır. Aralarından seçim yapabileceğiniz bu düğümlerin bolluğu ile Node-RED, donanım aygıtlarını, API'leri ve çevrimiçi hizmetleri birbirine bağlamayı her zamankinden daha kolay hale getiriyor.

Node-RED'e Başlarken

Node-RED, Node.js üzerine inşa edilmiştir. Node-RED'i kurmak için hem Node.js hem de NPM'nin kurulu olması gerekir. NPM ile Node-RED'i kurmak çok kolaydır:

 npm install -g node-red

Node-RED'in akış düzenleyicisi, web tarayıcısı tabanlı bir uygulamadır. Bunu kullanabilmek için Node-RED'i çalıştırın:

 node-red

&hellip ve http://localhost:1880 adresine gidin.

Selam Dünya!

"Merhaba dünya" demeyi öğrenmeden yeni başlayanlar için hangi programlama eğitimi tamamlandı? Tam olarak bunu deneyerek başlayalım:

  1. Akış düzenleyicide bir enjekte düğümünü sürükleyip bırakın. Ardından çift tıklayın ve payload'ı string olarak ayarlayın ve “Merhaba dünya” yazın.
  2. Inject düğümünde yaptığınız gibi bir hata ayıklama düğümünü sürükleyip bırakın.
  3. Onları birbirine bağlayın.
  4. Sağ köşedeki “Dağıt” düğmesine tıklayın.
  5. Enjekte düğümünün hemen solundaki mavi düğmeye tıklayın.

Dene. Bunun gibi bir şey göreceksiniz:

Sadece JavaScript

Node-RED ile sadece basit düğümler ve işlevlerle sınırlı değilsiniz. Node-RED, Node.js üzerine kurulduğundan, tamamı JavaScript tarafından desteklenmektedir. Düğümler aslında Node.js modülleridir. Http://flows.nodered.org/ adresinde bulunabilirler, bu yüzden onları sol panelinize eklemek için “npm kurabilirsiniz”. Aslında kendi akışınızı geliştirebilir ve bunları akış deposuna yükleyebilirsiniz. Uygulamalar istediğiniz kadar karmaşık olabilir, çünkü Node-RED'in sağladığı kod düzenleyicideki işlev düğümlerine JavaScript yazabilirsiniz.

Platform Node.js'ye dayandığından, aynı olaya dayalı, engellemesiz modelden yararlanır. Böylece Node-RED üzerine kurulu bir uygulama, Raspberry Pi gibi düşük maliyetli donanımların yanı sıra bulutta da çalıştırılabilir.

Şimdi Profesyonele Başlayalım: Ev Otomasyonu Zamanı

Node-RED'in Nesnelerin İnterneti alanına nasıl uyduğunu göstermek için akıllı ampulün rengini değiştirmek için bir uygulama oluşturalım. Herkesin emrinde aynı akıllı aydınlatma sistemi olmayabilir, ancak uygun Node-RED modülünü resmi akış deposundan bulabileceğiniz için endişelenecek bir şey yok. Ancak, işleri daha da kolaylaştırmak için daha akıllı bir şeye yönelmemize izin verin.

Netbeast ile tanışın. Kablosuz protokoller, marka uyumluluğu gibi ayrıntılar hakkında endişelenmenize gerek kalmadan veya her bir belirli API ile nasıl başa çıkılacağını bilmek zorunda kalmadan Nesnelerin İnterneti cihazları ve cihazları için uygulamalar geliştirmek için açık kaynaklı bir platformdur. Gerçek gibi davranan sanal cihazları kullanmamıza izin veriyor! Yani akıllı ampulünüz olmasa bile sanal bir ampulünüz var.

Netbeast for Node-RED npm paketini global olarak şu şekilde kurabiliriz:

 npm install -g node-red-contrib-netbeast

netbeast-red düğümü , API temel öğelerini evinizdeki tüm akıllı cihazlarınıza çevirecek olan Netbeast Dashboard'u temsil edecektir. Neyse ki bir modül olarak da mevcut!

Netbeast'i başlatın:

 npm install -g netbeast-cli netbeast start

Bu, kontrol panelini 8000 numaralı bağlantı noktasında ve 8443'te SSL'de kullanılabilir hale getirecektir. Ardından tarayıcınızı http://localhost:8000 olarak açın ve Keşfet'e gidin. Orada birçok uygulama ve eklenti bulabileceğiz. Akıllı ampullerinizin markalarını (Philips Hue, LIFX, WeMo) arayın veya yoksa ampul eklentisini indirmeyi deneyin. Kontrol Paneli eklentilerinizin bunlardan birini içerdiğini kontrol edin!

Sarı rozet, eklentilerin çalıştığını ancak herhangi bir cihaz bulamadıklarını gösterir. Sanal bir ampul oluşturmak için ampul eklentisine tıklayın. Keşfedilen diğer tüm cihazlar Ağ altında görünmelidir.

Her şey yerli yerindeyse, işe geri dönelim. Basit bir akış yapacağız:

  1. Bir enjekte düğümünü sürükleyip bırakın.
  2. Netbeast düğümünü sürükleyip bırakın.
  3. Bir hata ayıklama düğümünü sürükleyip bırakın.
  4. Hepsini aşağıda gösterildiği gibi bağlayın:

Şimdi Dashboard'a bir HTTP isteği gönderelim. Netbeast API'sini kullanarak, ampulümüzde tetiklemek istediğimiz değerleri içeren bir JSON'u enjekte düğümü aracılığıyla göndermemiz gerekecek.

Tüm akıllı ampullerinize rengi ve gücü enjekte etmek için düğmeye basın!

Her konu farklı türde bir cihazı temsil eder. Işıklar için olduğu kadar müzik, ısıtma ve video için de konular var; nem, varlık, sıcaklık sensörlerinin yanı sıra liste devam ediyor. Belgelerinde her türlü cihaza çevrilmesi için önerilen konuların bir listesini ve önerilen yapısını bulabilirsiniz. Bu IoT motoru henüz olgunlaşmamış ancak güçlü. Geliştiricilerin gerçekten bağlantılı senaryolar oluşturmak için bilgileri yeniden kullanmalarına olanak tanıyan açık kaynak, böylece akıllı olur.

daha derine gidelim

Ardından, ampulün rengini bir gürültü semaforu olarak değiştirmek için bir tetikleyici olarak kullanmak için başka bir eklenti, bir ortam gürültüsü dedektörü kullanarak ikinci bir akış oluşturacağız. Bu eğitimde sanal bir tane kullanacağız, bu yüzden yeni donanım satın almaya gerek yok. Node-RED editöründe “artı” butonuna tıklayarak başlayalım.

Kontrol Panelinde tekrar http://localhost:8000/explore'dan Keşfet bölümüne gidin ve Volume-Plugin'i arayın. Basit bir HTML uygulamasından medya yakalamak için tarayıcı içindeki getUserMedia() 'dan yararlanan çok ilkel bir web uygulamasıdır. Bu yüzden muhtemelen sadece modern tarayıcılarda çalışacak!

Sanal ampulde olduğu gibi açmak için üzerine tıklayın. Mikrofonunuzdan kayıt yapmak için izin isteyecektir. Ardından mesajları Netbeast'in tüm Dashboard'da paylaşılacak MQTT brokerine gönderecek ve böylece abone olabileceğiz. Böyle bir şeyi yapmak için, sadece bir netbeast tetikleyici düğümünü node-red'in düzenleyicisine sürükleyip bırakmamız gerekecek. Ardından, tetikleyici ile Netbeast düğümü arasına bir işlev ekleyeceğiz, böylece ne zaman çok gürültülü olup olmadığına karar vereceğiz. Ayrıca, her şeyin yolunda olup olmadığını kontrol etmek için bazı hata ayıklama düğümleri kullanmalıyız. Şema şimdi biraz şöyle görünecek:

Şimdi, tooLoud işlev düğümüne bazı kodlar girelim. Evet, kodlamaya gerek kalmadan programlayabileceğinize söz verdiğimi biliyorum, ancak yapabileceğinizi zaten gösterdim! Ayrıca, aşağıdakileri gerçekleştirmek için mevcut farklı öğeleri veya kayıt defterindeki diğer düğümleri birleştirmeyi deneyebilirsiniz.

 var volume = msg.payload.volume node.log(volume) if (volume < 50) { return { topic: 'lights', payload: { power: 1, color: '#00CC00'}} } else if (volume < 75) { return { topic: 'lights', payload: { power: 1, color: '#CCCC00'}} } else { return { topic: 'lights', payload: { power: 1, color: '#FF0000'}} }

Bu oldukça basit kod parçacığı, önceki düğüm tarafından bildirilen ses düzeyine bağlı olarak, belirli bir renk koduyla bir sonraki düğüm için üç yükten birini döndürür.

Şimdi gitmeye hazırız! Tekrar konuşlandır düğmesine basalım ve biraz ses çıkaralım. Ampulün bir renkten diğerine anında nasıl değiştiğini görelim!

Kullandığınız mikrofon ve web tarayıcısı farklı olabileceğinden, işlev değerlerini ve eşikleri ayarlamaktan çekinmeyin ve ayrıca ampullerinizi nasıl değiştirdiğini görmek için renk değerleriyle oynayın.

Kendi Eklentilerinizi Oluşturma

Saf CSS'deki bu ampul, bu cssdeck'ten ilham almıştır.

Fark etmiş olabileceğiniz gibi, daha önceki sanal ampul çok ilkeldir, bu yüzden ince ayar yapmak isteyebilirsiniz. Veya daha da iyisi, kendi akıllı ev kontrol cihazlarınızı oluşturabilirsiniz. Bu nedenle, akıllı cihazlar için kendi kontrol cihazlarınızı oluşturmanıza olanak sağlayacak Netbeast için sanal bir eklenti oluşturma sürecinden geçeceğiz.

Bazı kodları otomatik olarak oluşturmak için netbeast-cli paketini kullanabilirsiniz. netbeast create myplugin --plugin çalıştırarak aşağıdaki gibi temel bir proje elde ederiz:

 myplugin ├── README.md ├── index.js ├── package.json └── test.js

Ön Uç

Şimdi, ampulü bir ön uç ile taklit etmeye başlayalım. Aygıt denetleyicilerinde genellikle bir tane bulunmaz, bu nedenle henüz iskele komutuna ortak klasör eklenmez. Proje içinde bir public dir oluşturalım ve aşağıdaki HTML, CSS ve JS dosyalarını oraya yerleştirelim.

index.html

 <head> <title>Netbeast Bulb Plugin</title> <link rel="stylesheet" href="bulb.css" media="screen" charset="utf-8"> </head> <body> <div class="top-decoration"></div> <div> </div> <div class="bulb-container small"> <div class="bulb light"> <div> <div class="bulb top"></div> <div class="bulb middle-1"></div> <div class="bulb middle-2"></div> <div class="bulb middle-3"></div> <div class="bulb bottom"></div> </div> <div> <div class="screw-top"></div> <div class="screw a"></div> <div class="screw b"></div> <div class="screw a"></div> <div class="screw b"></div> <div class="screw a"></div> <div class="screw b"></div> <div class="screw c"></div> <div class="screw d"></div> </div> </div> </div> <div class="code-container"> <pre><i class="txt-red">beast</i>(<i class="txt-green">'lights'</i>).<i class="txt-blue">set</i>({ <i class="txt-green">color</i>: <i class="txt-green">"<input type="text" class="color" name="color" value="00fea5">"</i>, <i class="txt-green">power</i>: <i class="txt-green">"<input type="text" class="power" name="power" value="on">"</i> })</pre> <button> RUN </button> </div><!-- wrapper --> <!-- declares bulb features and methods --> <script type="text/javascript" src="bulb.js"></script> <!-- real time comms library --> <script type="text/javascript" src="socketio.js"></script> <!-- simulates hardware communication --> <script type="text/javascript" src="hw-api.js"></script> </body>

ampul.css

 section { float: left; padding: 20px 50px 20px 50px; } .bulb-light { border: 0; background: transparent; margin: 0 auto !important; padding: 0 !important; display: block; z-index: 1; } #bulb { opacity: 1; z-index: 3; display: block;} .bulb.top { border: 0; width: 300px; height: 300px; margin: 0 auto; padding: 0; border-radius: 999px; background: #E7E7E7; } .bulb.middle-1 { margin: -75px auto 0 auto; width: 190px; border-left: 35px solid transparent; border-right: 35px solid transparent; border-top: 55px solid #E7E7E7; } .bulb.middle-2 { margin: -22px auto 0 auto; width: 178px; border-left: 19px solid transparent; border-right: 19px solid transparent; border-top: 50px solid #E7E7E7; } .bulb.middle-3 { margin: -20px auto 0 auto; width: 182px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 30px solid #E7E7E7; } .bulb.bottom { width: 184px; height: 65px; margin: -8px auto 0 auto; padding: 0; border-radius: 0 0 999px 999px; background: #E7E7E7; } #base { position:relative; z-index: 2; } .screw { transform: rotate(-3deg); -ms-transform: rotate(-3deg); -webkit-transform: rotate(-3deg); padding: 0; } .screw-top { margin: -18px auto -4px auto; padding: 0; width: 132px; height: 0; border-left: 15px solid transparent; border-right: 15px solid transparent; border-top: 21px solid #D3D3D3; border-radius: 999px; } .screw.a { background: #DDD; width: 150px; height: 15px; border-radius: 999px; margin: -1px auto 0px; } .screw.b { background: #D9D9D9; width: 135px; height: 15px; margin: -1px auto 0px; } .screw.c { margin: -1px auto 0px; width: 78px; height: 0; border-left: 30px solid transparent; border-right: 30px solid transparent; border-top: 20px solid #DDD; border-radius: 8px; } .screw.d { margin: 0 auto; width: 15px; height: 0; border-left: 30px solid transparent; border-right: 30px solid transparent; border-top: 15px solid #444; } .on #light { -moz-opacity: 1; -khtml-opacity: 1; opacity: 1; } .bulb.top, .bulb.bottom { transition: all 0.5s ease-in-out; } .bulb.middle-1, .bulb.middle-2, .bulb.middle-3 { transition: all 0.5s ease-in-out; }

Bu HTML ve CSS dosyalarıyla, tarayıcınızda zaten bir ampul şekli görebilmeniz gerekir. Devam edin ve canlı görmek için HTML dosyanızı açın! Çalışıyormu? Harika, şimdi ona biraz işlevsellik verelim.

ampul.js

Bu dosya, basit bir tıklamayla bir ampul davranışını taklit edecek, tıklatacak ve Netbeast aracılığıyla rengini değiştirmek için biraz sonra kullanılacak birkaç işlevi ayarlayacaktır.

 var color = document.getElementById('color') var power = document.getElementById('power') var bulb = document.getElementById('bulb') var button = document.getElementById('run-btn') var light = document.getElementById('light') button.onclick = function toggleBulbState () { changeBulbParams({ color: color.value, power: power.value }) } function setBulbParams (params) { if (params.power === 'off') { params = { color: 'E7E7E7' } } console.log('set params', params) var bulb_parts = ['.bulb.middle-1', '.bulb.middle-2', '.bulb.middle-3'] document.querySelector('.bulb.top').style.boxShadow = '0px 0px 98px #' + params.color document.querySelector('.bulb.top').style.backgroundColor = params.color document.querySelector('.bulb.bottom').style.backgroundColor = params.color bulb_parts.forEach(function (className) { document.querySelector(className).style.borderTopColor = params.color }) } function changeBulbParams (params) { console.log('change params', params) /* Overwrite html fields if necessary */ color.value = params.color || color.value power.value = params.power || power.value setBulbParams({color: color.value, power: power.value}) }

Bundan sonra, alanlar ve çalıştır düğmesinin tümü anlamlı olmalıdır. Yepyeni sanal ampulünüzde farklı renkleri denemeye başlayabilirsiniz. Ancak bunca yolu gelmemizin nedeni, onu Nesnelerin İnterneti ekosistemimizin başka bir cihazı yapmaktı.

hw-api.js

Kendi ürettiğimiz ön uç JS'mizin sonuncusu. Bir WiFi veya Bluetooth ampulünün telefon, sunucu veya hub gibi uzaktan kumandasıyla yapacağı gibi, sunucuyla kablosuz bir bağlantı kurar. Gerçek eklenti kodunun onu kontrol etmek için kullanacağı arayüzdür!

 var socket = io.connect() socket.on('connect', function () { console.log('ws:// bulb is online') }) socket.on('disconnect', function () { console.log('ws:// connection with bulb lost') }) socket.on('set', function (params) { changeBulbParams(params) // uses functions from bulb.js! }) socket.on('get', function () { const params = { power: power.value, color: color.value } socket.emit('params', params) })

Son olarak, HTML'mize dahil edilecek WebSocket kitaplığına ihtiyacımız var, böylece ön uç hazır. Kaynağı https://raw.githubusercontent.com/netbeast/bulb-plugin/master/public/socketio.js adresinden kopyalayabilir ve socketio.js adlı bir dosyaya yapıştırabilirsiniz. curl veya wget içeren bir terminalden bunu basitçe yapabilirsiniz:

 curl https://raw.githubusercontent.com/netbeast/bulb-plugin/master/public/socketio.js > public/socketio.js

Şimdiye kadar şuna benzeyen bir dosya yapısına sahip olurduk:

 myplugin ├── README.md ├── index.js ├── package.json ├── public │ ├── bulb.css │ ├── bulb.js │ ├── hw-api.js │ ├── index.html │ └── socketio.js └── test.js

arka uç

Şimdi arayüzü cihaz ile uygulayacağız ve Netbeast motoruna kaydedeceğiz. Ağa bir ampulün takıldığını algılamak için web yuvalarını dinleyecek ve ardından yeni kaynakların kullanılabilir olması için Gösterge Tablosu API'sine bir POST yapacak.

Bunun için daha önce oluşturduğumuz dosyalara bir göz atalım:

paket.json

Bu dosya, uygulamanızı çalıştırmak için gereken tüm bağımlılıkları ve bilgileri içerir. Netbeast, ad veya tür olarak bazı bilgileri almak için normal package.json kullanır. Bu paketin bir eklenti olduğunu belirtmek önemlidir!

 { "name": "myplugin", "version": "0.0.0", "description": "Netbeast plugin for... <your description>", "main": "index.js", "netbeast": { "bootOnLoad": true, "type": "plugin" }, "dependencies": { "bluebird": "^3.3.5", "body-parser": "^1.15.0", "express": "^4.13.4", "minimist": "^1.2.0", "mocha": "^2.3.2", "morgan": "^1.6.1", "netbeast": "^1.0.6", "socket.io": "^1.4.5", "superagent": "^1.8.3" }, "devDependencies": {}, "scripts": { "test": "node test.js", "start": "node index.js" }, "repository": { "type": "git", "url": "GITHUB_REPOSITORY" }, "keywords": [ "iot", "netbeast", "plugin" ], "author": "YOUR_EMAIL", "license": "GPL 3", "bugs": { "url": "ISSUES_CHANNEL" }, "homepage": "HOMEPAGE" }

index.js

Bu, eklentiyi başlatmak için Netbeast panosundan çağrılan koddur! Gelen isteklerin nerede kabul edileceğini bilmek için bağlantı noktasını komut satırı argümanlarıyla kabul etmesi gerekecek. Sanki node myplugin.js --port <a free port number> gibi başlatılacak. Lütfen başlangıçtaki hashbang'e de dikkat edin! #!/usr/bin/env node .

 #!/usr/bin/env node var io = require('socket.io')() var express = require('express') var bodyParser = require('body-parser') var app = express() // Netbeast apps need to accept the port to be launched by parameters var argv = require('minimist')(process.argv.slice(2)) app.use(express.static('public')) // will serve our app in an HTTP server app.use(bodyParser.json()) // will parse JSON API calls app.use('/api', require('./plugin')(io)) var server = app.listen(argv.port || 31416, function () { console.log('Bulb plugin listening at http://%s:%s', server.address().address, server.address().port) }) // we need websockets to push updates to browser view io.listen(server)

Gördüğünüz gibi, onu başlatmak için bir dosya eksikti, aslında socket.io denetleyicilerini uygulayan dosya. Fantezi bir şey yok!

eklenti.js

 var express = require('express') var netbeast = require('netbeast') var router = express.Router() var bulbParams // auxiliar variable, nasty way to transmit changes, but works module.exports = function (io) { io = io // Create resource that works on lights topic and listens on /api route netbeast('lights').create({ app: 'myplugin', hook: '/api' }) io.on('connection', function () { console.log('ws:// bulb has connected to plugin') }) io.on('disconnection', function () { console.log('ws:// bulb has disconnected from plugin') }) io.on('connect_failure', function (err) { console.trace(err) }) router.post('/', function (req, res) { io.emit('set', { power: req.body.power, color: req.body.color, }) res.status(200).json(req.body) }) router.get('/', function (req, res) { io.emit('get') var timerReference = setTimeout(function () { if (bulbParams) { res.json(bulbParams) } else { res.status(200).json({ error: 'No bulb available' }) } }, 3000) }) return router }

Uygulamanızı Başlatın

Şimdi uygulamanızı test etme zamanı. Bunu tar.gz biçiminde paketleyerek ve http://localhost:8000/install sürükle ve bırak bölümündeki kontrol panelinize yükleyerek yapabilirsiniz.

 beast package # Compresses your app when ran in myplugin dir

işte! Artık eklentilerinize gidebilir ve test edebilirsiniz. Çalıştığını görmek için ağ bölümüne (http://localhost:8000/devices) gidin ve oradan rengini değiştirin.

Bir şeyler ters giderse veya bir ayrıntıyı kaçırmış olabileceğinizi düşünüyorsanız, onu node index.js ile yerel olarak çalıştırmayı deneyin ve belki de hata ayıklamak netbeast start ​​günlüğünden daha kolay olacaktır.

Çalışmanızı Yayınlayın

Uygulamanızın Netbeast panosu Keşfet bölümünde görüntülenmesini istiyorsanız, hem açıklamada hem de README.md'de bulunan Netbeast uygulaması veya Netbeast eklentisi ile GitHub'da bir havuz oluşturmalısınız.

Uygulamaları bulmak için GitHub'ın arama API'sini kullanıyoruz. Bir GET isteğinde bulunduğunuzda görünen sonuçların aynısını görüyoruz: https://api.github.com/search/repositories?q=netbeast+language:javascript

Orada görünürse uygulamanızın gösterileceğini bileceksiniz!

Sıradaki ne?

Her iki proje de açık kaynaklıdır ve gerçekten ilgili topluluklara sahiptir. Node-RED için kendi akışlarınızı veya düğümlerinizi oluşturmaya başlamak istiyorsanız, resmi belgelerine bir göz atın. Orada açıklanan adımları izleyin ve kendi düğümünüzü veya akışınızı hemen yayınlayabilmeniz gerekir.

Öte yandan, Netbeast'e dalmak istiyorsanız, belgelerini de takip edebilir veya Dashboard deposuna göz atabilirsiniz. Netbeast API'yi kullanarak artık tek tek cihazlara, markalara veya teknolojilere odaklanmanız gerekmiyor, bu yüzden bir deneyin. Bununla ilgili daha fazla bilgiyi buradan edinebilir veya Slack kanallarına katılabilir ve Node-RED, IoT veya Node.js hakkında tartışabilirsiniz.

Bu şeyleri bir Raspberry Pi, Beagle Bone veya eski bir sunucuya kurmak istiyorsanız, onları kodsuz, hacklenebilir bir Smart Hub'a dönüştürürsünüz! Her iki sitede de onlar için hazır yapılar var.

Mutlu hack.

İlgili: Güvensiz Bir Nesnelerin İnterneti (IoT) Yaratıyor muyuz?