Navigation

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

    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

    Hilfe bei der Script erstellung

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      T0biT3ch @OliverIO last edited by

      @oliverio
      Wie muss ich es denn schreiben? Ich hatte schon ein paar Sachen probiert, aber leider ohne Erfolg

      T 1 Reply Last reply Reply Quote 0
      • T
        ticaki Developer @T0biT3ch last edited by

        @t0bit3ch
        es müsste eigentlich so richtig sein:

           {
                    headers: {
                        'Content-Type': 'text/plain',
                        'Authorization': 'Bearer ' + token,
                    }
            })
        
        T 1 Reply Last reply Reply Quote 0
        • T
          T0biT3ch @ticaki last edited by T0biT3ch

          @ticaki
          @OliverIO

          Guten morgen,

          ich habe bei den versuchen das Bearer in den code mit einzubauen das + vergessen 🤦

          'authorization': 'Bearer ' + token,
          

          ich habe den code jetzt so angepasst

          const axios = require('axios');
           
          function auth() {
           
              axios.post('https://api.emessage.de/auth/login',{
                  username: 'USERNAME',
                  password: 'PASSWORD'
              },{
                  headers: {
                      'Authorization': 'Basic Og==',
                      'Content-Type': 'application/json',
                  }
              }).then(function (response) {
                  if (response.status==200) {
                      var token = response.data.data.jwt;
                      sendMessage(token)
                  }
              })
              .catch(function (error) {
                  console.log(error);
              });
              
          }
           
          function sendMessage(token) {
              axios.post('https://api.emessage.de/rs/eSendMessages',{
                  "messageText": "Testnachricht",
                  "recipients": [
                      {
                      "serviceName": "eCityruf",
                      "identifier": "********"
                      }
                  ]
              },{
                      headers: {
                          'Content-Type': 'text/plain',
                          'Authorization': 'Bearer ' + token,
                      }
              
              })
              .catch(function (error) {
                  console.log(error);
              });
           }
           
          auth();
          

          doch leider bekomme ich noch folgende log

          info	javascript.0 (31387) script.js.Pager_Alarmierung.emessage_Send_3: registered 0 subscriptions and 0 schedules
          
          info	javascript.0 (31387) script.js.Pager_Alarmierung.emessage_Send_3: {'message':'Request failed with status code 400','name':'Error','stack':'Error: Request failed with status code 400\n at createError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:260:11)\n at IncomingMessage.emit (events.js:326:22)\n at IncomingMessage.EventEmitter.emit (domain.js:483:12)\n at endReadableNT (_stream_readable.js:1241:12)\n at processTicksAndRejections (internal/process/task_queues.js:84:21)','config':{'url':'https://api.emessage.de/rs/eSendMessages','method':'post','data':'{\'messageText\':\'Testnachricht\',\'recipients\':[{\'serviceName\':\'eCityruf\',\'identifier\':\'5201709\'}]}','headers':{'Content-Type':'text/plain','Authorization':'Bearer ighndoönhgdboknbgoföänkjhäpsofmjsponmgbpoikfgnbäkmövkömnfpidsahfiohgniocjro#eiutv0gßreitéß049u48w+9r5uiq0´rwjkefgirgjzh+09vujr5tßhbz iüjvpoawxkjxe2','User-Agent':'axios/0.21.1','Content-Length':96},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1}}
          

          und der pager bleibt auch ruhig.

          1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer last edited by

            @t0bit3ch sagte in Hilfe bei der Script erstellung:

            axios.post('https://api.emessage.de/rs/eSendMessages',{

            In der PDF steht das die Adresse:

            axios.post('https://api.emessage.de/api/eSendMessages',{
            
            T 1 Reply Last reply Reply Quote 0
            • T
              T0biT3ch @ticaki last edited by

              @ticaki
              Das ist korrekt, funktioniert aber leider nicht. Wenn man sich in der PDF die Screenshots des Postman Programms anschaut sieht man die funktionierende Adresse. Hatte es im Script aber auch schon mit beiden probiert.

              OliverIO 1 Reply Last reply Reply Quote 0
              • OliverIO
                OliverIO @T0biT3ch last edited by

                @T0biT3ch
                Zeig nochmal die postman Informationen zum 2. request
                Der funktioniert hat

                T 1 Reply Last reply Reply Quote 0
                • T
                  T0biT3ch @OliverIO last edited by

                  @oliverio
                  hier der code zum holen des token

                  var axios = require('axios');
                  var data = JSON.stringify({
                    "username": "USERNAME",
                    "password": "PASSWORD"
                  });
                  
                  var config = {
                    method: 'post',
                    url: 'https://api.emessage.de/auth/login',
                    headers: { 
                      'Authorization': 'Basic Og==', 
                      'Content-Type': 'application/json'
                    },
                    data : data
                  };
                  
                  axios(config)
                  .then(function (response) {
                    console.log(JSON.stringify(response.data));
                  })
                  .catch(function (error) {
                    console.log(error);
                  });
                  

                  es scheint als würde dieser teil in deinem code funktionieren, da die log beim ausführen ja einen token ausgibt.

                  und das ist der code zum senden der nachrichten

                  var axios = require('axios');
                  var data = JSON.stringify({
                    "messageText": "Testnachricht",
                    "recipients": [
                      {
                        "serviceName": "eCityruf",
                        "identifier": "********"
                      }
                    ]
                  });
                  
                  var config = {
                    method: 'post',
                    url: 'https://api.emessage.de/rs/eSendMessages',
                    headers: { 
                      'Authorization': 'Bearer hgöfhogsioghösibnovdjuös<opriheourhweidjmanspkf<gob vuodsöahgbfdosuib0dsifohw84u0ü93rhfouisjhbgnvsoifedsökgpfingüer4984utißqü+äowfmägjhipoqehwfüouasdhgousgjohugurhgjiwehfgiwhfwquhbdcasukojgbhikgögloadfjasfghitiu<fbghkjybgvidfgdhfhgkjhlkzthgtzjklioölzfkdtjrhgstgfzhjui.k,mnjhbgvfadeshgjm', 
                      'Content-Type': 'application/json'
                    },
                    data : data
                  };
                  
                  axios(config)
                  .then(function (response) {
                    console.log(JSON.stringify(response.data));
                  })
                  .catch(function (error) {
                    console.log(error);
                  });
                  
                  
                  T 1 Reply Last reply Reply Quote 0
                  • T
                    ticaki Developer @T0biT3ch last edited by

                    @t0bit3ch
                    Content/Type ist anders

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      T0biT3ch @ticaki last edited by

                      @ticaki sagte in Hilfe bei der Script erstellung:

                      @t0bit3ch
                      Content/Type ist anders

                      @ticaki
                      @OliverIO

                      ES FUNKTIONIERT 👍 😀 😘 👍
                      Vielen Vielen Vielen dank euch.

                      const axios = require('axios');
                       
                      function auth() {
                       
                          axios.post('https://api.emessage.de/auth/login',{
                              username: 'USERNAME',
                              password: 'PASSWORD'
                          },{
                              headers: {
                                  'Authorization': 'Basic Og==',
                                  'Content-Type': 'application/json',
                              }
                          }).then(function (response) {
                              if (response.status==200) {
                                  var token = response.data.data.jwt;
                                  sendMessage(token)
                              }
                          })
                          .catch(function (error) {
                              console.log(error);
                          });
                          
                      }
                       
                      function sendMessage(token) {
                          axios.post('https://api.emessage.de/rs/eSendMessages',{
                              "messageText": "Testnachricht",
                              "recipients": [
                                  {
                                  "serviceName": "eCityruf",
                                  "identifier": "********"
                                  }
                              ]
                          },{
                                  headers: {
                                      'Content-Type': 'application/json',
                                      'Authorization': 'Bearer ' + token,
                                  }
                          
                          })
                          .catch(function (error) {
                              console.log(error);
                          });
                       }
                       
                      auth();
                      

                      eine kleine frage hätte ich noch um die sache perfekt zu machen
                      wie kann ich bei

                      "messageText": "Testnachricht",
                      

                      den Text "Testnachricht" durch den wert aus einem datenpunkt ersetzen?

                      OliverIO 1 Reply Last reply Reply Quote 0
                      • OliverIO
                        OliverIO @T0biT3ch last edited by

                        @t0bit3ch

                        genauso wie du den token an die nachricht anfügst.
                        du ersetzt die stelle mit einer variable und belegst die variable mit deinem nachrichtentext

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          T0biT3ch @OliverIO last edited by

                          @oliverio sagte in Hilfe bei der Script erstellung:

                          @t0bit3ch

                          genauso wie du den token an die nachricht anfügst.
                          du ersetzt die stelle mit einer variable und belegst die variable mit deinem nachrichtentext

                          @OliverIO

                          ich habe den code jetzt so angepasst, aber er schmeißt mir nur fehler

                          const axios = require('axios');
                          var alarmmeldung = getState"javascript.0.emmesage.alarmtext".val;
                          function auth() {
                           
                              axios.post('https://api.emessage.de/auth/login',{
                                  username: 'USERNAME',         //* E*Message Benutzername */
                                  password: 'PASSWORD'   //* E*Message Kennwort */
                              },{
                                  headers: {
                                      'Authorization': 'Basic Og==',
                                      'Content-Type': 'application/json',
                                  }
                              }).then(function (response) {
                                  if (response.status==200) {
                                      var token = response.data.data.jwt;
                                      sendMessage(token)
                                  }
                              })
                              .catch(function (error) {
                                  console.log(error);
                              });
                              
                          }
                           
                          function sendMessage(token) {
                              axios.post('https://api.emessage.de/rs/eSendMessages',{
                                  "messageText": alarmmeldung,     //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */
                                  "recipients": [
                                      {
                                      "serviceName": "eCityruf",  //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */
                                      "identifier": "*******"     //* E*Message Funkrufnummer */
                                      }
                                  ]
                              },{
                                      headers: {
                                          'Content-Type': 'application/json',
                                          'Authorization': 'Bearer ' + token,
                                      }
                              
                              })
                              .catch(function (error) {
                                  console.log(error);
                              });
                           }
                           
                          auth();
                          
                          error	javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1 compile failed: at script.js.Pager_Alarmierung.emessage_send_test1:2
                          
                          T 1 Reply Last reply Reply Quote 0
                          • T
                            ticaki Developer @T0biT3ch last edited by

                            @t0bit3ch
                            Steht doch da 🙂 in Zeile 2 ist ein Fehler. Da fehlen die Klammer setState().val

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              T0biT3ch @ticaki last edited by T0biT3ch

                              @ticaki
                              wenn ich es so mache

                              var alarmmeldung = getState("javascript.0.emmesage.alarmtext").val;
                              

                              bekomme ich den log

                              warn	javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test1:2:20
                              21:09:20.934	warn	javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test1:49:3
                              21:09:20.935	info	javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1: registered 0 subscriptions and 0 schedules
                              21:09:21.235	info	javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test1: {'message':'Request failed with status code 400','name':'Error','stack':'Error: Request failed with status code 400\n at createError (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/opt/iobroker/node_modules/iobroker.javascript/node_modules/axios/lib/adapters/http.js:260:11)\n at IncomingMessage.emit (events.js:326:22)\n at IncomingMessage.EventEmitter.emit (domain.js:483:12)\n at endReadableNT (_stream_readable.js:1241:12)\n at processTicksAndRejections (internal/process/task_queues.js:84:21)','config':{'url':'https://api.emessage.de/rs/eSendMessages','method':'post','data':'{\'messageText\':null,\'recipients\':[{\'serviceName\':\'eCityruf\',\'identifier\':\'*******\'}]}','headers':{'Content-Type':'application/json','Authorization':'Bearer TOKEN','User-Agent':'axios/0.21.1','Content-Length':85},'transformRequest':[null],'transformResponse':[null],'timeout':0,'xsrfCookieName':'XSRF-TOKEN','xsrfHeaderName':'X-XSRF-TOKEN','maxContentLength':-1,'maxBodyLength':-1}}
                              

                              aber in zeile 3 steht ja garnichts 🤔

                              T 1 Reply Last reply Reply Quote 0
                              • T
                                ticaki Developer @T0biT3ch last edited by

                                @t0bit3ch
                                In Zeile 3 steht die Funktion in der eine Warnung ausgelöst wird. In Zeile 20 rufst du console.log(error) auf. Keine Ahnung was in error drin steht, aber scheinbar kann die log funktion das nicht verarbeiten.

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  T0biT3ch @ticaki last edited by

                                  @ticaki

                                  hab es jetzt so probiert

                                  var alarmmeldung = "javascript.0.E_Message.Alarmtext";
                                  
                                  "messageText": getState(alarmmeldung).val,
                                  

                                  jetzt kommt kein fehler mehr im log aber der pager wird auch nicht mehr ausgelöst 😭

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    ticaki Developer @T0biT3ch last edited by ticaki

                                    @t0bit3ch
                                    Versuche mal folgende:

                                    const axios = require('axios');
                                    var alarmmeldung = getState("javascript.0.emmesage.alarmtext").val;
                                    if (typeof alarmmeldung !== 'string' || alarmmeldung == '') log('das ist kein string');
                                    log(alarmmeldung);
                                    function auth() {
                                     
                                        axios.post('https://api.emessage.de/auth/login',{
                                            username: 'USERNAME',         //* E*Message Benutzername */
                                             password: 'PASSWORD'   //* E*Message Kennwort */
                                         },{
                                             headers: {
                                                 'Authorization': 'Basic Og==',
                                                 'Content-Type': 'application/json'
                                             }
                                         }).then(function (response) {
                                             if (response.status==200) {
                                                 var token = response.data.data.jwt;
                                                 sendMessage(token);
                                             }
                                         })
                                         .catch(function (error) {
                                             log('fehler in post');
                                             console.log(error);
                                         });
                                         
                                     }
                                      
                                     function sendMessage(token) {
                                         axios.post('https://api.emessage.de/rs/eSendMessages',{
                                             "messageText": alarmmeldung + ' ',     //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */
                                             "recipients": [
                                                 {
                                                 "serviceName": "eCityruf",  //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */
                                                 "identifier": "*******"     //* E*Message Funkrufnummer */
                                                 }
                                             ]
                                         },{
                                                 headers: {
                                                     'Content-Type': 'application/json',
                                                     'Authorization': 'Bearer ' + token
                                                 }
                                         
                                         })
                                         .catch(function (error) {
                                             log('fehler in send');
                                             console.log(error);
                                         });
                                      }
                                    

                                    Das bekommen wir schon ans laufen 🙂
                                    EDIT: Da waren noch ein paar Komma drin, die da nichts zu suchen haben.

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      T0biT3ch @ticaki last edited by

                                      @ticaki
                                      jetzt kommt das in der log

                                      info	javascript.0 (13740) Start javascript script.js.Pager_Alarmierung.emessage_send_test2
                                      warn	javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test2:2:20
                                      warn	javascript.0 (13740) at script.js.Pager_Alarmierung.emessage_send_test2:49:3
                                      info	javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test2: das ist kein string
                                      info	javascript.0 (13740) script.js.Pager_Alarmierung.emessage_send_test2: registered 0 subscriptions and 0 schedules
                                      
                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        ticaki Developer @T0biT3ch last edited by ticaki

                                        @t0bit3ch

                                        Was steht in "javascript.0.emmesage.alarmtext"? Ist der Datenpunkt als String definiert?

                                        füge in Zeile 4 folgendes ein:

                                        log(alarmmeldung);
                                        

                                        Du hättest jetzt aber entweder mehr Logmeldungen oder eine pagernachricht bekommen sollen. Ich hab oben den Code editiert.

                                        T 2 Replies Last reply Reply Quote 0
                                        • T
                                          T0biT3ch @ticaki last edited by

                                          @ticaki
                                          also im log kommt jetzt die meldung aus dem datenpunkt so wie es sein soll.
                                          der pager bleibt aber ruhig

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            T0biT3ch @ticaki last edited by

                                            @ticaki
                                            hatte grad nochmal diesen code probiert

                                            const axios = require('axios');
                                            var alarmmeldung = "javascript.0.emmesage.alarmtext";
                                            
                                            
                                            function auth() {
                                             
                                                axios.post('https://api.emessage.de/auth/login',{
                                                    username: 'USERNAME',         //* E*Message Benutzername */
                                                    password: 'PASSWORD'   //* E*Message Kennwort */
                                                },{
                                                    headers: {
                                                        'Authorization': 'Basic Og==',
                                                        'Content-Type': 'application/json',
                                                    }
                                                }).then(function (response) {
                                                    if (response.status==200) {
                                                        var token = response.data.data.jwt;
                                                        sendMessage(token)
                                                    }
                                                })
                                                .catch(function (error) {
                                                    console.log(error);
                                                });
                                                
                                            }
                                             
                                            function sendMessage(token) {
                                                axios.post('https://api.emessage.de/rs/eSendMessages',{
                                                    "messageText": getState(alarmmeldung).val,     //* Pocsag Nachricht an Pager */ //* bei mir durch einen Datenpunkt ersetzt */
                                                    "recipients": [
                                                        {
                                                        "serviceName": "eCityruf",  //* Alarmierungstyp */ //* eCityruf - eBos - 2wayS */
                                                        "identifier": "******"     //* E*Message Funkrufnummer */
                                                        }
                                                    ]
                                                },{
                                                        headers: {
                                                            'Content-Type': 'application/json',
                                                            'Authorization': 'Bearer ' + token,
                                                        }
                                                
                                                })
                                                .catch(function (error) {
                                                    console.log(error);
                                                });
                                             }
                                             console.log(getState("javascript.0.emmesage.alarmtext").val);
                                            auth();
                                            

                                            damit funktionert es 😊

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            698
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            98
                                            5408
                                            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