Webif mit aktuellem Status

  • Moin Moin
    Habe folgendes Prob.
    Bin ein Webif für meine Haussteuerung am machen und möchte den tatsächlichen ist Zustand zb. von einer geschalteten Lampe anzeigen.
    Die Beschriftung des Buttons habe ich mit JSON realisiert.


    Hier Light datei:
    Wohnzimmer einschalten|Kueche einschalten|Schlafzimmer ausschalten|Esszimmer einschalten|Nils einschalten|Robin einschalten|Tamara einschalten|Alex einschalten|Drucker einschalten|

    Im Div wird Wohnzimmer anschalten bzw Wohnzimmer ausschalten ausgegeben usw.

    Jetzt suche ich eine Möglichkeit Das Buttonbild auch dahingehend auszutauschen.
    Kann mir da einer helfen?
    Danke schon mal im Vorraus.

    Paul

    Was ich noch erwähnen sollte:
    Ich steuere die Lampen usw auch über eine Sprachsteuerung das heist der Staus der einzelnen Geräte ändert sich auch darüber. Es wird auch in der Light auch geändert und auf der Webseite auch gleich richtig aktualisiert.

    Einmal editiert, zuletzt von PIPI (19. Juni 2014 um 19:52)

  • Erzeuge das/die DIV(s) in der foreach Schleife.
    Dort kannst du dann mit 'nem if() die Grafik austauschen.

    Gruß Clonix

    Kommentare in Scripten/Sourcecodes machen nicht nur DIR das Leben leichter ;)

  • JSON ist lediglich ein Dateiformat. Du kannst etwas als JSON speichern, oder du speicherst es als XML oder als YML.
    Aber du kannst nichts "mit JSON" umsetzen. Du benutzt JavaScript und PHP.

  • Ich versteh nicht ganz Wo in Was du austauschen möchtest?

    Auch versteh ich nicht ganz wieso du für den Inhalt der Datei /var/daten/light ein foreach durchführst um den Inhalt zu zerlegen?
    Der Inhalt der Datei /var/daten/light ist doch:

    Code
    Wohnzimmer einschalten|Kueche einschalten|Schlafzimmer ausschalten|Esszimmer einschalten|Nils einschalten|Robin einschalten|Tamara einschalten|Alex einschalten|Drucker einschalten|

    Oder nicht?

    Das letzte | ist btw auch zu viel und verursacht dadurch ein leeres ArrayEntry in deinem $zerlegen - aber das nur nebenbei...

    Wenn du nun nur die eine Zeile in dem File in eine Variable schreibst und diese dann zerlegst, kannst du dir foreach($datei AS $ausgabe) sparen bzw stattdessen für $zerlegen ein foreach machen, dort dein div rein und das entsprechende bild setzen...
    Ein einfacher Test hierfür:[code=php]<?php
    $lights = file_get_contents("/tmp/light");
    $zerlegen = explode("|", $lights);
    var_dump($zerlegen);
    ?>[/php]
    Das überschüssige | am Ende des Inhalts der Datei könntest du dann auch wie folgt wegschneiden (wenn es für dich zu viel Aufwand ist es gleich richtig in die Datei einzutragen)
    [code=php]$lights = file_get_contents("/tmp/light");
    $lights = substr_replace($lights, "", strrpos($lights, "|"));[/php]


    Das mit dem Bild ist meines Erachtens eine Sache bezüglich HTML bzw CSS

  • Ist das Problem noch akut?

    &quot;eine Idee&quot;


    [code=php]
    <?php
    // WICHTIG Anzahl der Grafiken MUSS mit der Anzahl der Eintraege (und diese immer in gleicher Reihenfolge) in lights uebereinstimmen

    // Datenfeld mit Grafiken festlegen
    $arr_pics = array();
    $arr_pics[0]="./pic0.jpg"; // Wohnzimmer
    $arr_pics[1]="./pic1.jpg"; // Kueche
    $arr_pics[2]="./pic2.jpg"; // Schlafzimmer
    $arr_pics[3]="./pic3.jpg"; // Esszimmer
    // usw

    // Datei verarbeiten
    // ... auslesen
    $file_lights = file_get_contents("./lights.txt");
    // ... letztes "|" entfernen
    $file_lights = substr_replace($file_lights, "", strrpos($file_lights, "|"));
    // ... in einzelne Elemente zerlegen
    $arr_lightsContent = explode("|", $file_lights);

    // DIV vorbereiten
    // ... alles was variabel ist in "x(BEZEICHNUNG]x" einpacken
    // ... wird in der folgenden Schleife ausgetauscht
    // ToDo: on_click Event-Handling auf´s Bild legen
    $str_preparedDiv = '<div id="xIDx" style="font-family: Indie Flower; font-weight: bold; font-size: 15pt;"><br>xTEXTx<br><img src="xBILDx"></div>';

    // Div´s in einem Rutsch erzeugen
    for ($i_cnt = 0; $i_cnt < count($arr_lightsContent); $i_cnt++)
    {
    // vorbereitetes DIV mit aktuellen Daten fuellen
    $str_actualDiv = str_replace("xIDx", $i_cnt, $str_preparedDiv);
    $str_actualDiv = str_replace("xTEXTx", $arr_lightsContent[$i_cnt], $str_actualDiv);
    $str_actualDiv = str_replace("xBILDx", $arr_pics[$i_cnt], $str_actualDiv);

    // Div ausgeben
    echo $str_actualDiv;
    }
    ?>
    [/php]

    Probleme deutlicher beschreiben ... dann fällt´s helfen leichter :D

    Gruß Clonix

    Kommentare in Scripten/Sourcecodes machen nicht nur DIR das Leben leichter ;)

    Einmal editiert, zuletzt von Clonix (22. Juni 2014 um 09:34)


  • Moin Moin,
    Bin da Anfänger mit Javascript und JSON.
    Kannste mir da mal was schreiben wie ich das mache.

    Gruß Paul

    davon brauchst nu nichts ... reines PHP reicht. UND das ist auch gut so, falls Du mal an nem "fremden" Rechner sitzt, bei dem JS deaktiviert ist.

    Gruß Clonix

    ps: schade das überhaupt keine Rückmeldung kommt

    Kommentare in Scripten/Sourcecodes machen nicht nur DIR das Leben leichter ;)

    Einmal editiert, zuletzt von Clonix (22. Juni 2014 um 23:05)

  • Clonix, du hast recht, PHP reicht, aber deaktiviertes JS wird nicht mehr unterstützt. Das Web2.0 funktioniert ohne JS nicht. Und da (gerundet) jeder auf Facebook ist hat auch jeder Javascript und das ist kein Problem mehr.
    Ich war auch lange der Ansicht, dass Webseiten auch ohne JS laufen müssen, das darf nur Zusatz sein, aber die Zeiten sind vorbei.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!