Ein/Aus Status Widget

  • Da müßte dann wohl eine Variable angehängt werden, um immer zu refreshen.
    In der Art hatte ich das vor ner Ewigkeit mit dem hier:
    Online generierte Grafiken aktualisieren
    oder auch hier mit dem pseudo-random-parameter:
    Tagesthemenwetterlinks / Unwetterwarnung

    Tja, das scheint nur bei Internetadressen zu ziehen.
    Jetzt müsste ich meinem NAS eine Webseit verpassen, damit das gelingt ;( NÖ... mach ich nicht.
    Es gibt scheinbar auch keinen Skincode, der das cachen verhindert.

  • Habs gerade auch mal probiert,mit dem selben Ergebnis...

    Ich verzweifel hier generell gerade ,vorher funktionierte das wechseln der Bilder wenigstens per Skin Reload...jetzt kriege ich nur noch die Fallback Bilder angezeigt,die eigentlichen Bilder werden jetzt ignoriert,wieso kann ich mir auch nicht wirklich erklären. Selbst die Textures.db mal löschen hat nichts gebracht...

  • Habs gerade auch mal probiert,mit dem selben Ergebnis...

    Ich verzweifel hier generell gerade ,vorher funktionierte das wechseln der Bilder wenigstens per Skin Reload...jetzt kriege ich nur noch die Fallback Bilder angezeigt,die eigentlichen Bilder werden jetzt ignoriert,wieso kann ich mir auch nicht wirklich erklären. Selbst die Textures.db mal löschen hat nichts gebracht...

    ja schlimm. habe ich auch gerade festgestellt.

    edit: habe gerade mal den thumbnail ordner und die textureXX.db gelöscht.
    hilft auch nicht.
    dass, das fallback da auch nicht mehr greift ist mir ein rätsel.

  • Ich mache so etwas immer mit einem Service Script in Kodi. Der Service wird im Hintergrund gestartet und pingt z.B. alle 30 Sekunden eine IP an. Je nach Ping resultat setze ich eine Property im Window Home (1000)

    Diese Property frage ich im Skin ab und setzte je nach Inhalt eine andere Grafik. Da Kodi ja ständig die Oberfläche rendert wird bei einem wechsel der Property sofort eine andere Grafik angezeigt.

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Das klingt ja so ziemlich nach dem was ich suche und scheint dabei ein wenig eleganter zu sein.
    Momentan habe ich ein Script was:
    Ping ausführt->kontrolliert ob die Bild Datei umbenannt werden muss->Bilddatei umbenennt und Skin einmal neu läd.

    Könntest du deinen Aufbau vielleicht ein bisschen näher erläutern?

  • Im Prinzip ist das nicht schwer. Mit Python ein Service Script prorgammieren welches alle x Sekunden eine oder mehrere IP's anpingt. In Abhängigkeit vom Ergebnis wird eine Variable im Fenster 1000 gesetzt Z.B heisst die Variable service.ping.server1. In diese Variable schreibe ich den Wert 'on' oder 'off' herein.

    Dieser Wert liegt jetzt immer aktuell im Skin vor.

    Jetzt bindest Du im Skin 2 Bilder ein. Einmal das Bild für on und einmal für off. Jeweils an die gleiche Position. In der visible condition der Bilder steht einmal der Vergleich auf on und einmal auf off. Sobald sich der Wert der Variable verändert wird sofort das eine Bild ausblendet und das andere sichbar. Kodi rendert ständig das OSD bzw den Skin. Somit wird jegliche Veränderung im Speicher einer Variable sofort geändert.

    Die Condition müsste mit einem Stringvergleich funktionieren (habe ich aber nicht getesttet) Z.B so:

    String.IsEqual($INFO[Window(Home).Property(service.ping.server1)],on)

    In dem Fall bekomme ich ein True wenn die Var. auf on steht und somit wird dann das Bild angezeigt.

    Das müsste funktionieren. Ich lasse mir so alle Werte im Skin anzeigen wie GPU Auslastung , externe IP, Zustand meiner Homeautomatisation usw.

    Wenn Du willst kann ich Dir das Service Script programmieren. Das meiste habe ich ja schon. Es fehlt nur der Ping. Das ist aber nicht schwer.

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Hier, bitte einmal testen. Das Script runterladen und mittels Add-ons,Install from zip file installieren.

    Dann in den Add-on Ordner von Kodi gehen und die default.py öffnen. Ab Zeile 49 können dann die Server angepingt werden. Einfach nur die IP in Zeile 49 ändern.
    Wenn ein weiterer Server hinzukommen soll, die Zeile 50 auskommentieren und dort die IP ändern.

    Danach findet Ihr das Script in den Add-ons/Services/Ping Helper Service
    Stellt dort sicher, dass dort der Dienst auf enable steht.

    Dann wird alle 20 Sekunden der Server angepingt und der Wert aktualisiert. Die Zeit kann in Zeile 46 geändert werden. 200 = 20 Sekunden

    Der Wert steht dann in $INFO[Window(Home).Property(SkinHelperPING.server1)]
    In einem Label kannst Du dann sehen wie sich der Wert ändert.

    Getestet habe ich dies unter Windows. Linux sollte auch gehen, kann ich aber nicht sagen.

    Code
    <control type="label" id="999">
                        <width>230</width>
                        <height>70</height>
                        <label>$INFO[Window(Home).Property(SkinHelperPING.server1)]</label>
                        <top>400</top>
                        <left>200</left>
        </control>

    https://drive.google.com/open?id=0B0jBz…YUhXLW9SU0xUSjQ

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Hi

    Danke für deine Mühe[icon='fa-thumbs-o-up',32][/icon]

    Hab das ganze gerade mal ausprobiert,haut aber noch nicht 100%ig hin (liegt aber denke ich an mir)

    Und zwar funktioniert das Skript,es gibt auch korrekt den On und Off Status aus.
    Kontrolliert habe ich das ganze mit dem Label. Komisch ist das ich das Label nur ~1 Sekunde nach dem manuellen Skin refreseh angezeigt bekomme ,danach ist es nicht mehr zu sehen. Der On/Off Status wird in der Sekunde aber richtig angezeigt.

    Spoiler anzeigen
    Code
    <control type="label" id="999">
    <width>230</width>
    <height>70</height>
    <label>$INFO[Window(Home).Property(SkinHelperPING.nas)]</label>
    <top>400</top>
    <left>200</left>
    </control>


    Das wechseln vom Bild funktioniert aber leider nicht. Ich hab mal im Inet geguckt,und wie du bereits geschrieben hast,gefunden das der "String.IsEqual" Befehl für die "Visible" Option funktionieren müsste,tut es aber leider nicht (aber da liegt der Fehler denke ich bei mir,stehe bei solchen sachen noch eher an den Anfängen)
    Wenn ich bei "Visible" vom Hand "true" angebe wird das Bild angezeigt.

    Spoiler anzeigen
    Code
    <control type="image">
    <posx>1600</posx>
    <posy>350</posy>
    <width>256</width>
    <height>256</height>
    <texture>C:\Skripte\Kodi\NAS\An.png</texture>
    <visible>String.IsEqual($INFO[Window(Home).Property(SkinHelperPING.nas)],on)</visible>
    </control>


    default.py

    Spoiler anzeigen


    Kannst du da eventuell schon so den Fehler sehen?

  • Hallo

    Ja, irgendwie funktioniert der String.Compare wohl nicht mit properties. Keine Ahnung warum. Ich habe jetzt eine andere Lösung, die bei mir im Testskin so funktioniert.
    Ladet euch nochmals das zip https://drive.google.com/open?id=0B0jBz…YUhXLW9SU0xUSjQ herunter und überschreibt das alte Verzeihnis.
    In Zeile 49 steht wieder der Aufruf. dieser hat sich ein wenig verändert. Gebt jetzt zusätzlich an, wie die beiden Grafiken für on/off heissen (inkl. Pfad) Z.B so
    self.Ping("192.168.1.88","SkinHelperPING.server1","on.png","off.png") oder

    self.Ping("192.168.1.88","SkinHelperPING.server1","nas/on.png","nas/off.png")

    Dann bindet die Grafik wie folgt einfach ein:

    Code
    <control type="image">
                       <left>700</left>
                       <top>400</top>
                       <width>200</width>
                       <height>200</height>
                        <texture background="true">$INFO[Window(Home).Property(SkinHelperPING.server1)]</texture>
                      </control>


    Die Grafik die jetzt geladen wird sucht Kodi im Skinordner/media/on.png oder /media/off.png

    Das funktioniert bei mir.

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Super,jetzt funktionierts!
    Es dauert allerdings beim starten von Kodi erst einen count Durchgang bis das Bild auftaucht(egal ob "an" oder "aus").Das müsste doch zu lösen sein wenn das Script erst einmal mit zB. 20(2 Sekunden) durchläuft und danach mit dem normalen count(standart=200) im loop weiter läuft oder nicht?

  • Ja, die gibt es. Eine schnelle Lösung wäre es einfach die Funktion Ping sofort einmalig im init aufzurufen, bevor es dann in den loop geht also z.B so:

    BTW:
    Der String Compare war immer False, weil ich die falsche Syntax verwendet habe. Richtig ist :

    <visible>String.IsEqual(Window(Home).Property(SkinHelperPING.server1),on)</visible>

    Dann klappt es auch :)

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Einmal editiert, zuletzt von _Andy_ (12. Februar 2017 um 02:44)

  • Moin. Nach das sieht ja gut aus.
    Finde es besser, wenn man die Grafik nicht fest im Code anlegt.
    Dann kann ich das in meinem Skin den User den Pfad zum Bild angeben lassen und dann per String. Abfrage steuern.
    Wenn nun noch das propery nicht on oder off, sondern true oder false ausgibt, spart man sich den String.IsEqual().
    Was haltet ihr davon?

    Wenn Zeit und Lust da ist, dann man dem Addon vielleicht auch noch eine GUI verpassen. Dort kann man dann IP und so weiter einstellen.
    Und dann kommts ins Nerdsrepo ! :D

  • Die GUI kann ich schnell hinzumachen. Die Files sind schon dabei. Das hatte ich bis jetzt nicht gemacht, weil es erstmal getestet werden sollte.

    Wie willst Du dann den wechsel hinbekommen? Bei True wird ja eine Grafik angezeigt. Wenn aber die VAR auf False steht, dann wird doch die Grafik nicht angezeigt.

    Wie geht das dann ohne Compare auf false?

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

    Einmal editiert, zuletzt von _Andy_ (12. Februar 2017 um 16:44)

  • Ich habe eben in einem PR von Ronny gelesen, dass die Strings True und False, sowie on, off seit Krypton nicht mehr in Bool umgewandelt werden.
    Selbst wenn ich jetzt ein True, False Ausgebe, wird das nicht erkannt, da es weiterhin Strings sind und keine Bool.

    Ich denke es ist dann einfacher ich setze dann weiterhin on und off und im Skin braucht es dann ein Compare.

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
  • Hier eine neue Version. https://drive.google.com/open?id=0B0jBz…TkxEcUxOVTJNaFU

    In dem Add-on settings könnt Ihr in 6 Server eintragen. Damit entfällt das ändern im Code.

    Abfragen auf on oder off in der visible property des image macht Ihr dann so.

    <visible>String.IsEqual(Window(Home).Property(SkinHelperPING.server1),on)</visible>

    <visible>String.IsEqual(Window(Home).Property(SkinHelperPING.server1),off)</visible>


    Die Servervariable wird einfach nur hochgezählt. Woll Ihr also die 2te IP Abfragen geht das dann so:

    <visible>String.IsEqual(Window(Home).Property(SkinHelperPING.server2),on)</visible>
    <visible>String.IsEqual(Window(Home).Property(SkinHelperPING.server2),off)</visible>

    usw. bis 6

    Mein Heimkino

    Externer Inhalt www.speedtest.net
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!