NEWS

[gelöst] Hilfe Mqtt jason in Datenpunkt

  • Starter

    Hallo,
    habe folgendes Problem bekomme irgendwie die Werte aus dem mqtt Datenpunkt

    {"hc1":{"seltemp":21.5,"currtemp":21.6,"mode":"auto"}}
    

    nicht in ein neuen user Datenpunkt geschrieben .
    Hier das Skript dazu:

    
     //MQTT Json to Objekt
    
    
    // Create States
    
    createState('javascript.0.thermostat_date.seltemp',0,{type: 'number',name: 'seltemp', read: true,write: true,role: 'value' })
    
    
    
    // Script beginning
    
    on({id: 'mqtt.0.ems-esp.thermostat_data', change: "any"}, function (obj) {
    
     
       //variabele erstellen objecte
    
            var seltemp;
         
     
       //der try ist wichtig das der adapter nicht abschmiert bei einem fehler, hiermit pasen wird die json in ein object
    
       try {obj = JSON.parse(getState("mqtt.0.ems-esp.thermostat_data").val);
    
       } catch (e) {
    
               console.error('Cannot parse: ' + getState("mqtt.0.ems-esp.thermostat_data").val);
    
               return;
    
        }
    
        //hier schreiben wir die daten des json strings in die variabelen, links die variable und rechts der name im json. obj bedeuten halt lese den wert nach :
    
      
    
        seltemp = obj.seltemp;
    
       
    setState('javascript.0.thermostat_date.seltemp', (seltemp)); 
    
     
       //jetzt lass uns mal im log zeigen was wir bekommen haben
    
      log(seltemp);
      
    
    });
    

    Habe das gleich skript mit einen anderen Datenpunkt am laufen, da sieht der wert des Datenpunktes so aus :

    {"wWComfort":"Eco","wWSelTemp":55,"wWDesiredTemp":70,"selFlowTemp":75,"selBurnPow":26,"curBurnPow":0,"pumpMod":0,"wWCircPump":0,"outdoorTemp":2.1,"wWCurTmp":56.6,"wWCurFlow":0,"curFlowTemp":36.3,"wWActivated":"on","burnGas":"off","flameCurr":0,"heatPmp":"on","fanWork":"off","ignWork":"off","wWCirc":"off","heating_temp":80,"pump_mod_max":100,"pump_mod_min":10,"wWHeat":"off","wWStarts":4984,"wWWorkM":41526,"UBAuptime":2576775,"burnStarts":17792,"burnWorkMin":547914,"heatWorkMin":506388,"ServiceCode":"0H","ServiceCodeNumber":203}
    

    Ich glaube es liegt an den zusätzlichen Klammern. Weiß aber nicht wie das Skript anpassen muss damit es funktioniert.

    Ich hoffen es kann mir einer helfen.


  • @Icube sagte:

    seltemp = obj.seltemp;                                                                                                                                                                            
    
        seltemp = obj.hc1.seltemp;
    
  • Starter

    paul53 danke funktioniert.
    Hatte das eigentlich auch so versucht damals ging es nicht 😠

Suggested Topics

1.9k
Online

34.7k
Users

40.8k
Topics

558.5k
Posts