Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Binnenluchtkwaliteit en afvalbewakingssysteem

Componenten en benodigdheden

Raspberry Pi 3 Model B
× 1
Arduino UNO
× 1
NodeMCU ESP8266 Breakout Board
× 1
DHT11 temperatuur- en vochtigheidssensor (4 pinnen)
× 1
Seeed Grove - Gassensor(MQ2)
× 1
MQ-7 CO-gassensor (algemeen)
× 1
Ultrasone sensor - HC-SR04 (algemeen)
× 1
Raspberry Pi-voeding
× 1
HDMI-kabel
× 1
USB-A naar B-kabel
× 1
Jumperdraden (algemeen)
× 1
5V-batterij (algemeen)
× 1

Apps en online services

IOTA Tangle
Node.js
Raspberry Pi Raspbian
Arduino IDE
MQTT

Over dit project

1. Inleiding

Gebouwautomatisering is de automatische gecentraliseerde regeling van de verwarming, ventilatie en airconditioning, verlichting en andere systemen van een gebouw via een gebouwbeheersysteem of gebouwautomatiseringssysteem (BAS). De doelstellingen van gebouwautomatisering zijn verbeterd comfort voor de gebruikers, efficiënte werking van gebouwsystemen, vermindering van energieverbruik en bedrijfskosten, en verbeterde levenscyclus van nutsvoorzieningen.

IOTA is een open source gedistribueerde boekhoudtechnologie met als doel het veilig uitwisselen van informatie en waarde in het internet der dingen. Een van de belangrijkste innovaties van IOTA is dat het, in plaats van de traditionele Blockchain, zijn eigen architectuur (Tangle) gebruikt op basis van een wiskundig concept genaamd Directed Acyclic Graph (DAG). Deze architectuur maakt het mogelijk dat er geen commissies zijn, dat de latentie van het netwerk laag is en betere perspectieven op schaalbaarheid. IOTA is momenteel in ontwikkeling en de verwachting is dat de technologie in 2019 klaar zal zijn om op grote schaal te worden toegepast.

De specificaties van de Raspberry Pi 3 B omvatten:

  • CPU:Quad-core 64-bit ARM Cortex A53 geklokt op 1,2 GHz.
  • GPU:400MHz VideoCore IV-multimedia.
  • Geheugen:1 GB LPDDR2-900 SDRAM (d.w.z. 900 MHz)
  • USB-poorten:4.
  • Video-uitgangen:HDMI, composiet video (PAL en NTSC) via 3,5 mm-aansluiting.
  • Netwerk:10/100 Mbps Ethernet en 802.11n draadloos LAN.

Kenmerken van de Arduino UNO bord:

  • Microcontroller:ATmega328.
  • Bedrijfsspanning:5V.
  • Ingangsspanning (aanbevolen):7-12V.
  • Ingangsspanning (limieten):6-20V.
  • Digitale I/O-pinnen:14 (waarvan 6 voor PWM-uitvoer)
  • Pinnen voor analoge ingang:6.
  • DC-stroom per I/O-pin:40 mA.
  • DC-stroom voor 3.3V-pin:50 mA.

NodeMCU , kenmerken:

  • Eindelijk een programmeerbare wifi-module.
  • Arduino-achtige (software gedefinieerde) hardware IO.
  • Kan worden geprogrammeerd met de Arduino IDE.
  • USB-TTL meegeleverd, plug &play.
  • 10 GPIO's D0-D10, PWM-functionaliteit, IIC- en SPI-communicatie, 1-draads en ADC A0 enz. allemaal in één bord.

Dit project is onderverdeeld in drie versies. Voor een beter begrip van het project hebben we het onderverdeeld in de volgende hoofdstukken:

  • 1. Inleiding
  • 2. Software-installatie
  • 3. Monitoringsysteem voor de binnenluchtkwaliteit v1
  • 4. Monitoringsysteem voor de binnenluchtkwaliteit v2
  • 5. Garbage Monitoring Systeem
  • 6. Conclusies

2. Software-installatie

a) Installeer Raspbian op de Raspberry PI 3 B

Ik heb NOOBS . geïnstalleerd , de downloadlink en de instructies staan ​​in:https://www.raspberrypi.org/downloads/

b) Installeer Node.JS

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs

