Macroeditor - Wünsche

Hallo paresy!

Nachdem ich mich jetzt nun mit dem Macroeditor angefreundet habe und der für mich, ein PHP-„Noch“-Dummie, eine wirklich schöne Sache darstellt - habe jetzt schon ein paar Ideen damit umgesetzt - hätte ich noch ein paar Anregungen…

Da die Scripte per Inputvariable gesteuert werden hätte ich gerne noch ein paar zusätzliche Möglichkeiten der Zeit-Steuerung.
Momentan ist man ja an Startzeit xx:xx - Endzeit xx:xx gebunden.

1*
Wäre es noch möglich, hier die Möglichkeit zu schaffen, dass man bestimmte Tage (Datum) einbinden kann?

2*
Wochentage und Monatstage (Über Timerwizard triggern funktioniert glaube ich so nicht?! …hatte jedenfalls nicht den erwünschten Erfolg)

3*
Eine Möglichkeit einer Wiederholung, in der Form von „nach Minuten/Stunden/Tagen“

Z.B. habe ich jetzt ein Macro angelegt, welches meine Webcamsoftware steuert und erst aktiviert, wenn die Helligkeit >100 lux ist.
Dabei poppt aber das Fenster zum Start der Software auf, bevor es sich in den Systray legt. Wenn es dann einmal dort liegt, ist es kein Problem mehr.
Da ich noch die Software WsWin von W.Krenn einsetze und jede Stunde die „Wetter-Gifs“ aktualisieren lasse und danach zur HP übertrage, würde sich ein Start der Webcam-Software(Aufpoppen) ungünstig auswirken, wenn wswin gerade die Gifs erstellt. Dann habe ich das Fenster der Webcam-Software in den Gifs „eingefangen“.

Momentan habe ich das im Macroscript so geregelt, dass ich ein Start der Software zu den Zeiten von WsWin verbiete. Das sieht eben so aus, dass ich für jede Stunde eine eigene „Zeitvariable“ angelegt, diese mit „NOR“ verknüpft und danach über „AND“ mit der Helligkeit verknüpft habe.

Funktioniert, aber wenn ich jetzt eine stündliche Wiederholung einfügen könnte, dann bräuchte ich dieses Feld nur einmal.

4*
Man könnte sich zwar ein paar FlipFlops aus den vorhanden Gattern „basteln“, aber schön wäre es, wenn man direkt RS- o. JK-Flipflops auswählen könnte.

zu *1

Das sollte sich einrichten lassen.

zu *2

Das wäre ja quasi wie *1 nur für Wochentage, Monate

zu *3

Das kannst du über den TimerWizard anstossen. Odrt einfach das Script stündlich ausführen lassen. Da dein Helligkeitswert das Script aber bei jeder aktualisierung (OnChange) triggert, solltest du diese Sachen garnicht benötigen, weil dann dein Programm nach der Sperrzeit, beim nächsten Variablenupdate gestartet werden würde.

Oder ich habe das Problem nicht ganz verstanden :wink:

zu *4

Hatte steiner auch schon gewünscht… ich schiebe das mal ins neue Jahr…

paresy

Vielen Dank erstmal, dass du dich der Sache annehmen willst!:slight_smile:

Folgende Situation:
WsWin (pc-wetterstation.de) wird jede Stunde über den geplante Tasks um xx:02 Uhr gestartet, liest die Daten aus der Wetterstation aus, aktualisiert die Grafiken (gif) und Tabellen. Dabei braucht es einen freien Desktop, poppt die Grafiken auf und macht einen Snapshot.

Wenn jetzt dummerweise genau in dieser Zeit die Webcamsoftware aufpoppt, dann habe ich das Fenster davon im Snapshot und auf der Webseite, zuder ich automatisch die aktualisierten Grafiken und Tabellen übertrage.

Nun habe ich das Macroscript zum Starten der Webcamsoftware so organisiert, dass ein Start in dieser Zeit verhindert wird …kann ja zufällig passieren…

