Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Nello Telegram

    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

    Nello Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      Jan1 @CKMartens last edited by

      @CKMartens
      Den DP gibt es aber bei @Marek im Screenshot nicht, somit hat er auch die Vorbereitung dazu noch nicht gemacht.
      Wenn das allerdings erledigt ist, stehen die Events im Klartext drin oder ist das noch ein JASON String? Wobei das für ein Telegramm Nachricht schon reichen würde, wenn man das auf "wurde geändert" prüft.

      Da muss @Marek wohl noch ein wenig lesen, oder es ist einer so nett der das auch zu Hause hat (@CKMartens) und baut im das mal schnell zusammen 😊

      1 Reply Last reply Reply Quote 0
      • CKMartens
        CKMartens @Marek last edited by

        @Marek

        Mal ein kurzer Quick Guide:
        Nello Adapter installieren und einen Tocken eintragen oder wenn Du noch keinen generiert hast unter https://auth.nello.io/admin einen erstellen und eintragen
        20190927_002.png

        Dann im iot-Adapter den Service eintragen...
        20190927_001.png
        ...und im Nello-Adaper fertig einstellen
        20190927_003.png

        Wenn alles richtig ist werden die Datenpunkte unter anderem beim Klingeln geändert:
        20190927_004.png
        20190927_005.png

        In dem feed-Datenpunkt unter nello.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.events.feed steht dann als Json-String alle letzten Ereignisse drinnen:

        [{"action":"swipe","data":{"location_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx","name":"Carsten Martens","user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx","timestamp":1560788361}},
        [...]
        

        Unter iot.0.services.custom_nello (also dem eingerichteten Service) steht dann immer das letzte Event als Json

        {"action": "deny", "data": {"location_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx"}}
        

        Diese kannst du mit einem Script parsen und auswerten. Schau Dir dazu Zafus Beispiel an.

        Ich hoffe das es etwas geholfen hat.

        1 Reply Last reply Reply Quote 0
        • M
          Marek last edited by

          Okay, das Grundprinzip habe ich verstanden. Ich muss jetzt ein Script erstellen, welches mit dann diese Benachrichtigungen erstellt.
          Mache ich das in Scripts? Kann mir da einer einen kurzen Denkanstoß geben. Bitte 🙂

          J 1 Reply Last reply Reply Quote 0
          • J
            Jan1 @Marek last edited by

            @Marek
            Nein musst Du nicht,es reicht erst mal wenn Du das oben machst und dann in Deinem Adapter ein DP hast der zappelt wenn es klingelt.

            1 Reply Last reply Reply Quote 0
            • M
              Marek last edited by

              also den Datenpunkt habe ich ja jetzt. Bin nämlich nach der Anleitung oben vorgegangen. Das klappt auch. Nur wie mache ich das jetzt mit dem Script.

              J 1 Reply Last reply Reply Quote 0
              • J
                Jan1 @Marek last edited by

                @Marek
                Du hast jetzt ein DP der sich ändert wenn es klingelt?
                Wie der sich ändert spielt dabei keine Rolle.

                1 Reply Last reply Reply Quote 0
                • Zefau
                  Zefau last edited by

                  Siehe https://github.com/Zefau/ioBroker.nello#let-telegram-inform-you-about-door-ring

                  1 Reply Last reply Reply Quote 1
                  • M
                    Marek last edited by

                    Hallo zusammen,

                    Wow eine so große Resonanz hatte ich nicht erwartet, danke an alle die sich die Zeit nehmen mir zu helfen!

                    Ja es stimmt, anfangs hatte ich den Datenpunkt custom_nello nicht aber ich hab es jetzt hinbekommen. Auch ändern sich die Aktionen deny usw.

                    Danke an Zefau für das Hinzufügen des Scripts!

                    Nun wenn ich es richtig verstanden habe:

                    
                    /**
                     * Send something with Telegram
                     * 
                     * @param       {string}        content         Content to send via Telegram
                     * @param       {string}  		[user='']		User to send the content to
                     * @return      void
                     * 
                     */
                    function msg(content, user = '')
                    {
                        const CONFIG = {
                            text: content,
                            parse_mode: 'HTML',
                            reply_markup: {
                                keyboard: ACTIONS,
                                resize_keyboard: true,
                                one_time_keyboard: false
                            }
                        };
                        
                        sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG);
                    }
                    
                    

                    Erstelle ich ein Java Script im common Ordner.

                    Und dann schreibe ich das drunter

                    
                    var L = {
                       'actionRingUnknown': 'Es hat geklingelt',
                       'actionOpenName': '%name% hat die Tür geöffnet',
                       'actionOpenGeo': '%name% hat das Haus betreten',
                       'actionOpen': 'Die Haustür wurde geöffnet'
                    };
                    
                    on({id: 'nello.0.ID.events.feed', change: 'any'}, function(obj)
                    {
                       var events = JSON.parse(obj.state.val);
                       if (events.length === 0) return;
                    
                       var event = events[events.length-1];
                       if (event.action == 'deny')
                          msg(L.actionRingUnknown);
                    
                       else if (event.action == 'swipe')
                          msg(L.actionOpenName.replace(/%name%/gi, event.data.name));
                    
                       else if (event.action == 'geo')
                          msg(L.actionOpenGeo.replace(/%name%/gi, event.data.name));
                    
                       else
                          msg(L.actionOpen);
                    });
                    
                    

                    Und dann bei nello.0.ID schreib ich die Nello id rein.

                    Ich bin da noch wirklich Neuling und fange gerade erst an zu lernen mit dem Scripte erstellen. Ich muss erstmal nur das Grundprinzip verstehen.

                    Ziel ist es das ich eine Telegram Nachricht bekomme wenn es geklingelt hat und wenn die Tür geöffnet wurde und wer die Tür geöffnet hat usw.

                    Kann mir da einer ne kleine Step by step Anleitung für komplette idioten geben.

                    Ich danke nochmal allen Hilfsbereiten. ✌

                    Zefau 1 Reply Last reply Reply Quote 0
                    • Zefau
                      Zefau @Marek last edited by

                      @Marek Auf Github ist es doch beschrieben?

                      Das erste Skript (also die Funktion) muss in den global Ordner. Das zweite Skript in den common Ordner und dort nello.0.ID mit deiner ID austauschen.

                      1 Reply Last reply Reply Quote 1
                      • M
                        Marek last edited by

                        Also ich bekomme da den Fehler:

                        javascript.0 script.js.common.Nello.Klingeln compile failed:
                        at script.js.common.Nello.Klingeln:9

                        Hab es jetzt genau nach deiner Beschreibung gemacht...

                        Oh Mann...

                        J Zefau 2 Replies Last reply Reply Quote 0
                        • J
                          Jan1 @Marek last edited by

                          @Marek
                          Du willst doch nur ein Telegram wenn es klingelt, warum fängst dann nicht klein an und antwortest auf meine Fragen?
                          Du hast von Java Script keine Plan, dann machs mit Blockly und das was Du willst ist in Blockly mit 3 Blöcken erledigt.

                          1 Reply Last reply Reply Quote 0
                          • Zefau
                            Zefau @Marek last edited by

                            @Marek habe die Skripte nochmal angepasst, versuch mal:

                            /**
                             * Send something with Telegram
                             * 
                             * @param       {string}        content         Content to send via Telegram
                             * @param       {string}  		[user='']		User to send the content to
                             * @return      void
                             * 
                             */
                            function msg(content, user = '')
                            {
                                const CONFIG = {
                                    text: content,
                                    parse_mode: 'HTML'
                                };
                                
                                sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG);
                            }
                            

                            sowie

                            var L = {
                               'actionRingUnknown': 'Es hat geklingelt',
                               'actionOpenName': '%name% hat die Tür geöffnet',
                               'actionOpenGeo': '%name% hat das Haus betreten',
                               'actionOpen': 'Die Haustür wurde geöffnet'
                            };
                            
                            on({id: 'javascript.0.test', change: 'any'}, function(obj)
                            {
                               var events = obj && obj.state && JSON.parse(obj.state.val);
                               if (!events || events.length == 0) return;
                            
                               var event = events[events.length-1];
                               if (event.action == 'deny')
                                  msg(L.actionRingUnknown);
                            
                               else if (event.action == 'swipe')
                                  msg(L.actionOpenName.replace(/%name%/gi, event.data.name));
                            
                               else if (event.action == 'geo')
                                  msg(L.actionOpenGeo.replace(/%name%/gi, event.data.name));
                            
                               else
                                  msg(L.actionOpen);
                            });
                            

                            Telegram Adapter hast du installiert und konfiguriert, richtig?

                            M 1 Reply Last reply Reply Quote 0
                            • M
                              Marek last edited by

                              Haloo Zefau,

                              also ich habe jetzt dein neues script genommen. Das funktioniert. Ich habe nur "javascript.0.test" in nello.0.ID.events.feed anstelle "ID" die ID vom nello eingetragen. Es funktioniert. Danke dir !

                              M 1 Reply Last reply Reply Quote 1
                              • M
                                Marek @Marek last edited by

                                @Marek und natürlich bei dem oberen script bei User den user im telegram Adapter eingetragen

                                1 Reply Last reply Reply Quote 0
                                • M
                                  Marek @Zefau last edited by

                                  @Zefau wenn ich die Telegram an mehrere user schicken möchte wie mache ich das dann?

                                  Zefau 1 Reply Last reply Reply Quote 0
                                  • Zefau
                                    Zefau @Marek last edited by Zefau

                                    @Marek sagte in Nello Telegram:

                                    wenn ich die Telegram an mehrere user schicken möchte wie mache ich das dann?

                                    /**
                                     * Send something with Telegram
                                     * 
                                     * @param       {string}        content         Content to send via Telegram
                                     * @param       {array}  		[user=[]]		Users to send the content to
                                     * @return      void
                                     * 
                                     */
                                    function msg(content, users = [])
                                    {
                                        const CONTENT = {
                                            text: content,
                                            parse_mode: 'HTML'
                                        };
                                        
                                    	if (!Array.isArray(users) || users.length == 0)
                                    		sendTo('telegram', CONTENT);
                                    	else
                                    		users.forEach(user => sendTo('telegram', Object.assign({ user: user }, CONTENT)))
                                    }
                                    

                                    und dann msg('hallo', ['Zefau', 'Marek']) bzw. msg('hallo') schickt an alle.

                                    M 1 Reply Last reply Reply Quote 0
                                    • M
                                      Marek @Zefau last edited by Marek

                                      @Zefau

                                      /**
                                        * Send something with Telegram
                                        * 
                                        * @param       {string}        content         Content to send via Telegram
                                        * @param       {array}  		[user=[]]		Users to send the content to
                                        * @return      void
                                        * 
                                        */
                                      function msg(content, users = 'Marco', 'Nadine' )
                                      {
                                          const CONFIG = {
                                              text: content,
                                              parse_mode: 'HTML'
                                          };
                                          
                                          sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG);
                                      }
                                      

                                      haut irgendwie nicht hin.. grübel. Ich muss mal so nen Java Kurs belegen...

                                      Zefau 1 Reply Last reply Reply Quote 0
                                      • Zefau
                                        Zefau @Marek last edited by

                                        @Marek Nimm den neuen Code?

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

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        482
                                        Online

                                        31.9k
                                        Users

                                        80.1k
                                        Topics

                                        1.3m
                                        Posts

                                        4
                                        33
                                        1120
                                        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