c) Download en bouw de BCM2835-bibliotheek op de Raspberry Pi. Deze bibliotheek helpt ons om met de DHT11-sensor te werken.

$ wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz
$ tar zxvf bcm2835-1.56.tar.gz
$ cd bcm2835 -1.56
$ ./configure
$ make
$ sudo make check
$ sudo make install

d) Download en installeer het indoor-air-kwaliteit-iota-project op de Raspberry Pi

$ cd ~
$ git clone https://github.com/guillengap/indoor-air-quality-and-garbage-monitoring-system.git
$ cd indoor-air -quality-and-garbage-monitoring-system
$ npm install

e) Download en installeer seriële poort

$ nmp install serialport 

f) Download en installeer Arduino IDE:

https://www.arduino.cc/en/Main/Software

3. Monitoringsysteem voor de binnenluchtkwaliteit v1

De DHT11-sensorgegevens worden gelezen en gepubliceerd naar de Tangle met behulp van MAM.

Hoe werkt het?

a) Het indoor-air-kwaliteit-iota-project heeft 3 javascriptbestanden:

  • sensor.js :De DHT11-sensorgegevens worden gelezen en weergegeven:temperatuur en vochtigheid.
  • mam_sensor.js :De DHT11-sensorgegevens worden gelezen en gepubliceerd naar de IOTA Tangle met behulp van MAM.
  • mam_receive.js :extraheer de opgeslagen gegevens uit de IOTA Tangle met behulp van MAM en geef de gegevens weer.

b) Het eindpunt van het volledige knooppunt en de zijsleutel zijn beide hardgecodeerd in de javascript-bestanden. Om het uitvoeren van een script te stoppen, drukt u op CTRL+Z .

c) Maak verbinding met het Arduino UNO-bord, de DHT11-sensor.

d) Voer nodesensor.js uit om te controleren of de Raspberry Pi temperatuur- en vochtigheidsgegevens van de DHT11-sensormodule kan lezen.

$ node sensor.js 

Hier kunnen we de vochtigheids- en temperatuurgegevens zien die zijn vastgelegd door de DHT11-sensor. Als alles goed is, gaan we naar de volgende stap.

e) Uitvoeren knooppunt mam_sensor.js . Dit script slaat de temperatuur- en vochtigheidsgegevens van de DHT11-sensormodule op in de Tangle.

$ node mam_sensor.js 

We hebben getest met drie knooppunten en hadden betere resultaten met:https://potato.iotasalad.org:14265

//const iota =nieuwe IOTA({ provider:'https://nodes.testnet.iota.org:443' });
const iota =nieuwe IOTA({ provider:'https ://potato.iotasalad.org:14265' });
//const iota =nieuwe IOTA({ provider:'https://peanut.iotasalad.org:14265' });

U kunt enkele beschikbare knooppunten raadplegen in:https://iotasalad.org/nodes

We sturen de volgende informatie:

  • Stad:MEXICO
  • Gebouw:65
  • Datum en tijd (UTC):JAAR. MAAND, DAG, UUR. MINUTEN EN SECONDEN
  • Gegevens:temperatuur in graden Celsius en Fahrenheit en relatieve vochtigheidspercentage

f) Open een andere terminal en typ:node mam_receive.js your_root en de opgeslagen sensorgegevens worden weergegeven. Bijvoorbeeld:

$ node mam_receive.js AMBTIKZKEVEEQFCUGIDUOLDOXL9OZQ9GOMNBFYHVRAUCAMHDQQJBSNAMFZYRLTUVAHFDINHTTFKIPELIG 

De code die de ontvangen gegevens beheert is:

// ONTVANG GEGEVENS UIT DE TANGLE
const executeDataRetrieval =async function(rootVal, keyVal) {
let resp =wait Mam.fetch(rootVal, MODE, keyVal, function(data) {
let json =JSON.parse(iota.utils.fromTrytes(data));
console.log(`Stad:${json.city}, Gebouw:${json.building}, Tijd :${json.dateTime} UTC, gegevens:${json.data}`);
});
}

Test

Afbeeldingen

4. Monitoringsysteem voor de binnenluchtkwaliteit v2

De DHT11-, MQ-2- en MQ-7-sensorgegevens worden gelezen en gepubliceerd naar de Tangle met behulp van MAM

