Seite 1 von 1

[V4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 2:08 pm
von jhaeberle
Hallo,

ich öffne und schliesse seit ein paar Tagen die Rollläden mit Hilfe des Astromoduls. Dazu verwende ich zwei Wake-Up-Module, einen zum Zumachen und einen zum morgens Aufmachen. Klappt so weit gut, nur öffnen die Rollläden um Mitternacht. Alle gleichzeitig. Also sendet mir wohl eines der beiden Wakups, vermutlich das Morgens-Auf, da da hinten der Befehl zum Aufmachen dran hängt. Aber warum?

Vermutlich der Startwert? Ich habe den auf 0 gestellt, warum weiss ich nicht, vermutlich, dass die Rollläden beim Starten hoch fahren. Erwartet wird aber ja ein unix timestamp, dann kommt bei Auslösung ein true raus, dass ich im Ausgang auf meine 0%-Höhe mappe. Aber… jeden Tag? Startet ein Wakup-Modul jeden Tag neu?
Ich werde das heute mal ohne Startwert probieren, aber einleuchten mag mir das nicht. Vielleicht kann ja jemand etwas Licht zu mir werfen?

Bild

Edit: Auch beim Speichern der Wake-Up Logik öffnen die Rollläden mit Zeitverzug von vielleicht einer Minute…
Der Vollständigkeit halber hier noch das Astro-Modul. Ja, das triggert alle 300sec, damit ich da auch heute noch ein Ergebnis habe… ich sehe aber nicht, warum das ein Problem sein könnt… das WakeUp-Modul sollte doch trotzdem nur einmal am Tag auslösen…

Bild

Danke, Gruß
Jochen

Re: [4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 3:27 pm
von jhaeberle
Jetzt dachte ich, WakeUp geht nie auf false - von wegen! Hier gehen beide WakeUp-Logiken auch auf falsch. Und da ich false ebenfalls mappen muss, fangen die das fahren an… :?:

Re: [4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 3:31 pm
von ms20de
Hallo Jochen,

wahrscheinlich ist das Problem, dass der Wake-Up-Baustein um Mitternacht zurückgesetzt wird, wenn der neue Zeitwert für den Morgen kommt.
Dein Mapping am Ausgang von Wakeup sendet dann den Wert für False und die Rollladen gehen auf.

Bei mir passiert das nicht, weil ich dem Ausgang von Wakeup auf einen Timer2 sende, welcher nur bei True abläuft.

Vielleicht kann dir jemand hier schnell eine Custom Logik mit Wakeup und Sendexplict zusammenbauen, weil das würde dein Problem lösen.
Also nur einen Wert bei Wahr ausgeben, wenn der Wakeup ausgelöst hat und andernfalls nichts tun.

Viele Grüße,
Matthias

Re: [4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 3:42 pm
von jhaeberle
Hallo Matthias,

okay, das ist jetzt jedenfalls die Erkenntnis, dass Wakeup bei Berechnung auch ein false auslöst. Das heißt auf jeden Fall, dass ich am Eingang auf change stellen muss, dabei kommt es aber immer noch zu einer Rechnung und einem false… aber mit den gesammelten Erkenntnissen habe ich was im Forum gefunden, um das ungewollte False zu verhindern

Re: [4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 9:50 pm
von Hammer
Hallo Jochen,

was genau möchtest du mit diesen Logiken machen? Soll zu der Zeit am morgen ein true, bzw. zu der Zeit Abends ein true gesendet werden?
Ich verwende für die Tag Nacht Funktion die
Logik - Zeitfenster

Hiermit lässt sich ein Zeitfenster definieren, mit diesem Wechsel ich zwischen false/true (Tage/Nacht) oder inventiert, wie gewünscht eben.
Besteht Interesse an der angepassten Logik?

Grüße
Stefan

Re: [4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 9:56 pm
von jhaeberle
Hallo Stefan,

danke für den Tipp. Aktuell ist es so, dass am Ende morgens 0% an die Rollläden-Aktoren geht und abends 100%. Aber letztlich geht es darum, dass die Rollläden nach Sonnenuntergang zu und morgens nach Sonnenaufgang wieder aufgehen. Dann soll die Beschattung übernehmen.
Die Schlafzimmer sind übrigens aussen vor, deshalb habe ich nicht das Problem, dass im Sommer um 5 die Rollläden hoch fahren…

Letztlich habe ich aktuell zwei Routen. Eine für abends, wo True auf 100% gemapped wird und eine für morgens, da wird True auf 0% umgesetzt.

Aber ja, an deinem Ansatz bin ich interessiert. Das wäre die nächste Aufgabe geworden, alles in eine Logik. Aber man will ja auch was lernen ;-)

Re: [4.5 IP3] Rollladensteuerung - wieso öffnen die Rollläden um Mitternacht?

Verfasst: Di Mär 04, 2025 10:27 pm
von Hammer
Hallo Jochen,

habe meine Logik an deine Aufgabe angepasst:

Code: Alles auswählen

/**=====================================================================
2020-12-11   	Unkelbach S.

2022-12-11   Uhrzeiten und Beschriftungen angepasst.
2025-03-04  Fahrbefehl und Zeitverschiebung

======================================================================*/

// https://forum.timberwolf.io/app.php/kb/viewarticle?a=115#Multiplexer

/**
 * Zeitfenster
 * Der Logikbaustein sendet TRUE, wenn die aktelle Uhrzeit zwischen den beiden angegebenen Zeiten liegt.
 * Davor und danach wird FALSE gesendet.
 * Über Zyklus [s] kann gesteuert werden, wie oft die Prüfung stattfindet und der Ausgangswert ggfs.
 * aktualisiert wird.
 * Über "Zyklischer Sendeinterval [s]" kann eingestellt werden, ob der Ausgang zyklisch geschrieben werden soll. Wenn nein = 0, niedriges Werte sollten z.B. zur Schonung des KNX-Bus vermieden werden. 900 = 15 Minuten und stellt vermutlich in den meisten Fällen ein ausreichende Minumum dar. Der Wert 3600 sendet den Ausgang folglich 1x je Stunde und zusätzlich bei Änderung.
 * 
 * Nutzungsrechts: Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL 
 * ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht."
 * 
 * Erstellt am 12.08.2020 von Markus Großmann
 * 
 * ChangeLog:
 * V1.2 (13.08.2020): optionaler zyklischer Sendetakt, output parameter t statt c (edit Robosoc)
 * V1.1 (13.08.2020): Ausgang wird nun sekundengenau geschaltet
 * V1.0 (13.08.2020): Initial Release
 */

{
  "_Meta": { // Optional
    "Description": "Zeitfenster",
    "Version": "1.2",
    "Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
  },
  "Input": [ 
	 ["Freigabe","gibt die Logik frei", "$I_Freigabe", "c"]
	,["Morgendämmerung","Zeitpunkt der Morgendämmerung", "$I_Morgen", "c"]  // Zeitpunkt errechnet seit 01.01.1970 (Astro Baustein)
	,["Abenddämmerung","Zeitpunkt der Abenddämmerung", "$I_Abend", "c"]  // Zeitpunkt errechnet seit 01.01.1970 (Astro Baustein)
	,["Zeitveschiebung","Verschiebung der Morgen und Abend Zeit in Sek.", "$I_Zeitverschiebung", "c"] 
    ],
  "Output": [
       ["Fahrbefehl","Fahrbefehl an die Rolladen", "$O_Output", "c"]  // Gruppenadresse 
     ,["Zeitfenster 1 aktiv","Aktuelle Zeit ist im Zeitfenster 1", "$CurrIsInInterval", "c"]   // Zeitfenster
	 ,["Debug","Aktuelle Zeit ist im Zeitfenster 1", "$M_Select", "c"]
	 ,["Debug Time","Aktuelle Zeit ist im Zeitfenster 1", "$ltime", "c"] 
	 ,["Debug TimeCurrent","Aktuelle Zeit ist im Zeitfenster 1", "$SecondsTillNext", "c"] 
	 ,["M_Morgen","Aktuelle Zeit ist im Zeitfenster 1", "$M_Morgen", "c"]
     ,["M_Abend","Aktuelle Zeit ist im Zeitfenster 1", "$M_Abend", "c"]
  ],
  "Level": [
	 ["$I_Freigabe","bool",true]
	,["$Const0","integer",0]
	,["$Const100","integer",100]
	,["$Const60","integer",60]
	,["$Const86400", "integer", 86400]
	,["$ConstTRUE","bool", true]
	,["$CurrIsAfterFrom","bool", false]
	,["$CurrIsAfterTo","bool", false]
	,["$CurrIsInInterval","bool", false]
	,["$From_GT_To", "bool", false]
	,["$h_curr","integer", 0]
	,["$h_from","integer", 0]
	,["$h_to","integer", 0]
	,["$m_curr","integer", 0]
	,["$m_from","integer", 0]
	,["$m_to","integer", 0]
	,["$Period","integer",60]
	,["$s_curr","integer", 0]
	,["$s_from","integer", 0]
	,["$s_to","integer", 0]
	,["$SecondsTillFrom","integer",0]
	,["$SecondsTillFrom_GT_Zero", "bool", false]
	,["$SecondsTillNext","integer",1]
	,["$SecondsTillTo","integer",0]
	,["$SecondsTillTo_GT_Zero", "bool", false]
	,["$Const1","integer",1]
	,["$TimeFrom","integer",0]
	,["$TimeTo","integer",0]
	,["$Const2","integer",2]
	,["$I_Abend", "integer", 10]

	,["$I_Morgen", "integer", 0] 
	,["$I_Zeitverschiebung", "integer", 1200]
	,["$M_Abend", "integer", 0]
	,["$M_Morgen", "integer", 0]
	,["$M_Output", "bool", false]
	,["$M_Select", "integer", 0]
	,["$O_Output", "integer", 0]
	,["$ltime","integer", 0]
  ],
  "Module": [
		["Break", ["-$I_Freigabe"]] // Logik freigeben
  
	  
	  // Subtraktion der Sonnen Untergangszeit
	  ,["Polynomial", "$Const1", "$M_Abend",["$I_Abend", "-$I_Zeitverschiebung"]]  //Sonnen Untergang Zeitpunkt abzüglich der Verschiebung
	  
	  // Addition der Sonnen Aufgangszeit
	  ,["Polynomial", "$Const1", "$M_Morgen",["$I_Morgen", "$I_Zeitverschiebung"]] //Sonnen Aufgang Zeitpunkt zuzüglich der Verschiebung
	  
      // Aktuelle Uhrzeit
      ,["Localtime",0,"$ltime","$s_curr","$m_curr","$h_curr",0,0,0,0,0,0],
  
      // Wie lange noch bis Zeit von?
      ["Polynomial", "$Const1", "$SecondsTillFrom", ["$M_Morgen", "-$ltime"]],
      ["Comparator", "$Const1", "$SecondsTillFrom_GT_Zero", "$SecondsTillFrom"],
      ["Polynomial", "$SecondsTillFrom_GT_Zero", "$SecondsTillFrom", ["$SecondsTillFrom", "$Const86400"]],
      // Wie lange noch bis Zeit bis?
      ["Polynomial", "$Const1", "$SecondsTillTo", ["$M_Abend", "-$ltime"]],
      ["Comparator", "$Const1", "$SecondsTillTo_GT_Zero", "$SecondsTillTo"],
      ["Polynomial", "$SecondsTillTo_GT_Zero", "$SecondsTillTo", ["$SecondsTillTo", "$Const86400"]],
      // Was ist früher?
      ["Comparator", "$SecondsTillFrom" , "$From_GT_To" , "$SecondsTillTo" ],
      ["Multiplexer", ["$SecondsTillFrom", "$SecondsTillTo"],"$SecondsTillNext", "$From_GT_To"],
	  
	  // Timer setzen
      ["Clocksignal","$ConstTRUE",0,"$SecondsTillNext"],
	  
	  // Ergebniswert berechnen
      ["Comparator", "$M_Morgen" , "$CurrIsAfterFrom" , "$ltime" ],
      ["Comparator", "$M_Abend" , "$CurrIsAfterTo" , "$ltime" ],
      ["And", ["-$CurrIsAfterFrom", "$CurrIsAfterTo"], "$CurrIsInInterval"]	  
	   
	   // Verarbeitung des Zeitfenster in Fahrbefehle
	  ,["Latch","$Const1","$M_Select","-$CurrIsInInterval",1]   // Bei steigender Flanke wird der selectore auf 1 gesetzt.
	  ,["Latch","$Const2","$M_Select","$CurrIsInInterval",1]   //  Bei steigender Flanke wird der selectore auf 2 gesetzt.
	  ,["Multiplexer",["$M_Output","$Const100","$Const0"],"$O_Output","$M_Select"]   // In der Nacht wird 100 gesendet und am Tag 0%
	  
  ]
}
Du kannst noch eine Zeitverschiebung angeben und die Logik komplett sperren.

Grüße
Stefan