Dynamische HTML Seite auf GEN2/3 Devices

Hinweis zur Nutzung von Skripten (für Nutzer)

Die Verwendung von Skripten erfolgt ausdrücklich auf eigene Gefahr. Weder Shelly noch die jeweiligen Autoren oder Entwickler der Skripte übernehmen irgendeine Form der Haftung für mögliche Schäden, Fehlfunktionen, Datenverluste oder anderweitige Beeinträchtigungen, die durch die Nutzung dieser Skripte entstehen könnten. Bitte stellen Sie vor dem Einsatz sicher, dass Sie den Quellcode verstehen und sich der möglichen Auswirkungen bewusst sind. Die Skripte werden ohne Gewähr bereitgestellt und unterliegen keiner regelmäßigen Wartung oder offiziellen Unterstützung.


Hinweis für Entwickler

Wenn Sie eigene Skripte bereitstellen, achten Sie bitte darauf, eine klare Beschreibung, eventuelle Einschränkungen und Sicherheitsaspekte zu dokumentieren. Beachten Sie zudem, dass Nutzer Ihre Skripte grundsätzlich auf eigenes Risiko verwenden. Eine Haftung für Schäden ist ausgeschlossen, sofern diese nicht vorsätzlich oder grob fahrlässig verursacht wurden oder gesetzlich anderweitig geregelt ist.

  • Es ist ja schon bekannt, dass man auf einem Gen2/3 Shelly kleinere HTML/Javascript/CSS Seiten zur Verfügung stellen kann.

    Das ist bisher nur statisch umgesetzt worden, das heißt, eine Website stellt eine Ansicht zur Verfügung, muss aber durch einen Reload der Seite aktualisiert werden.

    Ich habe jetzt mal beispielhaft an einer Uhr dargestellt, wie man das so gestalten kann, dass Werte ohne Reload (dynamisch) aktualisiert werden.

    Das Skript selbst hat jetzt keinen großen Nutzen, zeigt aber, wie man so etwas für eigene Skript-Projekte nutzen kann.

    Das Prinzip ist einfach. Der Shelly stellt erst einmal eine Website zur Verfügung. Das ist das statische Grundgerüst.

    In diesem Grundgerüst ist Javascript Code hinterlegt, der den Browser veranlasst, den dynamischen Teil sekündlich neu zu laden.

    Im Hintergrund, also durch das Shelly-Skript, wird dieser dynamische Inhalt manipuliert.

    Eine Uhr ist ja per se dynamisch. ;)

    Hier im Beispiel halt eine Uhr. Es können aber natürlich auch Messwerte, Zustände o.Ä. sein.

    Dieses Beispiel verdeutlicht nur das Prinzip. Wie ihr das nutzt, bleibt eurer Fantasie überlassen.

    2 Mal editiert, zuletzt von ostfriese (11. März 2024 um 16:18)

  • Soweit ich es verstehe, werden solche Dinge ausschließlich per vom Shelly gelieferten Code (JavaScript) auf dem Frontend-Gerät (Web Browser) implementiert, was ja auch am fetch-Aufruf zu sehen ist.

    Ohne entsprechende und relativ aktuelle JavaScript Kenntnisse geht das ja nicht.

    Danke für deine Anregung.

    Edit:

    Deine Funktion full_time() gefällt mir nicht. Ich werde eine imho zielführendere anbieten - gleich ...

    Was hältst du von folgendem Code?

    Code
    function twoDigits(d) { // d ist als Zahl zu importieren mit 0 <= d <= 99
      return d<10 ? "0" + d : "" + d; // liefert einen String
    }
    
    function full_time() {
      let d = new Date();
      return twoDigits(d.getHours()) + ':' + twoDigits(d.getMinutes()) + ':' + twoDigits(d.getSeconds());
    }

    Btw, das ist eine (Teil-)Lösung zu einer Aufgabe meiner Skripteinführung. 8)

    Sorry, Sekunden fehlen noch - ich ergänze ...

    Wie auch immer, dein Skript arbeitet, wie es soll. :thumbup:

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    6 Mal editiert, zuletzt von eiche (11. März 2024 um 17:18)

  • Den Part habe ich aus meiner Sammlung. Ist ja nicht kriegsentscheidend. Wenn du die Sekunde mit drin hast, werde ich deinen eleganten Part in meine Sammlung aufnehmen.

    Ohne entsprechende und relativ aktuelle JavaScript Kenntnisse geht das ja nicht.

    Ja, ist halt für Nerds gedacht, also auch für dich ;)