Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Hallo Hans, das ist ja ein wahnsinns Teil, vielen Dank dafür. Ich hoffe das ich als Anfänger damit zu recht komme, aber ich will es versuchen. Im Moment halten mich folgende Meldungen auf Trapp, die ich nicht ganz einschätzen kann. Eventuell kannst du mir helfen. Das ist der Stand nach Installation und dem ersten überprüfen (siehe Bild). Vielen Dank Vorab!
Hallo, das Problem mit dem Baustein 12056 habe ich gelöst. Habe die Datei im logic Ordner mit dem Editor geöffnet und habe den Quelltext erneut hineinkopiert. Anschließend habe ich die Datei von hslz zu hsl umbenannt und erneut im Experten importiert. Ich weiß nicht ob das ein passendes Vorgehen war, aber es hat funktioniert :-)!
Hallo Hans,
hab' jetzt auch angefangen, Deine ZSUs zu implementieren - zumindest für die Schaltuhren, an die ich ab und an mal dran muss (die UZSUs laufen ja auch unter xxAPI2 weiter, auch wenn man sie nicht mehr editieren/verändern kann :-)
Die Einbindung gemäß Deiner Beschreibung hat einwandfrei und völlig problemlos geklappt (für die erste "einfache" ZSU). Und ganz so schlimm, wie das die Masse an Logik-Bausteinen erwarten lässt, war's dann doch nicht. Dein Ansatz zeigt recht gut, was mit diesen Gira-Logiken alles möglich ist - großer Respekt!!
Ein paar Punkte/Fragen hätte ich dann doch noch:
- Baustein 15030 hat bei mir die V1.0 - in Deiner Anleitung unter Punkt 13 soll man die Versionen einiger Bausteine prüfen (eben auch 15030), ob dort überall die V1.1 hinterlegt ist
- ZSU+ hatte ich so verstanden, dass die Schaltzeiten gefiltert werden können auf Wochentage, Urlaub, Feiertag, An-/Abwesenheit. Falls dem so ist, müssten die entsprechenden Schalter doch "getoggelt" werden. Bei Wochentagen ist das auch so, bei Urlaub und Feiertag nicht, An-/Abwesenheit kann gar nicht gesetzt werden. Hab' ich da was missverstanden, oder stimmt das Popup ZSU+ nicht.
- nur Interesse halber: warum brauchst Du für interne GAs Gruppenadressen?
Was ich bisher ganz gerne genutzt hatte (UZSUs) war das Zufallselement (also schalte 8:00 Uhr +/- 30min oder SU + 30min +/- 15min). Macht das ganze automatische Geschalte nicht so berechenbar/maschinell oder eben etwas menschlicher ...
Ist absolut "nice to have" - aber denkst Du an eine Weiterentwicklung?
Oder siehst Du Deinen Ansatz selbst quasi als "Brückentechnologie" für die xxAPI2, die - Du hast das ja selbst oft geschrieben - ohne Schaltuhren für viele keine sinnvolle Alternative ist?
Bin selbst hin und her gerissen - Deine Zeitraum-Logik hat schon was für sich - aber wenn die Filter mit ins Spiel kommen (soweit bin ich ja noch gar nicht) wird's wohl doch recht (zu?) komplex.
Zum Beispiel Heizung/Lüftung:
normaler Arbeitstag (Mo-Fr): schalten von 06:00 Uhr bis 09:00 Uhr und von 17:00 Uhr bis 23:00 Uhr Zustand A (sonst Zustand B)
Samstag: schalten von 06:00 Uhr bis 01:00 Uhr
Sonntag: schalten von 7:30 Uhr bis 24:00 Uhr
Feiertag: schalten von 8:00 Uhr bis 24:00 Uhr
Urlaub: gar nicht schalten
Wie würdest Du sowas abbilden? Wäre dafür nicht die Schaltpunkt-Logik der UZSU besser geeignet? Wäre interessant, wie Du das siehst :-)
Aber trotz der offenen Fragen: sehr interessanter Ansatz von Dir und eine tolle Leistung! Dafür danke auch von meiner Seite und dass Du das auch zugänglich machst. Meine bisherige Vorgehensweise bei Veränderungen an einigen Schaltzeiten war die folgende: altes Projekt (xxAPI) auf den HS hochladen - Schaltzeiten ändern - aktuelles Projekt (xxAPI2) wieder hochladen - Fertig.
Wollte einen Teil meiner eigenen Fragen gleich mal selbst beantworten:
Urlaub und Feiertag in den Schaltuhren haben drei Zustände (der Wechsel läuft eben nicht übers "Toggeln" - hatte ich übersehen, sorry).
Urlaub PLUS: Schaltuhr schaltet im Urlaub
Urlaub MINUS: Schaltuhr schaltet nicht im Urlaub
Urlaub (neutral): Schaltuhr schaltet, egal ob Urlaub anliegt oder nicht
Gleiches gilt für Feiertage.
An-/Abwesenheit ist eine Info im Popup - wird im Logikeditor die entsprechende GA mit dem Eingang verknüpft, schaltet die Schaltuhr entsprechend bei Abwesenheit oder eben bei Anwesenheit.
Hoffe, das ist so richtig wiedergegeben.
Nochmal: ist wirklich eine super Lösung zur Überbrückung, bis xxAPI2 soweit ist mit Schaltuhren - Kalender könnte man sogar so lassen wie es jetzt ist.
Otto Normalo bräuchte bei dieser Lösung - so wie ich auch - sicher deutlich mehr Schaltuhren als die 16 möglichen. Wenn man's aber mal durchgeht, werden die meisten einmal eingerichtet und nie mehr angefasst (Heizung, Lüftung, Klima, Beschattung, etc.). Und die laufen ja auch über die UZSUs im Gira HS bei Nutzung xxAPI2 weiter - lassen sich halt nicht mehr verändern/editieren. Und die "wenigen", die tatsächlich hin und wieder verändert werden (Steckdosen, Teichpumpen im Sommer, etc.), für die könnten die verfügbaren 16 ZSUs schon dicke genügen - zumindest bei mir ist das so.
Spricht also dank ZSU-Ansatz von Hans nichts mehr dafür, sich nicht mal intensiv mit den tollen Möglichkeiten der xxAPI2 von Nils zu beschäftigen :-)
Hoffe, Du (Hans) nimmst mir das nicht übel, dass ich die ZSUs eher als Übergangslösung sehe - ich bin wirklich froh, dass Du das gewagt hast und die Lösung auch publiziert hast. Deine Sicht/Meinung (siehe auch letzter Post) zur "Übergangslösung" würde mich aber sehr interessieren.
Viele Grüße
Tom
Wollte einen Teil meiner eigenen Fragen gleich mal selbst beantworten:
Urlaub und Feiertag in den Schaltuhren haben drei Zustände (der Wechsel läuft eben nicht übers "Toggeln" - hatte ich übersehen, sorry).
Urlaub PLUS: Schaltuhr schaltet im Urlaub
Urlaub MINUS: Schaltuhr schaltet nicht im Urlaub
Urlaub (neutral): Schaltuhr schaltet, egal ob Urlaub anliegt oder nicht
Gleiches gilt für Feiertage.
An-/Abwesenheit ist eine Info im Popup - wird im Logikeditor die entsprechende GA mit dem Eingang verknüpft, schaltet die Schaltuhr entsprechend bei Abwesenheit oder eben bei Anwesenheit.
Hoffe, das ist so richtig wiedergegeben.
.....
Tom
Hast DU richtig wiedergegeben.
Solange DU fix eingestellte Zeiten - die keine oder nur beschränkte Änderungen benötigen, kannst DU die ZSU bzw. ZSU+ Bausteine direkt verwenden.
Wahrscheinlich hilft den Endbenutzer ein spezielles Interface mehr und es wäre einfach zu realisieren.
Übergangslösung:
Die eierlegende Wollmilchsau kann ich "sicher" nicht liefern.
Die Grundbausteine sind aber alle vorhanden, um sehr spezifische Lösungen zu realisieren.
Z.B.Deine Lüftungslösung:
sind 5 ZSU+ Zeitschaltuhren, wo DU nur die von-bis Zeiten (E3-E10) verändern kannst
die 5 Ausgänge haben eine ODER-Verknüpfung
alles anderen Eingänge sind fix belegt
werktags: Mo, Di, Mi, Do, Fr, kein Urlaub, kein Feiertag
2 x für vormittag & nachmittag
Samstag: Sa, kein Urlaub, kein Feiertag
Sonntag: So, kein Urlaub
Feiertag: Mo.Di,Mi,Do,Fr,Sa, kein Urlaub, ein Feiertag (Annahme: wenn SONNTAG und FEIERTAG dann wird Sonntag-ZSU aktiv)
Erklärung:
Mo, Di, ... So: ZSU+ E15 bis E21, 0=AUS/1=EIN
Urlaub, Feiertag: E23 und E22, 0=neutral, 1=Urlaub oder Feiertag, -1= kein Urlaub oder kein Feiertag
weiter E25 und E24 mit Ausgängen von Urlaub bzw. Feiertag verknüpft
Bei diesen Lösungsansatz kann die Zeitraumlogik Ihre Vorteile voll ausspielen.
Bei Gira ist obiger Lösungsansatz nicht möglich. Ein eigenes Interface für den Endnutzer ist nicht möglich.
Wesentlicher VORTEIL der Zeitraumlogik ist, dass bei einen Restart des Homeserver diese funktioniert. Die Gira UZSU aber nicht.
Die Gira Lösung ist nach meiner Sicht nicht der wirkliche Knaller für obige Lösung. Ein Restart kann immer
wieder vorkommen. Wenn diese Schaltung für einen kommerziellen Betrieb notwendig ist, ist die Gira-Lösung daher nach meiner Sicht ungeeignet.
Ich glaube an einen Mischansatz. Standardisierte ZSUen + individualisierte Lösungen (wie oben beschrieben).
Wollte einen Teil meiner eigenen Fragen gleich mal selbst beantworten:
Urlaub und Feiertag in den Schaltuhren haben drei Zustände (der Wechsel läuft eben nicht übers "Toggeln" - hatte ich übersehen, sorry).
Urlaub PLUS: Schaltuhr schaltet im Urlaub
Urlaub MINUS: Schaltuhr schaltet nicht im Urlaub
Urlaub (neutral): Schaltuhr schaltet, egal ob Urlaub anliegt oder nicht
Gleiches gilt für Feiertage.
Viele Grüße
Tom
Übrigens, habe Dein Posting nochmals gelesen.
Stimmt doch nicht .
Urlaub "-1" heißt: es wird nur geschaltet, wenn dieser Tag kein Urlaubstag ist. Dieselben Regeln gelten für Feiertage.
Super ich danke dir Hans. Bist ein Genie. Muss mich da erst mal bisschen rein denken in die Materie.
Heißt das in Österreich echt Festtage?
Was mir aufgefallen ist für jeden der den Code von oben Kopiert:!!!!!!
die Zeile:
5000|"Zeit-Funktionen\Festtage(15060)"|0|75|"E1 Debug lfd. Tag............................................... .....
scheint so nicht zu passen:
hab das so geschrieben und jetzt gehts:
5000|"Zeit-Funktionen\Festtage(15060)"|0|54|"E1 Debug lfd. Tag............................................... .....
Super ich danke dir Hans. Bist ein Genie. Muss mich da erst mal bisschen rein denken in die Materie.
Heißt das in Österreich echt Festtage?
Was mir aufgefallen ist für jeden der den Code von oben Kopiert:!!!!!!
die Zeile:
5000|"Zeit-Funktionen\Festtage(15060)"|0|75|"E1 Debug lfd. Tag............................................... .....
scheint so nicht zu passen:
hab das so geschrieben und jetzt gehts:
5000|"Zeit-Funktionen\Festtage(15060)"|0|54|"E1 Debug lfd. Tag............................................... .....
LG Andy
eine Optimierung, hoffentlich läuft es.
Gruss Hans
Code:
# -*- coding: iso8859-1 -*-
### (c) Hans Tiroch, Juni 2017
### -----------------------------------------------------------
### Festtage, basierend auf Baustein 15025 FeiertageAT
### V1.0 Final
### -----------------------------------------------------------
################
### Festtage ###
################
### 5000 Definition für HS/FS-Experte
### 5000|Bezeichnung|Remanent (0=nein/1=ja)|Anz.Eingänge|.n.|Anzahl Ausgänge|.n.|Version
### -----------------------------------------------------------
5000|"Zeit-Funktionen\Festtage(15060)"|0|52|"E1 Debug lfd. Tag TT.MM.JJ"|"E2 Vorlauf Voralarm (Tage)"|"F1 Custom (TT.MM;I;Name)"|"F2 Custom (TT.MM;I;Name)"|"F3 Custom (TT.MM;I;Name)"|"F4 Custom (TT.MM;I;Name)"|"F5 Custom (TT.MM;I;Name)"|"F6 Custom (TT.MM;I;Name)"|"F7 Custom (TT.MM;I;Name)"|"F8 Custom (TT.MM;I;Name)"|"F9 Custom (TT.MM;I;Name)"|"F10 Custom (TT.MM;I;Name)"|"F11 Custom (TT.MM;I;Name)"|"F12 Custom (TT.MM;I;Name)"|"F13 Custom (TT.MM;I;Name)"|"F14 Custom (TT.MM;I;Name)"|"F15 Custom (TT.MM;I;Name)"|"F16 Custom (TT.MM;I;Name)"|"F17 Custom (TT.MM;I;Name)"|"F18 Custom (TT.MM;I;Name)"|"F19 Custom (TT.MM;I;Name)"|"F20 Custom (TT.MM;I;Name)"|"F21 Custom (TT.MM;I;Name)"|"F22 Custom (TT.MM;I;Name)"|"F23 Custom (TT.MM;I;Name)"|"F24 Custom (TT.MM;I;Name)"|"F25 Custom (TT.MM;I;Name)"|"F26 Custom (TT.MM;I;Name)"|"F27 Custom (TT.MM;I;Name)"|"F28 Custom (TT.MM;I;Name)"|"F29 Custom (TT.MM;I;Name)"|"F30 Custom (TT.MM;I;Name)"|"F31 Custom (TT.MM;I;Name)"|"F32 Custom (TT.MM;I;Name)"|"F33 Custom (TT.MM;I;Name)"|"F34 Custom (TT.MM;I;Name)"|"F35 Custom (TT.MM;I;Name)"|"F36 Custom (TT.MM;I;Name)"|"F37 Custom (TT.MM;I;Name)"|"F38 Custom (TT.MM;I;Name)"|"F39 Custom (TT.MM;I;Name)"|"F40 Custom (TT.MM;I;Name)"|"F41 Custom (TT.MM;I;Name)"|"F42 Custom (TT.MM;I;Name)"|"F43 Custom (TT.MM;I;Name)"|"F44 Custom (TT.MM;I;Name)"|"F45 Custom (TT.MM;I;Name)"|"F46 Custom (TT.MM;I;Name)"|"F47 Custom (TT.MM;I;Name)"|"F48 Custom (TT.MM;I;Name)"|"F49 Custom (TT.MM;I;Name)"|"F50 Custom (TT.MM;I;Name)"|7|"A1 Festtag Schalter(0/1)"|"A2 Festtag Name (Txt)"|"A3 Voralarm (0/1)"|"A4 Voralarm Name (Txt)"|"A5 Datum nächster Festtag (Txt)"|"A6 Name nächster Festtag (Txt)"|"A7 Tage bis nächster Festtag (Num / max 365)"|"V1.0"
### 5001 Definition des Bausteins
### -----------------------------------------------------------
### Anz.Eingänge
### | Anz.Ausgänge
### | | Anz.Zeitspeicher
### | | | Anz.Speicher
### | | | | Berechnung bei Init
### | | | | |
5001|52|7|1|16|1
### 5002 Definition der Eingänge EN[index]
### -----------------------------------------------------------
### Initwert:
### -1 Festtag wird ignoriert
### 0 Namezeigen
### 1 Festtagbit + Namenzeigen
### 2 kein Festtagbit + Namenzeigen + Voralarm
### 3 Festtagbit + Namenzeigen + Voralarm
### -----------------------------------------------------------
### Index Eingang
### | Initwert (bei Text in "")
### | | Datenformat (0=Numerisch/1=Text)
### | | |
5002|1|''|1 # Debug lfd. Tag
5002|2|3|0 # Vorlauf Voralarm
5002|3|"TT.MM;-1;Custom"|1 # Custom 1 Datum,zeigen/melden,Name
5002|4|"TT.MM;-1;Custom"|1 # Custom 2 Datum,zeigen/melden,Name
5002|5|"TT.MM;-1;Custom"|1 # Custom 3 Datum,zeigen/melden,Name
5002|6|"TT.MM;-1;Custom"|1 # Custom 4 Datum,zeigen/melden,Name
5002|7|"TT.MM;-1;Custom"|1 # Custom 5 Datum,zeigen/melden,Name
5002|8|"TT.MM;-1;Custom"|1 # Custom 6 Datum,zeigen/melden,Name
5002|9|"TT.MM;-1;Custom"|1 # Custom 7 Datum,zeigen/melden,Name
5002|10|"TT.MM;-1;Custom"|1 # Custom 8 Datum,zeigen/melden,Name
5002|11|"TT.MM;-1;Custom"|1 # Custom 9 Datum,zeigen/melden,Name
5002|12|"TT.MM;-1;Custom"|1 # Custom 10 Datum,zeigen/melden,Name
5002|13|"TT.MM;-1;Custom"|1 # Custom 11 Datum,zeigen/melden,Name
5002|14|"TT.MM;-1;Custom"|1 # Custom 12 Datum,zeigen/melden,Name
5002|15|"TT.MM;-1;Custom"|1 # Custom 13 Datum,zeigen/melden,Name
5002|16|"TT.MM;-1;Custom"|1 # Custom 14 Datum,zeigen/melden,Name
5002|17|"TT.MM;-1;Custom"|1 # Custom 15 Datum,zeigen/melden,Name
5002|18|"TT.MM;-1;Custom"|1 # Custom 16 Datum,zeigen/melden,Name
5002|19|"TT.MM;-1;Custom"|1 # Custom 17 Datum,zeigen/melden,Name
5002|20|"TT.MM;-1;Custom"|1 # Custom 18 Datum,zeigen/melden,Name
5002|21|"TT.MM;-1;Custom"|1 # Custom 19 Datum,zeigen/melden,Name
5002|22|"TT.MM;-1;Custom"|1 # Custom 20 Datum,zeigen/melden,Name
5002|23|"TT.MM;-1;Custom"|1 # Custom 21 Datum,zeigen/melden,Name
5002|24|"TT.MM;-1;Custom"|1 # Custom 22 Datum,zeigen/melden,Name
5002|25|"TT.MM;-1;Custom"|1 # Custom 23 Datum,zeigen/melden,Name
5002|26|"TT.MM;-1;Custom"|1 # Custom 24 Datum,zeigen/melden,Name
5002|27|"TT.MM;-1;Custom"|1 # Custom 25 Datum,zeigen/melden,Name
5002|28|"TT.MM;-1;Custom"|1 # Custom 26 Datum,zeigen/melden,Name
5002|29|"TT.MM;-1;Custom"|1 # Custom 27 Datum,zeigen/melden,Name
5002|30|"TT.MM;-1;Custom"|1 # Custom 28 Datum,zeigen/melden,Name
5002|31|"TT.MM;-1;Custom"|1 # Custom 29 Datum,zeigen/melden,Name
5002|32|"TT.MM;-1;Custom"|1 # Custom 30 Datum,zeigen/melden,Name
5002|33|"TT.MM;-1;Custom"|1 # Custom 31 Datum,zeigen/melden,Name
5002|34|"TT.MM;-1;Custom"|1 # Custom 32 Datum,zeigen/melden,Name
5002|35|"TT.MM;-1;Custom"|1 # Custom 33 Datum,zeigen/melden,Name
5002|36|"TT.MM;-1;Custom"|1 # Custom 34 Datum,zeigen/melden,Name
5002|37|"TT.MM;-1;Custom"|1 # Custom 35 Datum,zeigen/melden,Name
5002|38|"TT.MM;-1;Custom"|1 # Custom 36 Datum,zeigen/melden,Name
5002|39|"TT.MM;-1;Custom"|1 # Custom 37 Datum,zeigen/melden,Name
5002|40|"TT.MM;-1;Custom"|1 # Custom 38 Datum,zeigen/melden,Name
5002|41|"TT.MM;-1;Custom"|1 # Custom 39 Datum,zeigen/melden,Name
5002|42|"TT.MM;-1;Custom"|1 # Custom 40 Datum,zeigen/melden,Name
5002|43|"TT.MM;-1;Custom"|1 # Custom 41 Datum,zeigen/melden,Name
5002|44|"TT.MM;-1;Custom"|1 # Custom 42 Datum,zeigen/melden,Name
5002|45|"TT.MM;-1;Custom"|1 # Custom 43 Datum,zeigen/melden,Name
5002|46|"TT.MM;-1;Custom"|1 # Custom 44 Datum,zeigen/melden,Name
5002|47|"TT.MM;-1;Custom"|1 # Custom 45 Datum,zeigen/melden,Name
5002|48|"TT.MM;-1;Custom"|1 # Custom 46 Datum,zeigen/melden,Name
5002|49|"TT.MM;-1;Custom"|1 # Custom 47 Datum,zeigen/melden,Name
5002|50|"TT.MM;-1;Custom"|1 # Custom 48 Datum,zeigen/melden,Name
5002|51|"TT.MM;-1;Custom"|1 # Custom 49 Datum,zeigen/melden,Name
5002|52|"TT.MM;-1;Custom"|1 # Custom 50 Datum,zeigen/melden,Name
### 5004 Definition der Ausgänge AN[index]
### -----------------------------------------------------------
### Index Ausgang
### | Initwert (bei Text in "")
### | | Runden binär (0=nein/1=ja)
### | | | Typ (1-send/2-sbc)
### | | | | Datenformat (0=Numerisch/1=Text)
### | | | | |
5004|1|-1|0|2|0 # Festtag
5004|2|'Init'|0|2|1 # Festtag Name
5004|3|-1|0|2|0 # Voralarm
5004|4|'Init'|0|2|1 # Voralarm für Festtag
5004|5|'Init'|0|2|1 # nächster Festtag Datum
5004|6|'Init'|0|2|1 # nächster Festtag Name
5004|7|-1|0|2|0 # nächster Festtag Anzahl Tage
### 5003 Definition des Speichers SN[index]
### -----------------------------------------------------------
### Index Speicher
### | Initwert (""/'' bei Text, {}/[] bei Dictionary/Liste), true/false bei Binär
### | | Remanent (0=nein/1=ja)
### | | |
5003|1|0|0 # Datetime Heute
5003|2|0|0 # Timedelta für Voralarm
5003|3|''|0 # Datum Heute als String %d.%m
5003|4|''|0 # Datum Voralarm als String %d.%m
5003|5|0|0 # Aktuelles Jahr
5003|6|0|0 # Custom Regex
5003|7|0|0 # Datenbank / Dictionary
5003|8|0|0 # Temporäre DB Abfrage
5003|9|0|0 # Liste der Festtage die angezeigt werden
5003|10|0|0 # Liste der Festtage incl. Datum von Heute
5003|11|0|0 # nächster Festtag aus Liste
5003|12|0|0 # nächster Festtag als Datum
5003|13|0|0 # Samstag/Sonntag
5003|14|0|0 # Lambda time.mktime(d.timetuple()) = f(d)
5003|15|0|0 # Lambda datetime.timedelta(days) = f(days)
5003|16|0|0 # Bedingung
### 5012 Definition der Formelzeile(n)
### 5012|Ende wenn Bedingung <> 0 (0=nein/1=ja)|Bedingung|Formel|Zeitformel|Pin-Ausgang|Pin-Zeitsppeicher|Pin-Speicher|Pin-Neg.Ausgang
### -----------------------------------------------------------
### EI 1==innerhalb Init/0==außerhalb Init
### x Eingang (EA/EN) / Ausgang (AA/AN/AC) / Speicher (SA/SN/SC)
### xA[index] Wert - vor Berechnung
### xN[index] Wert - aktuell
### xC[index] 1==Wert hat sich geändert/0==Wert hat sich nicht geändert
### EC[index] 1==Telegramm eingetroffen/0==Eingang nicht aktiv
### ON[index] Wert Zeitspeicher - sobald abgelaufen
### OC[index] 1==Zeitspeicher abgelaufen/0==Zeitspeicher läuft
### -----------------------------------------------------------
5012|0|"EI"|"lambda d: __import__('time').mktime((d.timetuple()))"|""|0|0|14|0 #seconds since Epoche
5012|0|"EI"|"lambda d: __import__('datetime').timedelta(days=int(d))"|""|0|0|15|0 #timedelta
## Datum auf SN[1]
5012|0|""|"__import__('datetime').datetime.now()"|""|0|0|1|0
## Debug Datum auf EN[1]
5012|0|"len(EN[1]) >= 6"|"__import__('datetime').datetime.strptime(EN[1],'%d.%m.%y')"|""|0|0|1|0
## Timer zum nächsten Datumswechsel berechnen
5012|0|""|""|"SN[14](SN[1].replace(hour=0,minute=0,second=0,microsecond=0)+SN[15](1)) - SN[14](SN[1])"|0|1|0|0
## Auf 00:00:00.000 setzen
5012|0|""|"SN[1].replace(hour=0,minute=0,second=0,microsecond=0)"|""|0|0|1|0
## Timedelta Voralarm auf SN[2]
5012|0|""|"SN[15](EN[2])"|""|0|0|2|0
## Datum String errechnen auf SN[3]
5012|0|""|"SN[1].strftime('%m/%d')"|""|0|0|3|0
## Voralarm (Datum SN[1] + Timedelta SN[2]) Datum auf SN[4]
5012|0|""|"(SN[1] + SN[2]).strftime('%m/%d')"|""|0|0|4|0
## aktuelles Jahr auf SN[5] (globale Berechnungen nur bei Jahreswechsel/Start (=SC[5]) oder bei Änderung an den Eingängen 2..n)
5012|0|"SN[1].year<>SN[5] or max(EC[2:])"|"SN[1].year"|""|0|0|5|0
## Regex und Converter für Custom Eingang 3-52
5012|0|"EI"|"lambda eingang: (lambda lres: len(lres) == 1 and {'{0:02d}/{1:02d}'.format(int(lres[0][1]),int(lres[0][0])):[int(lres[0][2]),lres[0][3]]} or {})(__import__('re').findall('(\d{1,2})\.(\d{1,2});([-]?\d);(.*)',eingang))"|""|0|0|6|0
## Datenbank leeren bei Jahreswechsel/Start
5012|0|"SC[5]"|"dict()"|""|0|0|7|0
## Custom entrys 3-52
5012|0|"SC[5]"|"map(lambda i: SN[7].update(SN[6](EN[i])),filter(lambda x: len(EN[x])<=8,range(3,53)))"|""|0|0|0|0
## Filter entry v[0]<0
5012|0|"SC[5]"|"dict((k,v) for k,v in SN[7].items() if v[0]>=0)"|""|0|0|7|0
### Festtag ###
5012|0|""|"[-1,'']"|""|0|0|13|0
## Suche nach aktuellem Datum in DB sonst -1 für kein Festtag setzen und '' für Festtag Text
5012|0|""|"SN[7].get(SN[3],SN[13])"|""|0|0|8|0
5012|0|"(SN[13][0]==1) and (SN[8][0] in [0,2])"|"[int(SN[8][0]+1),SN[8][1]]"|""|0|0|8|0
## Wenn Tag als Festtag dann 1 auf Ausgang 1
5012|0|""|"(SN[8][0] in [1,3])"|""|1|0|0|0
## Name des Festtags oder leerer String auf Ausgang 2
5012|0|""|"(SN[8][0] in [0,1,2,3]) and (SN[8][1]) or ''"|""|2|0|0|0
### Voralarm ###
5012|0|""|"[-1,'']"|""|0|0|13|0
## Suche nach Voralarm Datum in DB sonst -1 für kein Festtag setzen und '' für Festtag Text
5012|0|""|"SN[7].get(SN[4],SN[13])"|""|0|0|8|0
5012|0|"(SN[13][0]==1) and (SN[8][0] in [0,2])"|"[int(SN[8][0]+1),SN[8][1]]"|""|0|0|8|0
## Wenn Tag als Festtag mit Voralarm dann 1 auf Ausgang 3
5012|0|""|"(SN[8][0] in [3])"|""|3|0|0|0
## Name des Festtags oder leerer String auf Ausgang 4
5012|0|""|"(SN[8][0] in [2,3]) and (SN[8][1]) or ''"|""|4|0|0|0
## Liste angezeigter Festtage
5012|0|""|"dict((k,v) for k,v in SN[7].items() if v[0] in [0,1,2,3])"|""|0|0|9|0
## Erster Festtag im nächsten Jahr
5012|0|""|"SN[3] >= max(SN[9])"|""|0|0|16|0 # Bedingung + Schalter für Jahreswechsel (=1)
5012|0|"SN[13]"|"min(SN[9])"|""|0|0|11|0
## Heutiges Datum in sortierte Liste aller Ereignisse schreiben (wenn nicht in Liste)
5012|0|"SN[16]==0 and SN[3] not in SN[9]"|"SN[9].update({SN[3]:[0,'']})"|""|0|0|0|0
5012|0|"SN[16]==0"|"sorted(SN[9])"|""|0|0|10|0
## Nächster Festtag aus Liste
5012|0|"SN[16]==0"|"SN[10][SN[10].index(SN[3])+1]"|""|0|0|11|0
## nächster Festtag als Datum (datetime-format) (+ 1 Jahr, wenn SN[16]==1)
5012|0|""|"__import__('datetime').datetime.strptime('{0}/{1}'.format(SN[5]+int(SN[16]),SN[11]),'%Y/%m/%d')"|""|0|0|12|0
## Datum des nächsten Festtags als TT.MM auf Ausgang 5
5012|0|""|"SN[12].strftime('%d.%m')"|""|5|0|0|0
## Festtagname auf Ausgang 6
5012|0|""|"SN[7].get(SN[11])[1]"|""|6|0|0|0
## Tage bis zum nächsten Festtag auf Ausgang 7
5012|0|""|"(SN[12]-SN[1]).days"|""|7|0|0|0
Hy Hans, Hab ich heute getestet funktioniert jetzt echt SUPER. DANKE dir für die Hilfe. Mann kann den Baustein Multifunktionell für FESTTAGE, als auch Geburtstage oder sogar Altpapier Abholungen nutzen, ohne eine Externe Schaltliste (damit komme ich nicht klar) nutzen.
Großes Lob an dich.
Habe allerdings noch eine Frage die nicht zum Thema passt und nichts mit dem Baustein zu tun hat...
Wenn der Voralarm Schalten (eingestellter Wert Tage) zum Beispiel auf 1 geht. Wie könnte ich den Wert wieder Reseten.
Beispiel ich habe ein Costum Datum. Mit einem Voralarm 1 Tag. Der Tag x Trifft ein. Wie kann ich das Reseten?
Grade Klick gemacht... glaub ich? Mit einem Timer? Oder Würdest du das anders Lösen?
Wenn das Event vorbei ist?
Hallo Hans, vielleicht kannst Du damit was anfangen: HS Exceptions.JPG
Ich kann's natürlich nicht mit Sicherheit den ZSU-Logiken zuordnen - ist aber das einzige, an dem ich zur Zeit rumexperimentiere ...
Bin selbst nicht der Python-Experte, aber vielleicht siehst Du ja gleich, ob's überhaupt mit den ZSU-Logiken zusammenhängt oder nicht.
Danke und viele Grüße
Tom
Hallo Hans, vielleicht kannst Du damit was anfangen:..
Ich kann's natürlich nicht mit Sicherheit den ZSU-Logiken zuordnen - ist aber das einzige, an dem ich zur Zeit rumexperimentiere ...
Bin selbst nicht der Python-Experte, aber vielleicht siehst Du ja gleich, ob's überhaupt mit den ZSU-Logiken zusammenhängt oder nicht.
Danke und viele Grüße
Tom
Du hast recht. Es ist der Feiertagskalender (15025).
Irgendwie ist hier die Version 1.0 statt 1.1 im Umlauf. Bitte austauschen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar