Seite 1 von 1

[V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Mo Nov 25, 2019 8:23 pm
von Jürgen
Hallo Foristen,

ich beschäftige mich zur Zeit (wie sollte es anders sein) mit dem Thema Weihnachtsbeleuchtung und Rollladensteuerung.
Ich habe mit dafür derzeit folgende Custom-Logik gebaut, die aber nicht ganz das tut, was ich bisher darin einbauen wollte.

Code: Alles auswählen

  "Input": [
      ["Tag", "Verknüpfung für Tag", "$Tag", "a"],
      ["Nacht", "Verknüpfung für Nacht", "$Nacht", "a"],
      ["Dämmerung morgens", "Verknüpfung für Dämmerung morgens", "$Daemmerung_morgens", "a"],
      ["Dämmerung abends", "Verknüpfung für Dämmerung abends", "$Daemmerung_abends", "a"],
      ["Weihnachtsbeleuchtung Loggia", "Verknüpfung mit Weihnachtsbeleuchtung Loggia", "$Weihnachten_außen", "a"],
      ["Weihnachtsbeleuchtung Fenster", "Verknüpfung mit Weihnachtsbeleuchtung Fenster", "$Weihnachten_innen", "a"],
      ["Nacht-Modus", "Sperreingang für Nachtmodus", "$Modus_Nacht", "a"], 
      ["Automatik-Sperre", "Sperreingang für Automatik", "$Automatik", "a"]
  
  ],
  "Output": [
      ["Rollladen Loggia links", "Ausgang Rollladen Loggia links", "$Rollladen_Loggia_links", "a"],
      ["Rollladen Loggia Mitte", "Ausgang Rollladen Loggia Mitte", "$Rollladen_Loggia_Mitte", "a"],
      ["Rollladen Loggia rechts", "Ausgang Rollladen Loggia rechts", "$Rollladen_Loggia_rechts", "a"],
      ["Rollladen Nordseite links", "Ausgang Rollladen Nordseite links", "$Rollladen_Nordseite_links", "a"],
      ["Rollladen Nordseite rechts", "Ausgang Rollladen Nordseite rechts", "$Rollladen_Nordseite_rechts", "a"]
      
  ],
  "Level": [
      ["$Tag", "bool", false],
      ["$Nacht", "bool", false],
      ["$Daemmerung_morgens", "bool", false],
      ["$Daemmerung_abends", "bool", false],
      ["$Weihnachten_außen", "bool", false],
      ["$Weihnachten_innen", "bool", false],
      ["$Modus_Nacht", "bool", false],
      ["$Automatik", "bool", false],
      
      ["$Rollladen_Loggia_links", "integer", 0],
      ["$Rollladen_Loggia_Mitte", "integer", 0],
      ["$Rollladen_Loggia_rechts", "integer", 0],
      ["$Rollladen_Nordseite_links", "integer", 0],
      ["$Rollladen_Nordseite_rechts", "integer", 0],
      
      
      ["$open", "integer", 0],
      ["$close", "integer", 100],
      ["$Rollladen_intern", "integer", 0],
      ["$const_true", "bool", true],
      ["$const_false", "bool", false],
      ["$Trigger_close", "bool", false],
      ["$Trigger_open", "bool", false],
      ["$Trigger_int_1", "bool", false],
      ["$Trigger_int_2", "bool", false],
      ["$Trigger_int_3", "bool", false],
      ["$Trigger_Loggia", "bool", false],
      ["$Trigger_Nordseite", "bool", false]


  ],
  "Module": [
      /** Wenn Nacht = true, dann schreibe Wert 100 % für Rollladen in interne Variable und setzte Trigger close */
      ["Latch", "$close", "$Rollladen_intern", "$Nacht", 1],
      ["Latch", "$const_true", "$Trigger_close", "$Nacht", 1],
      
      /** Wenn Nacht auf false geht dann 0 % für Rollladen in interne Variable und setze Trigger open */
      ["Latch", "$open", "$Rollladen_intern", "$Nacht", 2],
      ["Latch", "$const_true", "$Trigger_open", "$Nacht", 2],
      
      /** Verzögere auffahren, bis Nachtmodus = 0 */
      ["And", ["$Trigger_open", "-$Modus_Nacht"], "$Trigger_int_1"],
     
      /** Verzögere zufahren, so lange, Weihnachtsbeleuchtung an ist */
      ["And", ["$Trigger_close", "-$Weihnachten_außen"], "$Trigger_int_2"],
      ["And", ["$Trigger_close", "-$Weihnachten_innen"], "$Trigger_int_3"],
      
      /** Trigger zusammenführen */
      ["Or", ["$Trigger_int_1", "$Trigger_int_2"], "$Trigger_Loggia"],
      ["Or", ["$Trigger_int_1", "$Trigger_int_3"], "$Trigger_Nordseite"],
      
      /** Schreibe Wert für Rollladen_Loggia */
      ["Latch", "$Rollladen_intern", "$Rollladen_Loggia_links", "$Trigger_Loggia", 0],
      ["Latch", "$Rollladen_intern", "$Rollladen_Loggia_Mitte", "$Trigger_Loggia", 0],
      ["Latch", "$Rollladen_intern", "$Rollladen_Loggia_rechts", "$Trigger_Loggia", 0],
      
      /** Schreibe Wert für Rollladen_Nordseite */
      ["Latch", "$Rollladen_intern", "$Rollladen_Nordseite_links", "$Trigger_Nordseite", 0],
      ["Latch", "$Rollladen_intern", "$Rollladen_Nordseite_rechts", "$Trigger_Nordseite", 0]

  ]
Im wesentlichen soll diese Logik folgendes machen, was ich bisher darin implementiert habe:

Wenn die Dämmerungssteuerung "Nacht" (oder Dämmerung, etc, aber das ist bisher noch nicht eingebaut) meldet, sollen die Rollläden zufahren.
Wenn die Nacht beendet wird, sollen die Rollläden auf fahren.
Das funktioniert auch schon ganz gut.

Allerdings sollen die Rollläden nicht zufahren, wenn die Weihnachtsbeleuchtung aktiv ist (diese Logik sendet den Trigger "Weihnachtsbeleuchtung aktiv").
Dies soll dann nachgeholt werden, wenn die Weihnachtsbeleuchtung aus geht.

Gleiches in der früh:
Die Rollläden sollen auffahren (funktioniert auch bereits), aber nicht so lange Nacht aktiv ist.


Nun zum Fehlerbild:
Die ganze Logik funktioniert auch (im Doktor-Modus, der super dafür ist), aber nur bei den ersten Betätigungen, so lange die internen Variablen (Trigger_int_1 bis Trigger_int_3) auf "false" stehen.
Sofern diese einmal auf true (durch den Trigger) gesetzt wurden, bleiben diese auf true und meine oder-Logik funktioniert nicht mehr.

Gibt es dafür eine Lösung? Mir ist noch keine eingefallen...

Weiterhin suche ich noch eine Lösung für folgende Situation:
Wenn Rollläden zu sind und Beleuchtung wird aktiviert, sollen die Rollläden auf fahren und danach wieder zu, sobald die Beleuchtung aus ist.
Wie könnte ich dies lösen??

Viele Grüße
Jürgen

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Mo Nov 25, 2019 9:06 pm
von Dragonos2000
Hallo @Jürgen ,

freut mich, dass Du dich mit Custom-Logiken beschäftigst. Bevor Du Dich in dem Thema aber evtl unnötig abmühst, erlaube mir den Hinweis auf den fertigen Baustein von mir: viewtopic.php?f=65&t=1350
Der sollte eigentlich alle Bedarfe abdecken. Falls nicht, erweitere ich gerne. Konkret habe ich es mit diesem Baustein bei mir zu Hause mit der Zwangsführung realisiert. Mit dem Prioritätseingang ginge das auch...

Du kannst gerne einen eigenen Baustein schreiben, ich helfe auch gerne. Aus eigener Erfahrung kann ich aber sagen, dass das ganz schön komplex werden kann...

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Mo Nov 25, 2019 9:20 pm
von StefanW
Hallo zusammen,

tolle Zusammenarbeit. Ich wäre recht glücklich, wenn wir am Ende möglichst nur einen universellen Baustein haben, weil den würden wir dann künftig als fertige Logikbaustein anbieten wollen mit einer ordnentlichen Dokumentation.

lg

Stefan

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Mo Nov 25, 2019 10:01 pm
von gbglace
Sehe ich auch so. Die großen braucht jeder im Haus Bausteine sind ja schon enorm Flexibel mit entsprechenden manuellen Sperreingängen die hier ja gebraucht werden.
Davon sollte es nicht soviel Wildwuchs geben.

Was natürlich nicht dagegen spricht sich mit eigenen Versuchen inhaltlich dem LE zu nähern. Mach ich ja auch die Tage.

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Di Nov 26, 2019 8:10 am
von StefanW
Richtig,

wobei ich bei den "superbausteinen für alle" darauf hinaus will, dass ich deren Handhabung mittel- bis langfristig vereinfachen will.

D.h. ich denke darüber nach, dass es für allgemeine Themen wie Beschattung, Heizungssteuerung usw. eigene Seiten gibt, in denen man sich die Fenster anlegt, deren Ausrichtung gegenüber Nord und dann eben die Objekte dazu angibt die man hat. Die Verknüpfung mit mit der Logik passiert dann im Hintergrund (unsichtbar). D.h. im Frontend sieht man eine sehr einfach zu bedienende Beschattungssteuerung mit übersichtlichen Tabelle und gfls. grafischen Darstellungen von Gebäude und Fenstern und im Hintergrund wird dies dann mit diesen bewährten Logikbausteinen veknüpft.

Das ist in etwa der gleiche Gedanke wie mit der TIE. Tolles Frontend, die ausführende Logik im Hintergrund basiert auf der Logikengine.

lg

Stefan

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Di Nov 26, 2019 2:54 pm
von andy_m
Sehr dafür! Hab mir den existierenden Rolladenbaustein auch schon mal angesehen (auch schon mehr als einmal), aber jedesmal wieder vertagt, weil mir der Einstieg zu kompliziert erscheint. Ich sage bewusst 'erscheint', weil es sich bestimmt mit etwas Nachfrage und Hilfe auch bewerkstelligen lässt, allerdings ist genau dies oft die Hürde für Anfänger.

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Di Nov 26, 2019 4:57 pm
von Dragonos2000
Okay, dann werd' ich die Beschreibung aufmöbeln. Gerade das "Abschreckmoment" will ich vermeiden und ich habe eigentlich versucht das möglichst einfach zu halten. Credo ist eigentlich: Was nicht gebraucht wird, wird einfach nicht belegt/benutzt, ohne dass man was einstellen muss...

Leider ist es mit den aktuellen Mitteln nicht möglich, die optionalen Elemente gezielt auszublenden.

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Di Nov 26, 2019 7:36 pm
von Jürgen
Hallo Jochen,
Hallo Stefan,

vielen Dank für den Hinweis mit dem bereits fertigen Baustein.
ich werde mir diesen in den nächsten Tagen auf jeden Fall ansehen und versuchen, einzubauen.
Aber ich habe bereits eiige Funktionen darin gefunden, die mir fehlen bzw. andere, die ich bereits nativ über KNX gelöst habe, wie zum Beispiel Öffnen bei Fensteröffnung oder Zwangsführung.

Folgende Funktionen fehlen mir allerdings, die ich bei mir einbauen will:
  • Frostschutz für Dachflächenfenster (abhängig von Luftfeuchtigkeit und Temperatur sind die Rollläden zusammen gefroren und müssen daher gesperrt werden) Sensoren am Dach sind dafür vorhanden, ich konnte nur noch nicht die Parameter herausfinden, die dafür notwendig sind
  • verschiedene Sperrgründe mit jeweils vorgegebener Position (wie Weihnachtsbeleuchtung, etc...)
  • Nachholen der Position bei Entfall eines Sperrgrundes (habe ich nicht gefunden, ob diese Funktion bei dir mit drin ist)
  • Ich wollte bei mir Beschattung von der Nacht-Funktion trennen in zwei Bausteine, damit ich zwar Nachts automatisch fahren kann, aber die Beschattung beispielsweise deaktivieren kann, oder anders herum
Ein fertiger Baustein ist immer das beste, da es mir lange Arbeit erspart, einen eigenen für die immer gleichen Funktionen zu schreiben.

Trotzdem werde ich im Laufe der Zeit noch versuchen, meinen eigenen Baustein "ans Laufen zu bringen", schon allein aus dem Grund des Lerneffektes...
Schon deswegen werde ich deinen Baustein mal "analysieren", wie hier Probleme gelöst wurden.

Viele Grüße
Jürgen

Re: [V 1.5 RC 10] Problem Logik zur Rollladensteuerung

Verfasst: Di Nov 26, 2019 11:29 pm
von Dragonos2000
Jürgen hat geschrieben: Di Nov 26, 2019 7:36 pm Folgende Funktionen fehlen mir allerdings, die ich bei mir einbauen will:
  • Frostschutz für Dachflächenfenster (abhängig von Luftfeuchtigkeit und Temperatur sind die Rollläden zusammen gefroren und müssen daher gesperrt werden) Sensoren am Dach sind dafür vorhanden, ich konnte nur noch nicht die Parameter herausfinden, die dafür notwendig sind
  • verschiedene Sperrgründe mit jeweils vorgegebener Position (wie Weihnachtsbeleuchtung, etc...)
  • Nachholen der Position bei Entfall eines Sperrgrundes (habe ich nicht gefunden, ob diese Funktion bei dir mit drin ist)
  • Ich wollte bei mir Beschattung von der Nacht-Funktion trennen in zwei Bausteine, damit ich zwar Nachts automatisch fahren kann, aber die Beschattung beispielsweise deaktivieren kann, oder anders herum
Eigentlich sind diese Punkte alle implementiert:
Den Frostschutz könntest Du über die Zwangsführung realisieren, diese hat die höchste Priorität und übersteuert alles. Wobei ich speziell dieses Thema per Sperrobjekt im Aktor lösen würde, da sicherheitsrelevant

Sperrgründe mit unterschiedlicher Priorität- da gibt es das Prioritätsobjekt und das Zwangsführungsobjekt. Über weitere hatte ich nachgedacht, aber ich hab' keinen Anwendungsfall gefunden, den ich über vorgeschaltete Und-/Oderverknüpfungen zu diesen Objekten nicht hätte realisieren können.

Die aktuellen Beschattungspositionen werden im Baustein permanent intern ermittelt, unabhängig ob gerade übersteuert (Fenster auf/zu, Hitzeschutz,...) oder irgendeine Sperre aktiv ist. Endet die ÜBersteuerung/Sperre, dann wir die korrekte Beschattungsposition angefahren ("nachgeholt", wenn Du so möchtest).

Die eigentliche Beschattungsfunktion lässt sich auf mehrere Wege mit mehreren Stufen deaktivieren:
  • Über einen zusätzlichen Eingang "SonnenBed", der auch für Sonnenhöhe und Kompasswinkel genutzt wird. Dabei bleiben die Hitzeschutz- und Prioritätsfunktion allerdings erhalten.
  • Über das Objekt "BeschattAus". Dabei bleiben Tag/Nacht Steuerung (obere und untere Endlage) und Fensterstellungen (Nachts bei geöffnetem Fenster auf Lüftungsposition fahren) erhalten.
  • Zusätzlicher "Inhibit". Damit ist der gesamte Baustein "tot".
Am Besten den Code einfach mal in eine Custom Logik kopieren. Die Hinweistexte beim Mouse-Over der Eingänge und Parameter sollten schon einiges erläutern...