Schichtarbeit

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
lusche800
Beiträge: 22
Registriert: 23.04.2017, 17:15

Schichtarbeit

Beitrag von lusche800 » 08.08.2017, 21:02

Hallo Profis.

Ich habe seit ca. einem halben Jahr die CCU2, mit der ich die Rolläden und Heizungen steuere. Soweit habe ich alles hinbekommen und es funktioniert alles tadellos.

Nun wollte ich, da ich Schichtarbeiter bin, meine Schichtarbeitszeit in der CCU2 automatisch morgens um 00:01 abrufen lassen.
Es gibt vier Arten:
- Tagschicht
- Nachtschicht
- Frei 1
- Frei 2
und wieder von vorne.
Da ich heute das Astro-Zeit-Skript installiert habe, kam mir die Idee, die angezeigte Jahreszahl ( aktueller Tag im Jahr ) zu nutzen. Da meine Schichtarbeit sich alle vier Tage wiederholt, war das ein guter Ansatz.

Zum besseren Verständnis:
Wenn ich am 01.01. ( Tag 1 im Jahr ) Tagschicht habe, habe ich am 05.01. ( Tag 5 ), 09.01. ( Tag 9 ), usw. wieder Tagschicht. Das Ganze gilt natürlich auch für die anderen Arten.

Tagschicht: 01.01. ( T 1 ), 05.01. ( T 5 ), 09.01. ( T 9 ), 13.01. ( T 13 ), 17.01. ( T 17 )
Nachtschicht: 02.01. ( T 2 ), 06.01. ( T 6 ), 10.01. ( T 10 ), 14.01. ( T 14 ), 18.01. ( T 18 )
Frei 1: 03.01. ( T 3 ), 07.01. ( T 7 ), 11.01. ( T 11 ), 15.01. ( T 15 ), 19.01. ( T 19 )
Frei 2: 04.01. ( T 4 ), 08.01. ( T 8 ), 12.01. ( T 12 ), 16.01. ( T 16 ), 20.01. ( T 20 )

Für die jeweilige Anzeige gibt es zwei Möglichkeiten:
1) Arbeitszeit -> Tagschicht, Nachtschicht, Frei 1 oder Frei 2 ( Jeweilige Arbeitszeit wird angezeigt )
2) Tagschicht -> Ja ( Jeweilige Arbeitszeit wird mit einem Ja angezeigt )
Nachtschicht -> Nein
Frei 1 -> Nein
Frei 2 -> Nein

Laut Astro-Zeit-Skript ist heute ( 08.08.2017 ) Tag 220. Also habe ich folgende Systemvariable erstellt:

Frei_1 Logikwert wahr=Ja unwahr=Nein

Folgende Systemvariable existiert:

Jahreszahl Zahl Minimalwert=0 Maximalwert=65000

Also habe ich folgendes Skript erstellt zum testen:

Code: Alles auswählen

! Freie 1er
var obj = dom.GetObject("Frei_1");
var v1 = dom.GetObject("Jahreszahl");


if (v1.Value() == 220.00)
{
var x = obj.State(1);
}
else
{
var x = obj.State(0);
}
Das Skript hat bei der Überprüfung keine Fehler und wird jeden Tag um 00:01 abgerufen. Da ich den Jahrestag 220 genommen habe, hätte eigentlich die Variable Frei_1 auf Ja springen müssen, hat sie aber nicht. Es wurde ein Nein angezeigt.
Ich habe natürlich im Netz gesucht und alles mögliche gefunden, nur mein Problem nicht.
Zudem ist mein Test ja nur auf den 220 Tag beschränkt. Ich muß natürlich noch die ganzen anderen Tage hinterlegen, damit beim entsprechenden Tag die Variable auf Ja umschaltet.

Über Eure Hilfe würde ich mich freuen, da ich mittlerweile mit den Nerven am Ende bin. :cry:
Vielen Dank im voraus für Eure Ideen und Hilfe. :lol:

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Schichtarbeit

Beitrag von Bratmaxe » 09.08.2017, 09:36

Hallo,

also warum du da nochmal die Variable "x" machst verstehe ich nicht.
Versuche es mal hiermit:

Code: Alles auswählen

! Freie 1er
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get("Jahreszahl").Value() == 220)
{
	dom.GetObject(ID_SYSTEM_VARIABLES).Get("Frei_1").State(1);
}
else
{
	dom.GetObject(ID_SYSTEM_VARIABLES).Get("Frei_1").State(0);
}
alternativ kannst du das auch ganz einfach über ein Zeitmodul steuern. Hier musst du dann einfach die Variabeln im DANN Zweig entsprechend Schalten.
Für jede Varieble dann 1x anlagen und den Starttag jeweils um 1 Tag erhöhen (02.01.2017, 03.01.2017 und 04.01.2017)
Zeitmodul.jpg
Wobei dieses Programm heute ja nur noch in die Else-Schleife laufen kann da ja schon Tag 221 ist!

Gruß Carsten
Gruß Carsten

lusche800
Beiträge: 22
Registriert: 23.04.2017, 17:15

Re: Schichtarbeit

Beitrag von lusche800 » 09.08.2017, 15:46

Hallo Bratmaxe.

Vielen Dank für den Hinweis mit dem Zeitmodul. Ich habe mich so auf das Skript versteift, das ich an das Zeitmodul nicht mehr gedacht habe. Ist natürlich auch am einfachsten. :?

Das Skript habe ich dennoch getestet, natürlich abgeändert auf Tag 221 und Frei_2, hat aber nicht funktioniert. Ist aber kein Problem, da ich das Zeitmodul benutzen werde.

Nochmals vielen Dank für die Hilfe. :D und Daumen hoch. :D

P.S.: Die Variable x kommt noch von den Versuchen. Es hat weder so noch so funktioniert. Alle anderen Skripts waren zu kompliziert um sie auf mein Vorhaben umzuschreiben.

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Schichtarbeit

Beitrag von Bratmaxe » 09.08.2017, 16:49

Noch kurz zur Info, das Zeitmodul wird immer weiter laufen, das heisst das Tag 1 im Jahr 2018 nicht unbedingt Arbeit 1 ist, sondern es wird feste der 4 Tage Zyklus eingehalten. Wenn du immer wieder am 1.1 des Jahres nur mit deiner Schicht startest, musst du evtl doch auf ein Skript wechseln!
Gruß Carsten

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Schichtarbeit

Beitrag von Xel66 » 13.08.2017, 19:09

Für die Schichtarbeit habe ich schon mal hier im Forum vorgestellt. Diese Lösung berechnet den Schichtplan täglich neu und stellt den Schichttag in einer anzulegenden Systemvariable zur Verfügung. Im Script müssen natürlich die persönlichen Schichttage als Grundrhythmus und der Starttag hinterlegt werden. Danach läuft der Plan einfach immer weiter. Dieses Scipt eignet sich ausschließlich für feste stätig wiederholende Schichtpläne, nicht für variable Dienstpläne.

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

Antworten

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