Automatische Rollladensteuerung
Moderator: Co-Administratoren
Automatische Rollladensteuerung
Hallo!
Ich habe schon lange eine automatische Rollladensteuerung programmiert, die einfach in der Früh die Rollladen öffnet. Ein Skript ruft immer das folgende Programm auf: Was mich schon immer gestört hat, ist, dass auch schon bei 100% Öffnung noch einmal der Aktor anzieht (das kann bei den Selve Motoren zu Problemen führen, wenn das 6x hintereinander ohne Positionsänderung durchgeführt wird.)
Ich wollte nun dies durch eine Abfrage verhindern, aber meine Lösung scheint nicht zu funktionieren.
Hier nur ein Probebeispiel, das eben leider so nicht funktioniert: Der Aktor zieht auch wie gesagt über 95% an (hab auch 100% schon eingestellt, aber das ist im Prinzip irrelevant).
Hätte jemand einen kleinen Tipp?
Besten Dank
Didi
Ich habe schon lange eine automatische Rollladensteuerung programmiert, die einfach in der Früh die Rollladen öffnet. Ein Skript ruft immer das folgende Programm auf: Was mich schon immer gestört hat, ist, dass auch schon bei 100% Öffnung noch einmal der Aktor anzieht (das kann bei den Selve Motoren zu Problemen führen, wenn das 6x hintereinander ohne Positionsänderung durchgeführt wird.)
Ich wollte nun dies durch eine Abfrage verhindern, aber meine Lösung scheint nicht zu funktionieren.
Hier nur ein Probebeispiel, das eben leider so nicht funktioniert: Der Aktor zieht auch wie gesagt über 95% an (hab auch 100% schon eingestellt, aber das ist im Prinzip irrelevant).
Hätte jemand einen kleinen Tipp?
Besten Dank
Didi
-
- Beiträge: 4156
- Registriert: 26.01.2016, 08:14
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Renningen
- Hat sich bedankt: 348 Mal
- Danksagung erhalten: 284 Mal
Re: Automatische Rollladensteuerung
Du startest deine Programm nicht über Trigger, sondern direkt über ein anderes Programm. Dabei werden KEINERLEI Bedingungen geprüft, sondern direkt in den ersten DANN Zweig gesprungen. Nutze mal eine Virtuelle Taste als Auslöser und verODER deine Abfrage auf die Höhe. Drücke dann die virtuelle Taste in deinem anderem Programm.
-
- Beiträge: 4155
- Registriert: 09.09.2012, 10:41
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 301 Mal
Re: Automatische Rollladensteuerung
Die ersten Fragen, die ich mir stelle: warum steuerst du das Programm durch ein Script an? Und was löst das Script aus?
Dann: wenn beide Programme existieren, werden auch beide ausgelöst - das erste durch das "Script" (wie auch immer), das zweite durch die Bedingung (Rolladen < 95%).
Zeige uns das Gesamtgebilde und wir helfen dir.
Dann: wenn beide Programme existieren, werden auch beide ausgelöst - das erste durch das "Script" (wie auch immer), das zweite durch die Bedingung (Rolladen < 95%).
Zeige uns das Gesamtgebilde und wir helfen dir.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.
-
- Beiträge: 10659
- Registriert: 21.09.2012, 08:09
- System: CCU
- Wohnort: Stuttgart
- Hat sich bedankt: 321 Mal
- Danksagung erhalten: 501 Mal
Re: Automatische Rollladensteuerung
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.
Re: Automatische Rollladensteuerung
Hallo!
Hier der komplette Aufbau:
Ein Timer prüft, ob es Sonnenaufgang ist: ...und ändert die Systemvariabel:
Anschließend wird geprüft, ob sich diese Varibel ändert:
Durch dieses Programm wird der Sprung zum Öffnen durchgeführt:
Danach werden die Rollläden geöffnet:
Das alles funktioniert auch, nur will ich nun nicht mehr, dass wenn schon ein Rollladen auf 100% ist (manuell geöffnet), wieder in der Früh der Aktor anzieht.
Dies wollte ich verhindern, indem ich abfrage, ob der jeweilige Rollladen auf 100% ist. Dies hätte ich mit folgender Abfrage gedacht, statt dem vorigen Programm (ist jetzt aber nur ein Aktor eingetragen): Leider zieht trotz schon bestehender Vollöffnung der Aktor an.
Habe ich mich einigermaßen brauchbar ausgedrückt?
LG
Hier der komplette Aufbau:
Ein Timer prüft, ob es Sonnenaufgang ist: ...und ändert die Systemvariabel:
Code: Alles auswählen
! Alle Werte in Minuten
! true = sunset
! false = sunrise
integer timeshiftmorning = 60;
integer timeshiftevening = 0;
integer jetzt = (60 * system.Date("%H").ToInteger()) + system.Date("%M").ToInteger();
integer sa = (60 * system.SunriseTime("%H").ToInteger()) + system.SunriseTime("%M").ToInteger();
integer su = (60 * system.SunsetTime("%H").ToInteger()) + system.SunsetTime("%M").ToInteger();
if (jetzt >= (su + timeshiftevening)) {dom.GetObject("Twilight").State(true);}
else
{ if (jetzt >= (sa - timeshiftmorning)) {dom.GetObject("Twilight").State(false);}
}
Code: Alles auswählen
var programObj = dom.GetObject("Alle Rollladen oeffnen Prog 1");
programObj.ProgramExecute();
Dies wollte ich verhindern, indem ich abfrage, ob der jeweilige Rollladen auf 100% ist. Dies hätte ich mit folgender Abfrage gedacht, statt dem vorigen Programm (ist jetzt aber nur ein Aktor eingetragen): Leider zieht trotz schon bestehender Vollöffnung der Aktor an.
Habe ich mich einigermaßen brauchbar ausgedrückt?
LG
Re: Automatische Rollladensteuerung
Hallo!
Danke erstmals für die obigen Tipps.
Trotzdem, darf ich noch einmal kurz nachfragen, warum diese Bedingung als solche nicht funktioniert! Egal, was diese auslöst, Trigger, virtueller Taster, Programmstart...
Vielen Dank.
PS @ dpt: Danke für den Link. Wäre natürlich die optimale Lösung...
Danke erstmals für die obigen Tipps.
Trotzdem, darf ich noch einmal kurz nachfragen, warum diese Bedingung als solche nicht funktioniert! Egal, was diese auslöst, Trigger, virtueller Taster, Programmstart...
Vielen Dank.
PS @ dpt: Danke für den Link. Wäre natürlich die optimale Lösung...
Re: Automatische Rollladensteuerung
Die Bedingung funktioniert... aber sie wird bei manuellem Start des Programms nicht beachtet. Wird ein Programm per „Start“ oder per „ProgramExecute“ gestartet, so wird IMMER das erste DANN ohne Rücksicht auf irgendwelche Bedingungen ausgeführt.
Ich würde Dir raten die gesamte Umsetzung zu verwerfen und komplett neu zu überdenken.
Diese Klimmzüge über Skripte die Programme auslösen, Programme ohne Auslöser um dann irgendwelche Bedingungen einzubauen um anschl. doch wieder ganze Aktorengruppen in einem Programm zu steuer, das alles macht keinen Sinn.
Du willst es sicherlich vernünfig und flexiebel gestalten, aber erreichst auf diesem Weg das Gegenteil.
Ich würde Dir raten die gesamte Umsetzung zu verwerfen und komplett neu zu überdenken.
Diese Klimmzüge über Skripte die Programme auslösen, Programme ohne Auslöser um dann irgendwelche Bedingungen einzubauen um anschl. doch wieder ganze Aktorengruppen in einem Programm zu steuer, das alles macht keinen Sinn.
Du willst es sicherlich vernünfig und flexiebel gestalten, aber erreichst auf diesem Weg das Gegenteil.
Viele Grüße!
Jörg
Jörg
-
- Beiträge: 14164
- Registriert: 08.05.2013, 23:33
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Nordwürttemberg
- Hat sich bedankt: 585 Mal
- Danksagung erhalten: 1499 Mal
Re: Automatische Rollladensteuerung
Dem kann ich mich ebenfalls nur anschließen. Mit solchen von-hinten-durch-die-Brust-ins-Auge-Lösungen schränkt Du Dich nur zusätzlich ein. Das fängt schon bei solchen exotischen Ansätzen wie:
an. Dafür gibt es das Zeitmodul mit der Astrofunktion. Sind Dir die dortigen Trigger zu unflexibel (Zeitpunkt vorziehen/verzögern), baue Dir eigene auf der Basis von Systemvariablen. Mit Deinem Ansatz wirst Du nicht glücklich, allein schon, weil zu viele Komponenten auf die Aktoren zugreifen, und Status versuchen zu steuern, die bereits aktuell sind.
Ich steuere für meine Rollladen in allen Programmen nur eine Systemvariable mit der Sollstellung offen oder geschlossen. Jeder Rollladen besitzt dann ein Programm, der diesen Rollladen in Abhängigkeit von dieser Sollstellung verfährt und gleichzeitig den Ist-Zustand prüft. Dann gibt es lediglich noch zusätzliche Systemvariablen vom Typ Zahl, die die Behanghöhe steuern. Eine Lüftungsbehanghöhe von 20% (TFK offen) muss natürlich nur berücksichtigt werden, wenn die Sollstellung "geschlossen" ist. Und eine Beschattungshöhe nur, wenn die Sollstellung "offen" ist.
Der Sollwert-unten (0%/20%) wird vom TFK am zugehörigen Fenster und der Sollwert-oben (z.B. 56%/100%) durch die Beschattungsvariable gesteuert. Alle anderen Programme greifen ausschließlich auf die drei Systemvariablen (1xLogik: RollladenSoll oben/unten, 2xZahl: SollWert-oben und Sollwert-unten) zu.
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
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
Re: Automatische Rollladensteuerung
Hallo!
Danke für die Antworten!
Werde mal alles zusammenfassen, ist wahrscheinlich wirklich besser. Dass die Bedingung bei manueller Auslösung gleich auf die "Dann" Bedingung springt, hab ich nicht gewusst.
LG
Danke für die Antworten!
Werde mal alles zusammenfassen, ist wahrscheinlich wirklich besser. Dass die Bedingung bei manueller Auslösung gleich auf die "Dann" Bedingung springt, hab ich nicht gewusst.
LG