AI machts möglich habe mir den Code reparieren lassen.```
const ID = '0_userdata.0.LazySpa';
const MQTTINSTANCE = 0;
const debug = true;
// Definition der zu erstellenden Datenpunkte
const STATES = [
    {
        _id: 'LCK',
        type: 'state',
        common: { name: 'lock', type: 'boolean', role: 'indicator.lock', read: true, write: false, desc: 'Lazy spa lock' },
        native: {}
    },
    {
        _id: 'PWR',
        type: 'state',
        common: { name: 'power', type: 'boolean', role: 'switch.power', read: true, write: true, desc: 'Lazy spa power' },
        native: {}
    },
    {
        _id: 'UNT',
        type: 'state',
        common: { name: 'unit', type: 'number', role: 'value', read: true, write: true, max: 1, desc: 'Lazy spa unit', states: { 0: 'Farenheit', 1: 'Celsius' } },
        native: {}
    },
    {
        _id: 'AIR',
        type: 'state',
        common: { name: 'bubbles', type: 'boolean', role: 'switch.light', read: true, write: true, desc: 'Lazy spa bubbles state' },
        native: {}
    },
    {
        _id: 'GRN',
        type: 'state',
        common: { name: 'Heating green', type: 'boolean', role: 'indicator', read: true, write: false, desc: 'Reached target temp.' },
        native: {}
    },
    {
        _id: 'RED',
        type: 'state',
        common: { name: 'Heating red', type: 'boolean', role: 'indicator', read: true, write: false, desc: 'Not reached target temp.' },
        native: {}
    },
    {
        _id: 'FLT',
        type: 'state',
        common: { name: 'pump', type: 'boolean', role: 'switch.pump', read: true, write: true, desc: 'Pump state' },
        native: {}
    },
    {
        _id: 'HEATER',
        type: 'state',
        common: { name: 'heater', type: 'boolean', role: 'switch.heater', read: true, write: true, desc: 'Heater state' },
        native: {}
    },
    {
        _id: 'TGT',
        type: 'state',
        common: { name: 'target temp', type: 'number', role: 'level.temperature', min: 20, max: 40, step: 1, read: true, write: true, desc: 'Target temp.' },
        native: {}
    },
    {
        _id: 'TMP',
        type: 'state',
        common: { name: 'temp', type: 'number', role: 'value.temperature', read: true, write: false, unit: '°C', desc: 'Current temp.' },
        native: {}
    },
];
/**
 * Sendet Befehle an den Spa via MQTT.
 * @param {object} obj Das Objekt vom "on"-Trigger.
 */
async function stateChange(obj) {
    const state = obj.id.split('.').pop();
    let value = obj.state.val;
    if (debug) log(`Change detected for '${state}'. Sending command.`);
    let cmd, val;
    switch (state) {
        case 'UNT': cmd = 1; val = value; break;
        case 'TGT': cmd = 0; val = value; break;
        case 'AIR': cmd = 2; val = value ? 1 : 0; break;
        case 'HEATER': cmd = 3; val = value ? 1 : 0; break;
        case 'FLT': cmd = 4; val = value ? 1 : 0; break;
        default:
            if (debug) log(`No action defined for state change of: ${state}`, 'warn');
            return;
    }
    const mqttCommand = `{"CMD":${cmd},"VALUE":${val},"XTIME":0,"INTERVAL":0}`;
    await setStateAsync(`mqtt.${MQTTINSTANCE}.layzspa.command`, mqttCommand, false);
    if (debug) log(`Sent command for '${state}': ${mqttCommand}`);
}
/**
 * Verarbeitet eingehende Status-Updates vom Spa.
 * @param {string} jsonString Der JSON-String von der MQTT-Nachricht.
 */
async function setLazyStates(jsonString) {
    let states;
    try {
        states = JSON.parse(jsonString);
    } catch (e) {
        log(`Error parsing JSON from MQTT: ${jsonString}. Error: ${e.stack}`, 'error');
        return;
    }
    for (const [key, value] of Object.entries(states)) {
        const stateDef = STATES.find(s => s._id === key);
        if (stateDef) {
            let stateValue = (stateDef.common.type === 'boolean') ? (value === 1) : value;
            await setStateAsync(`${ID}.${key}`, stateValue, true);
        }
    }
    const isHeaterOn = (states.GRN === 1 || states.RED === 1);
    await setStateAsync(`${ID}.HEATER`, isHeaterOn, true);
}
/**
 * Hauptfunktion zur Initialisierung des Skripts.
 */
async function main() {
    // 1. Datenpunkte erstellen oder sicherstellen, dass sie existieren
    for (const stateObject of STATES) {
        const id = `${ID}.${stateObject._id}`;
        if (!(await getObjectAsync(id))) {
            if (debug) log(`Creating state: ${id}`);
            await createStateAsync(id, stateObject.common);
        }
        // 2. Trigger für schreibbare Datenpunkte erstellen
        if (stateObject.common.write) {
            on({ id: id, change: "any", ack: false }, async (obj) => {
                try {
                    if (obj.state) {
                        await stateChange(obj);
                    }
                } catch (e) {
                    log(`Error in stateChange trigger for ${id}: ${e.stack}`, 'error');
                }
            });
        }
    }
    // 3. Trigger für eingehende MQTT-Nachrichten
    on({ id: `mqtt.${MQTTINSTANCE}.layzspa.message`, change: "ne" }, async (obj) => {
        try {
            if (obj.state && obj.state.val) {
                if (debug) log(`Received MQTT message: ${obj.state.val}`);
                await setLazyStates(obj.state.val);
            }
        } catch (e) {
            log(`Error in MQTT message handler: ${e.stack}`, 'error');
        }
    });
    log("LazySpa script started and all triggers are active.");
}
// Skriptausführung starten und alle Fehler abfangen.
try {
    main();
} catch (e) {
    log(`A critical error occurred during script initialization: ${e.stack}`, 'error');
}
        
 