Hoe werkt het?

a) Het Iota-project voor binnenluchtkwaliteit heeft 5 bestanden:

  • sensorArduino.ino :Deze code is om de gegevens van de drie sensoren vast te leggen:DHT11 vochtigheids- en temperatuursensor, MQ-2 LPG-gassensor en MQ-7 CO-gassensor.
  • listportsArduino.ino :Het toont ons de beschikbare poorten van het Arduino UNO-bord.
  • sensorArduino.js :De DHT11-, MQ-2- en MQ-7-sensorgegevens worden gelezen en weergegeven.
  • mam_sensorArduino.js :De DHT11-, MQ-2- en MQ-7-sensorgegevens worden gelezen en gepubliceerd naar de Tangle met behulp van MAM.
  • mam_receiveArduino.js :Haal de opgeslagen gegevens uit de Tangle met behulp van MAM en geef de gegevens weer.

b) Het eindpunt van het volledige knooppunt en de zijsleutel zijn beide hardgecodeerd in de javascript-bestanden. Om het uitvoeren van een script te stoppen, drukt u op CTRL+Z .

c) Maak verbinding met het Arduino UNO-bord, de sensoren:DHT11, MQ-2 en MQ-7.

d) In de map "sensorArduino", die te vinden is in het project indoor-air-kwaliteit-iota, hebben we de sensorbibliotheken:DHT11, MQ-2 en MQ7. We moeten ze in de Arduino-bibliotheken installeren.

e) Upload de schets sensorArduino.ino , naar het Arduino UNO-bord en voer het uit. Selecteer de communicatiepoort met het Arduino UNO-bord, in mijn geval is dat:Tools> Port> / dev / ttyACM0

f) Open een terminal en voer node listportsArduino.js uit om te controleren of onze poort actief is.

$ node listportsArduino.js 

g) Voer node mam_sensorArduino.js uit . Dit script slaat de gegevens van het Arduino UNO-bord op in de Tangle.

$ node mam_sensorArduino.js 

We sturen de volgende informatie:

  • Stad:NY
  • Gebouw:13
  • Datum en tijd (UTC):JAAR. MAAND, DAG, UUR. MINUTEN EN SECONDEN
  • Gegevens:LPG-gas in ppm, CO-gas in ppm, temperatuur in graden Celsius, relatieve vochtigheidspercentage,

h) Open een andere terminal en typ:node mam_receiveArduino.js your_root en de opgeslagen sensorgegevens worden weergegeven. Bijvoorbeeld:

De code die de ontvangen gegevens beheert is:

// ONTVANG GEGEVENS UIT DE TANGLE
const executeDataRetrieval =async function(rootVal, keyVal) {
let resp =wait Mam.fetch(rootVal, MODE, keyVal, function(data) {
let json =JSON.parse(iota.utils.fromTrytes(data));
console.log(`Stad:${json.city}, Gebouw:${json.building}, Tijd :${json.time} UTC, gegevens:${json.data}`);
});
executeDataRetrieval(resp.nextRoot, keyVal);
}

Test

Afbeeldingen

5. Vuilnismonitoringsysteem

Stuur SRF05-sensorgegevens met NodeMCU en MQTT naar IOTA Tangle met MAM

Hoe werkt het?

a) Dit project heeft 3 bestanden:

  • prullenbak.ino :Deze code berekent de hoeveelheid afval in een prullenbak in %. Stuur vervolgens de gegevens naar het Raspberry Pi 3B-bord met behulp van het MQTT-protocol.
  • nodemcu_mqtt_mam .js :De SRF05-sensorgegevens worden gelezen en gepubliceerd naar de Tangle met behulp van MAM.
  • nodemcu_mam_receive.js :Haal de opgeslagen gegevens uit de Tangle met behulp van MAM en geef de gegevens weer.

b) Het eindpunt van het volledige knooppunt en de zijsleutel zijn beide hardgecodeerd in de javascript-bestanden. Om het uitvoeren van een script te stoppen, drukt u op CTRL+Z .

c) Maak verbinding met het NodeMCUboard, de SRF05 ultrasone sensoren.

d) Installeer esp8266-pakketten met behulp van de Boards Manager. Open het Arduino IDE-voorkeurenvenster en voer in het veld Additional Board Manager-URL's in:http://arduino.esp8266.com/stable/package_esp8266com_index.json

