Tageszeiten-Script "verfeinern"

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

nseith
Beiträge: 320
Registriert: 23.06.2013, 11:08
Wohnort: bei Karlsruhe
Hat sich bedankt: 8 Mal
Danksagung erhalten: 3 Mal

Tageszeiten-Script "verfeinern"

Beitrag von nseith » 09.05.2016, 21:55

Guten Abend,
ich versuche gerade das TageszeitenScript
https://www.homematic-inside.de/tecbase ... nterteilen
zu verfeinern denn (wie aus seinem Beispiel)

Vormittag 07:00 - 12:00
Nachmittag 14:00 - 21:00

ist mir einfach zu lange.

Hat das jemand schon gemacht?

Besten Dank Euch
N

Homeberry
Beiträge: 174
Registriert: 22.10.2015, 19:45
Hat sich bedankt: 1 Mal
Danksagung erhalten: 7 Mal

Re: Tageszeiten-Script "verfeinern"

Beitrag von Homeberry » 10.05.2016, 06:16

Du müsstest nur Werte verändern. Ich finde das Beispiel eigentlich gut lesbar.
Nur würde ich einiges umbenennen oder ganz abändern. Zum Beispiel halte ich es nicht sehr wartbar, oben eine Mittagszeit (13 Uhr) festzulegen und unten dann den Bereich von +/- 1 h um diese Zeit herum festzulegen. Dann doch lieber alle Zeitbereiche oben festlegen und unten nur noch prüfen. Bei Änderungen gibts dann nur eine Stelle die man ändert.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Tageszeiten-Script "verfeinern"

Beitrag von alchy » 10.05.2016, 15:17

Es ist doch nur Mathematik. :shock:

Code: Alles auswählen

string ausgabe = "nachts";
var wert =  (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();
if (wert  >= 6.23)   { ausgabe ="morgens"; }
if (wert  >= 10.12)  { ausgabe ="vormittags"; }
if (wert  >= 11.14)  { ausgabe ="mittags"; }
if (wert  >= 14.02)  { ausgabe ="nachmittags"; }
if (wert  >= 14.38)  { ausgabe ="nachmittags Kaffeezeit"; }
if (wert  >= 15.05)  { ausgabe ="nachmittags Kaffeezeit beendet"; }
if (wert  >= 15.15)  { ausgabe ="nachmittags Kaffeezeit beendet aber noch nicht aufgestanden"; }
if (wert  >= 18.18)  { ausgabe ="abends"; }
if (wert  >= 22.08)  { ausgabe ="nachts"; }
WriteLine(ausgabe);
Alchy

Blacklist................... almost 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.

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: Tageszeiten-Script "verfeinern"

Beitrag von Homoran » 10.05.2016, 15:26

alchy hat geschrieben:if (wert >= 14.38) { ausgabe ="nachmittags Kaffeezeit"; }
if (wert >= 15.05) { ausgabe ="nachmittags Kaffeezeit beendet"; }
if (wert >= 15.15) { ausgabe ="nachmittags Kaffeezeit beendet aber noch nicht aufgestanden"; }
:mrgreen: :mrgreen: :mrgreen:
ich glaube jetzt ist die Auflösung hoch genug.

Aber ernsthaft, was ist zwischen 0:00 und 6:23?
Zumindest, wenn da ein reboot war?

Gruß
Rainer
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

BadenPower

Re: Tageszeiten-Script "verfeinern"

Beitrag von BadenPower » 10.05.2016, 16:05

Homoran hat geschrieben: Aber ernsthaft, was ist zwischen 0:00 und 6:23?
Zumindest, wenn da ein reboot war?
Wenn das Skript gestartet wurde, dann ist es "nachts",siehe Zeile 1.


.

Benutzeravatar
Homoran
Beiträge: 8613
Registriert: 02.07.2013, 15:29
Wohnort: Köln
Danksagung erhalten: 4 Mal

Re: Tageszeiten-Script "verfeinern"

Beitrag von Homoran » 10.05.2016, 16:09

:oops: so weit hoch guck ich doch nicht :oops:
Alle meine Hinweise sind auf eigene Gefahr umzusetzen. Immer einen Fachmann zu Rate ziehen!

Benutzeravatar
joni-blue
Beiträge: 1171
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Tageszeiten-Script

Beitrag von joni-blue » 11.05.2016, 17:33

Hier meine meine Version verkürzt und erstellt und auch gleichzeitig die Tage als variable

jeweils die Variable als Zeichenkette erstellen

Wochentag
Tagesabschnitt

Code: Alles auswählen

! Version 2.1.1

real tmpA = (0.01 * system.Date("%M").ToInteger()) + system.Date("%H").ToInteger();

if ((tmpA >= 05) && (tmpA < 10)) {
    dom.GetObject("Tagesabschnitt").State("Morgen");
}
if ((tmpA >= 10) && (tmpA < 12)) {
    dom.GetObject("Tagesabschnitt").State("Vormittag");
}
if ((tmpA >= 12) && (tmpA < 14)) {
    dom.GetObject("Tagesabschnitt").State("Mittag");
}
if ((tmpA >= 14) && (tmpA < 16)) {
    dom.GetObject("Tagesabschnitt").State("Nachmittag");
}
if ((tmpA >= 16) && (tmpA < 22)) {
    dom.GetObject("Tagesabschnitt").State("Abend");
}
if ((tmpA >= 22) && (tmpA < 05)) {
    dom.GetObject("Tagesabschnitt").State("Nacht");
}



integer tmpB = system.Date("%w").ToInteger();
string tmpC = "";
if (tmpB == 1) {tmpC = "Montag";}
if (tmpB == 2) {tmpC = "Dienstag";}
if (tmpB == 3) {tmpC = "Mittwoch";}
if (tmpB == 4) {tmpC = "Donnerstag";}
if (tmpB == 5) {tmpC = "Freitag";}
if (tmpB == 6) {tmpC = "Samstag";}
if (tmpB == 7) {tmpC = "Sonntag";}
dom.GetObject("Wochentag").State(tmpC);
Gesendet von iPhone mit Tapatalk
Reboot tut gut ! ! !

BadenPower

Re: Tageszeiten-Script "verfeinern"

Beitrag von BadenPower » 11.05.2016, 17:55

Code: Alles auswählen

integer tmpB = system.Date("%w").ToInteger();
string tmpC = "";
if (tmpB == 1) {tmpC = "Montag";}
if (tmpB == 2) {tmpC = "Dienstag";}
if (tmpB == 3) {tmpC = "Mittwoch";}
if (tmpB == 4) {tmpC = "Donnerstag";}
if (tmpB == 5) {tmpC = "Freitag";}
if (tmpB == 6) {tmpC = "Samstag";}
if (tmpB == 7) {tmpC = "Sonntag";}
dom.GetObject("Wochentag").State(tmpC);
Wobei das nicht richtig funktionieren dürfte, denn der Sonntag ist bei %w 0 und nicht 7.


Persönlich würde ich es aber so machen:

Code: Alles auswählen

string tmpC = "Sonntag;Montag;Dienstag;Mittwoch;Donnerstag;Freitag;Samstag";
(dom.GetObject("Wochentag")).State(tmpC.StrValueByIndex(";",(system.Date("%w")).ToInteger()));

.

Benutzeravatar
joni-blue
Beiträge: 1171
Registriert: 04.01.2012, 12:20
System: CCU
Wohnort: Hannover
Hat sich bedankt: 6 Mal
Danksagung erhalten: 1 Mal

Re: Tageszeiten-Script "verfeinern"

Beitrag von joni-blue » 11.05.2016, 18:09

uh, da muss ich mal nächsten Sonntag drauf achten
Reboot tut gut ! ! !

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

Re: Tageszeiten-Script

Beitrag von Xel66 » 11.05.2016, 18:10

joni-blue hat geschrieben:Hier meine meine Version verkürzt und erstellt und auch gleichzeitig die Tage als variable
Wozu braucht man so was? Der Charme der Originalversion bestand ja gerade darin, dass dort in Abhängigkeit vom aktuellen Sonnenauf- bzw. -untergang die Dämmerungszeiten festgestellt werden konnten und Aktionen daraus abgeleitet werden. Die zusätzlichen Tageszeiten ware eher ein Abfallprodukt des Scripts. Eine reine Zuweisung zu den Variablen an Hand von festen Tagen und Uhrzeiten kann man auch mit einem zusammengeklickten Programm und dem Zeitmodul realisieren. Da muss kein Script alle paar Minuten rennen um eine Systemvariable sechs mal am Tag umzuschalten.

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 allgemein“