Formatierte Live-Temperaturausgabe in HTML-Seite

  • Hallo,

    ich habe mir vor einiger Zeit für meine Hausautomation eine Übersichtsseite gebastelt, die im Browser eines alten Tablets dargestellt wird, siehe Bild

    Mir geht es um die Anzeige der Temperaturen in der Sonne und im Schatten.

    Die Anzeige ist formatiert, sonst hätte ich eine einfache Lösung in der Art

    Code
    <object data="sonne.txt" type="text/plain" width="50px" height="50"></object>

    Diese Zahlen sollen aber schon von weitem erkennbar sein. Deshalb hatte ich mir ein Konstrukt ausgedacht, in dem ich zunächst in dem Datenerfassungsprogramm mir alle 5 Minuten (Erfassungsintervall) eine TXT mit dem Temperaturwert erzeuge:

    Code
    temp0=str(round(float(temp0),1))
    datei = open("/home/pi/ramdisk/sonne.txt","w")
    datei.write (temp0)
    datei.close()

    Danach "bastle" ich mir vorgefertigten Textschnipseln für HTML-Header, HTML-Formatierungsbefehlen und den TXT mit den Zahlenwerten, eine neue HTML, die ich in die Hauptseite eingebunden habe.

    Der "Bastel-Befehl lautet:

    Code
    tac /home/pi/holen/bs-oben /home/pi/ramdisk/sonne.txt /home/pi/holen/bs-mitte  /home/pi/ramdisk/norden.txt /home/pi/holen/bs-ende > /home/pi/public_html/ramdisk/live-temp.html

    Die live-temp.html sieht dann so aus:

    Die Profis von haben sicher noch nie eine so verknispelte Lösung gesehen ;)

    Darum meine Frage, geht das auch kürzer, effektiver, eleganter?

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • war ja klar das es hier wieder einen flamewar entsteht ich habe ledlig geschrieben wie ich das machen würde.

    Aber um mal deine frage zu beantworten

    Angular wird ja mit javascript betrieben ubd was ist json????

    Zudem habe ich irgendwas von ajax erwähnt?

    Im bild einen screenshot von einen codezeile für angularjs und schon kann man das im html so einbinden

  • war ja klar das es hier wieder einen flamewar entsteht ich habe ledlig geschrieben wie ich das machen würde.

    Nicht dein Ernst oder? Du möchtest dem TE für ein simples fetchen von Daten ein komplettes AngularJS andrehen? Na dann mach das mal. Aber ohne mich bitte.

    Angular wird ja mit javascript betrieben ubd was ist json????

    Angular wird nicht "mit JavaScript betrieben", Angular ist eine Bibliothek für JavaScript. Genau so, wie jQuery nicht JavaScript ist.

    Was "udb" ist, weiß ich leider nicht. JSON steht für "JavaScript Object Notation".

    Zudem habe ich irgendwas von ajax erwähnt?

    Nicht explizit, aber was auch immer du da für einen Code-Schnipsel hast, macht nichts anderes, ob's dir passt oder nicht. AJAX = Asynchronous JavaScript and XML, wobei fast niemand heute mehr XML in solchen Situationen verwendet. Sollte also AJAJ heißen, das Prinzip bleibt das selbe:

    Schau mal deinen Code an. GET Request an /output.json, ein callback für den Erfolgsfall festlegen, Daten verarbeiten. Blockiert das ganze die Restliche JS-Ausführung? Nein. Also? AJAX bzw das Prinzip dahinter.

    BTW deine Shift-Taste klemmt.

  • Und warum fragst du denn bitte was angular mit json/ajax zutun hat?

    Verstehe generell nicht wo dein problem ist bzw die frage. Jedenfalls wie ich bereits geschrieben habe, so würde ich es machen statt dateien zusammen zu cat'en

    Und ob man jetzt n riesige framework da zusammen spielen muss mag ich zu bezweifeln.

    Wie würdest du das denn in vanilla js lösen?

  • Hallo,

    Danke erstmal für die rege Diskussion. Aber bitte nicht schlagen, das ist jetzt für mich höhere Wissenschft.

    Ich bin kein Programmierer, das ist nur ein Hobby, das aus Zeitgründen leider wieder viel zu kurz kommt.

    Die temporären Dateien habe ich inzwischen auf eine RAMDisk ausgelagert, um die SD so etwas zu schonen.

    Die Daten erfasse ich mit einem Python-Programm, an das ich den obigen Code-Schnipsel angehängt habe.

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Hallo,

    also es geht bestimmt mit Angular.js - aber ist ein bisschen arg "over the top" hier. Plus die Lernkurve ist ja nicht gerade flach. Bzw. wenn man keine oder wenige Vorkenntnis in JS hat, ziemlich steil.

    Ich würde die aktuellen Werte auch per AJAX-Request vom Server holen und dann in der Webseite darstellen lassen.

    Gruß, noisefloor

Jetzt mitmachen!

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