Étape 3: Mettre en place le Pi de framboise
Connectez votre Pi framboise à un moniteur, la souris et le clavier. S’assurer qu’une connexion Ethernet ou WiFi fonctionne, et assurez-vous que le système d’exploitation est à jour :
- mise à jour de $ sudo apt-get
- mise à jour de $ sudo apt-get
Si pas déjà installé, installer Node.js pour bras, puis ajouter les paquets serialport et ws via NGP :
- $ NGP install serialport
- NGP $ installer ws
Maintenant, connectez le port série de l’Arduino au port USB sur le Raspberry Pi.
Enfin, Télécharger le code de Node.js (send_data_to_sami.js) pour le Raspberry Pi. Remplacez les espaces réservés dans le code avec le jeton de l’appareil et l’ID de périphérique vous recueillis à partir du Portail de l’utilisateur.
Le code de Node.js est également indiquée ci-dessous. Il établit une WebSocketconnection bidirectionnelle entre le Raspberry Pi et SAMI. Après que la connexion de WebSocket est ouverte, méthode register() enregistre l’appareil avec le WebSocket. Chaque fois, le code lit un point de données du port série et puis il encapsule dans un message et envoie le message à SAMI via WebSocket.
var webSocketUrl = « wss://api.samsungsami.io/v1.1/websocket?ack=true » ;
device_id var = "" ; var device_token = "" ;
var isWebSocketReady = false ; var ws = null ;
serialport var = require("serialport")
var SerialPort = serialport. SerialPort ;
sp var = new SerialPort (« / dev/ttyACM0 », {}
Vitesse de transmission : 9600,
Parser : serialport.parsers.readline("\n")
});
var WebSocket = require('ws') ;
/**
* Obtient l’heure actuelle dans les millis
*/
function getTimeMillis() {}
Return parseInt(Date.now().toString()) ;
}
/**
Créer d’une connexion bidirectionnelle de /websocket
*/
fonction start() {}
Créer la connexion de websocket
isWebSocketReady = false ;
WS = new WebSocket(webSocketUrl) ;
WS.on ('ouvrir', function() {}
Console.log ("connexion Websocket est ouverte...") ;
Register() ;
});
WS.on ('message', {function (données, indicateurs)
Console.log ("message reçu:" + données + « \n ») ;
});
WS.on ('fermer', function() {}
Console.log ("Websocket connexion est fermée...") ;
});
}
/**
* Envoie un message register vers le websocket et commence le floodeur de message
*/
fonction register() {}
Console.log ("périphérique d’inscription sur la connexion websocket") ;
try {}
var registerMessage = ' {« type »: « s’inscrire », « sdid »: "' + device_id +'", "Autorisation": "porteur"+ device_token +"", "cid":"'+getTimeMillis() +'"}' ;
Console.log ('Envoi message de register' + registerMessage + « \n ») ;
WS.Send (registerMessage, {masque : true}) ;
isWebSocketReady = true ;
}
{} catch (e)
Console.Error ("Impossible d’enregistrer les messages. Erreur dans l’enregistrement de message: "+ e.toString()) ;
}
}
/**
* Envoyer un message à SAMI
*/
function sendData(onFire) {}
try {}
TS = ", « ts »:" + getTimeMillis() ;
données var = {}
« onFire »: onFire
};
var charge utile = ' {« sdid »: "' + device_id +" "+ ts +", "données": "+ JSON.stringify(data) +", "cid":"'+getTimeMillis() +'"}' ; Console.log ('Envoi charge utile' + charge utile) ;
WS.Send (charge utile, {masque : true}) ;
} catch (e) {}
Console.Error (' erreur en envoyant un message: "+ e.toString()) ;
}
}
/**
* Tous, commencez ici
*/
Start() ; Créez la connexion websocket
SP.on ("open", function () {}
SP.on ("données", {function(data)}
Si (! isWebSocketReady) {}
Console.log ("Websocket n’est pas prêt. Skip, envoi de données vers SAMI (données: "+ données +") ") ;
retour ;
}
Console.log ("données de port série a reçu:" + données) ;
var flameDigitalValue = parseInt(data) ;
flameDigitalValue = 1 == > aucun feu n’est détecté
flameDigitalValue = 0 == > feu est détecté
onFire var = false ;
Si (flameDigitalValue == 0) {}
onFire = true ;
}
sendData(onFire) ;
});
});