Das sieht so aus, dass ich Timevariablen angelegt habe und zwar für jede Stunde eine, also 04:02-04:05, 05:02-05:05, 06:02-06:05 …23:02-23:05.

Wenn ich nun ein Feld dafür nur anlegen müsste und dann zusätzlich eine Wiederholung angeben könnte…
Eine Möglichkeit wäre auch die feste Zeitangabe durch einen Stern „*“ zu ersetzen. Dann sehe das so aus: **:02 - **:05.
Das ergebe die gleiche Möglichkeit!

Die Triggerung erfolgt ja jedesmal, wenn ein neuer Wert vom Helligkeitssensor einfliegt und ist so nicht zubeinflussen.

P.S. Ich hoffe, dass das jetzt verständlicher ist.

Hallo paresy!

Um den jetzigen Zustand zu verdeutlichen, habe ich einen Screenshot für meine Webcam-Steuerung angehängt.
Um die Webcam-Software nicht irgendwann (wenn der Helligkeitswert über 80 lux liegt) zu starten und dann einen unrunden Zeitwert im Webcam-Shot zuhaben, habe ich ein D-FlipFlop aus NAND-Gattern gebastelt, welches einmalig am Morgen mit True getaktet wird, gesteuert über die Variable „WEBCAM_5MIN“.

Diese Variable wird über ein Script gesetzt, was alle 5 Minuten getriggert ist und in Abhängigkeit der Helligkeit gesetzt wird:

<?
// --- Steuerung der Triggerflanke zum FlipFlop im Macro WEBCAM ---
// getriggert alle 5 Minuten über Timerwizard

$helligkeit = GetValueInteger("HELLIGKEIT");

// Wert der Variable HELLIGKEIT >= 80 lux
// ja, dann Flanke 1 und Variable WEBCAM_5MIN setzen = True
if ($helligkeit >= 80) {
    SetValueBoolean("WEBCAM_5MIN", True);
    
// nein, dann Flanke 0 und Variable WEBCAM_5MIN setzen = False
} else {
    SetValueBoolean("WEBCAM_5MIN", False);
}

?>


Liegt die Variable „WEBCAM_AN“ (Triggerevent onchange=WEBCAM_GO) auf True und keine Sperrzeit aktiv ist, dann wird das Startscript für die Webcamsoftware ausgeführt:

<?
// --- Starten des VisionGS-Dienstes und der Anwendung ---
// getriggert über Variable WEBCAM_GO

// Variable WEBCAM_AN = True , dann Startfreigabe
$cam_an = GetValueBoolean("WEBCAM_AN");

if($cam_an == True){
// Anwendung beenden, falls noch aktiv
    system(' "taskkill /f /im visiongs.exe /t" ');
// Anwendung starten
    system(' "C:/Programme/visiongs be/visiongsa.exe" ');
// Dienst beenden, falls noch aktiv und neustarten
    system(' "net stop visiongs & net start visiongs" ');
}
?> 

Sobald der Helligkeitswert auf oder unter 80 lux fällt, dann wird das Beendenscript (getriggert onchange=WEBCAM_AUS) ausgeführt:

<?
// --- Beenden des VisionGS-Dienstes und der Anwendung ---
// getriggert über Variable WEBCAM_AUS

// Variable WEBCAM_AUS = True , dann beenden
$cam_aus = GetValueBoolean("WEBCAM_AUS");

if($cam_aus == True){
// Dienst beenden
    system(' "net stop visiongs" ');
// Anwendung beenden
    system(' "taskkill /f /im visiongs.exe /t" ');
}

?>

Das ganze würde sich etwas übersichtlicher und einfache erstellen lassen, wenn ich, wie weiter oben schon geschrieben, die Sperrzeiten in einem einzigen Feld angeben könnte.

