Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst]Pushover Nachricht offene FensterAlarm

    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

    [gelöst]Pushover Nachricht offene FensterAlarm

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

      Hallo, ich nutze ein älteres Alarmanlagenscript von @tempestas. U. a. überwacht das Script auch die offenen Fenster beim Scharfstellen der Alarmanlage und meldet diese per Pushover. Mein Problem: es kommt zwar eine Nachricht aber es stehen dort keine offenen Fenster drinnen, lediglich ein paar Kommas. Die Fenster sind alle in hm rpc1 gelistet. Hat jemand eine Idee was im Script geändert werden muss.
      Script:

      // ########################################################################
      // ####### Fensterstatus beim einschalten der Alarmanlage überwachen  #####
      var fensterOffen =[];
      var info;
      function fensterPruef() {
          var cacheSelectorState  = $('channel[state.id=*.STATE](functions="Verschluss")');
          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);
      }
      // #########################################################
      

      hier noch ein Bild vom State
      state.png
      so sieht es auf dem Handy aus
      IMG_2673.PNG

      Ich hoffe ihr könnt mir helfen

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

        @Baerny sagte in Pushover Nachricht offene Fenster bei Alarm:

        getObject(id).common.name

        Ist bei dir "Fensterkontakt_Büro.State".

        name.indexOf(":1.STATE")
        Du suchst aber nach ":1.STATE"
        Im Namen ist aber kein Doopelpunkt und keine eins. Somit gibt dein name.substring einen leeren String zurück.

        var devicename = name.substring(0, name.indexOf(".STATE"));
        

        So sollte es gehen.

        Edit:
        Noch eine anmerkung. Du fragst das Object zwei mal ab und verwendest dann die Variable aber nicht?

        var obj    = getObject(id);
        var name = getObject(id).common.name;
        
        B 1 Reply Last reply Reply Quote 0
        • B
          Baerny @thewhobox last edited by

          @thewhobox vielen Dank, jetzt sind die Namen in der Nachricht enthalten, allerdings leert sich die die Log Datei nicht. Aber das ist wohl eine andere Baustelle.

          zu den beiden Abfragen - ich hab keine Ahnung von Javascript. Wie erwähnt habe ich das Script aus einem Tread übernommen.

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

            @Baerny sagte:

            allerdings leert sich die die Log Datei nicht.

            var fensterOffen =[];
            

            muss in die Funktion fensterPruef() (an den Anfang).

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

              @paul53 versteh ich nicht wirklich, "var fensterOffen =[];" steht doch ganz am Anfang.

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

                @Baerny sagte:

                "var fensterOffen =[];" steht doch ganz am Anfang.

                Eben, außerhalb der Funktion und wird so nur einmal bei Skriptstart ausgeführt. Richtig:

                const cacheSelectorState  = $('channel[state.id=*.STATE](functions="Verschluss")');
                var info;
                
                function fensterPruef() {
                    var fensterOffen = [];
                    cacheSelectorState.each(function (id, i) {                              // Schleife für jedes gefundenen Element *.STATE im Gewerk Alarmanlage_Huelle
                
                B 1 Reply Last reply Reply Quote 0
                • B
                  Baerny @paul53 last edited by

                  @paul53 Funktioniert!!!!, super 👍

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  640
                  Online

                  31.9k
                  Users

                  80.2k
                  Topics

                  1.3m
                  Posts

                  3
                  7
                  363
                  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