KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

Schwellwert-Kombination in Custom Logik

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1264 Mal
Danksagung erhalten: 2213 Mal

Schwellwert-Kombination in Custom Logik

#1

Beitrag von Robert_Mini »

Hallo @S. Kolbinger!

Ich stehe gerade auf dem Schlauch oder es ist doch komplexer als gedacht.

Ich brauche für die Beschattung folgende Logik (als teil einer Custom Logic, daher kann ich die Triggeroptionen nicht nützen).
- Wenn Helligkeit 400 Lux überschreitet => sende 1
- Wenn Helligkeit <300 Lux und Elevation <7° sende 0
- Dazwischen bzw. bei Dunkelheit soll nichts gesendet werden.

Selbst wenn ich bei der ersten Bedingung gedanklich eine Elevation >7° ergänze, fällt mir im Moment keine Lösung dafür ein :angry-banghead: :angry-banghead: .

Danke für eine Anregung dazu,
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

S. Kolbinger
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 560 Mal

#2

Beitrag von S. Kolbinger »

Hallo Robert,
Robert_Mini hat geschrieben: Mo Aug 26, 2019 10:03 pm Ich stehe gerade auf dem Schlauch oder es ist doch komplexer als gedacht.
zu allererst, Senden ist eine Aktion die nur auf die Ausgänge der gesamten Logik-Zelle angewendet werden kann.
Der BegriffSendenist innerhalb einer Custom-Logic eigentlich nicht korrekt.
Richtiger wäre der Begriff, einem Level(Variable) wird ein Wert zugewiesen.
Robert_Mini hat geschrieben: Mo Aug 26, 2019 10:03 pm - Wenn Helligkeit 400 Lux überschreitet => sende 1
- Wenn Helligkeit <300 Lux und Elevation <7° sende 0
- Dazwischen bzw. bei Dunkelheit soll nichts gesendet werden.
Wenn ich mal davon ausgehe, dass es sich hier um einen boolschen Wert handelt (0/1), dann stellt sich hier die Fragen, was du mit "soll nichts gesendet werden" meinst. Wie gesagt, ein Level(Variable) hat immer einen Wert (anfangs den Initial-Wert). Und bei boolschen Werten gibt es da nur zwei Möglichkeiten.

Falls du einSendender aller Ausgänge unterbinden möchtest, kannst du das "Break"-Modul verwenden. Das bricht die Berechnung der Logik-Zelle an dieser Stelle ab. Durch den Abbruch werden auch keine Ausgänge gesendet.

Kannst du das Problem noch genauer beschreiben, vielleicht habe ich es auch missverstanden. :confusion-scratchheadyellow:
Gruß,
Stefan K.

Ersteller
Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1264 Mal
Danksagung erhalten: 2213 Mal

#3

Beitrag von Robert_Mini »

Hallo Stefan!

Was ich meinte:
Logikeingang als Lux => das heißt die Logik wird zwangsweise regelmäßig getriggert.
Es gibt aber nur 2 Events, wo ein Output generiert werden soll.
1x , wenn Helligkeit 400 Lux überschreitet => sende 1
1x , wenn Helligkeit <300 Lux und Elevation <7° sende 0
Dazwischen bzw. bei Dunkelheit soll nichts gesendet werden, d.h. der Lux-Eingang darf nicht das wiederholte senden triggern.

Da man innerhalb einer Custom-Logik keine Sende-Optionen hat, geht dieses Vorhaben sowieso nur als getrennt Logik, was auch völlig ok ist.

Heißt für mich: Senden on change.
Aber wie verknüpfe ich Schwellwert Lux mit einem Schwellwert Elevation, so dass das Verhalten oben erreicht wird.
Ein UND würde ja sofort bei unterschreiten der 300 Lux eine 0 senden, ich brauche also ein "invertiertes" und, wo erst 0 gesendet wird, wenn beide Eingänge 0 sind.

Danke
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

S. Kolbinger
Elaborated Networks
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 560 Mal

#4

Beitrag von S. Kolbinger »

Hallo Robert,

man könnte es so machen:

Code: Alles auswählen

{
    "Level": [
        ["$LuxIn","float",0.0],
        ["$LuxSchwelleHell","float",400.0],
        ["$LuxSchwelleDunkel","float",300.0],
        ["$LuxHell","bool",false],
        ["$LuxDunkel","bool",false],
        ["$ElevationIn","float",0.0],
        ["$ElevationSchwelleTief","float",7.0],
        ["$ElevationTief","bool",false],
        ["$DunkelTief","bool",false],
        ["$State","integer",0],
        ["$Output","bool",false],
        ["$KonstTrue","bool",true]
    ],
    "Module": [
        ["Comparator","$LuxIn","$LuxHell","$LuxSchwelleHell"],
        ["Comparator","$LuxIn","-$LuxDunkel","$LuxSchwelleDunkel"],
        ["Comparator","$ElevationIn","-$ElevationTief","$ElevationSchwelleTief"],
        ["And",["$LuxDunkel","$ElevationTief"],"$DunkelTief"],
        ["BinaryMultiplexer",["$LuxHell","$DunkelTief"],"$State"],
        ["Multiplexer",["$Output","$KonstTrue","-$KonstTrue","$Output"],"$Output","$State"]
    ],
    "Input": [
        ["Lux","Aussenhelligkeit","$LuxIn","c"],
        ["SchwelleHell","obere Schwelle für Aussenhelligkeit","$LuxSchwelleHell","c"],
        ["SchwelleDunkel","untere Schwelle für Aussenhelligkeit","$LuxSchwelleDunkel","c"],
        ["Elevation","Winkel der Sonne über dem Horizont","$ElevationIn","c"],
        ["SchwelleTief","Winkel für tiefen Sonnenstand","$ElevationSchwelleTief","c"]
    ],
    "Output": [
        ["Out","Ausgabe Ergebnis","$Output","c"]
    ]
}
Bild
Robert_Mini hat geschrieben: Di Aug 27, 2019 11:42 am Dazwischen bzw. bei Dunkelheit soll nichts gesendet werden, d.h. der Lux-Eingang darf nicht das wiederholte senden triggern.
Damit das so funktioniert, muss die Sende-Option am Ausgang auf "on Change" stehen.


Wobei ich ehrlich gesagt etwas skeptisch bin, ob man Helligkeit und Sonnenwinkel unbedingt so verknüpfen muss.
Bei so tiefem Sonnenstand ist die Helligkeit eh meist sehr gering. Und falls mal doch, dauert es meist nicht sehr lange.

Aber es ist trotzdem ein gutes Beispiel, um die Lösung für so ein Problem zu zeigen. :handgestures-thumbupright:
Gruß,
Stefan K.

Ersteller
Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1264 Mal
Danksagung erhalten: 2213 Mal

#5

Beitrag von Robert_Mini »

Hallo Stefan!

Danke für deine Hilfe!
Vorweg bezüglich braucht man das: ja, denn das hat mir bisher gefehlt - es gibt Fälle zB vor Gewitter o.ä. da hat meine Wetterstation dann auch unter Tags auf Nacht geschaltet und die Jalousien zugefahren - selten aber sehr störend.

Wobei ich in deiner Lösung ehrlicherweise weder den BinaryMultiplexer verstehe, noch den Multiplexer.

BinaryMultipexer liefert offensichtlich das Ergebnis in $state, der dann als Selektor im Multiplexer verwendet wird, wobei der Wert theoretisch 0-3 werden kann.
Aber die Verwendung von Output als Input im Multiplexer übersteigt gerade mein Abstraktionsvermögen.

Danke und lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „Logikengine & Logik-Editor“