Was ich mir noch wünschen würde zu bereits erwähnten Wünschen (Ich weiss, dass ist ziemlich viel auf einmal, aber für mich als PHP-Nurabgucker, wären damit viele neue Sachen einfacher zu machen:o )…

  • mehrstufige Zähler (Schieberegister)
    … könnte man aus FlipFlops bauen, ich weiss, aber wäre schön übersichtlicher

  • Taktgenerator mit dem ich auch ohne den Timerwizard generieren kann
    … so könnte man FlipFlops (und eventuell einmal Schieberegister besser beeinflussen)

  • Die Möglichkeit direkt Instanzen zu setzen/schalten/dimmen etc.
    … für mich, als PHP-Nulpe wäre das eine optimale Ergänzung, um nur mit den wirklich nötigen Scripts zu kämpfen

** Ein rein designtechnischen Wunsch…
Mir passiert immer weider aus unerklärlichen Grund, wenn ich an einem Macro arbeite, dass sich ein anderes Macro auf „Design“ stellt und dann natürlich nicht abgearbeitet wird.

Da wäre es ganz hilfreich, wenn das in der „Location/Script-Liste“ als Design (D), Code ©, Simu (S), Live (L) angezeigt würde, wie bei normalen Scripts der Triggerevent vermerkt ist.

Ich hoffe, du schlägst nicht die Hände über den Kopf zusammen, nach diesen vielen Wünschen, aber wenn das alles machbar wäre, dann hätte ich und ich denke auch viele andere PHP-Anfänger eine großen Vorteil.

P.S. Bin schon auf deine Antwort gespannt!

Hallo,

Da ich ua. beruflich mit S5/7 und Logo zu tun habe würde ich es auch sehr begrüßen wenn man von diesem Systemen einige Bausteine in IPS übernehmen könnte.

Gruß
Christian

Hallo paresy,

Nach einem Neustart von IPS stehen die Macroeditor-Scripts auf „Design“ und werden dann nicht abgearbeitet, wenn sie nicht auf „Live“ stehen, oder!?

Die Scripte werden immer aktiv, wenn du

a) Das Script per X wegmachst
b) Auf Live klickst

In Design/Code/Simulation Modus sind die Trigger deaktiviert

D.h. Nach einem Neustart sind die Scripte aktiv, solange du das Script nicht wieder im Editor öffnest

paresy

Nach einem Neustart sind die Scripte aktiv, solange du das Script nicht wieder im Editor öffnest

Aha, das habe ich natürlich gemacht:o
Wieder was dazu gelernt… Danke!

Hallo paresy,

Tschuldige, muss nochmals nachhaken…

Nachdem ich heute mittag, auf „Live“ gestellt und danach „X“, also das Script geschlossen habe, wurde es zum bestimmten Zeitpunkt nicht ausgeführt.

Erst nachdem ich es wieder geöffnet und erneut auf „Live“ gestellt habe. :confused:

Hallo paresy!

Ist das Thema mit den Wünschen noch auf der ToDo-Liste?

In Memory…

Momentan ist man ja an Startzeit xx:xx - Endzeit xx:xx gebunden.

1*
Wäre es noch möglich, hier die Möglichkeit zu schaffen, dass man bestimmte Tage (Datum) einbinden kann?

2*
Wochentage und Monatstage (Über Timerwizard triggern funktioniert glaube ich so nicht?! …hatte jedenfalls nicht den erwünschten Erfolg)

3*
Eine Möglichkeit einer Wiederholung, in der Form von „nach Minuten/Stunden/Tagen“

  • mehrstufige Zähler (Schieberegister)
    … könnte man aus FlipFlops bauen, ich weiss, aber wäre schön übersichtlicher

  • Taktgenerator mit dem ich auch ohne den Timerwizard generieren kann
    … so könnte man FlipFlops (und eventuell einmal Schieberegister besser beeinflussen)

  • Die Möglichkeit direkt Instanzen zu setzen/schalten/dimmen etc.
    … für mich, als PHP-Nulpe wäre das eine optimale Ergänzung, um nur mit den wirklich nötigen Scripts zu kämpfen

@nancilla:

Was für einen Helligkeitssensor hast du?

@TK6

S2500H in Verbindung mit dem Wettersensorempfänger.

http://shop.elv.de/output/controller.aspx?cid=74&detail=10&detail2=7439