im Designer lass ich mir unter anderem auch Wetterbilder anzeigen, die ich zu festgelegten Zeiten per wget runterlade. Dabei überschreibe ich die im Image-Pool eingebundene Grafik mit der neuen Datei.
Nun möchte ich das Image im Designer gern dann aktualisieren, wenn das Bild im Image-Pool überschrieben wurde und nicht per Image-Trigger alle 60 Sec.
Gibt es eine Möglichkeit die Änderung eines Bildes (z.B. uber das Erstellungsdateum) abzufragen und die Bilder dann „on_change“ zu aktualisieren?
Bei mir wird nach der Erstellung (oder dem Download) der neuen Grafik eine Boolean-Variable getoggelt. Auf diese wiederum kann der Designer reagieren (OnChange), und er lädt dann das neue Bild.
Auf diese Weise ist die Anzeige ständig auf dem aktuellsten Stand.
das versuche ich schon seit langem. Oder habe ich vielleicht eine falsche Designer Version? Bei mir ist diese Funktion auf jeden fall deaktiviert.
Kannst du mir bitte genau erklären, wie man aufgrund einer Veränderung einer BOOL-Variable ein Bild neu updaten kann im Designer? Das wäre mir auch eine hilfreiche Funktion
Das ShellNotify Modul funktioniert schon. Dazu muss eine neue Instanz ShellNotify (ist ein Device) erstellt werden. Als Watch Directory ist das Image selbst zu wählen (wenn ein Pfad gewählt wird, wird das Script bei Änderungen an irgendeiner Datei ausgelöst). Dann ist noch das entsprechende Event Script anzugeben. Ich habe kein Häckchen bei Events gesetzt (hatte mal alle drin und dann alle herausgenommen und es funktioniert…).
Im Script kann man dann mit $SH_TYPE abfragen ob es sich um ein „UpdateItem“-Event handelt. Damit nicht für jedes Bild ein eigenes Script erstellt werden muss, kann man mit $SH_PATH1 abfragen, welches Bild geändert wurde (gibt kompletten Pfad an, ev. mit substr() Dateiname ausschneiden). Mit switch() lassen sich dann die diversen Variabeln verändern.
Hoffe das war einigermassen verständlich, Hab’s bisher nur getestet und noch nicht produktiv im Einsatz.
Eine Solche Lösung hatte ich schon vermutet. Aber wie toggelst Du die Boolean-Variable? Bei mir wird eine kleine Batch-Datei über einen Taskmanager zeitgesteuert ausgeführt um die einzelnen Dateien herunter zu holen. Wie kann ich dann mit einer externen CMD-Anwendung eine Variable im IPS ändern?
nun, da dies das IP-Symcon-Forum ist, wird es Dich nicht überraschen, dass ich IP-Symcon verwende.
Auch für Dich sollte das kein Problem darstellen. Du kannst mit der Funktion IPS_Execute(…) Deine Batch-Datei starten und gleich danach die Variable toggeln.
Etwa so:
// Ausführen der Batch-Datei "IPS-Test.cmd"
IPS_Execute ("IPS-Test.cmd", "", true, true);
// Toggeln der IPS-Variablen "BoolVar"
SetValueBoolean("BoolVar", !GetValueBoolean("BoolVar"));