Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Unifi-Vouchers via Telg. WWW-Zeit Zuweisung

    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

    Unifi-Vouchers via Telg. WWW-Zeit Zuweisung

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @saeft_2003 last edited by liv-in-sky

      @saeft_2003 stoppe script - lösche die datenpunkte unter javascript.x.VoucherKinder - starte script

      S 1 Reply Last reply Reply Quote 0
      • S
        saeft_2003 Most Active @liv-in-sky last edited by

        @liv-in-sky

        Habe ich gemacht, dann habe ich erst das Hauptskript und dann das andere gestartet. Erst sah es gut aus es gab nur eine Warnung. Dann aber kamen viele Fehler...

        2020-01-16 23:32:06.399 - info: javascript.0 Start javascript script.js.funktioniert.Unifi_controller_telegram_send_voucher
        2020-01-16 23:32:06.406 - info: javascript.0 script.js.funktioniert.Unifi_controller_telegram_send_voucher: registered 0 subscriptions and 0 schedules
        2020-01-16 23:32:07.407 - warn: javascript.0 getState "javascript.0.VoucherKinder.ArrayAlt" not found (3)
        2020-01-16 23:32:07.409 - warn: javascript.0 at Object. (script.js.funktioniert.Unifi_controller_telegram_send_voucher:10:19)
        2020-01-16 23:32:07.410 - warn: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1869:34)
        2020-01-16 23:32:07.410 - warn: javascript.0 at ontimeout (timers.js:511:34)
        2020-01-16 23:32:07.410 - warn: javascript.0 at tryOnTimeout (timers.js:323:5)
        2020-01-16 23:32:07.410 - warn: javascript.0 at Timer.listOnTimeout (timers.js:290:5)
        2020-01-16 23:32:11.393 - info: sonoff.0 Client [DVES_B462A7] connected
        2020-01-16 23:32:30.011 - error: javascript.0 Error in callback: TypeError: Cannot read property 'length' of null
        2020-01-16 23:32:30.011 - error: javascript.0 at Object. (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        2020-01-16 23:32:30.012 - error: javascript.0 at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34)
        2020-01-16 23:32:30.012 - error: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
        2020-01-16 23:32:30.014 - error: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
        2020-01-16 23:32:30.014 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
        2020-01-16 23:32:30.015 - error: javascript.0 at ontimeout (timers.js:498:11)
        2020-01-16 23:32:30.015 - error: javascript.0 at tryOnTimeout (timers.js:323:5)
        2020-01-16 23:32:30.015 - error: javascript.0 at Timer.listOnTimeout (timers.js:290:5)
        2020-01-16 23:33:00.026 - error: javascript.0 Error in callback: TypeError: Cannot read property 'length' of null
        2020-01-16 23:33:00.036 - error: javascript.0 at Object. (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        2020-01-16 23:33:00.036 - error: javascript.0 at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34)
        2020-01-16 23:33:00.037 - error: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
        2020-01-16 23:33:00.037 - error: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
        2020-01-16 23:33:00.037 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
        2020-01-16 23:33:00.037 - error: javascript.0 at ontimeout (timers.js:498:11)
        2020-01-16 23:33:00.037 - error: javascript.0 at tryOnTimeout (timers.js:323:5)
        2020-01-16 23:33:00.037 - error: javascript.0 at Timer.listOnTimeout (timers.js:290:5)
        2020-01-16 23:33:02.274 - info: sonoff.0 Client [DVES_B462A7] Error: Cannot parse topic
        2020-01-16 23:33:03.042 - info: sonoff.0 Client [DVES_953D52] closed
        2020-01-16 23:33:04.299 - info: sonoff.0 Client [DVES_953D52] connected
        2020-01-16 23:33:14.228 - info: sonoff.0 Client [DVES_B462A7] connected
        2020-01-16 23:33:30.010 - error: javascript.0 Error in callback: TypeError: Cannot read property 'length' of null
        2020-01-16 23:33:30.010 - error: javascript.0 at Object. (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        2020-01-16 23:33:30.011 - error: javascript.0 at Job.nodeSchedule.scheduleJob [as job] (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1181:34)
        2020-01-16 23:33:30.011 - error: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10)
        2020-01-16 23:33:30.011 - error: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11
        2020-01-16 23:33:30.012 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7)
        2020-01-16 23:33:30.012 - error: javascript.0 at ontimeout (timers.js:498:11)
        2020-01-16 23:33:30.012 - error: javascript.0 at tryOnTimeout (timers.js:323:5)
        2020-01-16 23:33:30.012 - error: javascript.0 at Timer.listOnTimeout (timers.js:290:5)
        2020-01-16 23:33:31.788 - info: web.0 <==Disconnect system.user.admin from ::ffff:192.168.178.51 vis.0
        
        
        23:32:06.411	info	javascript.0 Start javascript script.js.funktioniert.Unifi_controller_telegram_send_voucher
        23:32:06.411	info	javascript.0 script.js.funktioniert.Unifi_controller_telegram_send_voucher: registered 0 subscriptions and 0 schedules
        23:32:07.416	warn	javascript.0 at Object.<anonymous> (script.js.funktioniert.Unifi_controller_telegram_send_voucher:10:19)
        23:32:30.018	error	javascript.0 at Object.<anonymous> (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        23:33:00.040	error	javascript.0 at Object.<anonymous> (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        23:33:30.014	error	javascript.0 at Object.<anonymous> (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        23:34:00.017	error	javascript.0 at Object.<anonymous> (script.js.funktioniert.Unifi_controller_telegram_send_voucher:53:45)
        23:34:22.278	info	javascript.0 Stop script script.js.funktioniert.Unifi_controller_telegram_send_voucher
        
        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @saeft_2003 last edited by

          @saeft_2003 was sind deine 2 scripte

          es geht nur um ein script - das unifi script läuft und wird nicht beeinflußt

          was ist dein hauptscript ? was das nebenscript ?

          S 1 Reply Last reply Reply Quote 0
          • S
            saeft_2003 Most Active @liv-in-sky last edited by

            @liv-in-sky

            hautskript unifi skript

            nebenskript dein voucher skript

            Wenn ich das voucher skript starte, dauert es kurz und dann kommen im log vom unifi skript Fehler, gleichzeitig verfärbt sich das Playzeichen zum starten vom voucher skript von grün auf gelb.

            skript.jpg

            liv-in-sky 1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @saeft_2003 last edited by

              @saeft_2003

              ja aber die fehlerquelle ist nicht das unifi script, auch wenn es dort seltsamerweise die fehler anzeigt - am besten neustart javascript instanzen und vorher das neue voucher script stoppen und die beiden datenpunkte nochmal löschen - das unifi script so lassen wie es ist - nach dem instanz-neustart das neue voucher script wieder starten

              und heute geht nix mehr - lieber morgen weitermachen

              S 1 Reply Last reply Reply Quote 0
              • S
                saeft_2003 Most Active @liv-in-sky last edited by saeft_2003

                @liv-in-sky

                Alles klar ich versuchs morgen abend wieder. Erstmal vielen Dank soweit und gute Nacht...

                p.s. bitte sag mir bei Gelegenheit noch kurz welche beide datenpunkte genau ich löschen soll

                liv-in-sky 1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @saeft_2003 last edited by

                  @saeft_2003 die unter javascript.x.voucherkinder - das unifi script läuft und sollte in ruhe gelassen werden- außer die standard vouchers - die wurden da eingegeben

                  du kannst noch kontrolliern, ob im unifi script die datenpunkte für die jetztigen vouchers gefüllt sind

                  dir auch eine gute nacht - bis bald

                  S 1 Reply Last reply Reply Quote 0
                  • S
                    saeft_2003 Most Active @liv-in-sky last edited by

                    @liv-in-sky

                    Moin ich hab das gemacht was du gesagt hast und die gleichen fehler kommen wieder im unifi skript. Hast du noch eine Idee?

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @saeft_2003 last edited by

                      @saeft_2003 anydesk ? - ich bin gerade am testen - und es sind keine fehler bei mir

                      S 1 Reply Last reply Reply Quote 1
                      • S
                        saeft_2003 Most Active @liv-in-sky last edited by

                        liv-in-sky hat gerade bei mir das skript angepasst. Es läuft nun und ich kann es nur jedem empfehlen der sowas in der Art machen will wie ich bzw. voucher nach dem Erstellen per telegram verschicken will. Noch mal vielen dank an @liv-in-sky

                        Hier das akutelle skript:

                        const dpPrefix = "javascript."+ instance +".";
                        const dpPrefixjava = "javascript.0.";
                        const telegramInstanz="telegram.0"
                        
                        //javascript.2.WLANUnifi.Wifi_Vouchers-CODES.CODE01.notiz
                        //createState("VoucherKinder.ArrayAlt"  ,["xxx"], { name: 'VoucherKinder',  type: 'array', read:  true,  write: true,});
                        createState("VoucherKinder.ArrayAlt2"  ,"yyy", { name: 'VoucherKinder',  type: 'string', read:  true,  write: true,});
                        createState("VoucherKinder.LastSend"  , { name: 'LastSend',  type: 'string', read:  true,  write: true,});
                        //log("vor unterkringelt" + instance);
                        
                        var timeout = setTimeout(function () { 
                           // setState(dpPrefix+"VoucherKinder.ArrayAlt",["xxx"]);
                        var arrTrigger=[];
                        //var arrTriggerAlt=getState(dpPrefix+"VoucherKinder.ArrayAlt").val;
                        var arrTriggerAlt=getState(dpPrefix+"VoucherKinder.ArrayAlt").val.split(",");
                        var telegramAdresse="";
                        
                        var mySchedule=" */30  * * * * *";
                        
                        schedule(mySchedule,  function () {
                          arrTrigger=[];
                          
                         // log("starte");
                         $(dpPrefixjava+'WLANUnifi.Wifi_Vouchers-CODES.*.notiz').each(function(id, i) {         
                         var ddd=id.replace("notiz","erstellt")
                                var timeRechner=getState(ddd).val
                        
                              var ida = id.split('.');
                              
                             telegramAdresse=getState(id).val;// log (telegramAdresse)
                               
                            
                                 var val0= id.replace("notiz",ida[4].toLowerCase())                                          
                                  //  log(val0)
                                
                               timeRechner=  timeRechner.replace(/(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d)/,"$3-$2-$1T$4:$5:00.000Z")
                        
                                if (getState(id).val != "na")   {arrTrigger.push([getState(val0).val,Date.parse(timeRechner).toString(),telegramAdresse]) ;
                              
                              
                              //   log(Date.parse("2020-01-16T14:11:00.000Z").toString())
                                // log (getState(id.replace("notiz","erstellt")).val)
                                }       
                                });
                        
                           arrTrigger.sort(function (alpha, beta) {
                                      if (alpha[1] > beta[1])
                                         return 1;
                                      if (beta[1] > alpha[1])
                                         return -1;
                                      return 0;
                                     });
                        
                        
                        //log ("neuesArray: "+arrTrigger.toString())
                        //log ("altesArray: "+arrTriggerAlt.toString())
                         // log(arrTrigger.length.toString() +" -- " +arrTriggerAlt.length.toString())
                              if (arrTrigger.length > arrTriggerAlt.length-1)  {
                                   arrTriggerAlt=["xxx"];
                                   for (var i=0;i<arrTrigger.length;i++) {
                                        arrTriggerAlt.push(arrTrigger[i]);
                          //              setState(dpPrefix+"VoucherKinder.ArrayAlt",arrTriggerAlt);
                                        setState(dpPrefix+"VoucherKinder.ArrayAlt2",arrTriggerAlt.toString());
                                        }
                                
                                 // log("DER NEUE VOUCHER: "+arrTrigger[arrTrigger.length-1][0])
                                       sendTo(telegramInstanz, {
                                     
                                     text: "Dein neues Voucher: "+arrTrigger[arrTrigger.length-1][0],
                                     type: 'text'
                                     });
                                     setState(dpPrefix+"VoucherKinder.LastSend",arrTrigger[arrTrigger.length-1][0]+" an: "+arrTrigger[arrTrigger.length-1][2] )
                        
                                } else {
                                     arrTriggerAlt=["na"];
                                    for (var i=0;i<arrTrigger.length;i++) {
                                        arrTriggerAlt.push(arrTrigger[i])
                            //            setState(dpPrefix+"VoucherKinder.ArrayAlt",arrTriggerAlt);
                                        setState(dpPrefix+"VoucherKinder.ArrayAlt2",arrTriggerAlt.toString())}
                        
                                }
                        
                         });
                        }, 2000);
                        
                        1 Reply Last reply Reply Quote 0
                        • S
                          saeft_2003 Most Active last edited by

                          @liv-in-sky

                          ich muss dich noch etwas zu dem skript fragen. Und zwar habe ich drei Kinder, dazu habe ich drei standard vouchers angelegt mit Kind1, Kind2 und Kind3.

                          Jetzt hätte ich gerne wenn ein voucher fürs Kind1 erstellt wird das dann nur dieses den Code geschickt bekommt. Mit den User habe ich gerade getestet, sobald sich "jemand" an den bot anmeldet ist er ein user und man kann diesen im skript benennen. So funkionierts...

                            sendTo(telegramInstanz, {
                                       user: 'Patrick',
                                       text: "Dein neues Voucher: "+arrTrigger[arrTrigger.length-1][0],
                                       type: 'text'
                                       });
                                       setState(dpPrefix+"VoucherKinder.LastSend",arrTrigger[arrTrigger.length-1][0]+" an: "+arrTrigger[arrTrigger.length-1][2] )
                          
                          
                          liv-in-sky 1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @saeft_2003 last edited by liv-in-sky

                            @saeft_2003
                            wie melde ich mich bei deinem bot an - zum test bzw du bei meinem

                            S 1 Reply Last reply Reply Quote 0
                            • S
                              saeft_2003 Most Active @liv-in-sky last edited by

                              @liv-in-sky

                              ich muss in telegram app nach deinen bot suchen der heißt xyz_bot dann starte ich diesen und werde nach einem passwort gefragt das du in der telegram instanz hinterlegt hast... schickst du mir dein passwort?

                              liv-in-sky 1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @saeft_2003 last edited by

                                @saeft_2003

                                habe ein neues script im ersten post und eine beschreibung wie du die notiz gestalten mußt im unifiscript

                                in der notiz steht das aktivierungswort (www - kann geändert werden) und anschliessend ein bindestrich und der username

                                bevor du das neue script startest lösche die datenpunkte unter VoucherKinder
                                viel spaß beim testen

                                S 2 Replies Last reply Reply Quote 1
                                • S
                                  saeft_2003 Most Active @liv-in-sky last edited by

                                  @liv-in-sky

                                  Super vielen Dank werde ich heute Abend testen 😊👍

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    saeft_2003 Most Active @liv-in-sky last edited by

                                    @liv-in-sky

                                    Also... die Grundfunktion geht 👍 erstmal vielen Dank hierfür 🙂

                                    Aber wenn ich statt www in der voucher Notiz z.B. voucher wähle (so hatte ich erst) dann geht es nicht. Ich hatte natürlich var aktWort="www" angepasst auf var aktWort="voucher". Weißt du an was das liegen könnte?

                                    liv-in-sky 1 Reply Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @saeft_2003 last edited by

                                      @saeft_2003 ja - da habe ich im script etwas vergessen - vielleicht kan ich das morgen ausbessern - hauptsache es geht mit www - das ist schon mal was

                                      S 1 Reply Last reply Reply Quote 0
                                      • S
                                        saeft_2003 Most Active @liv-in-sky last edited by

                                        @liv-in-sky

                                        OK das wäre super

                                        liv-in-sky 1 Reply Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @saeft_2003 last edited by

                                          @saeft_2003 nur schnell gemacht - geht das

                                          const dpPrefix = "javascript."+ instance +".";
                                          const dpPrefixjava = "javascript.2.";
                                          const telegramInstanz="telegram.0"
                                          var aktWort="www"
                                          var mySchedule=" */20  * * * * *";
                                          
                                          
                                          // AB HIER NICHTS MEHR ÄNDERN
                                          
                                          
                                          var arrTrigger=[];
                                          var telegramAdresse;
                                          
                                          
                                          
                                          
                                          createState("VoucherKinder.ArrayAlt"  ,"yyy", { name: 'VoucherKinder',  type: 'string', read:  true,  write: true,});
                                          createState("VoucherKinder.LastSend"  , "noch nix gesendet",{ name: 'LastSend',  type: 'string', read:  true,  write: true,});
                                          
                                          
                                          var timeout = setTimeout(function () { 
                                          var arrTriggerAlt=getState(dpPrefix+"VoucherKinder.ArrayAlt").val.split(",");
                                          
                                          
                                          schedule(mySchedule,  function () {
                                           arrTrigger=[];
                                           
                                          // log("starte");
                                           $(dpPrefixjava+'WLANUnifi.Wifi_Vouchers-CODES.*.notiz').each(function(id, i) {         
                                                 var ddd=id.replace("notiz","erstellt")
                                                 var timeRechner=getState(ddd).val
                                                 var ida = id.split('.');
                                                 telegramAdresse=getState(id).val;// log (telegramAdresse)
                                                 var val0= id.replace("notiz",ida[4].toLowerCase())                                          
                                                 timeRechner=  timeRechner.replace(/(\d\d).(\d\d).(\d\d\d\d) (\d\d):(\d\d)/,"$3-$2-$1T$4:$5:00.000Z")
                                          
                                                 if (getState(id).val != "na")   {arrTrigger.push([getState(val0).val,Date.parse(timeRechner).toString(),telegramAdresse]) ;}
                                           
                                                 });
                                          
                                            arrTrigger.sort(function (alpha, beta) {
                                                       if (alpha[1] > beta[1])
                                                          return 1;
                                                       if (beta[1] > alpha[1])
                                                          return -1;
                                                       return 0;
                                                      });
                                          
                                          /*
                                            log ("neuesArray: "+arrTrigger.toString())
                                            log ("altesArray: "+arrTriggerAlt.toString())
                                            log(arrTrigger.length.toString() +" -- " +arrTriggerAlt.length.toString())
                                          */
                                             if (arrTrigger.length > arrTriggerAlt.length-1)  {
                                                    arrTriggerAlt=["xxx"];
                                                    for (var i=0;i<arrTrigger.length;i++) {
                                                         arrTriggerAlt.push(arrTrigger[i]);
                                                         setState(dpPrefix+"VoucherKinder.ArrayAlt",arrTriggerAlt.toString());
                                                         }
                                                 
                                                  // log("DER NEUE VOUCHER: "+arrTrigger[arrTrigger.length-1][0])
                                                      if (arrTrigger[arrTrigger.length-1][2].includes(aktWort))   {
                                                                         //log("username: "+arrTrigger[arrTrigger.length-1][2].replace(/www-(.+) \d+.+/,"$1"));
                                                                         log("Versende Voucher an: "+arrTrigger[arrTrigger.length-1][2].replace(/.+-(.+) \d+.+/,"$1") +" mit Nachricht: "+
                                                                              arrTrigger[arrTrigger.length-1][2].replace(/.+-.+ (\d+.+)/,"$1")+": "+arrTrigger[arrTrigger.length-1][0]);
                                                                  sendTo(telegramInstanz, {
                                                                                           user: arrTrigger[arrTrigger.length-1][2].replace(/.+-(.+) \d+.+/,"$1"),
                                                                                           text: "Dein neues Voucher für "+arrTrigger[arrTrigger.length-1][2].replace(/.+-.+ (\d+.+)/,"$1")+": "+arrTrigger[arrTrigger.length-1][0],
                                                                                           type: 'text'
                                                                                            });
                                                                  setState(dpPrefix+"VoucherKinder.LastSend",arrTrigger[arrTrigger.length-1][0]+" an: "+arrTrigger[arrTrigger.length-1][2] )
                                                          }
                                                 } else {
                                                      arrTriggerAlt=["na"];
                                                     for (var i=0;i<arrTrigger.length;i++) {
                                                         arrTriggerAlt.push(arrTrigger[i])
                                                         setState(dpPrefix+"VoucherKinder.ArrayAlt",arrTriggerAlt.toString())}
                                          
                                                 }
                                          
                                          });
                                          }, 2000);
                                          
                                          
                                          
                                          

                                          S 1 Reply Last reply Reply Quote 0
                                          • S
                                            saeft_2003 Most Active @liv-in-sky last edited by

                                            @liv-in-sky

                                            Jo jetzt passts 😊

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            635
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript template
                                            2
                                            28
                                            1213
                                            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