Monatsanfang per Skript herausfinden

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
duffy6
Beiträge: 112
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 5 Mal

Monatsanfang per Skript herausfinden

Beitrag von duffy6 » 15.02.2020, 11:30

Hallo zusammen,

zwei Fragen an Euch:
1) Wie kann ich denn mittels Skript herausfinden, ob es um 0:01 Uhr einen Monatswechsel gegeben hat?
EDIT: sehe es gerad selber, ich lasse das Skript einfach am 1. Tag jeden 1. Monats laufen!

2) Und wie kann ich den Timecode (system.Date Integer) des vergangenen Monats-Ersten herausfinden.
--> noch ungeklärt

Mit diesen beiden Angaben würde ich dann nämlich gerne Werte aus meinem CCU-historian abholen.


Thx!

Gruß
duffy6

Xel66
Beiträge: 7500
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 277 Mal

Re: Monatsanfang per Skript herausfinden

Beitrag von Xel66 » 15.02.2020, 12:12

Ich verstehe Dein Problem nicht. Du kannst mit den Werkzeugen aus der Homematic-Scriptbeschreibung doch beliebige Zeitstrings zusammenbauen. Da ist es doch eher kein Problem vom aktuellen Monat einen abzuziehen. Dann wird doch automatisch der Monat des Vormonats draus. Lediglich beim Januar musst Du Dir was überlegen und auch vom Jahr einen abziehen. Ich würde es aber anders machen. Ich würde für den Tag des Scriptlaufes (Monatserster) einen Tag abziehen und lediglich den Tag im String durch eine Eins ersetzen.

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 141 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
274 Programme, 265 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.51.6.20200420
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

duffy6
Beiträge: 112
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 5 Mal

Re: Monatsanfang per Skript herausfinden

Beitrag von duffy6 » 15.02.2020, 12:17

Ich verstehe Deine Antwort leider nicht.

Gehen wir davon aus, dass das Skript am Monatsersten (sagen wir bspw. den 1.3.2020) um 0:00 Uhr startet.
Wie würdest Du nun den Timecode vom 1.2.2020 bestimmen?

Vielleicht liegt die Lösung so nahe und ich sehe sie nur nicht...

Grüße und Danke
duffy6

Xel66
Beiträge: 7500
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg
Hat sich bedankt: 32 Mal
Danksagung erhalten: 277 Mal

Re: Monatsanfang per Skript herausfinden

Beitrag von Xel66 » 15.02.2020, 12:19

Timecode vom 1.3. nehmen einen Tag abziehen (dann hast Du den 29.02.) und im String die 29 gegen eine 1 austauschen und schon wird der 1.2. draus. Und für den Jahreswechsel gilt in diesem Falle das Gleiche, weil Du schon in dem Jahr bist, wenn Du vom 1.1. einen Tag abziehst (und dann die 31 durch eine 1 ersetzt).

Gruß Xel66
---------------------------------------------------------------------------------
358 Kanäle in 141 Geräten und 114 CUxD-Kanäle in 24 CUxD-Geräten:
274 Programme, 265 Systemvariablen und 144 Direktverknüpfungen,
RaspberryMatic Version 3.51.6.20200420
Testsystem: CCU3 3.49.17
---------------------------------------------------------------------------------

duffy6
Beiträge: 112
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 5 Mal

Re: Monatsanfang per Skript herausfinden

Beitrag von duffy6 » 15.02.2020, 12:21

ahhhh, sehr coole Idee! Danke!

Ich bin leider nicht so der Skripter. Hast Du da ein paar Code-Schnipsel für mich?

alchy
Beiträge: 9772
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 20 Mal
Danksagung erhalten: 276 Mal

Re: Monatsanfang per Skript herausfinden

Beitrag von alchy » 15.02.2020, 14:43

Code: Alles auswählen

!Vom 01 des Monats auf den 01. des Vormonats
!by Alchy https://homematic-forum.de/forum/viewtopic.php?f=19&t=56839#p564080
time Zeit = @2020-03-01 00:00:[email protected];
WriteLine(Zeit.Format("%d.%m.%Y") #" = "#Zeit.ToInteger());
string sLastMF = (Zeit.ToInteger() - 86400).ToTime().Format("01"#".%m.%Y");
WriteLine(sLastMF #" = " #sLastMF.ToTime().ToInteger());
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 allgemein“