foreach-Schleife: aktuelles Listenelement überspringen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

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: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von Black » 25.05.2020, 15:40

Naja, es kann ja zu einer id mehr als eine laufende Verzögerung geben....
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

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von dtp » 26.05.2020, 08:39

Irgendwie habe ich das gar nicht mehr verfolgt, aber gibt es mittlerweile eigentlich die integrierte Delay-Funktion als Skriptbefehl?
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

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: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von Black » 26.05.2020, 08:42

dtp hat geschrieben:
26.05.2020, 08:39
Irgendwie habe ich das gar nicht mehr verfolgt, aber gibt es mittlerweile eigentlich die integrierte Delay-Funktion als Skriptbefehl?
bei der raspel ja, bei der ccu3 nein
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

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von dtp » 26.05.2020, 08:46

Black hat geschrieben:
26.05.2020, 08:42
bei der raspel ja, bei der ccu3 nein
Dann wird's Zeit, dass eQ-3 das mal implementiert. Oder ich hole mir doch mal so 'ne Raspel und verticke die CCU3 wieder. 8) Allerdings möchte ich, dass meine Skripte auf allen aktuellen Systemen laufen. Daher bin ich mit der original CCU3 als limitierendes Element wohl doch besser aufgestellt.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von jmaus » 27.05.2020, 08:46

Black hat geschrieben:
25.05.2020, 10:07
@jens: wenn du mich so fragst....

1. Initialisierbarkeit eines lokalen idarray.
Bitte mal ein konkretes Beispiel geben, stecke da gerade nicht so drin und daher wäre es hilfreich das etwas detaillierter mit Beispielen zu beschreiben.
2. Cleardelay (id); alle zu einer id gehörenden laufenden Verzögerungen tillen ohne einen schaltvorgang auszuführen. Sinn soll sein, ein script dass verzögert um gestartet wurde, mir der Funktion tillen zu können.
3. IsSheduled (id) Methode um abfragen zu können ob es zu einer id laufende verzögert um schedules gibt
Das ergibt in der Tat Sinn und sollte auch machtbar sein. Mach doch dafür bitte mal im GitHub ein separates Ticket für auf und dann vergess ich das auch nicht wenn ich das nächste mal wieder an ReGaHss sitze.
4.regex
Das wäre in der Tat schön ja. Hatte mir es auch im Prinzip bereits angeschaut. Problem dabei ist, das es nicht ganz klar ist wo genau man jetzt die entsprechende RegEx Funktionalität einbauen sollten und bis jetzt hab ich auch noch keine freie RegEx Bibliothek in C++ gefunden die auch lizenztechnisch zu ReGaHss passt. Aber auch dafür kannst du natürlich gerne mal ein GitHub Ticket aufmachen damit man das auf dem Schirm behält.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

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: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von Black » 27.05.2020, 09:35

jmaus hat geschrieben:
27.05.2020, 08:46
Black hat geschrieben:
25.05.2020, 10:07
@jens: wenn du mich so fragst....

1. Initialisierbarkeit eines lokalen idarray.
wenn man in scripten listen von Objecten erstellt,bearbeitet, auswertet geht das bisher nur mit dem selbstgenieren von OT_ENUM Objekten oder OT_XMLNODE Objecten. das die rega aber kein try finally bzw try catch exception handling beherrscht, bleiben bei einem Runtime Error leichen zurück.

ein idarry kann auch derartiges bearbeiten und liesse sich , so die Theorie, lokal anlegen.

allerdings führt ein derartiger versuch:

Code: Alles auswählen

 idarray test;
 test.Add (950);    
zu

Code: Alles auswählen

May 27 09:29:22 homematic-ccu2 local0.err ReGaHss: ERROR: ScriptRuntimeError:  idarray test;^M  test.Add (950);^M  [ExecError():iseESPexec.cpp:12798]
idarray verhält sich wie ein pointer auf ein bestehenedes idarray, ich kann aber keins neu erzeugen.

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

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von dtp » 28.05.2020, 07:41

Also ich fände es cool, wenn man mit .Contains() auch zwei Listen vergleichen könnte.

Beispiel:

Code: Alles auswählen

string list1 = "Bier\tCola\tFanta\Sprite\tApfelschorle";
string list2 = "Sprudel\tBier\tApfelschorle";

boolean vergleich1 = list1.Contains(list2);
boolean vergleich2 = list2.Contains(list1);
Für vergleich1 kommt dann als Resultat "true\tfalse\tfalse\tfalse\ttrue", während sich für vergleich 2 "false\ttrue\ttrue" ergibt.

Könnte mir hier auch auf entsprechende Weise ein .Find() vorstellen, dass im ersten Fall "1\t-1\t-1\t-1\t5" und im zweiten Fall "-1\t2\t-1" ausgibt.

Die Resultatslisten müssten sich dann mit einer foreach-Schleife abarbeiten lassen.

Von Matlab her kenne ich noch das Programmieren mit Vektoren und Matrizen. Das war ofmals sehr komfortabel. Wäre aber wohl für die ReGaHSS etwas zu viel verlangt, auch wenn der obige Listenvergleich in diese Richtung geht. 8)
Zuletzt geändert von dtp am 28.05.2020, 07:51, insgesamt 1-mal geändert.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

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: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von Black » 28.05.2020, 07:49

Matrixberechnungen auf einer ccu wo das dingen noch nicht mal punkt vor strichrechnung kennt ?

Hmmmm.

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

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von dtp » 28.05.2020, 07:52

Okay, vielleicht etwas weit her geholt. ;)
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: foreach-Schleife: aktuelles Listenelement überspringen

Beitrag von dtp » 29.05.2020, 16:39

Was ich mir ansonsten noch wünschen würde, wäre, dass ich ein beliebiges Listenelement durch einen anderen Eintrag ersetzen kann.

Also z.B.

Code: Alles auswählen

string list = "a\tb\tc\td\te";
list = list.Replace(3, "u");
WriteLine(list);
ergibt dann "a\tb\tc\tu\te".

Auch schön wäre, wenn ich einfach ein neues Listenelement einfügen könnte:

Code: Alles auswählen

string list = "a\tb\tc\td\te";
list = list.Insert(3, "u");
WriteLine(list);
ergibt "a\tb\tc\tu\td\te".

Und natürlich entfernen:

Code: Alles auswählen

string list = "a\tb\tc\td\te";
list = list.Delete(3);
WriteLine(list);
ergibt "a\tb\td\te".
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

Antworten

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