Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Zugangsgeschützte API-Schnittstelle auslesen mit Blockly

    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

    Zugangsgeschützte API-Schnittstelle auslesen mit Blockly

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

      @oliverio sagte in Zugangsgeschützte API-Schnittstelle auslesen mit Blockly:

      leider ist die doku https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httppost auch interpretationswürdig

      Lass mich gerne wissen was dir fehlt oder erstelle einen PR

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

        @haus-automatisierung

        zumindest mal die Erwähnung der möglichen Parameter

        httpGet(url[, config])
        httpPost(url[, data[, config]])

        und ggfs. einen Verweis auf die Axios Dokumentation., was das Config-Objekt alles kann

        In der Dokumentation sehe ich nur einen Aufruf.
        Den ersten Parameter mit url können die meisten noch erkennen,
        das der 2.Parameter ein optinaler Datenblock ist oder was es für Config-Möglichkeiten gibt, ist für die meisten hier wahre Magie.

        ohne die Referenz auf Axios können viele, die das nicht wissen, im Internet nicht nach Alternativ-Beispiele suchen und sind dann unbedingt hier aufs Forum angewiesen.

        Ich kann da gern einen PR machen
        https://github.com/ioBroker/ioBroker.javascript/pull/1637

        oweitman created this issue in ioBroker/ioBroker.javascript

        closed improve documentation for httpget/httppost #1637

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

          @oliverio sagte in Zugangsgeschützte API-Schnittstelle auslesen mit Blockly:

          zumindest mal die Erwähnung der möglichen Parameter

          Das geben doch alles die Typings vor. Bisher werden daher in keiner Funktion alle Parameter genau in der Doku erklärt.

          https://github.com/ioBroker/ioBroker.javascript/blob/bdfc9031a32b4f7c7b08203a389e968961aa73cb/lib/javascript.d.ts#L1330-L1340

          Screenshot 2024-07-12 at 19.33.21.png

          @oliverio sagte in Zugangsgeschützte API-Schnittstelle auslesen mit Blockly:

          und ggfs. einen Verweis auf die Axios Dokumentation., was das Config-Objekt alles kann

          Da findet intern ein Mapping statt. Ziel ist es, unabhängig von einer Bibliothek zu sein. Daher ist die Referenz auf axios falsch. Es wird nicht alles 1:1 an axios weitergegeben. Um in Zukunft die Lib austauschen zu können und nicht wieder in die Problematik (wie bei request) zu laufen.

          OliverIO 1 Reply Last reply Reply Quote 0
          • S
            schnipsel71 @TT-Tom last edited by

            @tt-tom Ich bekomme 2 Sekunden nach Start des Programms nur das hier:

            javascript.0 908	2024-07-13 01:10:42.983	error	script.js.common.Hycube_neu: timeout of 2000ms exceeded
            
            OliverIO T 2 Replies Last reply Reply Quote 0
            • OliverIO
              OliverIO @haus-automatisierung last edited by

              @haus-automatisierung

              Schnipsel hat keine Ahnung von typings
              Und ich hab es trocken ohne live ein Script zu erstellen.

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

                @schnipsel71

                Dann hat das nach 2 Sekunden das Gerät nicht reagiert. Steht da die richtige IP Adresse drin ?

                S 1 Reply Last reply Reply Quote 0
                • T
                  TT-Tom @schnipsel71 last edited by

                  @schnipsel71 wenn die url stimmt dann setze den timeout einfach mal höher 3000 oder mehr.

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

                    @oliverio Ich habe einen Unterordner "HyWebNeu" und die vier Variablen darin manuell eingerichtet, dein Code so abgeändert:

                        setState('0_userdata.0.HyWebNeu.Batterie', BatteryPower);
                        setState('0_userdata.0.HyWebNeu.Grid', GridPower);
                        setState('0_userdata.0.HyWebNeu.Hausverbrauch', HausPower);
                        setState('0_userdata.0.HyWebNeu.Solar', solar);
                    

                    Aber es erscheint dennoch alle fünf Sekunden diese Fehlermeldung:

                    javascript.0 908	2024-07-13 01:27:34.284	info	script.js.common.HycubeOliverIO: An error occurred:
                    
                    T 1 Reply Last reply Reply Quote 0
                    • T
                      TT-Tom @schnipsel71 last edited by

                      @schnipsel71 sind das alle Meldungen die du bekommst??

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

                        @oliverio Ja, die ist richtig.

                        1 Reply Last reply Reply Quote 0
                        • S
                          schnipsel71 @TT-Tom last edited by

                          @tt-tom Hab' ich gemacht. Die gleiche Fehlermeldung kommt aber wieder nach 2 Sekunden.

                          T 1 Reply Last reply Reply Quote 0
                          • S
                            schnipsel71 @TT-Tom last edited by

                            @tt-tom Ja, leider.

                            1 Reply Last reply Reply Quote 0
                            • T
                              TT-Tom @schnipsel71 last edited by

                              @schnipsel71 wenn du timeout auf 3000 setzt kommt nach zwei Sekunden die Fehlermeldung. Kann ich nicht nachvollziehen. Zeige mal das Script bitte.

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                schnipsel71 @TT-Tom last edited by

                                @tt-tom

                                httpPost(
                                    'http://ip/auth/',
                                    {
                                        timeout: 3000,
                                        basicAuth: {
                                            user: 'hycube',
                                            password: 'hycube',
                                        },
                                    },
                                    (error, response) => {
                                        if (!error) {
                                            console.log(response.statusCode);
                                            console.log(response.data);
                                            console.log(response.headers);
                                        } else {
                                            console.error(error);
                                        }
                                    }
                                )
                                

                                und hier das Log:

                                javascript.0	02:39:28.715	info	Start JavaScript script.js.common.Hycube_neu (Javascript/js)
                                javascript.0	02:39:28.727	info	script.js.common.Hycube_neu: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                javascript.0	02:39:30.730	error	script.js.common.Hycube_neu: timeout of 2000ms exceeded
                                
                                T 1 Reply Last reply Reply Quote 0
                                • M
                                  MCU last edited by

                                  @schnipsel71 Im Beispiel vom javascript steht die Authentifizierung an 3. Stelle.
                                  https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httppost

                                  httpPost(
                                      'http://jsonplaceholder.typicode.com/posts',
                                      {
                                          title: 'foo',
                                          body: 'bar',
                                          userId: 1
                                      },
                                      {
                                          timeout: 2000,
                                          basicAuth: {
                                              user: 'admin',
                                              password: 'dg2LdALNznHFNo'
                                          },
                                          headers: {
                                              'Cookie': 'PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1'
                                          }
                                      },
                                      (error, response) => {
                                          if (!error) {
                                              console.log(response.statusCode);
                                              console.log(response.data);
                                              console.log(response.headers);
                                          } else {
                                              console.error(error);
                                          }
                                      }
                                  );
                                  
                                  1 Reply Last reply Reply Quote 1
                                  • T
                                    TT-Tom @schnipsel71 last edited by TT-Tom

                                    @schnipsel71 nimm mal bitte httpGet statt httpPost.
                                    Du möchtest ja Daten abrufen und nicht senden.

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

                                      @schnipsel71 sagte in Zugangsgeschützte API-Schnittstelle auslesen mit Blockly:

                                      javascript.0	02:39:28.715	info	Start JavaScript script.js.common.Hycube_neu (Javascript/js)
                                      javascript.0	02:39:28.727	info	script.js.common.Hycube_neu: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                      javascript.0	02:39:30.730	error	script.js.common.Hycube_neu: timeout of 2000ms exceeded
                                      

                                      also bei timeout ist das gerät unter der angegebenen adresse nicht erreichbar, also du hast da eine falsche ip eingetragen

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

                                        @schnipsel71

                                        Hast du da einen web zugriff? Mit Oberfläche? Muss man da was aktivieren?
                                        Und mit request hat es immer getan?
                                        Evtl beim Hersteller anfragen? Evtl ist die Anleitung für ein anderes Modell
                                        Was passiert wenn du die IP im Browser eintippst?

                                        Im obigen Ausschnitt steht die adresse
                                        http://ip/auth/

                                        IP hast du ja hoffentlich durch die richtige IP ersetzt

                                        Dann wäre ich mit Hilfe erst Mal fertig, da das Gerät nicht erreichbar ist, kommt das Skript ja erst gar nicht richtig weiter.

                                        S 1 Reply Last reply Reply Quote 1
                                        • S
                                          schnipsel71 @TT-Tom last edited by schnipsel71

                                          @tt-tom Ja, nachdem ich httpPost durch httpGet ersetzt habe, jetzt kommt zumindest nach 3 Sekunden die Meldung:

                                          javascript.0	16:19:13.539	info	Start JavaScript script.js.common.Hycube_neu (Javascript/js)
                                          javascript.0	16:19:13.551	info	script.js.common.Hycube_neu: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                                          javascript.0	16:19:16.554	error	script.js.common.Hycube_neu: timeout of 3000ms exceeded
                                          

                                          Aber weiteres bekomme ich nicht. Was jetzt?

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

                                            @oliverio Mit dem alten Beispielscript und dem Request-Befehl funktioniert es seit mindestens zwei Jahren, aber eben seit ca. 2 Monaten nur noch mit folgendem (zweifachen) Warnhinweis im Log alle fünf Sekunden:

                                            javascript.0
                                            241772	2024-07-14 16:26:49.736	warn	script.js.Steuerung.Hycube: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                                            javascript.0
                                            241772	2024-07-14 16:26:49.812	warn	script.js.Steuerung.Hycube: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                                            

                                            Natürlich ersetze ich hier im Forum die tatsächliche, lokale IP des Hycube-Gerätes durch "ip".

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            368
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            77
                                            3769
                                            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