Selecteer menu:Tools> Board> Board Manager... Typ in het zoekveld:esp8266 en installeer de nieuwste versie.

e) Laten we nu de NodeMCU laten communiceren met een muggenserver. Begin eerst met het toevoegen van de PubSubClient-bibliotheek aan de Arduino IDE. Deze bibliotheek is voor MQTT-berichten en ondersteunt NodeMCU.

  • Selecteer menu:Schets> Bibliotheek opnemen> Bibliotheken beheren
  • Zoeken naar:PubSub
  • Selecteer PubSubClient (Nick O'Leary) en installeer de nieuwste versie

f) Volgende installeer Mosquitto (MQTT) op de RaspberryPi 3B. Het MQTT-protocol biedt een lichtgewicht methode om berichten uit te voeren met behulp van een publish/subscribe-model. Dit maakt het geschikt voor Internet of Things-berichten, zoals met sensoren met een laag vermogen of mobiele apparaten zoals telefoons, embedded computers of microcontrollers. Log in op je Raspberry Pi, open een terminal en typ:

$ cd~ 
$ wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
$ apt-key add mosquitto-repo.gpg.key
$ cd /etc/apt/sources.list.d/$ wget http://repo.mosquitto.org/debian/mosquitto-stretch.list

Installeer nu het volgende:

$ cd~
$ wget http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.0.0_1.0.1t-1+deb8u11_armhf .deb
$ sudo dpkg -i libssl1.0.0_1.0.1t-1+deb8u11_armhf.deb
$ wget http://ftp.nz.debian.org/debian/pool/main/libw/ libwebsockets/libwebsockets3_1.2.2-1_armhf.deb
$ sudo dpkg -i libwebsockets3_1.2.2-1_armhf.deb

De nieuwste versie van libss... kunt u hier vinden:http://security.debian.org/debian-security/pool/updates/main/o/openssl/

Installeer MQTT-makelaar en muggenclients.

$ sudo apt-get install mosquitto mosquitto-clients 

Als je een probleem hebt met de installatie van MQTT, kun je het volgende proberen:

$ npm install mqtt --save 

Start de Raspberry Pi opnieuw op. Open een terminal en verifieer de mugversie:

$ mug -v 

U kunt de muggenserver starten en stoppen:

$ sudo /etc/init.d/mosquitto start
$ sudo /etc/init.d/mosquitto stop

We verifiëren het IP-adres van de Raspberry Pi:

$ ifconfig 

g) Upload de schets trashcan.ino , naar het NodeMCU-bord. Volgende gegevens verifiëren:

  • NodeMCU 1.0-kaart
  • Seriële poort
  • Serial.begin(115200);
  • const char* wifi_ssid ="ARRIS-WXYZ";
  • const char* wifi_password ="XXXXXXXXXXXX";
  • const char* mqtt_server ="192.168.0.12"; // RASPBERRY IP
  • int prullenbak =25;// MIJN TRASHCAN HEEFT 25 CM LENGTE

h) Voer nodemcu_mqtt_mam.js uit , slaat dit script de gegevens van het NodeMCU-bord op in de Tangle.

$ nodemcu_mqtt_mam.js 

We sturen de volgende informatie:

  • Stad:BERLIJN
  • Gebouw:7
  • Datum en tijd (UTC):JAAR. MAAND, DAG, UUR. MINUTEN EN SECONDEN
  • Gegevens:percentage prullenbak.

i) Open een andere terminal en typ:node mam_receiveArduino.js your_root en de opgeslagen sensorgegevens worden weergegeven. Bijvoorbeeld:

De code die de ontvangen gegevens beheert is:

// ONTVANG DATA FRON THE TANGLE
const executeDataRetrieval =async function(rootVal, keyVal) {
let resp =wait Mam.fetch(rootVal, MODE, keyVal, function(data) {
let json =JSON.parse(iota.utils.fromTrytes(data));
console.log(`City:${json.city}, Building:${json.building}, dateTime :${json.dateTime} UTC, Data:${json.data}`);
});
executeDataRetrieval(resp.nextRoot, keyVal);
}

Bij deze gelegenheid was het beschikbare knooppunt anders:https://iotasalad.org/nodes

