Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Update v8.3.1 fehlerhafte Skripte

    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

    Update v8.3.1 fehlerhafte Skripte

    This topic has been deleted. Only users with topic management privileges can see it.
    • haus-automatisierung
      haus-automatisierung Developer Most Active @PeterPan last edited by haus-automatisierung

      @peterpan

      1. https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httpget
      2. https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/upgrade-guide.md

      Und:

      const fs = require('node:fs');
      
      const user = 'bla'; // Username
      const pass = '!!!'; // Password
      const ip = 'xxx';   // IP-Adresse eures Synology-NAS
      const port = 1234;  // default Port der Surveillance Station
      
      const baseUrlApi = `http://${ip}:${port}/webapi/`;
      const defaultTimeout = 3000;
      
      const urlLogin = `${baseUrlApi}auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=${user}&passwd=${pass}&session=SurveillanceStation&format=sid`;
      
      // ÖFFNUNG DER HAUSTÜR
      on({ id: path_link + 'Eingang.Kontakt_Haustür.State', val: 1, change: 'ne' }, (obj) => {
          bewegung(1, 'Mobil');
      });
      
      function bewegung (cameraID, cameraIDtext) {
          // EINLOGGEN IN DIE SYNOLOGY SURVEILLANCESTATION
          httpGet(urlLogin, { timeout: defaultTimeout }, (err, response) => {
              if (!err) {
                  const mySid = JSON.parse(response.data).data.sid;
      
                  // ========================
                  // 2.3.4.5 GetSnapshot method
                  const urlGetSnapshot = `${baseUrlApi}entry.cgi?version=9&id=${cameraID}&api=SYNO.SurveillanceStation.Camera&method=GetSnapshot&profileType=1&_sid=${mySid}`;
                  //console.log('urlGetSnapshot: ' + urlGetSnapshot);
                  // ========================
                  //2.3.34.8 TakeSnapshot method
                  const urlSnapshot = `${baseUrlApi}entry.cgi?api=SYNO.SurveillanceStation.SnapShot&method=TakeSnapshot&version=1&camId=${cameraID}&blSave=true&dsId=0&_sid=${mySid}`;
                  // ========================
                  // 2.3.10.1 (External) Record method => OK
                  const urlRecordStart = `${baseUrlApi}entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId=${cameraID}&action=start&_sid=${mySid}`;
                  const urlRecordStop = `${baseUrlApi}entry.cgi?api=SYNO.SurveillanceStation.ExternalRecording&method=Record&version=1&cameraId=${cameraID}&action=stop&_sid=${mySid}`;
                  // ========================
                  const urlLogout = `${baseUrlApi}auth.cgi?api=SYNO.API.Auth&method=Logout&version=2&session=SurveillanceStation&_sid=${mySid}`;
      
                  httpGet(urlGetSnapshot, { timeout: defaultTimeout }, { responseType: 'arraybuffer' }, (err, response) => {
                      const filename = `/home/iobroker/${formatDate(new Date(), 'YYYY.MM.DD_hh:mm:ss')}_Snap_Reolink_${cameraIDtext}.jpg`;
      
                      fs.writeFile(filename, response.data, 'binary', (err) => {
                          // Speichert Snapshot auch auf der Synology
                          httpGet(urlSnapshot, { timeout: defaultTimeout }, (err, response) => {});
                          httpGet(urlRecordStart, { timeout: defaultTimeout }, (err, response) => {});
      
                          setTimeout(() => {
                              httpGet(urlRecordStop, { timeout: defaultTimeout }, (err, response) => {
                                  httpGet(urlLogout, { timeout: defaultTimeout }, (err, response) => {});
                              });
                          }, 6000);
                      });
                  });
              } else {
                  console.error(err);
              }
          });
      }
      

      EDIT: Anführungszeichen in Urls entfernt (was machen die da?) + Error-Handling

      P 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @PeterPan last edited by Homoran

        @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

        zumal ich mit dem Folgenden ebenfalls nicht so recht viel anfangen kann:

        das ist doch ganz deutlich, oder etwa nicht?

        @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

        javascript.0 2024-06-09 17:58:22.716 warn script.js.Homedingskacke.Sicherheit_Alarmanlage: request package is deprecated - please use httpGet (or a stable lib like axios) instead!

        Du verwendest eine abgekündigte Version und sollst sie ersetzen

        P 1 Reply Last reply Reply Quote 0
        • P
          PeterPan @haus-automatisierung last edited by

          @haus-automatisierung Vielen Dank für die Antwort und die Bearbeitung des Skriptes, was mir an den Stellen mit "request" dann in der Übersetzung geholfen hat. Mit der Änderung der Variablen würde ich mich dann später beschäftigen ... Ich habe versucht, die geänderte Schreibweise zu übernehmen, bekomme jetzt eine Fehlermeldung, dass kein Inhalt drin ist.

          Könnte es daranliegen, dass die NAS aktuell keine Antwort durch ihre Überlastung geben kann?

          Zuvor hatte ich "console.log" hinter der Variablen stehen, da erhielt ich

          	2024-06-09 20:28:46.008	error	script.js.Homedingskacke.Fehler: timeout of 2000ms exceeded
          
          javascript.0
          2024-06-09 20:28:46.008	info	script.js.Homedingskacke.Fehler: null
          
          
          

          Codeauszug:

              httpGet(url_login, function(err, response){
                  console.log('data: ', response.data);
                  console.error('Error: ',err);
                  var my_sid = JSON.parse(response.data).data.sid;
          ...
          

          Fehlermeldung dazu:

          avascript.0
          2024-06-09 20:32:06.530	error	at processTimers (node:internal/timers:512:7)
          
          javascript.0
          2024-06-09 20:32:06.529	error	at listOnTimeout (node:internal/timers:538:9)
          
          javascript.0
          2024-06-09 20:32:06.529	error	at runNextTicks (node:internal/process/task_queues:60:5)
          
          javascript.0
          2024-06-09 20:32:06.529	error	at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1217:38
          
          javascript.0
          2024-06-09 20:32:06.529	error	at Object.<anonymous> (script.js.Homedingskacke.Fehler:243:47)
          
          javascript.0
          2024-06-09 20:32:06.528	error	Error in callback: TypeError: Cannot read properties of null (reading 'data')
          
          javascript.0
          2024-06-09 20:32:06.526	error	script.js.Homedingskacke.Fehler: Error:
          
          javascript.0
          2024-06-09 20:32:06.525	info	script.js.Homedingskacke.Fehler: data:
          

          Viele Grüße!

          Homoran haus-automatisierung 2 Replies Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators @PeterPan last edited by Homoran

            @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

            rror at Object.<anonymous> (script.js.Homedingskacke.Fehler:243:47)

            und was steht an dieser Stelle?

            Möglicherweise ist der Timeout zu kurz und dies ein Folgefehler weil kein data.response kommt

            P 1 Reply Last reply Reply Quote 0
            • P
              PeterPan @Homoran last edited by

              @homoran Ja, für viele sicher offensichtlich und auch ich hatte gefunden, dass man request gegen httpget tauschen muss. Aber für mich ist es schon mit Unsicherheit behaftet, dann dies auch aus request.get zu übertragen. Ich gebe dir recht, aber als jemand, der sich aus Skript-Schnipsel aus dem Forum ernährt, ist vieles erst einmal nicht so offensichtlich. 🙄

              1 Reply Last reply Reply Quote 0
              • P
                PeterPan @Homoran last edited by

                @homoran Es ist dann die Zeile nach der Variablen my_sid:

                        var url_GetSnapshot = iplong + 'entry.cgi?version=9&id='+cameraID+'&api="SYNO.SurveillanceStation.Camera"&method="GetSnapshot"&profileType=1&_sid=' + my_sid;
                
                
                Homoran 1 Reply Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @PeterPan last edited by

                  @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

                  Könnte es daranliegen, dass die NAS aktuell keine Antwort durch ihre Überlastung geben kann?

                  Du kannst den Timeout auch mitgeben und erhöhen. Siehe Link oben zur Doku.

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @PeterPan last edited by

                    @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

                    Es ist dann die Zeile

                    und wo ist Position 47? (incl. Einrückung)
                    ist am Handy schwer abzuzählen.

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      PeterPan @Homoran last edited by

                      @homoran sagte in Update v8.3.1 fehlerhafte Skripte:

                      @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

                      Es ist dann die Zeile

                      und wo ist Position 47? (incl. Einrückung)
                      ist am Handy schwer abzuzählen.

                      Hi, tut mir leid, ich bin im Skript verrutscht, die ist die richtige Zeile:

                              var my_sid = JSON.parse(response.data).data.sid;
                      

                      Position ist das zweite "data".

                      Homoran 1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @PeterPan last edited by

                        @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

                        Position ist das zweite "data".

                        dann wird

                        @homoran sagte in Update v8.3.1 fehlerhafte Skripte:

                        dies ein Folgefehler weil kein response.data kommt

                        sein.

                        P 1 Reply Last reply Reply Quote 0
                        • P
                          PeterPan @Homoran last edited by

                          @homoran @haus-automatisierung

                          @homoran sagte in Update v8.3.1 fehlerhafte Skripte:

                          dies ein Folgefehler weil kein response.data kommt

                          sein.

                          Ich habe jetzt wieder zu einer NAS Kontakt und das timeout hoch gesetzt. Es ist klar das "response.data" leer.

                          javascript.0
                          2024-06-09 21:49:08.474	info	script.js.Homedingskacke.Fehler: mysid:
                          
                          javascript.0
                          2024-06-09 21:49:08.473	error	script.js.Homedingskacke.Fehler: Error:
                          
                          javascript.0
                          2024-06-09 21:49:08.470	info	script.js.Homedingskacke.Fehler: data:
                          
                          

                          Ich versuche mich morgen und vermutlich die Tage mit Ersetzung der Variablen.

                          Ganz lieben Dank für eure Unterstützung!

                          Viele Grüße

                          haus-automatisierung 1 Reply Last reply Reply Quote 0
                          • haus-automatisierung
                            haus-automatisierung Developer Most Active @PeterPan last edited by

                            @peterpan Hab das Script oben nochmal angepasst. Waren teilweise irgendwelche Anführungszeichen um die GET-Parameter (warum das? und warum nur bei manchen?).

                            P 1 Reply Last reply Reply Quote 0
                            • P
                              PeterPan @haus-automatisierung last edited by

                              @haus-automatisierung sagte in Update v8.3.1 fehlerhafte Skripte:

                              @peterpan Hab das Script oben nochmal angepasst. Waren teilweise irgendwelche Anführungszeichen um die GET-Parameter (warum das? und warum nur bei manchen?).

                              Besten Dank, schaue ich mir in Ruhe an, da brauche ich etwas mehr Zeit für. Bezüglich der Anführungszeichen sind die Skripte ein wenig historisch gewachsen (und nicht von mir nachgezogen).

                              Viele Grüße

                              P 1 Reply Last reply Reply Quote 0
                              • P
                                PeterPan @PeterPan last edited by

                                @homoran @haus-automatisierung

                                Ich wollte jetzt doch auch nach längerer Zeit ein kurzes Feedback geben.

                                Es lag am timeout, welches ich jetzt noch etwas höher gestellt habe, ich hatte zuvor das Script auf das Minimum reduziert und dann mit der verlinkten Anleitung und mit eurer Skriptbearbeitung alles wieder ans Laufen bekommen. Ebenso habe ich das Error-Handling eingefügt und die Anführungszeichen sind nicht mehr da :). Herzlichen Dank dafür!!

                                VG

                                M 1 Reply Last reply Reply Quote 0
                                • M
                                  MrLee @PeterPan last edited by

                                  @peterpan

                                  Moin!

                                  Geht bei Dir die //2.3.34.8 TakeSnapshot method noch?
                                  Habe am Wochenende DSM auf 7.2.2 upgedatetd und in diesem Zuge wurde auch die SurvillanceStation upgedated...
                                  sietdem geht obige Funktion bei mir nicht mehr...

                                  • sid holen geht
                                  • Snapshot anzeigen geht

                                  Nur einen Snapshot speichern und die Nummer zurückzubekommen geht nicht mehr...

                                  bis denne
                                  Mr.Lee

                                  P 1 Reply Last reply Reply Quote 0
                                  • P
                                    PeterPan @MrLee last edited by

                                    @mrlee

                                    Hi Mr.Lee,

                                    ich bin auch auf DMS 7.2.2. Ich hole mir nach Einloggen an der Surveillance Station den Snapshot (Abschnitt 2.3.4.5) und speichere ihn im home-Verzeichnis des iobrokers, damit ich mit pushover dieses Bild mit einer Nachricht aufs Handy bekomme. Weiterhin speichere ein kleinen Film auf der NAS (Abschnitt 2.3.10.1) als "Backup". Allerdings finde ich auch kein Bild nach Abschnitt 2.3.34.8, also TakeSnapshot.

                                    Muss ich mir anschauen - falls du eine Lösung finden solltest, würd ich mich über eine Info freuen.

                                    VG peterpan

                                    P 1 Reply Last reply Reply Quote 0
                                    • P
                                      PeterPan @PeterPan last edited by

                                      @mrlee
                                      Hi Mr.Lee,

                                      const url_Snapshot = `${iplong}entry.cgi?camId=${cameraID}&version=1&blSave=true&api=SYNO.SurveillanceStation.SnapShot&dsId=0&method=TakeSnapshot&_sid=${my_sid}`;
                                      const url_Snapshot2 = `${iplong}SurveillanceStation/ThirdParty/SnapShot/Take/v1?camId=${cameraID}&_sid=${my_sid}`;
                                      
                                      

                                      Durch Austausch von url_Snapshot durch url_Snapshot2 funktioniert es bei mir wieder, dass im entsprechenden Suveillance-Verzeichnis ein Bild gespeichert wird. Es scheint, dass in der API-Beschreibung sämtliche Befehle nach dem neuem Muster umgeschrieben wurden, d.h., hier müssten diese auch nachgezogen werden.

                                      VG peterpan

                                      haus-automatisierung 1 Reply Last reply Reply Quote 0
                                      • haus-automatisierung
                                        haus-automatisierung Developer Most Active @PeterPan last edited by

                                        @peterpan sagte in Update v8.3.1 fehlerhafte Skripte:

                                        d.h., hier müssten diese auch nachgezogen werden.

                                        Gibt es dazu schon einen Issue auf GitHub?

                                        P 1 Reply Last reply Reply Quote 0
                                        • P
                                          PeterPan @haus-automatisierung last edited by

                                          @haus-automatisierung

                                          Hi, mit "Nachziehen" meinte ich eher Nachziehen in meinem ganz oben aufgeführten Skript bzw. in der Anpassung, bei der ihr mir im Juni geholfen hattet - im Fall, dass jemand es in Verwendung hat. Wenn ich allerdings irgendwo etwas dokumentieren kann/soll, mache ich das.

                                          haus-automatisierung 1 Reply Last reply Reply Quote 0
                                          • haus-automatisierung
                                            haus-automatisierung Developer Most Active @PeterPan last edited by

                                            @peterpan Achso, ich dachte dafür gibt es auch einen Adapter. Das Problem an diesen Scripts im Forum ist ja, dass davon schnell zig verschiedene Versionen (in teilweise sehr alten Threads) existieren, welche nicht aktuell gehalten werden und die Leute das nach wie vor kopieren und nutzen möchten.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            824
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            21
                                            965
                                            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