Aide a la creation d'un script

Salut à tous ,
j’essaie de rapatrier des informations d’un json afin de les traiter.

{
  "state": {
    "on": true,
    "bri": 255,
    "transition": 7,
    "ps": -1,
    "pl": -1,
    "AudioReactive": {
      "on": true
    },
    "nl": {
      "on": false,
      "dur": 60,
      "mode": 1,
      "tbri": 0,
      "rem": 4294967295
    },
    "udpn": {
      "send": false,
      "recv": true,
      "sgrp": 1,
      "rgrp": 1
    },
    "lor": 0,
    "mainseg": 0,
    "seg": [
      {
        "id": 0,
        "start": 0,
        "stop": 45,
        "len": 45,
        "grp": 1,
        "spc": 0,
        "of": 0,
        "on": true,
        "frz": false,
        "bri": 255,
        "cct": 127,
        "set": 0,
        "col": [
          [
            255,
            0,
            0
          ],
          [
            0,
            0,
            0
          ],
          [
            0,
            0,
            0
          ]
        ],
        "fx": 141,
        "sx": 128,
        "ix": 128,
        "pal": 1,
        "c1": 128,
        "c2": 128,
        "c3": 16,
        "sel": true,
        "rev": false,
        "mi": false,
        "o1": false,
        "o2": false,
        "o3": false,
        "si": 0,
        "m12": 0
      }
    ]
  },
  "info": {
    "ver": "0.15.0-b2",
    "vid": 2404100,
    "cn": "Kōsen",
    "leds": {
      "count": 45,
      "pwr": 404,
      "fps": 43,
      "maxpwr": 850,
      "maxseg": 32,
      "bootps": 5,
      "seglc": [
        1
      ],
      "lc": 1,
      "rgbw": false,
      "wv": 0,
      "cct": 0
    },
    "str": false,
    "name": "Panneau1",
    "udpport": 21324,
    "simplifiedui": false,
    "live": false,
    "liveseg": -1,
    "lm": "",
    "lip": "",
    "ws": 1,
    "fxcount": 187,
    "palcount": 75,
    "cpalcount": 4,
    "maps": [
      {
        "id": 0
      }
    ],
    "wifi": {
      "bssid": "B8:EC:A3:F7:67:7F",
      "rssi": -45,
      "signal": 100,
      "channel": 1
    },
    "fs": {
      "u": 20,
      "t": 983,
      "pmt": 1713630066
    },
    "ndc": -1,
    "arch": "esp32",
    "core": "v3.3.6-16-gcc5440f6a2",
    "clock": 240,
    "flash": 4,
    "lwip": 0,
    "freeheap": 143848,
    "uptime": 8710,
    "time": "2024-4-20, 20:34:35",
    "u": {
      "AudioReactive": [
        "<button class=\"btn btn-xs\" onclick=\"requestJson({AudioReactive:{enabled:false}});\"><i class=\"icons on\">&#xe08f;</i></button>"
      ],
      "GEQ Input Level": [
        "<div class=\"slider\"><div class=\"sliderwrap il\"><input class=\"noslide\" onchange=\"requestJson({AudioReactive:{inputLevel:parseInt(this.value)}});\" oninput=\"updateTrail(this);\" max=255 min=0 type=\"range\" value=128 /><div class=\"sliderdisplay\"></div></div></div>"
      ],
      "Audio Source": [
        "I2S digital",
        " - peak  99%"
      ],
      "Sound Processing": [
        "running"
      ],
      "AGC Gain": [
        1.17,
        "x"
      ],
      "UDP Sound Sync": [
        "send mode",
        " v2"
      ]
    },
    "opt": 79,
    "brand": "WLED",
    "product": "FOSS",
    "mac": "08d1f90a6d7c",
    "ip": "192.168.0.190"
  },
  "effects": [
    "Solid",
    "Blink",
    "Breathe",
    "Wipe",
    "Wipe Random",
    "Random Colors",
    "Sweep",
    "Dynamic",
    "Colorloop",
    "Rainbow",
    "Scan",
    "Scan Dual",
    "Fade",
    "Theater",
    "Theater Rainbow",
    "Running",
    "Saw",
    "Twinkle",
    "Dissolve",
    "Dissolve Rnd",
    "Sparkle",
    "Sparkle Dark",
    "Sparkle+",
    "Strobe",
    "Strobe Rainbow",
    "Strobe Mega",
    "Blink Rainbow",
    "Android",
    "Chase",
    "Chase Random",
    "Chase Rainbow",
    "Chase Flash",
    "Chase Flash Rnd",
    "Rainbow Runner",
    "Colorful",
    "Traffic Light",
    "Sweep Random",
    "Chase 2",
    "Aurora",
    "Stream",
    "Scanner",
    "Lighthouse",
    "Fireworks",
    "Rain",
    "Tetrix",
    "Fire Flicker",
    "Gradient",
    "Loading",
    "Rolling Balls",
    "Fairy",
    "Two Dots",
    "Fairytwinkle",
    "Running Dual",
    "RSVD",
    "Chase 3",
    "Tri Wipe",
    "Tri Fade",
    "Lightning",
    "ICU",
    "Multi Comet",
    "Scanner Dual",
    "Stream 2",
    "Oscillate",
    "Pride 2015",
    "Juggle",
    "Palette",
    "Fire 2012",
    "Colorwaves",
    "Bpm",
    "Fill Noise",
    "Noise 1",
    "Noise 2",
    "Noise 3",
    "Noise 4",
    "Colortwinkles",
    "Lake",
    "Meteor",
    "Meteor Smooth",
    "Railway",
    "Ripple",
    "Twinklefox",
    "Twinklecat",
    "Halloween Eyes",
    "Solid Pattern",
    "Solid Pattern Tri",
    "Spots",
    "Spots Fade",
    "Glitter",
    "Candle",
    "Fireworks Starburst",
    "Fireworks 1D",
    "Bouncing Balls",
    "Sinelon",
    "Sinelon Dual",
    "Sinelon Rainbow",
    "Popcorn",
    "Drip",
    "Plasma",
    "Percent",
    "Ripple Rainbow",
    "Heartbeat",
    "Pacifica",
    "Candle Multi",
    "Solid Glitter",
    "Sunrise",
    "Phased",
    "Twinkleup",
    "Noise Pal",
    "Sine",
    "Phased Noise",
    "Flow",
    "Chunchun",
    "Dancing Shadows",
    "Washing Machine",
    "Rotozoomer",
    "Blends",
    "TV Simulator",
    "Dynamic Smooth",
    "Spaceships",
    "Crazy Bees",
    "Ghost Rider",
    "Blobs",
    "Scrolling Text",
    "Drift Rose",
    "Distortion Waves",
    "Soap",
    "Octopus",
    "Waving Cell",
    "Pixels",
    "Pixelwave",
    "Juggles",
    "Matripix",
    "Gravimeter",
    "Plasmoid",
    "Puddles",
    "Midnoise",
    "Noisemeter",
    "Freqwave",
    "Freqmatrix",
    "GEQ",
    "Waterfall",
    "Freqpixels",
    "RSVD",
    "Noisefire",
    "Puddlepeak",
    "Noisemove",
    "Noise2D",
    "Perlin Move",
    "Ripple Peak",
    "Firenoise",
    "Squared Swirl",
    "RSVD",
    "DNA",
    "Matrix",
    "Metaballs",
    "Freqmap",
    "Gravcenter",
    "Gravcentric",
    "Gravfreq",
    "DJ Light",
    "Funky Plank",
    "RSVD",
    "Pulser",
    "Blurz",
    "Drift",
    "Waverly",
    "Sun Radiation",
    "Colored Bursts",
    "Julia",
    "RSVD",
    "RSVD",
    "RSVD",
    "Game Of Life",
    "Tartan",
    "Polar Lights",
    "Swirl",
    "Lissajous",
    "Frizzles",
    "Plasma Ball",
    "Flow Stripe",
    "Hiphotic",
    "Sindots",
    "DNA Spiral",
    "Black Hole",
    "Wavesins",
    "Rocktaves",
    "Akemi"
  ],
  "palettes": [
    "Default",
    "* Random Cycle",
    "* Color 1",
    "* Colors 1&2",
    "* Color Gradient",
    "* Colors Only",
    "Party",
    "Cloud",
    "Lava",
    "Ocean",
    "Forest",
    "Rainbow",
    "Rainbow Bands",
    "Sunset",
    "Rivendell",
    "Breeze",
    "Red & Blue",
    "Yellowout",
    "Analogous",
    "Splash",
    "Pastel",
    "Sunset 2",
    "Beach",
    "Vintage",
    "Departure",
    "Landscape",
    "Beech",
    "Sherbet",
    "Hult",
    "Hult 64",
    "Drywet",
    "Jul",
    "Grintage",
    "Rewhi",
    "Tertiary",
    "Fire",
    "Icefire",
    "Cyane",
    "Light Pink",
    "Autumn",
    "Magenta",
    "Magred",
    "Yelmag",
    "Yelblu",
    "Orange & Teal",
    "Tiamat",
    "April Night",
    "Orangery",
    "C9",
    "Sakura",
    "Aurora",
    "Atlantica",
    "C9 2",
    "C9 New",
    "Temperature",
    "Aurora 2",
    "Retro Clown",
    "Candy",
    "Toxy Reaf",
    "Fairy Reaf",
    "Semi Blue",
    "Pink Candy",
    "Red Reaf",
    "Aqua Flash",
    "Yelblu Hot",
    "Lite Light",
    "Red Flash",
    "Blink Red",
    "Red Shift",
    "Red Tide",
    "Candy2"
  ]
}

