Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script aus altem Tread benutzen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Script aus altem Tread benutzen

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Baerny last edited by

      ich würde gerne ein Alarmscript aus einem alten Tread von @tempestas verwenden. Der Link zum Tread. Leider ist das Script total zerschnitten. Ich weiß auch nicht wofür die schwarzen Balken vorhanden sind. Ich vermute mal das es mit der neuen Forensoftware zusammen hängt. Wie kann ich dieses Script wieder herstellen bzw. kopieren damit es wieder funktioniert.
      Baerny

      T 1 Reply Last reply Reply Quote 0
      • P
        peterfido last edited by

        Hallo,

        leider sind einige Quellcodes im Forum so zerbombt. Im Google Cache ist es leserlicher. Musst dann halt einige Zeichen, wie z.B. die Ausrufezeichen am Anfang, entfernen. Das geht mit Notepadd++ im erweiterten Modus ganz gut.

        raus kommt dann sowas:

        
        /* ################## ALARMANLAGENSKRIPT #############################
         Basis: Alarmanlagenskript erstellt von Pix; erweitert und angepasst von tempestas
         15.8.2017 erweitert um Prüfung offene Fenster bei einschalten der Alarmanlage und Nachricht
        17.9.2017 erweitert um stiller oder lauter Alarm Trigger / To - Do: mp3 auf Sonos schicken bei lautem Alarm ausgelöst
        17.9.2017 einbau von Countdown beim aktivieren, basierend auf Skript von paul53 http://forum.iobroker.net/viewtopic.php?t=4796
        20.9.2017: Vollschutz / Hüllschutz eingebaut
        21.9.2017: Außenhüllenskript angepasst: keine Meldung, wenn bei eingeschalteter Alarmanlage Fenster geschlossen werden; vermeidet ewig lange Telegram Nachrichten (WAF höher)
        21.9.2017: Kamera Wohnzimmer in Innenraumüberwachung eingebunden
        21.9.2017: Alarmmeldungen eingebaut für Anzeige in VIS.
        to do: unterscheidung EG und OG für z.B. nächtliche Vollüberwachung EG bei freiem Bewegen im OG
         */
         var debug = false;
        var debug2 = false;
         // #####################################################
        // ##### States und Variablen Alarmanlage anlegen ######
         // forceCreate constante
         const force = true;
         // state für vis anzeige
         createState('Alarmanlage.Vis', 0, force); // Trigger für Vis zum Anzeigen des Alarmanlagen-Overlay
        createState('Alarmanlage.VisMeldung', 0, force); // Trigger für Vis zum Anzeigen desr Alarmmeldungen
         // Alarmanlagen States
         createState('Alarmanlage',1, force, { // Alarmanlage wird bei Neustart des Skripts grundsätzlich eingeschaltet
        name: 'Alarmanlage',
        type: 'number',
        min: '0',
        max: '2',
        states: '0:aus;1:an;2:automatik',
        desc: 'Status Alarmanlage'
        });
         createState('Alarmanlage.Alarmtyp',0, force, {
        name: 'Alarmtypus',
        type: 'number',
        min: '0',
        max: '1',
        states: '0:still;1:laut',
        desc: 'Alarmanlage still/laut'
        });
         createState('Alarmanlage.Schutztyp',0, force, {
        name: 'Schutztyp',
        type: 'number',
        min: '0',
        max: '1',
        states: '0:Hüllschutz;1:Vollschutz',
        desc: 'Hüllschutz bzw Vollschutz'
        });
         createState('Alarmanlage.Alarm',0, force, {
        name: 'Alarm',
        type: 'number',
        min: '0',
        max: '1',
        states: '0:kein Alarm;1:Alarm ausgelöst',
        desc: 'Alarm ausgelöst oder nicht'
        });
         createState('Alarmanlage.Alarmcounter',0, { //ohne ForceCreation, damit ggf. bei Neustart die alten Daten erhalten bleiben.
        name: 'Alarmcounter',
        type: 'number',
        min: '0',
        max: '20',
        desc: 'Counter für Alarmmeldungen'
        });
         createState('Alarmanlage.Alarmmeldung', '', { //ohne ForceCreation, damit ggf. bei Neustart die alten Daten erhalten bleiben.
        type: 'string',
        def: '',
        role: 'value',
        });
         // States für Countdown
         createState('Alarmanlage.Timer.AlarmCountdown', 0, force, {
        read: true,
        write: true,
        desc: 'Countdown für Alarmaktivierung nach Abwesenheit',
        def: ''
        });
         createState('Alarmanlage.Timer.countTrigger', false, force);
        createState('Alarmanlage.Timer.duration', 30, force);
         var alarmMeldung =[]; // Array für Alarmmeldungen, wird bei Deaktivierung der Alarmanlage gelöscht.
         var duration = 'Alarmanlage.Timer.duration';
        var countTrigger = 'Alarmanlage.Timer.countTrigger';
        var AlarmCountdown = 'Alarmanlage.Timer.AlarmCountdown';
         var idAlarmanlage = 'javascript.0.Alarmanlage';
        var idAlarmtyp = 'javascript.0.Alarmanlage.Schutztyp';
        var idAlarm = 'javascript.0.Alarmanlage.Alarm';
        var idAlarmcounter ='javascript.0.Alarmanlage.Alarmcounter';
        var idAlarmmeldung = 'javascript.0.Alarmanlage.Alarmmeldung';
        var idVisMeldung = 'javascript.0.Alarmanlage.VisMeldung';
         var nachricht;
        var eventTime;
         // #################################################
        // ##### Alarmanlagenstatus ein/aus überwachen #####
         on(idAlarmanlage, function (obj) {
        if (obj.state.val === 0 ) {
        if(debug) log('Alarmanlage ausgeschaltet');
        nachricht = "Alarmanlage ausgeschaltet";
        fensterOffen = []; // Array für Nachricht beim einschalten wieder leeren, wenn ausgeschaltet wird
        
            alarmMeldung = [];                          // Alarmmeldungsarray leeren
            setState(idAlarmcounter, 0 );
            setState(idAlarm, 0);                       // Alarmtrigger zurückgesetzt
            setState(idVisMeldung, 0);                  // Vis-Overlay Trigger zurückgesetzt        
        
        
        setState("hm-rpc.1.00021569960FFB.3.STATE"/Kamera_Wohnzimmer_Steckdose:3.STATE/, false); // Kamera wird deaktiviert
        
        } else if (obj.state.val == 1) {
            fensterPruef();
            if (getState(idAlarmtyp).val == 1) setState("hm-rpc.1.00021569960FFB.3.STATE"/*Kamera_Wohnzimmer_Steckdose:3.STATE*/, true);  // Kamera wird aktiviert sofern Vollschutz aktiv
            if(debug) log('Alarmanlage eingeschaltet');
            nachricht = "Alarmanlage eingeschaltet. "+info;
        }        
        
            else if (obj.state.val == 2) {
            fensterPruef();
            if (getState(idAlarmtyp).val == 1) setState("hm-rpc.1.00021569960FFB.3.STATE"/*Kamera_Wohnzimmer_Steckdose:3.STATE*/, true);  // Kamera wird aktiviert sofern Vollschutz aktiv     
            if(debug) log('Alarmanlage auf Automatik geschaltet');
            nachricht = "Alarmanlage wg. Abwesenheit automatisch eingeschaltet. " +info;
        }
            sendTo('telegram', nachricht);    
        
        });
        
        // #############################################################
        // ######### Anwesenheit überwachen / Automatikmodus #########
        
         var idAnwesenheit = "hm-rega.0.22065";
        var anwesenheitList = getState("hm-rega.0.22066"/auto_sv_anwesenheit.string/).val;
         if(debug2) log("Anwesend: "+anwesenheitList);
         on(idAnwesenheit, function (data) {
        if (data.state.val === 0 && getState(idAlarmanlage).val === 0) { // Automatik soll nur einschalten, sofern Alarmanlage nicht ohnehin schon an ist.
        if(debug) log('keine Person zu Hause - Alarmanlage scharf geschaltet');
        setState(idAlarmanlage, 2); // auf Automatik
        } else {
        if(debug) log('Zahl der Personen zu Hause: ' + data.state.val);
        if (getState(idAlarmanlage).val == 2) {
        nachricht = "Bewohner wieder anwesend.";
        sendTo('telegram', nachricht);
        setState(idAlarmanlage, 0);
        
            }
        }
        
        });
        
         // ########################################################################
        // ####### Fensterstatus beim einschalten der Alarmanlage überwachen #####
         var fensterOffen =[];
        var info;
         function fensterPruef() {
         var cacheSelectorState = $('channelstate.id=*.STATE');
         cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Alarmanlage_Huelle
        var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element) // alt: getState(id).val;
        var obj = getObject(id);
        var name = getObject(id).common.name;
        var devicename = name.substring(0, name.indexOf(":1.STATE")); //:1.state aus Text entfernen
        
            if(status ||status === 1){
            fensterOffen.push(devicename);                                          // offene Fenster zum Array hinzufügen    
            fensterOffen.sort;                                                      // Array sortieren
            if(debug2) log(fensterOffen);
            }
        });
        if(fensterOffen.length > 0) info = "Folgende Fenster noch offen: "+fensterOffen;
        else info = "Alle Fenster geschlossen.";
        if(debug2) log("Info ist "+info);    
        
        }
        
         // #########################################################
        // ############### Aussenhülle überwachen ##################
        // ###### dies ist immer aktiv wenn Alarmanlage aktiv ######
         $('channelstate.id=*.STATE').on(function (obj) {
        if (obj.state.val) { // Wenn Bewegung erkannt
        
            nachricht = obj.deviceName + ' wurde geöffnet';
            if(getState(idAlarmanlage).val > 0){                            // Alarmanlage aktiv und Bewegung in Türen oder Fenstern, dann....
            sendTo('telegram.0', {                                          // Nachricht per Telegram
                text: nachricht        
                });
            list();    
            }
            if(debug) log(nachricht);
        }
        
        });
        
         // #############################################
        // ########## INNENRAUMÜBERWACHUNG #############
         // Bewegungsmelder
         $('channel[state.id=*.MOTION]').on(function (obj) {
        if (obj.state.val) { // Wenn Bewegung erkannt
        
            nachricht = obj.deviceName + ' meldet Bewegung';
            if(getState(idAlarmtyp).val === 1 && getState(idAlarmanlage).val > 0){
            sendTo('telegram.0', {
                text: nachricht
            });        
            list();
            }
            if(debug) log(nachricht);
        } // Ende Bewegung erkannt
        
        });
        
         // Kamera
         on({id:"javascript.0.Alarmanlage.Kamera.WoZi"/javascript.0.Alarmanlage.Kamera.WoZi/, change: "ne", val: 1}, function(){
        nachricht = 'Kamera Wohnzimmer meldet Bewegung; Fotos versendet';
        if(getState(idAlarmtyp).val === 1 && getState(idAlarmanlage).val > 0){
        sendTo('telegram.0', {
        text: nachricht
        });
        list();
        }
        });
         // #############################################
        // #### COUNTDOWN BEIM EINSCHALTEN #############
         function countdown(){
        count--;
         if(count > 0) setState("javascript.0.Alarmanlage.Timer.AlarmCountdown", count);
        else {
        clearInterval(timer);
        setState("javascript.0.Alarmanlage"/Alarmanlage/, 1);
        setState("javascript.0.Alarmanlage.Vis", 0 ); // Trigger für VIS Sichtbarkeit wieder auf 0 setzen
        setState("javascript.0.Alarmanlage.Timer.countTrigger", false); // countdown trigger nach Countdown wieder auf 0 setzen, damit in VIS button wieder auf "aktivieren" steht beim nächsten mal
        }
        }
         on({id: "javascript.0.Alarmanlage.Timer.countTrigger", change: "ne"}, function(obj){
        if(obj.state.val) {
        count = getState("javascript.0.Alarmanlage.Timer.duration").val;
        timer = setInterval(countdown, 1000);
        } else clearInterval(timer);
        });
         // ###################################
        // ######### ALARM EVENT LISTE #######
         function list(){
        
            timestamp();
            var listMessage = (eventTime + " " +nachricht);
        
            setState(idAlarm, 1);                                           // Alarmtrigger gesetzt
            alarmMeldung.push(listMessage);                                 // Alarmmeldung-Variable wird befüllt
            alarmMeldung.reverse();                                         // Array sortieren, neu nach oben
            alarmMeldung.splice(20);                                        // auf 20 Einträge beschränken
            setState(idAlarmcounter, alarmMeldung.length);                  // counter wird hochgezählt
            setState(idAlarmmeldung, alarmMeldung.join('
        
        ')); // Vis State wird befüllt
        setState(idVisMeldung, 1); // Vis-Trigger für Overlay mit Alarmmeldungen wird gesetzt
        }
        
         // ###############################################################
        //############## TIMESTAMP FÜR EREIGNISLISTE ERZEUGEN ############
         function timestamp() {
        var now=new Date();
        var day = now.getDate();
        var month = now.getMonth() + 1;
        var year = now.getFullYear();
        var weekday = now.getDay();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var day0 = ((day < 10) ? "0" : "");
        var month0 = ((month < 10) ? "0" : "");
        var hours0 = ((hours < 10) ? "0" : "");
        var minutes0 = ((minutes < 10) ? "0" : "");
        eventTime = year + "-" + month0 + month + "-" + day0 + day + " " + hours0 + hours + ":" + minutes0 + minutes;
         return eventTime;
        
        }
        
        
        1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer last edited by Jey Cee

          Hab es gerade im Original Thread repariert.
          Bitte nutzt die "Diesen Beitrag melden" funktion für defekte Skripte.

          B 1 Reply Last reply Reply Quote 0
          • B
            Baerny @Jey Cee last edited by

            @Jey-Cee - Vielen Dank

            1 Reply Last reply Reply Quote 0
            • T
              tempestas @Baerny last edited by

              @Baerny

              Ich suche es dir gerne heute raus. Etwas Geduld bitten

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              400
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              4
              5
              299
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo