[closed]Tageszeiten Script - verhalten anders seit neuer FW?

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
nseith
Beiträge: 167
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe

[closed]Tageszeiten Script - verhalten anders seit neuer FW?

Beitrag von nseith » 16.04.2018, 09:29

Morgen Zusammen,

ich verwende seit Jahren das Tageszeiten Script um meine Rollaeden zu fahren.
Jetzt ist mir aufgefallen dass bei Nacht die Zeit sich aendert - das war sonst immer 22 Uhr und gestern war es 22.20 ... davor 22.15 ...

Das Script wird periodisch alle 5 Minuten aufgerufen.
Ich weiss leider nicht mehr den Ursprung weil ich es schon so lange verwende (laut Programm seit Jan 2015 - also sorry und danke beim Urheber)

Code: Alles auswählen

! Tageszeiten
!                        Tagesbeginn - 2 <04.00 Nacht
! Tagesbeginn - 2 <04.00 Tagesbeginn - 1        frühmorgens
! Tagesbeginn - 1        Tagesbeginn            Morgengrauen
! Tagesbeginn            Mittag - 1             Vormittag
! Mittag - 1             Mittag + 1             Mittag
! Mittag + 1             Tagesende              Nachmittag
! Tagesende              Tagesende + 1          Dämmerung
! Tagesende + 1          Tagesende + 2 >2200    Abend
! Tagesende + 2 >2200                           Nacht

real c_zeit = 
  (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
real c_tagesbeginn = 
  (0.01 * system.SunriseTime("%M").ToInteger()) + system.SunriseTime("%H").ToInteger();
real c_tagesende =  
  (0.01 * system.SunsetTime("%M").ToInteger()) + system.SunsetTime("%H").ToInteger();
real c_mittag = 0.5 * (c_tagesbeginn + c_tagesende);

integer v_tageszeit = 0; ! Nacht

if ((c_zeit < c_tagesende + 2) || (c_zeit < 22.00)) {
  v_tageszeit = 7; ! Abend
}

if (c_zeit < c_tagesende + 1) {
  v_tageszeit = 6; ! Abenddaemmerung
}

if (c_zeit < c_tagesende) {
  v_tageszeit = 5; ! Nachmittag
}

if (c_zeit < c_mittag + 1) {
  v_tageszeit = 4; ! Mittag
}

if (c_zeit < c_mittag - 1) {
  v_tageszeit = 3; ! Vormittag
}

if (c_zeit < c_tagesbeginn) {
  v_tageszeit = 2; ! Morgengrauen
}

if (c_zeit < c_tagesbeginn - 1) {
  v_tageszeit = 1; ! fruemorgens;
}

if ((c_zeit < c_tagesbeginn - 2) && (c_zeit < 04.00)) {
  v_tageszeit = 0; ! Nacht
}

object s_tageszeit = dom.GetObject("Tageszeit");
if (s_tageszeit.Value() != v_tageszeit) {
  s_tageszeit.State(v_tageszeit);
}

Meine Frage:
Ein reboot hat an dem verhalten nichts geaendert.
Hat das sonst noch jmd. bemerkt?

Danke
N
Zuletzt geändert von nseith am 16.04.2018, 10:22, insgesamt 1-mal geändert.

Benutzeravatar
JRiemann
Beiträge: 3342
Registriert: 12.11.2015, 22:05
Wohnort: Aurich

Re: Tageszeiten Script - verhalten anders seit neuer FW?

Beitrag von JRiemann » 16.04.2018, 10:04

Das Skript kommt sicher von hier:
>> HomeMatic-INSIDE <<

Ich vermute das Deine Erinnerung Dich täuscht. Durch die jetzt länger werdenden Tage verschieben sich natürlich auch der Sonnenaufgang und der Sonnenuntergang. Anhand dieser Punkte werden die Tageszeiten berechnet. Einzig "Mittag" müsste fest jeden Tag um 13 Uhr gesetzt werden. Alle anderen Tageszeiten sollten allerdings variabel sein und sich täglich ein wenig verschieben.
Viele Grüße!
Jörg

nseith
Beiträge: 167
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe

Re: Tageszeiten Script - verhalten anders seit neuer FW?

Beitrag von nseith » 16.04.2018, 10:21

Hey Joerg,

danke Dir!
gruebel ... altwerden ist wirklich kacke *lach

Gruss
N

alchy
Beiträge: 7059
Registriert: 24.02.2011, 02:34

Re: [closed]Tageszeiten Script - verhalten anders seit neuer

Beitrag von alchy » 16.04.2018, 10:25

nseith hat geschrieben: Das Script wird periodisch alle 5 Minuten aufgerufen.
Und dies ist, mit Verlaub, vielleicht nicht so ganz der beste Weg.
Aber die Anforderungen sind ja nicht so Recht definiert.

Alchy

.................... Full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

nseith
Beiträge: 167
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe

Re: [closed]Tageszeiten Script - verhalten anders seit neuer

Beitrag von nseith » 16.04.2018, 10:51

Hi Alchy,

Du weisst wenn Du eine Anmerkung hast - bin ich natuerlich ganz Ohr.

Ich habe dieses Script einfach ganz am Anfang verwendet und bis jetzt genuegt es meinen Anforderungen.
Ich arbeite einfach mit der SV Tageszeit in vielen Programmen:

z.B. beim gehen - entscheide ich was mit den Jal ect. Passiert oder eben wann wo wie die Rollaeden fahren.

Gerne freue ich mich auf Input von Dir.
N

Benutzeravatar
JRiemann
Beiträge: 3342
Registriert: 12.11.2015, 22:05
Wohnort: Aurich

Re: [closed]Tageszeiten Script - verhalten anders seit neuer

Beitrag von JRiemann » 16.04.2018, 11:03

alchy hat geschrieben:Und dies ist, mit Verlaub, vielleicht nicht so ganz der beste Weg.
Da kann man dem TE keinen Vorwurf machen. Zitat aus der Installationsanleitung:

Code: Alles auswählen

Anschließend wird ein neues Programm erzeugt, dass im »Wenn«-Abschnitt z.Bsp. alle 5 Minuten via Zeimodul aufgerufen wird. In der dazugehörigen »Dann«-Anweisung, ist der Typ »Skript« auszuwählen und folgender Quellcode einzugeben:
Der Aufbau des Skript verlangt nach einem periodischen Aufruf. Es wird ja eine einzige Variable im Tagesverlauf mehrfach neu gesetzt. Um ohne periodischen Aufruf arbeiten zu können müsste wohl das gesamte Konzept des Skript neu überdacht werden.
Viele Grüße!
Jörg

alchy
Beiträge: 7059
Registriert: 24.02.2011, 02:34

Re: [closed]Tageszeiten Script - verhalten anders seit neuer

Beitrag von alchy » 16.04.2018, 11:24

Ich habe dem TE ja keinen Vorwurf gemacht, sondern nur eine Anmerkung zum Nachdenken.
Denn es stellt sich für mich ja nur die Frage, ob man dafür wirklich alle 5min ein Script starten MUSS.
Mein gern verwendetes Beispiel dafür: niemand rennt alle 5min zur Tür und schaut ob wer klingelt, sondern man reagiert auf das Klingeln.

Natürlich ist dies abhängig von den Anforderungen, welche man so hat.
Es kann durchaus sein, das man auch mal periodisch etwas machen muss (wobei da mein Favorit immer noch ein Hardwaretrigger in Form z.B. der Temperaturmeldung eines Sensors wäre, statt dem Scheduler)
Aber da dies hier nicht genau beschrieben ist, kann man auch keine Alternative bieten.

Bin schon wieder weg, wollte keine Diskussion anzetteln.

Alchy

.................... Full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

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