Hallo, habe meinen Iobroker auf proxmox umgebaut.
dabei habe ich auch einen mqtt broker extra, eine node-red extra , zigbee2mqtt extra etc.
Nachdem ich meine VIS1 neu in Vis 2 machen muss habe ich mir gedacht alles auf einen Nenner mqtt zu bringen.
Das JSON format ist fuer mich noch eine Huerde genauso wie Objekt orientiert zu programmieren.
jetzt habe ich mir mit Hilfe von AI ein script gebastelt , die Datenpunkte manuell angelegt und ueberprueft ob die auszulesenden auch in mqtt vorhanden sind.
eines der scripte seht ihr hier, es laueft und soll nur getriggert werden wenn sich die daten im mqtt aendern.
dann sollen die daten in den objekten gefuellt werden.
on({id: 'mqtt.0.zigbee2mqtt.mobile2', change: 'ne'}, function (obj) {
if (obj.state.val) {
try {
var data = JSON.parse(obj.state.val);
console.log('Parsed data:', data); // Log the parsed data for debugging
// Check and set the values in the mobile2 data points
if (data.battery !== undefined) {
setState('0_userdata.0.mobile2.battery', data.battery);
console.log('Updated battery level:', data.battery);
} else {
console.warn('Battery data is missing');
}
if (data.humidity !== undefined) {
setState('0_userdata.0.mobile2.humidity', data.humidity);
console.log('Updated humidity:', data.humidity);
} else {
console.warn('Humidity data is missing');
}
if (data.linkquality !== undefined) {
setState('0_userdata.0.mobile2.linkquality', data.linkquality);
console.log('Updated link quality:', data.linkquality);
} else {
console.warn('Link quality data is missing');
}
if (data.power_outage_count !== undefined) {
setState('0_userdata.0.mobile2.power_outage_count', data.power_outage_count);
console.log('Updated power outage count:', data.power_outage_count);
} else {
console.warn('Power outage count data is missing');
}
if (data.pressure !== undefined) {
setState('0_userdata.0.mobile2.pressure', data.pressure);
console.log('Updated pressure:', data.pressure);
} else {
console.warn('Pressure data is missing');
}
if (data.temperature !== undefined) {
setState('0_userdata.0.mobile2.temperature', data.temperature);
console.log('Updated temperature:', data.temperature);
} else {
console.warn('Temperature data is missing');
}
if (data.voltage !== undefined) {
setState('0_userdata.0.mobile2.voltage', data.voltage);
console.log('Updated voltage:', data.voltage);
} else {
console.warn('Voltage data is missing');
}
} catch (e) {
console.error('Error parsing message:', e);
}
}
});
koennte Ihr mir bitte sagen ob das Script wirklich wartet bis sich etwas aendert..die debugging Eintraege kommen dann wieder weg , so wie die log Eintraege
Moeglichkeit muesste auch sein das ganze im Alias Adapter mit parsen der Daten zu machen...aber da kenn ich mich genauswenig aus.