Nabend,
ich konnt mein Problem zwar inzwischen über NodeRed lösen, aber irgendwie lässt es mir doch keine Ruhe dass ich es nicht über JavaScript hinbekam. Schließlich möchte man ja auch etwas lernen 
Ich habe einen MHZ19B Co2 Sensor, welcher seine Daten zum MQTT Broker liefert (Sonoff Adapter nutze ich in diesem Fall bewusst nicht).
Id:
mqtt.0.SmartHome.Wohnzimmer.Co2.SENSOR
Wert:
{"Time":"2019-11-28T16:45:07","MHZ19B":{"Model":"B","CarbonDioxide":786,"Temperature":23.0},"TempUnit":"C"}
Ich möchte nun lediglich den Wert von CarbonDioxide in eine neue Variable schreiben. Mein Problem ist dass ich nicht verstanden habe wie ich quasi auf die Unterebene "MHZ19B" gelange.
Auf Grund der anderen Beiträge hatte ich es mit
var pfad = "javascript.0.jsonconverter.";
var channel = "wohnzimmer.";
var sname = "co2.";
var idco2 = pfad + channel + sname + 'co2';
// Create States
createState(idco2, 0,{type: 'number',name: 'CarbonDioxid', read: true,write: true,role: 'value'});
// script beginning
on({id: 'mqtt.0.SmartHome.Wohnzimmer.Co2.SENSOR', change: "any"}, function (obj) {
//variabele erstellen fuer meine 3 beispiel objecte
var co2;
try {obj = JSON.parse(getState('mqtt.0.SmartHome.Wohnzimmer.Co2.SENSOR').val);
} catch (e) {
console.error('Cannot parse: ' + getState('mqtt.0.SmartHome.Wohnzimmer.Co2.SENSOR').val);
return;
}
co2 = obj.CarbonDioxide;
setState(idco2, co2);
log(co2);
});
probiert, aber das schlug fehl. And Dinge wie TempUnit kam ich zwar beim Testen heran, aber nicht an die innerhalb von "MHZ19B": {}
was ja ein Array zu sein scheint?
Ich habe dann eher im Nebel gestochert und Dinge wie
co2 = obj.MHZ19B.CarbonDioxide;
ausprobiert, aber das war wohl der falsche Ansatz.