BlueTech

Teknik

Homey – Få besked når enheder går offline

Enheder kan falde af på ens Homey, det kan der være mange årsager til… dårlig dækning på wifi og zigbee netværk og hvad man nu ellers bruger af tilslutninger.

Så kunne det måske være rart at få en besked hvis noget skulle gå offline!!

Man kan oprette et script der kikke hele systemet igennem og så sender en besked enten som en meddelelse eller en push besked, eller måske begge dele.

Du går i homey script og tilføjer et nyt script og kalder det for “OfflineEnheder” og opretter denne kode:

async function checkOfflineDevices() {
    const devices = await Homey.devices.getDevices(); // Hent alle enheder
    const offlineDevices = []; // Liste til offline enheder

    // Gennemgå enhederne og tilføj offline enheder til listen
    for (const device of Object.values(devices)) {
        if (device.available === false) {
            offlineDevices.push(device.name); // Tilføj offline enheder til listen
        }
    }

    let result;
    if (offlineDevices.length > 0) {
        result = `Følgende enheder er offline: ${offlineDevices.join(', ')}`;
    } else {
        result = 'Alle enheder er online.';
    }

    // Hent alle variabler
    const variables = await Homey.logic.getVariables();

    let offlineDevicesVariable = null;

    // Gennemgå variablerne og find den med navnet 'Tjek offline enheder'
    for (const variable of Object.values(variables)) {
        if (variable.name === 'Tjek offline enheder') {
            offlineDevicesVariable = variable;
            break;
        }
    }

    console.log("Offline Devices Variable: ", offlineDevicesVariable); // Log for at tjekke variabelen

    if (!offlineDevicesVariable) {
        // Hvis variablen ikke findes, opret den
        try {
            const newVariable = await Homey.logic.createVariable({
                name: 'Tjek offline enheder',
                type: 'string',
                value: result
            });
            console.log('Oprettet variabel:', newVariable);
        } catch (err) {
            console.error('Fejl ved oprettelse af variabel:', err.message);
        }
    } else {
        // Hvis variablen findes, opdater dens værdi
        try {
            // Brug korrekt opdateringsmetode
            const updatedVariable = await Homey.logic.updateVariable({
                id: offlineDevicesVariable.id,  // ID skal sendes her
                variable: {                      // Send objektet som variabel
                    value: result               // Ny værdi skal sendes her
                }
            });
            console.log('Opdateret variabel med ID:', offlineDevicesVariable.id, 'til værdi:', result);
        } catch (err) {
            console.error('Fejl ved opdatering af variabel:', err.message);
        }
    }

    return result; // Returner resultatet
}

return checkOfflineDevices(); // Kør scriptet

Derefter opretter du en “tekst variabel” under variabler og begge steder navngiver du den “Tjek offline enheder”

Så skal vi have lavet et flow der kalder på dette script og udføre denne handling, i push og meddelser du den variabel vi lige har lavet, dette går du ved at trykke på Tag ikonet og finder “Tjek offline enheder”

Nu er du klar til at modtage beskeder.