const iota =nieuwe IOTA({ provider:'https://durian.iotasalad.org:14265' }); 

Test

Afbeeldingen

6. Conclusies

Bewakingssysteem voor de luchtkwaliteit binnenshuis v1:

Dit project heeft naar tevredenheid gewerkt en we monitoren de kwaliteit van de lucht in een gebouw, zoals we kunnen zien aan de behaalde resultaten. We simuleren dit project in een gebouw dat zich in Mexico-Stad bevindt. Dit was een basistest met behulp van de DHT11-vochtigheids- en temperatuursensor en het Raspberry Pi 3B-bord, Java Script-code en het IOTA-protocol.

Bewakingssysteem voor de luchtkwaliteit binnenshuis v2:

In dit project hebben we de DHT11, MQ-2 (LPG) en MQ-7 (CO) sensoren gebruikt. In dit geval. we simuleren het vastleggen van de gegevens in een gebouw in New York City, en we sturen deze gegevens met behulp van Arduino UNO- en Raspberry Pi-borden naar IOTA Tangle met behulp van Masked Authenticated Messaging (MAM). Dit was een praktische en snelle manier om meer sensoren toe te voegen. Deze versie kan worden gebruikt in slimme gebouwen en in industrieën waar LP-gas wordt gebruikt en waar koolmonoxide wordt geproduceerd door branden.

Vuilnisbewakingssysteem:

Het doel van dit project is om controle te krijgen over de vuilnisbelt in een slim gebouw in de stad Berlijn of een ander district. De opeenhoping van afval kan onaangename geuren produceren van producten in ontbinding, maar nu kunnen we weten, hoe lang een vuilnisboot met afval heeft en het percentage van dit afval.


Code

  • sensor.js
  • mam_sensor.js
  • mam_receive.js
  • mam_sensorArduino.js
  • mam_receiveArduino.js
