Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Fuzzy Lichtergenerator als Einbrecherschreck (Holidaymode)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    862

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Fuzzy Lichtergenerator als Einbrecherschreck (Holidaymode)

Geplant Angeheftet Gesperrt Verschoben JavaScript
1 Beiträge 1 Kommentatoren 168 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • jmeister79J Offline
    jmeister79J Offline
    jmeister79
    schrieb am zuletzt editiert von jmeister79
    #1

    Hi,

    falls Kevin mal wieder alleine zuhause ist und nicht schlafen kann:

    Ich habe mir mal ein kleines Script geschrieben, das zwischen Sonnenuntergang und Aufgang die lichter im Haus zufällig schaltet.

    Es wird eine Struktur aus Lichtern erzeugt, die abgearbeitet wird.
    Alle 10 min (editierbar) werden zufällig 3 Lampen (parametrierbar) ausgewählt die für eine zufällig generierte Zeit zwischen 1 und 45 min zufällig verzögert eingeschaltet werden.

    Lampen die beim letzten Zyklus benutzt wurden, werden nicht nochmal gewählt.

    Es ist der erste Entwurf.
    Gerne höre ich Verbesserungsvorschläge und freue mich über Feedback bezüglich Stil und Form oder bessere Lösungen.

    Gruß
    Nils

    //Created by jmeister79 09.08.2024
    
    createState("javascript.0.Parameter.BurglarMode", false, { type: 'boolean', name: 'BurglarMode' });
    
    const P_light_struct = [ //ids and optional names for lights you want to switch
        { id: '...', name: '...' },    
        { id: '...', name: '...' },    
        { id: '...', name: '...' },    
        { id: '...', name: '...' },     
        { id: '...', name: '...' },    
        { id: '...', name: '...' },    
        { id: '...', name: '...' }
    ];
    const P_numOfRandomLights = 3;
    //init variables
    var randomLights = [];
    
    if (P_numOfRandomLights > P_light_struct.length) {//correct if to many random lights are chosen
        log("Error: Too many lights")
        P_numOfRandomLights = P_light_struct.length;
    }
    for (var n = 0; n < P_numOfRandomLights; n++) {  //create a  small array with random numbers
        randomLights[n] = 99;
    }
    function FuzzyLights() {
        var sunrise = formatDate(getDateObject(getAstroDate("sunriseEnd", undefined, 0)), "hh:mm");
        var sunset = formatDate(getDateObject(getAstroDate("sunset", undefined, 0)), "hh:mm");
        var now = new Date().toTimeString().substring(0, 5);
        var randomLightsNew = [];
        var light = 0;
        var BurglarMode = getState("javascript.0.Parameter.BurglarMode").val;
        if (1==1) {  //only at night and with parameter
            for (var n = 0; n < randomLights.length; n++) {  //fill a  small array with random numbers
                //randomLights[n] = Math.floor(Math.random() * P_light_struct.length)
                do {
                    light = Math.floor(Math.random() * P_light_struct.length)
                    //log(light)
                }
                while (randomLights.includes(light) || randomLightsNew.includes(light))  //lights are NOT on and no doubles
                randomLightsNew[n] = light;     // write lightnumber to array
            }
            randomLights = randomLightsNew;  //transfer to array
            for (var i = 0; i < randomLights.length; i++) { // for every array objekt
                var runtime = Math.floor(Math.random() * 45);//compute a random runtime for each light of max 45minuntes             
                if (runtime < 1) {//minimum 1 minute runtime
                    runtime = 1;
                }
                var delaytime = Math.floor(Math.random() * (runtime-1)); //delaytime smaller than runtime
                //log(P_light_struct[randomLights[i]].name)
                //log(runtime)
                //log(delaytime)
                runtime = runtime*1000*60; //convert from minutes to milliseconds
                delaytime = delaytime*1000*60; //convert from minutes to milliseconds
                setStateDelayed(P_light_struct[randomLights[i]].id, true, delaytime, true) // turn on the random chosen light
                setStateDelayed(P_light_struct[randomLights[i]].id, false, runtime, true);   //turn off after random time
            }
        }
    };
    
    FuzzyLights();
    schedule('*/15 * * * *', function () { //every 15 min
        FuzzyLights();
    });
    
    
    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    899

    Online

    32.6k

    Benutzer

    82.1k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe