Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. (gelöst) Status Kontakte über Telegramm

    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) Status Kontakte über Telegramm

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

      Hallo zusammen,

      ich würde gern übereinen Button den Status der Kontakte abfragen.

      Es soll ein Popup dann kommen das geht auch schon soweit. Allerdings werden true/false bzw 0/1 ausgegeben.

      kann mir jemand helfen wie das zusammensetzt das dann offen/geschlossen steht.

      
       on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
          var stateval = getState('telegram.0.communicate.request').val;              // Statevalue in Variable schreiben
          var benutzer = stateval.substring(1,stateval.indexOf("]"));                 // Benutzer aus Statevalue extrahieren
          var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length);   // Befehl/Text aus Statevalue extrahieren
      
           if (befehl.search(/(?=.*(\bKontakte\b)).+/ig) != -1) {
              sendTo('telegram', {
                  user: benutzer,
                  text: 'Für welchen Raum möchtest du die Kontakte abfragen?',
                  reply_markup: {
                      inline_keyboard: [
                          [{ text: 'alle Räume', callback_data: '%Konalle'}],
                      ]
                   }
              });
          }    
      
       else if (befehl === "%Konalle") {
                  sendTo('telegram', {
                  user: benutzer,
                  text: "Kontakte alle Räume angefragt",
                  answerCallbackQuery: {
                  text:    ' Haustür ' + getState("hm-rpc.1.LEQ1059968.1.STATE").val +
                           ' \nBalkon ' + getState("hm-rpc.1.LEQ0403648.1.STATE").val +
                           '',
                  showAlert: true
                  }
              });
      
      }
      });
      

      Kann mir hier jemand helfen…

      Muss das irgendwie mit einbinden das er mir den richtigen Status in Text anzeigt:

      	function fensterstatus(zustand) {
          var meldung;
          switch (zustand) {
              case 1:
                  meldung = 'RHS gekippt';
              break;
              case 2:
                  meldung = 'RHS offen';
              break;
              case true:
                  meldung = 'TFK offen';
              break;
              default:
                  meldung = 'geschlossen';
              break;
          }
          return(meldung);
      
       if (status /*TFK*/ || status === 1 || status === 2 /*RHS*/) {  // wenn Zustand offen, dann wird die Anzahl der Fenster hochgezählt
                   ++anzahlFensterauf;
                   textFensterauf.push(devicename + ' (' + fensterstatus(status) + ')');  // Name und Zustand zum Array hinzufügen
              }   
      

      Viellen Dank

      Grüße Sven

      1 Reply Last reply Reply Quote 0
      • D
        danw last edited by

        Naja, im Endeffekt hast du ja schon alles zusammen.

        Du musst nur den Teil

                    text:    ' Haustür ' + getState("hm-rpc.1.LEQ1059968.1.STATE").val +
                             ' \nBalkon ' + getState("hm-rpc.1.LEQ0403648.1.STATE").val +
                             '',
        
        

        (die getStates())

        anpassen, von mir aus auch über die function fensterstatus.

        Alles abhängig davon, wie du es genau angezeigt haben willst.

                    text:    ' Haustür ' + fensterstatus(getState("hm-rpc.1.LEQ1059968.1.STATE").val) +
                             ' \nBalkon ' + fensterstatus(getState("hm-rpc.1.LEQ0403648.1.STATE").val) +
                             '',
        
        

        Wäre eine von vielen Möglichkeiten.

        1 Reply Last reply Reply Quote 0
        • S
          Svemo last edited by

          Hi danke für deine Atwort.

          sind alles schnipsel bekomme das nicht zusammengesetzt.

          kannst du mir beim zusammensetzen helfen.

          danke

          grüße

          Sven

          1 Reply Last reply Reply Quote 0
          • S
            Svemo last edited by

            Ein großen Dank an dslraser er hat mir geholfen und es klappt prima.

            Will es keinem vorenthalten denke dslraser ist damit einverstanden 🙂

            on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) {
            var stateval = getState('telegram.0.communicate.request').val; // Statevalue in Variable schreiben
            var benutzer = stateval.substring(1,stateval.indexOf("]")); // Benutzer aus Statevalue extrahieren
            var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length); // Befehl/Text aus Statevalue extrahieren
            
            var UGFensterwert, UGstatus;
            
            /**
             * Function um umsetzen von 0,1,2 true / false nach  geschlossen / gekippt / offen / offen / geschlossen
             */
            function zu_gek_auf(UGFensterwert, UGstatus) {
              if (UGFensterwert === 0) {
                UGstatus = 'geschlossen';
              } else if (UGFensterwert === 1) {
                UGstatus = 'gekippt';
              } else if (UGFensterwert === 2) {
                UGstatus = 'offen';
              } else if (UGFensterwert === false) {
                UGstatus = 'ausgeschaltet';
              } else if (UGFensterwert === true) {
                UGstatus = 'eingeschaltet';    
              }
            
              return UGstatus;
            }
            
            var value = obj.state.val;
              var oldValue = obj.oldState.val;
              Geschirrspueler = getState("hm-rpc.0.0001D3C99C7343.3.STATE").val;
              Waschmaschine = getState("hm-rpc.0.0001D3C99C72EE.3.STATE").val;
              Werkstattfenster = getState("hm-rpc.0.0007D7099D0094.1.STATE"/*Werkstattkellerfenster.STATE*/).val;
              Saunafensterlinks = getState("hm-rpc.0.0007D7099D006C.1.STATE"/*Saunakellerfenster links.STATE*/).val;
            
            if (befehl.search(/(?=.*(\bKontakte\b)).+/ig) != -1) {
            sendTo('telegram', {
            user: benutzer,
            text: 'Für welchen Raum möchtest du die Kontakte abfragen?',
            reply_markup: {
            inline_keyboard: [
            [{ text: 'alle Räume', callback_data: '%Kontalle'}],
            ]}});}
            
                else if 
                (befehl === "%Kontalle") {
                        sendTo('telegram', {
                        user: benutzer,
                        text: "Fernbedienungen Batterien angefragt",
                        answerCallbackQuery: {
                         text: 
                         'Geschirrspüler: ' + (zu_gek_auf(getState("hm-rpc.0.0001D3C99C7343.3.STATE").val, Geschirrspueler)) + 
                         '\nWaschmaschine: ' + (zu_gek_auf(getState("hm-rpc.0.0001D3C99C72EE.3.STATE").val, Waschmaschine)) +
                         '\nWerkstattfenster: ' + (zu_gek_auf(getState("hm-rpc.0.0007D7099D0094.1.STATE").val, Werkstattfenster)) +
                         '\nSauna Fenster links : ' + (zu_gek_auf(getState("hm-rpc.0.0007D7099D006C.1.STATE").val, Saunafensterlinks)),
            
                        showAlert: true
                        }
                    });
                }
            });
            

            https://www.bilder-upload.eu/bild-5f2282-1548759732.jpg.html ~~Grüße

            Svemo~~

            D 1 Reply Last reply Reply Quote 0
            • D
              dulles @Svemo last edited by

              @Svemo
              Habe den Script auf meine Komponenten angepasst. Passt auch soweit.
              Ich bekomme nur bei der Auswahl für alle Kontakte folgende Fehlermeldung im LOG.

              Bildschirmfoto 2019-03-09 um 10.26.32.png

              Gibt es eine Begrenzung bei der Anzahl der Anzeige und kann man die nicht abschalten. Da ich nicht so viel Ahnung habe vom Scripten, bin ich auf eure Hilfe angewiesen.

              pdulles

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

              Support us

              ioBroker
              Community Adapters
              Donate

              927
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              3
              5
              519
              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