sensor.jsJavaScript
Monitoringsysteem voor binnenluchtkwaliteit v1
Code om de DHT11-sensor te testen
const-sensor =required('node-dht-sensor');const TIMEINTERVAL =10; // SECONDSconst SENSORTYPE =11; // 11=DHT11, 22=DHT22const GPIOPIN =4; // RASPBERRY GPIO-PIN VAN DE DHT11-SENSORfunctie readSensor(){sensor.read(SENSORTYPE, GPIOPIN, function(err, temperature, vochtigheid) {if (!err) { console.log('temp:' + temperature.toFixed(1 ) + 'C, ' + 'luchtvochtigheid:' + vochtigheid.toFixed(1) + '%'); } else { console.log(err); } });}readSensor();// ELKE SENSORWAARDE AUTOMATISCH BIJWERKEN 10 SECONDSsetInterval(readSensor, TIMEINTERVAL*1000);
mam_sensor.jsJavaScript
Monitoringsysteem voor binnenluchtkwaliteit v1
Deze code slaat de temperatuur- en vochtigheidsgegevens op van de DHT11-sensormodule naar de Tangle
const-sensor =required('node-dht-sensor');const Mam =required('./lib/mam.client.js');const IOTA =vereisen('iota.lib.js');const moment =vereisen('moment');//const iota =nieuwe IOTA({ provider:'https://nodes.testnet.iota.org:443 ' });const iota =nieuwe IOTA({ provider:'https://potato.iotasalad.org:14265' });//const iota =nieuwe IOTA({ provider:'https://peanut.iotasalad.org :14265' });const MODE ='beperkt'; // PUBLIEK, PRIVÉ OF RESTRICTEDconst SIDEKEY ='mysecret'; // ALLEEN GEBRUIKT IN BEPERKTE MODUSconst SECURITYLEVEL =3; const TIJDINTERVAL =30; // SECONDSconst SENSORTYPE =11; // 11=DHT11, 22=DHT22const GPIOPIN =14; // RASPBERRY GPIO PIN VAN DHT11 SENSOR// INITIALISEER MAM STATElet mamState =Mam.init (iota, undefined, SECURITYLEVEL);// CHANNEL MODEif (MODE =='restricted') {cont key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode (mamState, MODE, key);} else { mamState =Mam.changeMode (mamState, MODE);}// PUBLICEREN NAAR TANGLEconst publish =asynchrone functie (pakket) { // MAAK MAM PAYLOAD const trytes =iota .utils.toTrytes(JSON.stringify(pakket)); const-bericht =Mam.create (mamState, trytes); // OPSLAAN NIEUWE MAMSTATE mamState =message.state; console.log('Root:', bericht.root); console.log('Adres:', bericht.adres); // BEVESTIG DE PAYLOAD wacht op Mam.attach (message.payload, message.address); return message.root;}functie readSensor(){ sensor.read(SENSORTYPE, GPIOPIN, asynchrone functie(err, temperatuur, vochtigheid) {if (!err) { const city =('MEXICO'); const building =('65 '); const dateTime =moment().utc().format('YYYY/MM/DD uu:mm:ss'); const data =`{Temperature:${temperature.toFixed(1)}°C ($ {(temperature.toFixed(1)*1.8)+32}°F), Vochtigheid:${humidity.toFixed(1)}%}`; const json ={"data":data, "dateTime":dateTime, " building":building, "city":city}; const root =wait publish(json); console.log(`City:${json.city}, Building:${json.building}, Tijd:${json. dateTime} UTC, Data:${json.data}, root:${root}`); } else { console.log(err); } });}// START ITreadSensor();// SENSORWAARDE AUTOMATISCH BIJWERKEN ELKE 30 SECONDSsetInterval(readSensor, TIMEINTERVAL*1000);
mam_receive.jsJavaScript
Monitoringsysteem voor binnenluchtkwaliteit v1
De opgeslagen sensorgegevens worden weergegeven.
const Mam =required('./lib/mam.client.js');const IOTA =required('iota.lib.js');//const iota =new IOTA( { provider:'https://nodes.testnet.iota.org:443' });const iota =nieuwe IOTA({ provider:'https://potato.iotasalad.org:14265'});//const iota =nieuwe IOTA({ provider:'https://peanut.iotasalad.org:14265' });const MODE ='beperkt'; // PUBLIEK, PRIVÉ OF RESTRICTEDconst SIDEKEY ='mysecret'; // ALLEEN GEBRUIKT IN BEPERKTE MODElet root;let key;// CONTROLEER DE ARGUMENTSconst args =process.argv;if(args.length !=3) { console.log('Ontbrekende root als argument:node mam_receive.js  '); process.exit();} else if(!iota.valid.isAddress(args[2])){ console.log('Je hebt een ongeldige root ingevoerd:'+ args[2]); process.exit();} else { root =args[2];}// INITIALISE MAM STATElet mamState =Mam.init(iota);// SET CHANNEL MODEif (MODE =='restricted') { key =iota.utils .toTrytes(SIDEKEY); mamState =Mam.changeMode (mamState, MODE, key);} else { mamState =Mam.changeMode (mamState, MODE);}// ONTVANG GEGEVENS VAN DE TANGLEconst executeDataRetrieval =async-functie (rootVal, keyVal) {laat resp =wacht op Mam .fetch(rootVal, MODE, keyVal, function(data) { let json =JSON.parse(iota.utils.fromTrytes(data)); console.log(`City:${json.city}, Building:${json .building}, Tijd:${json.dateTime} UTC, Gegevens:${json.data}`); }); }executeDataRetrieval(root, sleutel);
mam_sensorArduino.jsJavaScript
Monitoringsysteem voor binnenluchtkwaliteit v2
De gegevens van de DHT11-, MQ-2- en MQ-7-sensoren worden gelezen en gepubliceerd naar de Tangle met behulp van MAM. ('iota.lib.js');const Mam =required('./lib/mam.client.js');//const iota =new IOTA({ provider:'https://nodes.testnet.iota. org:443' });const iota =nieuwe IOTA({ provider:'https://potato.iotasalad.org:14265' });const MODE ='beperkt'; // PUBLIEK, PRIVÉ, RESTRICTEDconst SIDEKEY ='mysecret'; // ALLEEN ASCII-KARAKTERSconst BEVEILIGINGSNIVEAU =3; // 1, 2, 3const PORTNAME ='/dev/ttyACM1'; // VOER GELDIGE POORT IN const port =new SerialPort(PORTNAME, {baudRate:9600, autoOpen:true});const Readline =SerialPort.parsers.Readline;const parser =port.pipe(new Readline({ scheidingsteken:'\r\ n' }));// INITIALISEER MAM STATElet mamState =Mam.init(iota, undefined, SECURITYLEVEL);// SET CHANNEL MODEif (MODE =='restricted') { const key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode (mamState, MODE, key);} else { mamState =Mam.changeMode (mamState, MODE);}// PUBLICEREN NAAR TANGLEconst publish =asynchrone functie (pakket) { // MAAK MAM PAYLOAD const trytes =iota .utils.toTrytes(JSON.stringify(pakket)); const-bericht =Mam.create (mamState, trytes); // OPSLAAN NIEUWE MAMSTATE mamState =message.state; console.log('Root:', bericht.root); console.log('Adres:', bericht.adres); // BEVESTIG DE PAYLOAD wacht op Mam.attach (message.payload, message.address); return message.root;}// SERIAL PORT LIBRARY EVENTsport.on('open', showPortOpen);parser.on('data', readSerialData);port.on('close', showPortClose);port.on('error ', showError);// TERUGBELFUNCTIES functie showPortOpen() { console.log('Seriële poort open. Gegevenssnelheid:' + port.baudRate);}async-functie readSerialData(data){ let json ={}; const time =moment().utc().format('JJJJ/MM/DD uu:mm:ss'); const stad =('NY'); const gebouw =('13'); json['tijd'] =tijd; json['stad'] =`${stad}`; json['gebouw'] =`${gebouw}`; json['data'] =`{${data}}`; console.log('json =',json); const root =wacht op publish(json);}function showPortClose() { console.log('Seriële poort gesloten.');}function showError(error) { console.log('Seriële poortfout:' + fout);}
mam_receiveArduino.jsJavaScript
Indoor Air Quality Monitoring System v2
Extract the stored data from the Tangle using MAM and display the data.
const Mam =require('./lib/mam.client.js');const IOTA =require('iota.lib.js');//const iota =new IOTA({ provider:'https://nodes.testnet.iota.org:443' });const iota =new IOTA({ provider:'https://potato.iotasalad.org:14265' });const MODE ='restricted'; // PUBLIC, PRIVATE OR RESTRICTEDconst SIDEKEY ='mysecret'; // ENTER ONLY ASCII CHARACTERSlet root;let key;// CHECK THE ARGUMENTSconst args =process.argv;if(args.length !=3) { console.log('Missing root as argument:node mam_receive.js '); process.exit();} else if(!iota.valid.isAddress(args[2])){ console.log('You have entered an invalid root:'+ args[2]); process.exit();} else { root =args[2];}// INITIALIZE MAM STATElet mamState =Mam.init(iota);// SET CHANNEL MODEif (MODE =='restricted') { key =iota.utils.toTrytes(SIDEKEY); mamState =Mam.changeMode(mamState, MODE, key);} else { mamState =Mam.changeMode(mamState, MODE);}// RECEIVE DATA FROM THE TANGLEconst executeDataRetrieval =async function(rootVal, keyVal) { let resp =await Mam.fetch(rootVal, MODE, keyVal, function(data) { let json =JSON.parse(iota.utils.fromTrytes(data)); console.log(`City:${json.city}, Building:${json.building}, Time:${json.time} UTC, Data:${json.data}`); }); executeDataRetrieval(resp.nextRoot, keyVal);}executeDataRetrieval(root, key);

Schema's

Schematic diagram Schematic diagram Schematic diagram

Productieproces

  1. DIY-monitor voor milieu en luchtkwaliteit
  2. Kamertemperaturen bewaken met een Raspberry Pi en Nagios
  3. Python- en Raspberry Pi-temperatuursensor
  4. Kamertemperaturen bewaken met Moteino's en Raspberry Pi
  5. DIY infrarood bewegingssensorsysteem voor Raspberry Pi
  6. Log- en waarschuwingssysteem van Raspberry Pi Photocell
  7. Raspberry Pi temperatuur- en lichtsensor
  8. Spraak- en sms-lichtsensor met Raspberry Pi en Twilio
  9. Raspberry Pi-sensor en actuatorbediening
  10. Aerocultuur met Raspberry Pi en vochtigheidssensor
  11. Raspberry Pi-huisbeveiligingssysteem met camera en PIR-sensor