Comme il y a beaucoup d’info dedans je mets plus d’une minutes à les traiter.
Je me suis dis pourquoi pas les rapatrier en local pour les traiter plus vite.
Merci ChatGPT il me donne un code qui fonctionne pour rapatrier.

// URL distante à partir de laquelle vous souhaitez récupérer les données JSON
$url = 'http://192.168.0.190/json';

// Chemin local où vous souhaitez enregistrer les données JSON
$cheminLocal = '/var/www/html/json_local/local.json';

// Récupération des données JSON depuis l'URL distante
$jsonData = file_get_contents($url);

// Vérification si les données ont été récupérées avec succès
if ($jsonData === false) {
    echo "Erreur lors de la récupération des données depuis l'URL.";
    exit;
}

// Écriture des données JSON dans un fichier local
$success = file_put_contents($cheminLocal, $jsonData);

// Vérification si les données ont été écrites avec succès dans le fichier local
if ($success === false) {
    echo "Erreur lors de l'écriture des données dans le fichier local.";
    exit;
}

echo "Les données ont été copiées avec succès depuis $url vers $cheminLocal.";

Pour la fin du script il y a des erreurs car les echo ne retourne rien je pense qu’il faut que je cherche du cote setlog.
Mais je mets plus d’une minute voir deux à rapatrier le fichier je trouve ca super long.
Auriez vous des idées pour améliorer mon script.
Merci de votre aide

Il faut que tu remplaces tous les écho par $scenario->setLog()

Pour le temps de 1 à 2 min … Aucune raison, ton json est ridicule en taille. Essaye peut-être de mettre des horodatafe pour voir ce qui prend du temps

Norbert

Bonjour,

C’est quel matériel que tu interroges derrière l’IP 192.168.0.190 ?

Est ce que ça répond tout de suite quand tu appelles ça depuis ton navigateur de pc ?

http://192.168.0.190/json

Salut Bison,
oui c’est instantané, c’est ce que je ne comprend pas.

J’interroge un esp32 avec wled dessus

Salut merci pour ton aide,
mais je mets ca où les horodates ?

En fait, tu mets juste des

 $scenario->setLog("blablabla") ;

Avant chacune des actions dans ton bloc code

Tu auras l’horodatage à la seconde du log du scénario

Norbert

Je mets plus d’une minute pour passer de l’un a l’autre.
Merci ngrataloup pour la solution,
Reste plus qu’a comprendre pourquoi…

Merci à tous la solution est ici

https://community.jeedom.com/t/file-get-contents-qui-prend-du-temps/107654

J’ai adapte mon scenario et maintenant c’est instantané.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.