2017-03-09 1 views
1

Je viens d'être présenté à Node-Red après avoir demandé quelques suggestions sur une configuration IoT. J'ai un morceau de code javascript qui envoie des données à une prise Web. Le code qu'il envoie est au format HEX et est envoyé à la socket Web.Node-Red Envoyer un binaire

Je suis en train de reproduire cela en utilisant node-red et j'ai quelques difficultés à déterminer quel noeud utiliser pour envoyer les données.

vanille Javascript:

function connectToSocket() { 

    // Try to connect to the socket 
    try { 

     // Create our socket connection 
     connection = new WebSocket('ws://' + gatewayIP + ':8000'); 
     connection.binaryType = "arraybuffer"; 

     // Failed to create the socket connection 
    } catch (e) { 

     // Log error message 
     logMessage('Failed to connect to socket'); 
     return; 

    } 

} 

connection.send('\x02\x00\x01\x04\x26\x2D'); 

enter image description here

J'ai essayé d'envoyer cela comme une chaîne et de l'objet JSON comme msg.payload mais il ne déclenche pas l'appareil que je l'attends à ce que quand je lance la fonction JS normale dans un navigateur.

Quel serait le format approprié pour envoyer cette chaîne hexadécimale?

Répondre

3

Ce que vous voulez envoyer est un tampon et le noeud d'injection ne peut pas générer de tampon à ce stade. Le moyen le plus simple consiste à insérer un noeud de fonction entre l'injecteur et le noeud WebSocket Out.

Le nœud de fonction doit contenir quelque chose comme:

msg.payload = Buffer.from("\x02\x00\x01\x04\x26\x2D"); 
return msg; 

Cela intervertir la charge utile pour un tampon avec les bonnes valeurs.

EDIT: Pour NodeJS 0.10.x, vous devez utiliser quelque chose comme comme Buffer.from() a été introduit dans NodeJS 4.x:

msg.payload = new Buffer("\x02\x00\x01\x04\x26\x2D"); 
return msg; 
+0

J'ai donné ce coup de feu, mais un reçu une erreur dans le débogueur. C'est assez long mais sur le modèle de 'TypeError: Objet Fonction Buffer (sujet, encodage, décalage) {if (! (This instanceof Buffer)) {return new Buffer (sujet, encodage, offset); } var type; // Tranchons-nous? je'. Erreur complète ici: http://pastebin.com/bEBfhCZp – SBB

+0

Quelle version de NodeJS utilisez-vous pour exécuter Node-RED? – hardillb

+0

Node-RED version: v0.15.3 Node.js version: v0.10.29 – SBB