2017-10-10 4 views
0


Je veux enregistrer les données de température (que je reçois d'un client paho) dans un tableau nommé 'single'. Enfin, je veux montrer les données en direct dans une jauge.
Pour cela j'ai créé un service pour stocker les données et pour distribuer les données à plusieurs composants.
Mais je reçois seulement le ERR: "" n'est pas assignable au paramètre de type '{value: string; } '.
J'apprécierais vraiment de nouvelles idées à ce sujet! Merci!Enregistrer les données dans le tableau à partir du client paho, angulaire 4

Mon service:

import { Injectable } from '@angular/core'; 
import { Component, OnInit } from '@angular/core'; 
import {Paho} from '../../../node_modules/ng2-mqtt/mqttws31'; 


@Injectable() 
export class ClassdataproviderService { 

    public name: string; 
    public value: string; 

    single = [ 
    { 
     name: 'eins', 
     value: '15' 
    }, 
    { 
     name: 'zwei', 
     value: '20' 
    }, 
    { 
     name: 'drei', 
     value: '73' 
    } 
    ]; 


// Create a client instance 


    client: any; 
    packet: any; 

    constructor() { 
    this.client = new Paho.MQTT.Client('wpsdemo.gia.rwth-aachen.de', 8080, 'Steffen'); 

    this.onMessage(); 
    this.onConnectionLost(); 
    // connect the client 
    this.client.connect({onSuccess: this.onConnected.bind(this)}); 
    } 

    // called when the client connects 


    onConnected() { 
    console.log('Connected'); 
    this.client.subscribe('node/m1/temperature'); 
    //this.sendMessage('HelloWorld'); 
    } 

    sendMessage(message: string) { 
    const packet = new Paho.MQTT.Message(message); 
    packet.destinationName = 'World'; 
    this.client.send(packet); 
    } 

    // called when a message arrives 


    onMessage() { 
    this.client.onMessageArrived = (message: Paho.MQTT.Message) => { 
     console.log('Message arrived : ' + message.payloadString); 
     this.single.push('test', message.payloadString); **//<-- Here i want to push the data in my array** 
    }; 
    } 

    // called when the client loses its connection 


    onConnectionLost() { 
    this.client.onConnectionLost = (responseObject: Object) => { 
     console.log('Connection lost : ' + JSON.stringify(responseObject)); 
    }; 
    } 

Répondre

2

je résolu le problème.
Il vous suffit de pousser les données dans le tableau (simple) en utilisant cette ligne dans la fonction onMessageArrived:

this.single.push({name: 'test', value: message.payloadString});