Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Array aus php script holen

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Array aus php script holen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
24 Beiträge 3 Kommentatoren 2.4k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    sveni_lee
    schrieb am zuletzt editiert von
    #10

    ich versuche immer noch mein php-script auf meinem Server aufzurufen…

    das php.Script liegt unter /opt/iobroker/server.php

    mein test js script:

    const request = require('request');
    request('http://192.168.1.142:8082/server.php', (err, res, body) => {
      if (err) { return console.log(err); }
      log(body.url);
      log(body.explanation);
    });
    

    wenn ich das js-script ausführe komm t im log:

    javascript.0	2018-05-28 12:09:28.167	info	script.js.common.Test: undefined
    javascript.0	2018-05-28 12:09:28.167	info	script.js.common.Test: undefined
    javascript.0	2018-05-28 12:09:28.159	info	script.js.common.Test: registered 0 subscriptions and 0 schedules
    javascript.0	2018-05-28 12:09:28.156	info	Start javascript script.js.common.Test
    javascript.0	2018-05-28 12:09:28.152	info	Stop script script.js.common.Tes
    

    versuche ich es mit https://192.168.1.142:8082/server.php kommt im log:

    javascript.0	2018-05-28 12:16:09.822	info	script.js.common.Test: Error: socket hang up
    javascript.0	2018-05-28 12:16:09.815	info	script.js.common.Test: registered 0 subscriptions and 0 schedules
    javascript.0	2018-05-28 12:16:09.812	info	Start javascript script.js.common.Test
    javascript.0	2018-05-28 12:16:09.807	info	Stop script script.js.common.Test
    

    kann mir mal jemand auf die Sprünge helfen?

    1 Antwort Letzte Antwort
    0
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #11

      Womit führst du das php-Skript denn aus? ioBroker bzw. der Web-Adapter kann das von Hause aus nicht.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • S Offline
        S Offline
        sveni_lee
        schrieb am zuletzt editiert von
        #12

        ich habe das in ein js script in iobroker gepackt…

        ich dachte das das php-script wie eine locale html behandelt wird...

        1 Antwort Letzte Antwort
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #13

          https://de.wikipedia.org/wiki/PHP#Funktionsweise

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • S Offline
            S Offline
            sveni_lee
            schrieb am zuletzt editiert von
            #14

            okay, verstehe… also eine directes aufrufen ist nicht möglich...

            ich habe ganz nebenbei noch einen Apache auf dem Server laufen...

            aber wie bringe ich mein script dazu den interpreter zu benutzen?

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #15

              Du musst das irgendwo im Apache-Verzeichnis ablegen. Eine kurze Google-Suche liefert:

              https://stackoverflow.com/questions/238 … u/38567352

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • D Offline
                D Offline
                dwm
                schrieb am zuletzt editiert von
                #16

                Hi,

                warum machst Du im PHP statt einem "print_r" kein

                print (json_encode($result));
                

                Dann würd das script nämlich JSON liefern, und man müsst sich auf der Javascript Seite mit Regex keinen Wolf parsen …

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  sveni_lee
                  schrieb am zuletzt editiert von
                  #17

                  die Umwandlung in json hatte ich schon eingebaut… danke

                  Aber wenn ich nun die seite im Browser aufrufe wird mir der code angezeigt aber nicht das Ergebenis.

                  ist das so richtig?

                  ![](</s><URL url=)https://i.imgur.com/YCrngon.jpg" />

                  1 Antwort Letzte Antwort
                  0
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #18

                    Dann führt Apache den PHP-Interpreter nicht aus. Wieder eine kurze Google-Suche und ich lande hier:

                    https://www.strassenprogrammierer.de/ph … p_612.html

                    Mal ehrlich, das bekommst du doch auch hin, oder?

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    1 Antwort Letzte Antwort
                    0
                    • S Offline
                      S Offline
                      sveni_lee
                      schrieb am zuletzt editiert von
                      #19

                      natürlich, Du hast föllig recht!

                      Allerdings quäle ich google permanent zu meinem Vorhaben. Ich habe den code auch nur mit hlfe von google

                      zusammen geschustert.

                      Leider hat sich auch bei ubuntu und Appache2 eine Menge geändert, so dass die Einstellungen nicht mehr

                      so einfach zu verstehen sind… zumindest für mich.

                      Nichz desto trotz habe ich zum mindest hinbekommen das nicht mehr der code angezeigt wird sondern nun

                      erscheint Array() im Browser... das bedeutet für mich ich bin einen Schritt weiter und werde jetzt mal google fragen

                      was ich noch falsch mache...

                      1 Antwort Letzte Antwort
                      0
                      • S Offline
                        S Offline
                        sveni_lee
                        schrieb am zuletzt editiert von
                        #20

                        es gab einiges was serverseitig noch umgestellt und eingerichtet werden musste. nun klappt es aber schon mal mit dem Array bzw. der json ausgabe im Browser…

                        Das bedeutet ich komme jetzt an den Punkt an dem ich die json von der "webseite" abrufen möchte.

                        Das sollte ja mit dem Request-Modul, welchen ja onboard sein sollte...

                        ich habe jetzt einiges gegoogelt und probiert aber ich bekomme immer eine Info:

                        javascript.0	2018-05-30 12:43:30.563	info	script.js.common.Test: undefined
                        javascript.0	2018-05-30 12:43:30.563	info	script.js.common.Test: undefined
                        javascript.0	2018-05-30 12:43:30.556	info	script.js.common.Test: registered 0 subscriptions and 0 schedules
                        
                        const request = require('request');
                        request('http://192.168.1.142/server.php', (err, res, body) => {
                          if (err) { return log(err); }
                          log(body.url);
                          log(body.explanation);
                        });
                        

                        das beispiel hatte ich aus der verlinkten Seite übernommen…

                        die "Website" gibt jett folgendes aus:

                        {"1973 - Ring Ring":"dir","1974 - Waterloo":"dir","1975 - Abba":"dir","1976 - Arrival":"dir","1977 - Abba The Album":"dir","1979 - Voulez Vous":"dir","1980 - Gracias Por La M\u00fasica":"dir","1980 - Super Trouper":"dir","1981 - The Visitors":"dir","1982 - The Singles - The first 10 Years":"dir","1986 - Abba Live":"dir","1992 - Abba Gold (Greatest Hits)":"dir","1993 - More Abba Gold (More Abba Hits)":"dir","1994 - Thank You For The Music":"dir","1999 - Mamma Mia (The Musical)":"dir","1999 - The Complete Single Collection 1":"dir","1999 - The Complete Singles Collection (CD1)":"dir","2000 - Waterloo Ultimate Collection":"dir","2001 - The Definitive Collection 1":"dir","2006 - Number Ones":"dir","2011 - Abba Collected":"dir","extrafanart":"dir","artist.nfo":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/artist.nfo","banner.jpg":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/banner.jpg","clearart.png":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/clearart.png","fanart.jpg":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/fanart.jpg","folder.jpg":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/folder.jpg","logo.png":"\/Datengrab_xbmc\/Musik\/Alben\/ABBA\/\/logo.png"}
                        

                        edit… hab jetzt mit viel tryandError hinbekommen...!!!

                        1 Antwort Letzte Antwort
                        0
                        • AlCalzoneA Offline
                          AlCalzoneA Offline
                          AlCalzone
                          Developer
                          schrieb am zuletzt editiert von
                          #21

                          Super dass es jetzt klappt. Setze bitte ein "[gelöst]" vor den Thementitel.

                          Und für andere, die hier möglicherweise drauf stoßen wäre es gut, wenn du deine Lösung noch posten könntest.

                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                          1 Antwort Letzte Antwort
                          0
                          • S Offline
                            S Offline
                            sveni_lee
                            schrieb am zuletzt editiert von
                            #22

                            naja gelöst ist das ganze noch nicht… eventuell muß ich die Überschrift ändern.

                            die Abfrage klappt jetzt so:

                            const request = require('request');
                            const idJSON = "javascript.0.DB_Abfrage.DB_json";
                            
                            request('http://192.168.1.142/server.php', (err, res, body) => {
                              if (err) { return log(err); }
                              log(body);
                              setState(idJSON, body);
                              var obj = JSON.parse(body, function (key, value) {
                                if (value == "dir" && key != "extrafanart") 
                                    log(key);
                            
                                });
                            });
                            
                            

                            allerdings würde ich grn in der json abfrage einen counter mitlaufen lassen so das ich die erhaltenen "key" auch einem state zu ordnen kann.

                            müsste dann wohl mit einer "for" schleife gemacht oder gibt es einen besseren Weg?

                            EDIT:

                            okay, mit counter funtioniert so:

                            const request = require('request');
                            const idJSON = "javascript.0.DB_Abfrage.DB_json";
                            
                            request('http://192.168.1.142/server.php', (err, res, body) => {
                              if (err) { return log(err); }
                              log(body);
                              setState(idJSON, body);
                              var i = 1;
                              var obj = JSON.parse(body, function (key, value) {
                                    if (value == "dir" && key !="extrafanart") {
                                    log(key);
                                    log(i);
                                    i=i+1;
                            
                                    }
                                });
                            });
                            
                            1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #23

                              Alternativ kannst du auch sowas machen, ist vermutlich eher das was du willst:

                              const parsed = JSON.parse(body);
                              for (const key of Object.keys(parsed)) {
                                  const value = parsed[key];
                                  // was mit den Einträgen machen. In key stehen nacheinander die Schlüssel deines Objekts, in value nacheinander die dazugehörigen Werte, wie "dir", etc...
                              }
                              
                              

                              Oder wenn du (wie es mir scheint), nur die Verzeichnisse außer "extrafanart" willst:

                              const parsed = JSON.parse(body);
                              const files = Object.keys(parsed)
                                  .filter(key => parsed[key] === "dir" && key !== "extrafanart") // Verzeichnisse filtern
                              ;
                              // Hier ist files jetzt ein String-Array mit Inhalt ["1973 - Ring Ring", "1974 - Waterloo", ...]
                              
                              

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              1 Antwort Letzte Antwort
                              0
                              • S Offline
                                S Offline
                                sveni_lee
                                schrieb am zuletzt editiert von
                                #24

                                das schau ich mir auf jedenfall mal an…

                                habe jetzt mal ein wenig gespielt...

                                ~~![](</s><URL url=)https://i.imgur.com/nCKLNwz.jpg" />

                                die states werden durch das script gefüllt… und wenn man auf den Ordner dückt wird der "Name" an einen state übergeben. dieser soll dann über das script an meine serve.php übergeben werden...

                                Der teil mit der Übergabe fehlt mir allerdings noch...~~

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                615

                                Online

                                32.5k

                                Benutzer

                                81.7k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe