ProgramExecute - Zeitpunkt der Ausführung?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Matsch
Beiträge: 5449
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 739 Mal

ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von Matsch » 02.04.2021, 10:38

Wenn aus einem Script heraus ein Programm mit ProgramExecute() aufgerufen wird, wann wird dann dieses Programm ausgeführt?

- Sofort innerhalb der Befehlszeile, also wird der Script danach weiter fortgesetzt wie bei einem Unterprogramm oder
- erfolgt wie bei Triggerereignissen die Ausführung des Programms erst nach Verlassen des WebUI-Programms, aus dem heraus der Aufruf erfolgte?

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von Black » 02.04.2021, 11:08

Interessante Fragegestellung, die sich durch folgenden Versuch darlegen lässt:

anlegen von 2 programmen, test1 und test2, bedingung irgendwas, völlig egal,
im dann teil dann folgendes:

Code: Alles auswählen

system.Exec ("logger -t LOGGERNAME -p user.debug [Program test1]");  
das schreibt direkt ins richtige systemprotokoll

dann ein startprogramm:

Code: Alles auswählen

system.Exec ("logger -t LOGGERNAME -p user.debug [StartScript anfang]");
dom.GetObject(ID_PROGRAMS).Get("test1").ProgramExecute();
dom.GetObject(ID_PROGRAMS).Get("test2").ProgramExecute();
system.Exec ("logger -t LOGGERNAME -p user.debug [StartScript ende]");  
Dieses STartprogramm wird dann gestartet.
und die Ausgabe ist: (Achtung, der SDV logger schreibt dan letzten EIntrag ganz oben !!!!)

Code: Alles auswählen

Apr  2 10:54:50 SpieleSystem user.debug LOGGERNAME: [Program test2]
Apr  2 10:54:50 SpieleSystem user.debug LOGGERNAME: [Program test1]
Apr  2 10:54:50 SpieleSystem user.debug LOGGERNAME: [StartScript ende]
Apr  2 10:54:50 SpieleSystem user.debug LOGGERNAME: [StartScript anfang]
heisst, es wird nur ein Vermerk eingetragen, dass jeniges Script gestartet werden soll:
die reihenfolge wird wohl beigehalten, änder ich das script , dass zuerst test2, dann test1 aufgerufen wird, so kommen auch die logs in der Reihenfolge: test2 und test1. ZUerst wird das Hauptscript zuende abgearbeitet, zu erkennen an Startscript anfang und danach StartScript ende, dann kommt das erste getriggerte Script, Program Test1, danach das zweite getriggerte Script Program test2

kommt noch eine Gemeinheit:
schreibe ich das so, dass z.B. 2 mal Test2 gestartet werden soll:

Code: Alles auswählen

system.Exec ("logger -t LOGGERNAME -p user.debug [StartScript anfang]");
dom.GetObject(ID_PROGRAMS).Get("test1").ProgramExecute();
dom.GetObject(ID_PROGRAMS).Get("test2").ProgramExecute();
dom.GetObject(ID_PROGRAMS).Get("test2").ProgramExecute();
system.Exec ("logger -t LOGGERNAME -p user.debug [StartScript ende]");  
so habe ich im Log trotzdem nur:

Code: Alles auswählen

Apr  2 10:56:20 SpieleSystem user.debug LOGGERNAME: [Program test2]
Apr  2 10:56:20 SpieleSystem user.debug LOGGERNAME: [Program test1]
Apr  2 10:56:20 SpieleSystem user.debug LOGGERNAME: [StartScript ende]
Apr  2 10:56:20 SpieleSystem user.debug LOGGERNAME: [StartScript anfang]
heisst, mann kann also nur einmal das STartflag setzen in einem Script

ich hoffe, deine Fragen sind damit beantwortet,#

Gruss, Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Matsch
Beiträge: 5449
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 739 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von Matsch » 02.04.2021, 11:30

Wow, da hast du dich ja in der kurzen Zeit erheblich ins Zeug gelegt!

So wie das hier aussieht, werden die Programme mit ProgramExecute sogar noch vor den übrigen script-Zeilen ausgeführt, also nicht erst nach Ende des Startprogramms - und die erste Zeile sogar noch als letztes.
Und die Reihenfolge der Programmaufrufe hängt nicht von der Reihenfolge im Script ab, wenn ich das richtig interpretiere (wohl eher von der ID des Programms, wenn es mehrere sind?).

Ich hätte erwartet, dass zuerst die system.Exec-Zeilen abgearbeitet werden und danach die Programme.


Ja, ja, wenn man nicht richtig hinguckt!!!

Dann also doch in der aufgerufenen Reihenfolge, aber erst nach Ende des aufrufenden Programms.

Jetzt muß ich sehen, was ich aus dieser Erkenntnis machen kann.

Danke nochmal.
Zuletzt geändert von Matsch am 02.04.2021, 11:34, insgesamt 1-mal geändert.

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von Black » 02.04.2021, 11:33

Matsch hat geschrieben:
02.04.2021, 11:30

Danke nochmal.
ne, vertue dich da nicht, der SDV logger schreibt von oben nach unten, so dass der letzte eintrag immer ganz oben steht und der erste eintrag ganz unten. hat den vorteil, man braucht nicht zu scollen. musst aber, bei der zeitlichen reihenfolge wissen, das das oberste der letzte war, das zweitoberste as vorletzte etc. und das unterste das erste.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Matsch
Beiträge: 5449
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 739 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von Matsch » 02.04.2021, 11:35

Black hat geschrieben:
02.04.2021, 11:33
ne, vertue dich da nicht, der SDV logger schreibt von oben nach unten
Hatte es gerade selbst gemerkt!!!! Hattest ja schon darauf hingewiesen.

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von [sprotte80] » 02.04.2021, 13:44

Hi
Matsch hat geschrieben:
02.04.2021, 11:30
aber erst nach Ende des aufrufenden Programms.
Is nich richtig wo Black und du schreiben tun.
Sieht bei mir so aus

Code: Alles auswählen

Apr  2 13:38:38 ccu2 user.debug LOGGERNAME: [StartScript anfang]
Apr  2 13:38:38 ccu2 user.debug LOGGERNAME: [Program test1]
Apr  2 13:38:39 ccu2 user.debug LOGGERNAME: [StartScript ende]
Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

RolandT
Beiträge: 77
Registriert: 24.07.2020, 10:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 36 Mal
Danksagung erhalten: 41 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von RolandT » 02.04.2021, 15:35

Wenn du machen tun, was Match und Black schreiben tun, dann wird das bei dir auch funktionieren tun.
wenn du aber Startscript in Scripteditor ausführen tun und nicht als separates Programm anlegen und starten tun, dann wird der Logger zufällig auch solche ausgaben tun

Code: Alles auswählen

Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [StartScript anfang]
Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [Script test1]
Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [StartScript ende]
Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [Script test2]
das tut aber daran liegen tun, das Scripteditor Script über Homatic Script Api starten in anderer Ablaufebene tun als regahass die programme starten tun. Das kann dann ergeben tun auch deine Ausgabe. Genau Grund kannst du nachlesen tun in den entsprechenden Dokus.

gruss, Roland

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von [sprotte80] » 02.04.2021, 19:39

Hi
RolandT hat geschrieben:
02.04.2021, 15:35
Wenn du machen tun, was Match und Black schreiben tun, dann wird das bei dir auch funktionieren tun.
wenn du aber Startscript in Scripteditor ausführen tun und nicht als separates Programm anlegen und starten tun, dann wird der Logger zufällig auch solche ausgaben tun

Code: Alles auswählen

Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [StartScript anfang]
Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [Script test1]
Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [StartScript ende]
Apr  2 15:15:15 Trollsys user.debug LOGGERNAME: [Script test2]
das tut aber daran liegen tun, das Scripteditor Script über Homatic Script Api starten in anderer Ablaufebene tun als regahass die programme starten tun. Das kann dann ergeben tun auch deine Ausgabe. Genau Grund kannst du nachlesen tun in den entsprechenden Dokus.

gruss, Roland
Finds nich witzig.
Is Mobbing pur und voll beleidigend.
Dafür noch danke drücken is auch widerlich.
Kann man auch normal erklären das es nen Unterschied macht wo das script läuft

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Matsch
Beiträge: 5449
Registriert: 30.05.2019, 11:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Chemnitz
Hat sich bedankt: 116 Mal
Danksagung erhalten: 739 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von Matsch » 02.04.2021, 20:21

[sprotte80] hat geschrieben:
02.04.2021, 19:39
Finds nich witzig.
Das verstehe ich.
Aber war denn dein Beitrag trotz des Stils wirklich ernst gemeint? Das war durchaus mißverständlich.

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: ProgramExecute - Zeitpunkt der Ausführung?

Beitrag von [sprotte80] » 02.04.2021, 20:50

Hi

der Output vom Test wo ich gemacht habe war anders.
Also hab ich das mal gepostet.
Hab dann noch in nem andren Forum gefragt wieso das anderst ist.

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“