Raspberry Pi 3+ als Schaltzentrale für mehrere ESP's

  • Hallo @ll

    ich habe zur Zeit mehrere ESP D1 Mini im Einsatz zu verschiedenen Zwecken.

    Eine als Wetterstation,

    eine zur Überwachung des Trockenlaufschutz für eine Wasserzisterne.

    und eine zum Schalten meiner Pumpe für den Gartenteich.

    Eine Anzeige für die Temperaturen meiner Heizung soll später auch noch dazu kommen.


    Ich habe mir auf dem Raspberry einer Webseite in HTML/PHP erstellt

    mit dem ich die Daten der einzelnen ESP's angezeigt bekomme bzw.

    schalten kann.

    Soweit klappt auch alles wunderbar.


    Im mom stete ich aber auf dem Schlauch was das Schalten meiner Pumpe/Relais angeht.


    Ich Schalte über ein einfachen Link auf meiner Index.html die Pumpe/Relais ein und aus.

    Dazu spreche ich über die IP-Adresse den dazugehörigen ESP an der dann das Relais schaltet und mir

    auf der Webseite anzeigt: Relais=on/off


    Mein Problem: Ich komme jetzt nicht mehr automatisch auf meine Index.html zurück

    sondern nur über den zurück Button vom Browser oder wenn ich die Index.html neu aufrufe.


    Wie kann ich das erreichen?


    Ich habe schon versucht vom ESP aus dann im Anschluß mit der Meldung Relais=on die IP-Adresse des

    Raspberry/index.html aufzurufen aber das hat leider nicht funktioniert.

  • Auf dem ESP eine Seite erstellen die schaltet und den aktuellen Zustand als Text zurueckgibt.


    Dann (auf dem Pi):


    Code
    $contents = file_get_contents("http://ESPIP/neuewebseite");

    Und den Text in die Webseite auf dem Pi einsetzen.

  • Auf dem ESP eine Seite erstellen die schaltet und den aktuellen Zustand als Text zurueckgibt.


    Dann (auf dem Pi):


    Code
    $contents = file_get_contents("http://ESPIP/neuewebseite");

    Und den Text in die Webseite auf dem Pi einsetzen.

    Vielen Dank Tell:

    Genau das ist mein Weg!


    Ich habe auf meiner HTML Seite ein Link zum ESP: <a href="http://192.168.xxx.xxx/on">Teichpumpe:<br>Ein</a>

    Sobald ich diesen Link anklicke wird über den ESP mein Relais geschaltet und es öffnet sich eine neue Seite im Browser mit dem Text: Relais on

    Soweit klappt das genau wie beschrieben.


    Jetzt bekomme ich allerdings nicht mehr automatisch zurück zu meiner Ausgangsseite (index.html)


    Wie kann ich das erreichen bzw. wie und wo baue ich den

    Code
    $contents = file_get_contents("http://ESPIP/neuewebseite");

    in meine html-Seite mit ein?




  • Der Tip von Tell war super.

    Ich will es so einfach wie möglich, es soll den Zweck erfüllen.

    Ich habe es jetzt so gemacht:

    PHP
    <?php
    $contents = file_get_contents("http://IP-ESP/on");
    header("Location:http://IP-Raspberry/index.html");
    exit;
    ?>

    Mit Ajax kenne ich mich nicht aus , das mag vielleicht die sauberste Lösung sein aber das hier reicht mir vollkommen.

    Vielen Dank !

  • Die Redirection ist gar nicht noetig, fpassthru( "index.html" ) ist besser. exit faellt dann auch weg.


    Eine andere Variante (das HTML ist haesslich und muss gesaeubert werden):


    Abgelegt als index.php, das ersetzt dann gleich das index.html.

  • Hallo,


    Quote

    Mit Ajax kenne ich mich nicht aus , das mag vielleicht die sauberste Lösung sein aber das hier reicht mir vollkommen.

    Also ich würde das als "suboptimal" aka umständlich bezeichnen. Via JS ist das simple: Button erstellen, an den Button ein Klick Event binden, das die URL (assynchron) im Hintergrund aufruft - fertig. Läuft clientseitig, keine überflüssigen Roundtrips über den Server, alles super.


    Quote

    Mit Ajax kenne ich mich nicht aus ,...

    Kann man ja lernen. Ewig auf dem gleichen Niveau hängen bleiben ist ja auch keine Lösung ;)


    Gruß, noisefloor

  • noisefloor: an den Button ein Klick Event binden, das die URL (assynchron) im Hintergrund aufruft - fertig.

    Noe. das wird von einem anstaendigen Browser blockiert wegen CORS.


    Also die Software auf dem ESP wieder aendern und testen...