[Win 7/8] Pi Temperaturanzeige auf dem Desktop

    • Offizieller Beitrag

    Moin, Moin,

    vor einigen tagen ging in der Deutschen Raspberry Facebook Gruppe die Frage um wie man die Temperatur des Raspberry auf dem Desktop Anzeigen kann.

    Daraufhin ist mir die Idee gekommen das ganze mit einer Windows 7 Miniatur Anwendung zu lösen.
    Grundlage dieser Miniaturanwendung ist das der Pi die Temperatur in einer Textdatei auf einem Webserver bereitstellt. Hierbei ist egal ob es sich hierbei um die CPU Temperatur oder die eines Temperatursensors handelt.


    Was schon Funktioniert:

    - Anzeige der Temperatur


    Was noch geplant ist:

    - ein Schönes Design
    - Einstellung des Aktualisierungsintervalls
    - BEschreibung der Temperaturen z.b. CPU, Sensor Flur
    - Hinzufügen mehrerer Temperaturen



    Installation:

    Windows 7:
    Unter Windows 7 muss nur ein Doppelklick auf die Heruntergeladene Miniaturanwendung gemacht werden und diese wird Automatisch Installiert.

    Windows 8:

    Unter Windows 8 wurden Miniaturanwendungen Standardmäßig Deaktiviert, um diese trotzdem nutzen zu können gibt es verschiedene Tools zum Download.
    Eines dieser Tools ist z.b. 8GadgetPack, dieses habe ich auch in Benutzung.

    Nach Installation des jeweiligen Tools, können Miniaturanwendungen einfach wie unter Windows 7 Installiert werden.

    Einrichtung:
    Bei erstmaliger Einrichtung muss der Pfad zur Textdatei mit der Temperatur angegeben werden.
    Dieses ist möglich indem rechts an der Miniaturanwendung auf den Schraubenschlüssel geklickt wird und dort der Pfad Eingetragen wird.


    Screenshots:

    RPI Temp Oberfläche

    rpi_temp_1_01zlv1.png

    RPI Temp Einstellungen
    rpi_temp_settings_1_08qz64.png


    Download:
    RPI_Temp Gadget 1.0


    Ich freue mich auf Ideen, Kritik oder anregungen.

  • Sieht nett aus, nur wo ist die "Textdatei" in der das gespeichert wird für die "App"? Und ist das für die 1-Wire Sensoren oder für den direkten Sensor vom Pi CPU?


    Michael

    Der Raspberry Pi ist schon ein schönes Spielzeug mit dem man einiges anfangen kann.

    :angel: :wallbash:

  • Es ist egal Was für einen wert Du die Miniaturanwendung (MA) Anzeigen Läst:

    • CPU Temp • 1Wire Sensor • I²C Sensor • Freien Speicher usw.

    Hauptsache es wurde vorher in eine Text Datei geschrieben UND diese Datei ist über LAN abrufbar.
    Die MA zeigt den Inhalt nur in einem Mini Browser Fenster an
    (- zumindest habe ich das so verstanden:denker: -).

    das erstellen der Datei musst Du bzw. Dein Raspberry Pi selber übernehmen. z.B. via Crontab

    oder du machst das wie ich und erstellst dir eine kleine Webseite und lasst die MA die Webseite anzeigen.
    Sieht besser aus und man kann den Background festlegen :D (Auch wenn trek_star das wohl nicht so Beabsichtigt hatte)
    MFG Carsten

    Ps.: @trek_star kleiner Vorschlag... es wäre echt genial wenn man(n) die Fenstergröße bei den Einstellungen auch abändern/Festlegen könnte. um z.b. Mehrere Zeilen anzeigen zulassen. und das mann das Aktualisierungsrate einstellen kann mir würde alle 2 Minuten reichen aber das ist ja schon in arbeit....
    aber echt tolles Projekt.

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

    Einmal editiert, zuletzt von C.And (18. Oktober 2013 um 06:56)

    • Offizieller Beitrag


    Sieht nett aus, nur wo ist die "Textdatei" in der das gespeichert wird für die "App"? Und ist das für die 1-Wire Sensoren oder für den direkten Sensor vom Pi CPU?


    Michael

    Werde das Tutorial nochmal so Erweitern das es auch erklärt wie Temperatur von 1 Wire oder CPU Angezeigt werden kann.

    C.And: Die Anzeige ist so korrekt Überschrieben.
    Die Idee alles als Webseite anzuzeigen finde ich persönlich noch besser, werde mir da mal Gedanken machen. Das mit der Größe ist sicher möglich.

  • Die Idee kam mir als ich meine TXT gelöscht habe und mir die IE Fehlerseite angezeigt wurde.
    und da man(n) bei HTML / PHP die Schrift, Background usw festlegen und/oder die werte aus einer SQL datei Einlesen (Idee by meigrafd - PHP CPU/Sys-Infos.) Schwarzer Hintergrund - Rote Schrift und tada eine super Anzeige ist erschaffen.
    Nachteil bei der Webdarstellung via PHP ist das ein Webserver installiert sein muss

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

    Einmal editiert, zuletzt von C.And (18. Oktober 2013 um 10:45)

  • So nachdem ich mich mal damit auseinandergesetzt habe wie so eine Gadget aufgebaut ist,
    Konnte ich die Größe (h=55)(w=145)als auch die Aktualisierungsrate (120.000 ms) erst mal an meinen Bedürfnisse anpassen :fies:
    > Siehe Bild
    4txzagtx.jpg

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

    Einmal editiert, zuletzt von C.And (20. Oktober 2013 um 12:29)


  • Ich erstell morgen mal ein neues Gadget, aber ohne txt Datei - ist eigentlich ziemlich einfach:

    Das wäre Super... Kleiner wunsch: Bitte so das man die Größe Verändern kann

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

  • :denker: Leider krieg ichs ums verrecken nicht hin :wallbash:

    Aus mir bisher unbekannten Gründen wird beim Gadget mein WebSocket JavaScript nicht ausgeführt... Der selbe Code funktioniert aber über'n normalen Webserver..

    Vielleicht weiß hier jmd was ich falsch mache :huh:

    Vorgehensweise:

    Im Verzeichnis C:\Benutzer\<Benutzername>\AppData\Local\Microsoft\Windows Sidebar\Gadgets\ ein Ordner erstellen: RPi_Info.gadget

    Folgende Dateien in diesen neuen Ordner kopieren:
    bg.jpg
    gadget.xml
    icon.ico
    RPi.html
    Settings.html
    style.css
    websocket.js

    Rechtsklick auf den Windows-Desktop und Minianwendungen auswählen. Dort sollte nun eine etwas verschwommene Himbeere als "RPi Info" zu finden sein :fies:

    Alternativ:
    Die im Anhang befindliche RPi_Info.zip herunterladen und in RPi_Info.gadget umbenennen (.zip muss weg sein!). Anschließend via Doppelklick ausführen und installieren.


    Voraussetzung auf dem PI einrichten:

    Auf dem RaspberryPi muss das Python2 Script RPi_Info.py eingerichtet und gestartet werden (vorzugsweise als 'pi' und im Hintergrund oder in einer screen/tmux Session).
    Damit das Script funktioniert muss zuvor noch das Module tornado installiert werden: apt-get install python-tornado


    Voreingestellt in RPi.html (variableLink) ist als IP: 192.168.0.10
    Das sollte man über den Schraubenschlüssel verändern können...


    Wie gesagt funktioniert der Code problemlos wenn man es auf einem anderen Linux Rechner mit apache2 oder nginx ausführt...

    Habe heute viel recherchiert aber bisher nichts gefunden, ob Windows-Gadgets websockets können.... :s

  • 192.168.178.67/gadget/RPi.html

    Das wird für das Gadget eigentlich nicht benötigt und diente nur zum Testen...
    Um den Code ansich zu testen müsstest du den Inhalt der Zip auf deinen Webserver kopieren, einen Ordner erstellen und da drin die Zip entpacken. Aber wie gesagt ist das nur zum Testen - für den späteren Betrieb, also dem Windows-Gadget, wird das nicht benötigt.
    Wenn es denn funktioniert wird nur das Python Script und das Windows-Gadget benötigt. Also auf Windows das Gadget installieren und das Pythonscript auf dem PI starten. Der HTML Code stellt dann (eigentlich) via Web-Socket eine Verbindung zum Python-Script her und fragt jede Sekunde die Daten ab... So ists zumindest vorgesehen und funktioniert auch über einen Webserver.

    . Das gadget geht wunderbar.

    Das verwirrt mich jetzt... Was funktioniert wunderbar? ;)

  • erst mal Danke Für die Arbeit.

    ist nicht 100% das was ich mir vorgestellt hatte aber wer weiß was man daraus noch machen kann

    hmm also als erstes fällt mir auf das wenn ich bei den Settings versuche meine IP einzugeben entfert das tool die Punkte (Aus 192.168.1.15 wird 192168115 ) ist ggf da schon der Fehler.

    Also das das Script falsche Date der IP Variable bekommt. das wäre zumindest ein Ansatz zu Fehlersuche...

    habe die Variable zeile 9 "variableLink" mal an meine Gegebenheiten angepast IP 192.168.1.15
    Allerdings wenn ich es dann versuche zu installieren schmiert der der gesamte Prozess Slidebar ab..

    die RPi.html braucht nicht mal auf einem Server zu liegen habe sie ausfersehn local gestartet. und es läuft.... auch wenn ich die seite (Nach der Modi) vom
    Rpi Webserver starte bekomme ich Ergebnisse. siehe Bild. aber das gadget schweigt ...

    -----------------------------------------------------------
    EDIT:
    Sind die Win 7 Gadget überhaupt fähig mit dem Websocket Protokoll umzugehen?

    habe Grade ein wenig darüber gelesen, war mir bis jetzt komplett unbekannt.. und bin darauf Gestosen das Websocket 2011 entwickelt wurde, Windows 7 wurde aber schon 2008/09 entwickelt.
    meine logische schlussfolgerunng wäre jetzt das das so nicht funken kann.
    den einer meiner Uralt Browser (der kann grade mit einfachem css umgehen.) zeigt das selbe verhalten wie das Gadget, reaktion=0 .
    bevor ich virtuell gesteinigt werde verschweige ich welcher ich getestet habe.
    Das wäre jetzt meine 2. idee

    Leider habe ich das Tool von Oben von 2013 nicht mehr. Festplatte geschrottet.

    Bilder

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

    Einmal editiert, zuletzt von C.And (29. Juli 2015 um 03:14)


  • habe Grade ein wenig darüber gelesen, war mir bis jetzt komplett unbekannt.. und bin darauf Gestosen das Websocket 2011 entwickelt wurde, Windows 7 wurde aber schon 2008/09 entwickelt.
    meine logische schlussfolgerunng wäre jetzt das das so nicht funken kann.

    Die Gadgets (Sidebar) wurden mit Vista eingeführt. Der dafür verwendete "Browser" ist IE7 kompatibel aber unabhängig von dem Desktopbrowser. Das heißt kein HTML5, Jquery und Co.
    Da MS mit ihrem ActiveX-Zeug Zugriff auf den Rechner erlauben, war (ist) es eine riesen Sicherheitslücke... Support und Updates wurden deshalb von MS eingestellt... Man argumentiert bei MS, dass die Gadgets eh nur ein Vorläufer der Win8 Apps-Kacheln waren.
    Unbestätigten Informationen zu Folge, soll dies ab Win8 / Windows Server 2012 funktionieren (JQuery usw)

    Das habe ich leider auch erst heute herausgefunden :blush:

    Tja, dann muss ich mir halt was anderes überlegen - vermutlich dann doch auf normaler HTTP Basis, aber ohne Zwang dafür extra einen Webserver installiert zu haben :fies:
    Stay tuned.

  • :( Schade aber das py Script im allgemeinen finde ich hoch interessant. Wie gesagt mal sehen was man daraus machen Kann.

    das Jquery auch nicht funktioniert erklärt mir gleich wieso mein eigener Versuch in die Hose ging :wallbash:
    wo ich unter anderem mein Freespace_1.6 eingebaut habe.
    -----------------
    Uhrzeit.
    Datum.
    Temperatur
    CPU Frequenz
    -----------------
    FreeSpace
    -1 Root FS
    -2 Boot FS
    -3 bis 8 Div. USB Medien.

    -----------------

    Bilder

    Rechtschreibfehler sind Special Effects meiner Tastatur
    [font="Arial"]Pater dimitte illis non enim sciunt quid faciunt![/font]
    @sagte der Pi bevor er in Rauch auf ging:@
    Vater, vergib ihnen den sie Wissen nicht was sie tun!

  • Ich hab heute auch etwas anderes probiert und zwar ist in Python (sowohl 2 als auch 3) bereits ein Module dabei um grundlegende HTTP Anfragen zu verarbeiten: BaseHTTPServer bzw bei python3: http.server
    Mithilfe dieses Modules kann man GET Anfragen (also ein Abruf über die URL wie z.B.: 192.168.0.10/temp) ziemlich leicht handhaben und auch erweitern.
    Also ja oke, ein Webserver wird nun zwar auch Benötigt, aber kein separat installierter wie apache2 oder so :fies: Ist also Standalone / unabhängig.

    cmp.gif

    Allerdings habe ich weiterhin Schwierigkeiten mit dem Gadget :mad_GREEN:

    &quot;RPi_Info.py v2&quot;

    [code=php]
    # -*- coding: utf-8 -*-
    #
    # v0.2 by meigrafd @ 29.07.2015
    #
    #
    ###
    # import the libraries
    from __future__ import print_function
    from datetime import timedelta
    import time, sys
    try: #python2
    from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
    except ImportError: #python3
    from http.server import BaseHTTPRequestHandler,HTTPServer


    PORT_NUMBER = 7070


    def getPiUptime():
    with open('/proc/uptime', 'r') as f:
    uptime_seconds = float(f.readline().split()[0])
    uptime = str(timedelta(seconds = uptime_seconds))
    return uptime

    def getPiRAM():
    with open('/proc/meminfo', 'r') as mem:
    tmp = 0
    for i in mem:
    sline = i.split()
    if str(sline[0]) == 'MemTotal:':
    total = int(sline[1])
    elif str(sline[0]) in ('MemFree:', 'Buffers:', 'Cached:'):
    tmp += int(sline[1])
    free = tmp
    used = int(total) - int(free)
    usedPerc = (used * 100) / total
    return usedPerc

    def getPiTemperature():
    with open("/sys/class/thermal/thermal_zone0/temp", 'r') as f:
    content = f.read().splitlines()
    return float(content[0]) / 1000.0


    # http://www.acmesystems.it/python_httpd
    # This class will handles any incoming request from the browser
    class myHandler(BaseHTTPRequestHandler):

    # Handler for the GET requests
    def do_GET(self):
    try:
    sendReply = False

    if self.path == "/temp":
    Response = str(getPiTemperature())
    mimetype = 'text/html'
    sendReply = True

    elif self.path == "/ram":
    Response = str(getPiRAM())
    mimetype = 'text/html'
    sendReply = True

    elif self.path == "/uptime":
    Response = str(getPiUptime()).split(".")[0]
    mimetype = 'text/html'
    sendReply = True

    elif self.path == "/loadavg":
    Response = open("/proc/loadavg").readline().split(" ")[:3][0]
    mimetype = 'text/html'
    sendReply = True

    if sendReply == True:
    self.send_response(200)
    self.send_header('Content-type', mimetype)
    self.end_headers()
    # Send the html message
    self.wfile.write(Response)
    else:
    self.send_error(404,'File Not Found: %s' % self.path)
    return

    except IOError:
    self.send_error(404,'File Not Found: %s' % self.path)

    try:
    # Create a web server and define the handler to manage the incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print('Started httpserver on port ' , PORT_NUMBER)

    # Wait forever for incoming http requests
    server.serve_forever()

    except (KeyboardInterrupt, SystemExit):
    print('Shutting down http server')
    server.socket.close()

    [/php]

    Zwischendurch ging es mal ganz kurz aber mittlerweile geht es halt leider nicht mehr und ich weiß natürlich nicht wieso pcdau.gif
    dau2.gif

    Naja mal gucken ob ich das morgen hinkrieg...

Jetzt mitmachen!

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