Laufendes Programm beenden
Moderator: Co-Administratoren
Laufendes Programm beenden
Hallo zusammen,
wie kann ich ein laufendes Programm beenden?
Nicht ein Skript ein Programm das evtl. Skripte enthält.
:-* danke
wie kann ich ein laufendes Programm beenden?
Nicht ein Skript ein Programm das evtl. Skripte enthält.
:-* danke
:-**************
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Laufendes Programm beenden
Hallo
Ein einzelnes Programm läuft in Sekundenbruchteilen ab. Da gibt es nichts zu stoppen. Wahrscheinlich meinst du verzögert ausgelöste Aktionen? Die kann man stoppen, indem man eine gegenteilige Aktion ausführen lässt und dabei das Häkchen bei "retriggern" verwendet.
Das gilt allerdings nicht für verzögert gestartete Skripts. Da muss man einen Umweg über eine Systemvariable machen, die man verzögert aktiviert und - falls die Aktion nicht ausgeführt werden soll - deaktiviert und dabei das bewusste Häkchen setzt. Die eigentliche Auslösung der Aktion erfolgt dann beim Wechsel der Systemvariable auf "aktiv".
Wenn du weniger allgemein fragen würdest und einen Screenshot deines Programms einstellen würdest, könnte man dir wohl auch konkreter antworten.
Viele Grüsse
Bümpi
Ein einzelnes Programm läuft in Sekundenbruchteilen ab. Da gibt es nichts zu stoppen. Wahrscheinlich meinst du verzögert ausgelöste Aktionen? Die kann man stoppen, indem man eine gegenteilige Aktion ausführen lässt und dabei das Häkchen bei "retriggern" verwendet.
Das gilt allerdings nicht für verzögert gestartete Skripts. Da muss man einen Umweg über eine Systemvariable machen, die man verzögert aktiviert und - falls die Aktion nicht ausgeführt werden soll - deaktiviert und dabei das bewusste Häkchen setzt. Die eigentliche Auslösung der Aktion erfolgt dann beim Wechsel der Systemvariable auf "aktiv".
Wenn du weniger allgemein fragen würdest und einen Screenshot deines Programms einstellen würdest, könnte man dir wohl auch konkreter antworten.
Viele Grüsse
Bümpi
Re: Laufendes Programm beenden
Hiiiiiii bümpi,
ja genau, ein programm das sequenziell verzögert APIs anspricht.
wie ist das mit retriggern gemeint? Habe das noch nicht so gecheckt^^^^^^
glg
ja genau, ein programm das sequenziell verzögert APIs anspricht.
wie ist das mit retriggern gemeint? Habe das noch nicht so gecheckt^^^^^^
glg
:-**************
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Laufendes Programm beenden
... Teddy hat das hier mit "Zetteln" sehr gut bildlich dargestellt: http://homematic-forum.de/forum/viewtop ... =31&t=4251moddix hat geschrieben:wie ist das mit retriggern gemeint? Habe das noch nicht so gecheckt^^^^^^
Viele Grüsse
Bümpi
Re: Laufendes Programm beenden
soweit habe ich verstanden. Wie checkt die CCU wenn es um eine API Schnittstelle geht. Kein Endgerät von Homematic? Es sind POST URLs.
landen die auch auf Zetteln?
:-**************
-
- Ehrenmitglied
- Beiträge: 12194
- Registriert: 29.07.2006, 15:58
- Wohnort: Schweiz
- Danksagung erhalten: 5 Mal
Re: Laufendes Programm beenden
... das geht dann eben nicht! Da musst du verzögert eine Systemvariable aktiv schalten und - wenn die Aktion nicht erfolgen soll - sofort inaktiv (mit Häkchen bei Retriggern). Erst in einem weiteren Programm erfolgt dann die Skriptausführung in dem Moment, wo die Variable "aktiv" wird.moddix hat geschrieben:soweit habe ich verstanden. Wie checkt die CCU wenn es um eine API Schnittstelle geht. Kein Endgerät von Homematic? Es sind POST URLs.
Viele Grüsse
Bümpi
Re: Laufendes Programm beenden
oke, danke für deine Hilfe.
ui ui aufwendig für alles var's zu setzen.
glg
ui ui aufwendig für alles var's zu setzen.
glg
:-**************
Re: Laufendes Programm beenden
Hallo zusammen,
gibt es mittlerweile eine "einfachere" Methode, ein Programm mit diversen Verzögerungen zu stoppen?
Das Programm im Anhang stellt einen "Tageslichtwecker" dar, bei welchem zur "Weckzeit" die Rollos zusätzlich hochgehen.
(Bestimmt kann man es schöner und effizienter schreiben, was hier aber nicht Mittelpunkt werden soll)
Nachdem das Programm erstmal angestoßen wurde, habe ich bisher keine Möglichkeit den "Lauf der Dinge" zu stoppen.
Das Licht geht an und die Rollos gehen nach 20 Minuten hoch. Ziel ist es, die Verzögerungen einfach auszuschalten.
Wie würde die Lösung für meine konkreten Fall aussehen?
Schon mal Danke!
gibt es mittlerweile eine "einfachere" Methode, ein Programm mit diversen Verzögerungen zu stoppen?
Das Programm im Anhang stellt einen "Tageslichtwecker" dar, bei welchem zur "Weckzeit" die Rollos zusätzlich hochgehen.
(Bestimmt kann man es schöner und effizienter schreiben, was hier aber nicht Mittelpunkt werden soll)
Nachdem das Programm erstmal angestoßen wurde, habe ich bisher keine Möglichkeit den "Lauf der Dinge" zu stoppen.
Das Licht geht an und die Rollos gehen nach 20 Minuten hoch. Ziel ist es, die Verzögerungen einfach auszuschalten.
Wie würde die Lösung für meine konkreten Fall aussehen?
Schon mal Danke!
Re: Laufendes Programm beenden
Programme kann man nicht stoppen weil sie in den meisten Fällen höchstens einen Augenblick arbeiten. Nach dem auslösen werden die Bedingungen geprüft, ggf. eine Aktion ausgeführt und der Durchlauf beendet.
Die im DANN gestzten Verzögerungen laufen außerhalb des Programms in der CCU oder in den Aktoren selbst.
Um laufende Verzögerung abzubrechen muss für das Objekt ein neuer Befehl erteilt werden und der Haken bei „retriggern“ muss gestzt sein.
Bei Objekten bei denen dies nicht funktioniert (z.B. Skripte) muss eine Variable zwischengeschaltet werden. Man setzt die Variable mit einer Verzögerung und später wird durch die Änderung der Variable sofort das Skript ausgelöst. Die Verzögerung der Variable lässt sich nun einfach abbrechen und das Skript wird nicht ausgeführt.
Die im DANN gestzten Verzögerungen laufen außerhalb des Programms in der CCU oder in den Aktoren selbst.
Um laufende Verzögerung abzubrechen muss für das Objekt ein neuer Befehl erteilt werden und der Haken bei „retriggern“ muss gestzt sein.
Bei Objekten bei denen dies nicht funktioniert (z.B. Skripte) muss eine Variable zwischengeschaltet werden. Man setzt die Variable mit einer Verzögerung und später wird durch die Änderung der Variable sofort das Skript ausgelöst. Die Verzögerung der Variable lässt sich nun einfach abbrechen und das Skript wird nicht ausgeführt.
Viele Grüße!
Jörg
Jörg
-
- Beiträge: 14164
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Laufendes Programm beenden
Und bei Geräten könnte man wenn das Abbruchkriterium WAHR wird, denn aktuellen Staus auslesen und wieder setzen (natürlich mit gesetztem Haken beim Retriggern).
Gruß Xel66
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch