Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
G-Punkt
Beiträge: 10
Registriert: 04.12.2018, 06:54
Wohnort: Münsterland

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von G-Punkt » 06.02.2019, 09:29

Hallo zusammen!
Mein erstes Posting hier und gleich eine Hilfestellung von Anfänger zu (warscheinlich) ebenfalls Anfänger: :lol:
Ralle14 hat geschrieben:
05.02.2019, 23:29
...Ich habe aber alle Variablen angelegt.
Die Variable !Minuten_vor_S ist doch nicht vorgesehen....
Nein, natürlich nicht! "!Minuten_vor_S" ist nur das Ende der Fehlermeldung, die sich aus den ersten Zeilen des Sriptes ergibt!

Anhand Deiner Fragestellung befürchte ich, daß Du die HM-Scriptsprache nicht verstehst und nicht nachvollziehen kannst, was das Script macht!

Gehe nochmal sämtliche Schritte der Installationsanweisung (Seite 1 dieses Threads) durch und kopiere das Script '1zu1'. Tritt danach immer noch ein Fehler auf, mußt Du wohl an anderer Stelle suchen!
Gruß
Guido

majacom
Beiträge: 11
Registriert: 13.06.2018, 16:22

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von majacom » 06.02.2019, 17:46

majacom hat geschrieben:
04.02.2019, 16:20
Hallo,

ich bin Neu hier und lese seit einiger Zeit mit und habe sehr viel gelernt in dem Forum.
Nun hätte ich auch eine Frage bezgl. eines Scriptes. Vielleicht kann mir hier auch Jemand behilflich sein.

Ich setzte das Astro/Zeit-Skript von hier erfolgreich ein.

Ich würde jetzt noch gerne zwei weitere Variablen mit dem Script setzen lassen und zwar, dass mir zwei Uhrzeiten zusätzlich angezeigt werden.

Ausgabe Variable "Uhrzeit_Aquariumlicht_Sonnenaufgang" (reale Einschaltzeit in HH.MM)

Uhrzeit von 30 Minuten vor SA, aber nicht früher als 6:30 soll berücksichtigt werden

Ausgabe Variable "Uhrzeit:Aquariumlicht_Sonnenuntergang" (reale Ausschaltzeit in HH.MM)

Uhrzeit von 180 Minuten nach SU, aber nicht später als 22:00 soll berücksichtigt werden

Wie ich dies als Wenn-Bedingung im Programmablauf zum Ein/Ausschalten der Beleuchtung realisiere weiß ich, jedoch nicht wie das Script zur Uhrzeitausgabe in einer Variable aussehen soll bei den jeweiligen Bedingungen.

Hat Jemand einen Vorschlag?

Viele Grüße
Markus

Kann mir Jemand behilflich sein?

majacom
Beiträge: 11
Registriert: 13.06.2018, 16:22

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von majacom » 06.02.2019, 23:14

Code: Alles auswählen

real SA1 = (1.0*system.SunriseTime("%H").ToInteger()) + 0.01*system.SunriseTime("%M").ToInteger();
real SA2 = (SA1 - 0.25);
if (SA2 < 6.00) { dom.GetObject("Aquariumlicht an um").State(6.00)}
if (SA2 > 6.00) { dom.GetObject("Aquariumlicht an um").State(SA2)};

real SU1 = (1.0*system.SunsetTime("%H").ToInteger()) + 0.01*system.SunsetTime("%M").ToInteger();
real SU2 = (SU1 + 3.00);
if (SU2 > 21.45) { dom.GetObject("Aquariumlicht aus um").State(21.45)}
if (SU2 < 21.45) { dom.GetObject("Aquariumlicht aus um").State(SU2)}
if (SU2 < 19.30) { dom.GetObject("Aquariumlicht aus um").State(19.30)}
Habe es mal alleine versucht. Es funktioniert soweit!
Wenn Jemand Verbesserungsvorschläge hat, dann bitte schreiben.

Benutzeravatar
G-Punkt
Beiträge: 10
Registriert: 04.12.2018, 06:54
Wohnort: Münsterland

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von G-Punkt » 07.02.2019, 08:27

Mit dem Einsatz von '...else...' gewinnst Du ein ganz klein wenig Rechenzeit! :wink:

Code: Alles auswählen

real SA1 = (1.0*system.SunriseTime("%H").ToInteger()) + 0.01*system.SunriseTime("%M").ToInteger();
real SA2 = (SA1 - 0.25);
if (SA2 < 6.00) { dom.GetObject("Aquariumlicht an um").State(6.00)}
else { dom.GetObject("Aquariumlicht an um").State(SA2)};

real SU1 = (1.0*system.SunsetTime("%H").ToInteger()) + 0.01*system.SunsetTime("%M").ToInteger();
real SU2 = (SU1 + 3.00);
if (SU2 < 19.30) { dom.GetObject("Aquariumlicht aus um").State(19.30)}
elseif (SU2 < 21.45) { dom.GetObject("Aquariumlicht aus um").State(SU2)}
else { dom.GetObject("Aquariumlicht aus um").State(21.45)}
Ich habe mir dieses Astro-Script nicht angeschaut. Da Du die Variablen aber hier deklarierst, scheinen sie nicht Bestandteil des Astro-Scriptes zu sein. Insofern könntest Du auch noch 3 Scriptvariablen einsparen:

Code: Alles auswählen

real rVariable = ((1.0*system.SunriseTime("%H").ToInteger()) + 0.01*system.SunriseTime("%M").ToInteger()) - 0.25;
if (rVariable < 6.00) { dom.GetObject("Aquariumlicht an um").State(6.00)}
else { dom.GetObject("Aquariumlicht an um").State(rVariable)};

rVariable = ((1.0*system.SunsetTime("%H").ToInteger()) + 0.01*system.SunsetTime("%M").ToInteger()) + 3.00;
if (rVariable < 19.30) { dom.GetObject("Aquariumlicht aus um").State(19.30)}
elseif (rVariable < 21.45) { dom.GetObject("Aquariumlicht aus um").State(rVariable)}
else { dom.GetObject("Aquariumlicht aus um").State(21.45)}
Und wenn Du jetzt noch die Stunden der Sonnenauf- und untergangszeiten nicht erst in Ganzzahlen umwandelst und diese dann mit 1.00 multiplizierst, sondern gleich in eine Gleitzahl umwandelst, sparst Du wieder etwas winzige Rechenzeit und das Ganze wird logischer.

Wenn's mein Code wäre, sähe der so aus:

Code: Alles auswählen

real rVariable = (system.SunriseTime("%H").ToFloat() + (0.01*system.SunriseTime("%M").ToInteger())) - 0.25;
if (rVariable < 6.00) {
	dom.GetObject("Aquariumlicht an um").State(6.00);
}
else {
	dom.GetObject("Aquariumlicht an um").State(rVariable);
}

rVariable = (system.SunsetTime("%H").ToFloat() + (0.01*system.SunsetTime("%M").ToInteger())) + 3.00;
if (rVariable < 19.30) {
	dom.GetObject("Aquariumlicht aus um").State(19.30);
}
elseif (rVariable < 21.45) {
	dom.GetObject("Aquariumlicht aus um").State(rVariable);
}
else {
	dom.GetObject("Aquariumlicht aus um").State(21.45);
}
Ich benutze bei Namensgebungen von Geräten, Script- und Systemvariablen, Programmnamen etc. übrigens keine Leerzeichen. Ob Leerzeichen an irgendeiner Stelle innerhalb HM-Systems zu Problemen führen können, weiß ich nicht.
Ich habe es noch nie gemacht bei meinen Programmierprojekten, also auch hier bei HM nicht....
Gruß
Guido

majacom
Beiträge: 11
Registriert: 13.06.2018, 16:22

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von majacom » 07.02.2019, 18:32

Prima vielen Dank, werde ich gleich nachher mal ausprobieren

Markus

majacom
Beiträge: 11
Registriert: 13.06.2018, 16:22

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von majacom » 12.02.2019, 13:26

Hallo,
ich nochmal!

Die Ausgabe der Variable "Aquariumlicht an um" ist in meinem Fall "7.180000"
Ich möchte jetzt um diese Uhrzeit ein Programm ausführen lassen.
Ich denke, dass das nur mit einem CuxD Timer zu realisieren ist. Der benötigt aber meines Wissens das Format "HH:MM:SS".

Wie kann ich aus der Variablenausgabe "7.180000" das Fornat auf "07:18:00" ändern, damit ich die Zeit an den CuxdTimer übermitteln kann?
Oder gibt es eine andere Möglichkeit, ein Programm mit diesen Werten über den Cuxd Timer starten zu lassen?

Anders formuliert: Wie kann ich am Besten ein Programm, um die in der Variable ausgegeben Uhrzeit, ausführen lassen?

Gruß
Markus
Zuletzt geändert von majacom am 12.02.2019, 14:43, insgesamt 1-mal geändert.

Xel66
Beiträge: 5027
Registriert: 08.05.2013, 23:33
Wohnort: Nordwürttemberg

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von Xel66 » 12.02.2019, 14:39

Ist zwar nicht die Antwort auf die Benutzung des Scripts, aber ich schreibe mir auch Sonnenauf- und -untergangszeiten in einen CUxD-Timer und variiere diesen im Nachgang. Ich benutze hierfür dieses Script:

Code: Alles auswählen

! ++++++++++++ Setzen eigener Sonnenstandszeiten ++++++++++
string Sonnunter = system.SunsetTime("%H:%M:%S").ToString();
string Sonnauf = system.SunriseTime("%H:%M:%S").ToString();
dom.GetObject("CUxD.CUX2800002:16.TIMER_SET").State(Sonnunter);
dom.GetObject("CUxD.CUX2800002:15.TIMER_SET").State(Sonnauf);
dom.GetObject("CUxD.CUX2800002:16.TIMER_SET").State("-1800");
dom.GetObject("CUxD.CUX2800002:15.TIMER_SET").State("-2700");
In den ersten beiden Zeilen werden die vom System ermittelten Daten für Sonnenauf- und -untergang ermittelt, dann in jeweils einen Timer geschrieben und im Nachgang um 1800 (aka 30 Minuten) bzw. um 2700 Sekunden (aka 45 Minuten) vorgezogen. Funktioniert bei mir seit Jahren problemlos. Das Script läuft ein Mal täglich kurz nach Mitternacht.

Gruß Xel66
---------------------------------------------------------------------------------
335 Kanäle in 103 Geräten und 113 CUxD-Kanäle in 23 CUxD-Geräten:
233 Programme, 189 Systemvariablen und 119 Direktverknüpfungen,
RaspberryMatic Version 3.45.5.20190330
---------------------------------------------------------------------------------

wendy2702
Beiträge: 412
Registriert: 05.03.2014, 19:31

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von wendy2702 » 18.02.2019, 11:16

sissiwup hat geschrieben:
08.01.2019, 21:52
Siehe zur Anleitung mein Post in Tipps und Tricks.
Hi,

kannst du mir sagen wie die Überschrift dazu heißt?

Danke und Gruß

Mirko
piVCCU3/iobroker mit einigen Aktoren, Sensoren, Empfängern und Sendern.

Benutzeravatar
Sammy
Beiträge: 7741
Registriert: 09.09.2008, 20:47

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von Sammy » 18.02.2019, 11:44

Über die erweiterte Suche einfach nach Beiträgen von sissiwup gesucht und ratzfatz gefunden:
viewtopic.php?f=31&t=48286
Links: CCU-Logik, Tipps für Anfänger, WebUI-Doku, Expertenparameter, virtuelle Aktorkanäle
Inventur vom 22.01.14: 516 Kanäle in 165 Geräten, 132 Programme, 270 Direkte Verknüpfungen
Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

wendy2702
Beiträge: 412
Registriert: 05.03.2014, 19:31

Re: Universelles Astro/Zeit-Skript für Rolladen, Lampen und mehr

Beitrag von wendy2702 » 18.02.2019, 12:56

Danke.

Ich habe mich gerade durch die 22 Seiten seiner Beiträge geklickt.... bin aber nicht auf diese Überschrift gekommen.

Hatte etwas mit Rolladen erwartet.
piVCCU3/iobroker mit einigen Aktoren, Sensoren, Empfängern und Sendern.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“