Was du brauchst ist:
xyz= getState(pathdata).val;
(Pathdata = der Wert den du haben willst). Ich gestallte meine Scripte immer so, dass sie von außen Parametrisiert werden können.
Schau mal,
so sieht z.B. mein Javascript zum auswerten von MQTT hier im Forum aus ( auslesen der Werte vom Mini V2 mit ESP32).
Hier das Javascript:
//Init
//1. Benötigte Variabelen als Einstellungen, weden später in einer Variabelen geseiuchert und können zur Laufzeit verändert werden
var device = "MINI-2462abc32738"; //Name Mini
var pathmqtt = "mqtt.0.WLanThermo."; //MQTT Name
var pathdata = pathmqtt + device + ".status.data"; //MQTT volständiger Pfad
var pathjs = "javascript.0.Grill."; //genera iobroker path
var pathChannels = pathjs + device + ".channel"; // path to store chanels
var pathPitmaster = pathjs + device + ".pitmaster"; // path to store pitmaster
var pathSettings= pathjs + device +".settings"; // settings path in iobroiker
var pitmaster_connected = 2 ; // number of connected Pitmaster modules
var max_chanels = 12; // anzahl der verfügbaren Kanäle
var debug = false ; // debug write infos
// save Settings
createState(pathSettings +'.device', device, {type: 'string',name: 'Grill.0.Settings.device'});
createState(pathSettings +'.pathmqtt', pathmqtt, {type: 'string',name: 'Grill.0.Settings.pathmqtt'});
createState(pathSettings +'.fullpath', pathdata, {type: 'string',name: 'Grill.0.Settings.fullpath'});
createState(pathSettings +'.pathjs', pathjs, {type: 'string',name: 'Grill.0.Settings.pathjs'});
createState(pathSettings +'.pathChannels', pathChannels, {type: 'string',name: 'Grill.0.Settings.pathChannels'});
createState(pathSettings +'.pathPitmaster', pathPitmaster, {type: 'string',name: 'Grill.0.Settings.pathPitmaster'});
createState(pathSettings +'.max_chanels', max_chanels, {type: 'int',name: 'Grill.0.Settings.max_chanels'});
//2. Alle Kanäle autonmatisch anlegen.
function create_varaiables (debug, max_chanels,pitmaster_connected)
{
var variab =`${pathChannels}.${max_chanels}.alarm`;
if (debug == true){ log ("Check variabels");log("Varaib12Alarm is :" + (getState(variab).val)); log ("variab is :" + variab);}
//Prüfen ob alle Variabelen schon existieren, wennn nicht neu anlegen
if ((getState(variab).val)==null)
{
if (debug == true){ log ("Varaib 12 not found, create all");}
//Variabelen anlegen für max 12 Kanäle ( je nach definition oben)
for (var i = 0; i < max_chanels; i++)
{
createState(`${pathChannels}.${i+1}.alarm`, 0, {type: 'number',name: `${pathChannels}.${i+1}.alarm`});
createState(`${pathChannels}.${i+1}.temp_min`, 0, {type: 'number',name: `${pathChannels}.${i+1}.temp_min`});
createState(`${pathChannels}.${i+1}.temp_max`, 0, {type: 'number',name: `${pathChannels}.${i+1}.temp_max`});
createState(`${pathChannels}.${i+1}.actual_temp`, 0, {type: 'number',name: `${pathChannels}.${i+1}.actual_temp`});
createState(`${pathChannels}.${i+1}.color`, 0, {type: 'string',name: `${pathChannels}.${i+1}.color`});
createState(`${pathChannels}.${i+1}.type`, 0, {type: 'number',name: `${pathChannels}.${i+1}.type`});
createState(`${pathChannels}.${i+1}.connected`, false, {type: 'boolean',name: `${pathChannels}.${i+1}.connected`});
createState(`${pathChannels}.${i+1}.fixed`, false, {type: 'boolean',name: `${pathChannels}.${i+1}.fixed`});
createState(`${pathChannels}.${i+1}.name`, "name", {type: 'string',name: `${pathChannels}.${i+1}.name`});
}
}
// Variabelen für den Pitmaster
var variab =`${pathPitmaster}.${pitmaster_connected}.status`;
if ((getState(variab).val)==null)
{
for (var i = 0; i < pitmaster_connected; i++)
{
createState(`${pathPitmaster}.${i+1}.pitmaster`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.pitmaster`});
createState(`${pathPitmaster}.${i+1}.connected_chanel`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.connected_chanel`});
createState(`${pathPitmaster}.${i+1}.pid`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.pid`});
createState(`${pathPitmaster}.${i+1}.current_value`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.current_value`});
createState(`${pathPitmaster}.${i+1}.set_temp`, 0, {type: 'number',name: `${pathPitmaster}.${i+1}.set_temp`});
createState(`${pathPitmaster}.${i+1}.status`, "0", {type: 'string',name: `${pathPitmaster}.${i+1}.status`});
createState(`${pathPitmaster}.${i+1}.set_color`, "0", {type: 'string',name: `${pathPitmaster}.${i+1}.set_color`});
createState(`${pathPitmaster}.${i+1}.value_color`, "0", {type: 'string',name: `${pathPitmaster}.${i+1}.value_color`});
}
}
}
function read_vaues_and_set (debug, max_chanels, pitmaster)
{ // Werte aus MQTT lesen und in alle Kanäle ( max 12 Schreiben)
//log ("pathdata is :" + pathdata);
// log (getState(pathdata).val);
try {
jr = JSON.parse(getState(pathdata).val);
}
catch (e) {
console.error('Cannot parse: ' + getState(pathdata).val);
return;
}
// Werte auslesen und ablegen für die Kanäle
for (var i = 0; i < max_chanels; i++) {
setState(`${pathChannels}.${i+1}.actual_temp`, (jr.channel.temp));
setState(`${pathChannels}.${i+1}.name`, (jr.channel.name));
setState(`${pathChannels}.${i+1}.temp_min`, (jr.channel.min));
setState(`${pathChannels}.${i+1}.temp_max`, (jr.channel.max));
setState(`${pathChannels}.${i+1}.type`, (jr.channel.typ));
setState(`${pathChannels}.${i+1}.alarm`, (jr.channel.alarm));
setState(`${pathChannels}.${i+1}.color`, (jr.channel.color));
setState(`${pathChannels}.${i+1}.connected`, (jr.channel.connected));
setState(`${pathChannels}.${i+1}.fixed`, (jr.channel.fixed));
}
if (debug == true) {console.log('Data ausgelesen');}
}
function read_pid_and_set (debug, max_chanels, pitmaster)
{ // Werte aus MQTT lesen und in alle Kanäle ( max 12 Schreiben)
//log ("pathdata is :" + pathdata);
// log (getState(pathdata).val);
try {
jr = JSON.parse(getState(pathdata).val);
}
catch (e) {
console.error('Cannot parse: ' + getState(pathdata).val);
return;
}
//Werte Auslesen für die Pitmaster ! Mini V1 = 1 Mini V2 = 2
for (var i = 0; i < 2; i++)
{
setState(`${pathPitmaster}.${i+1}.pitmaster`, (jr.pitmaster.pm.id));
setState(`${pathPitmaster}.${i+1}.connected_chanel`, (jr.pitmaster.pm.channel));
setState(`${pathPitmaster}.${i+1}.pid`, (jr.pitmaster.pm.pid));
setState(`${pathPitmaster}.${i+1}.current_value`, (jr.pitmaster.pm.value));
setState(`${pathPitmaster}.${i+1}.set_temp`, (jr.pitmaster.pm.set));
setState(`${pathPitmaster}.${i+1}.status`, (jr.pitmaster.pm.typ));
setState(`${pathPitmaster}.${i+1}.set_color`, (jr.pitmaster.pm.set_color));
setState(`${pathPitmaster}.${i+1}.value_color`, (jr.pitmaster.pm.value_color));
}
if (debug == true) {console.log('Data ausgelesen');}
}
function main(debug)
{ log ("debug is :" + debug)
create_varaiables(debug, max_chanels,pitmaster_connected);
read_vaues_and_set(debug, max_chanels, pitmaster_connected);
read_pid_and_set(debug, max_chanels, pitmaster_connected);
}
//Event based start
on({id: pathdata, change: "any"}, function (obj) {
main(debug);
});