Http Request in PHP den Status verschiedener Shellys auslesen und anzeigen

  • Guten Tag die Damen und Herren,

    Per http-Request kann man relative einfach einen String zurückbekommen der sich per PHP auswerten lässt.

    Nun hab ich versucht das ganze mehrfach hinter einander auszuführen um mehrere Shellys nacheinander abzufragen.

    Resultat: ich erhalte immer nur den Wert des ersten oder zweiten Shelly in der Liste. X/

    auch nach mehreren Versuchen (als array oder einzeln als include) erhalte ich immer das gleiche Ergebnis.

    hat jemand eine Idee was man besser machen könnte? würde gern den Status [on/off/error] auf einer PHP-Seite ausgeben.

    ich hänge euch das PHP-Script einmal als .txt an. status.txt

  • Du fügst dem Array $shelly_return mit jedem foreach-Durchlauf durch "[]" ein weiteres Element hinzu, fragst aber immer nur das erste Element durch "[0]" ab.

    Code
    $shelly_return [] = file_get_contents ( $url );
    
    $strg1 = substr ( $shelly_return [0], 8 );
    $strg2 = substr ( $shelly_return [0], 8, stripos ( $strg1, "," ) );

    Aus dem Script geht nicht hervor, warum $shelly_return überhaupt ein Array sein muss. Wenn du nicht mehr damit vor hast, würd' ich $shelly_return einfach nicht als Array definieren:

    Code
    $shelly_return = ""; // Shelly Antwort
    
    $shelly_return = file_get_contents ( $url );
    
    $strg1 = substr ( $shelly_return, 8 );
    $strg2 = substr ( $shelly_return, 8, stripos ( $strg1, "," ) );

    Wenn es denn ein Array sein soll, musst du auf das letzte Element zugreifen:

    Code
    $strg1 = substr ( $shelly_return [count ( $shelly_return ) - 1], 8 );
    $strg2 = substr ( $shelly_return [count ( $shelly_return ) - 1], 8, stripos ( $strg1, "," ) );
  • Hier eine mal fix zusammen geschrieben:

    Durch die Abfrage per file_get_contents und der anschließenden Umwandlung in ein Array kann man damit viel besser arbeiten als aus einem JSON String die Sachen rauszuparsen die man braucht.

    Das Array für eine Shelly sieht dann so aus:

    Die Ausgabe sieht dann so aus:

    Code
    Shelly: Wohnzimmer Deckenlicht
    Status: AUS
    ------------------------------------------------
    Shelly: Wohnzimmer Stehlampe
    Status: AUS
    ------------------------------------------------

    Einmal editiert, zuletzt von der_robert (19. November 2020 um 12:14)