UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[Gelöst] Logik "nur einer TRUE von 3 Eingängen"

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

Ersteller
danik
Reactions:
Beiträge: 391
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 256 Mal
Danksagung erhalten: 266 Mal

Logik "nur einer TRUE von 3 Eingängen"

#1

Beitrag von danik »

Hi

Ich suche einen Ansatz oder eine Logik für folgendes:

Eingang sind 3 x Boolean (3 KNX-Objekte)

wenn jetzt zum Beispiel Eingang 1 auf TRUE geschaltet wird, sollen die beiden anderen Ausgänge auf 0 geschaltet werden.

Ein Ansatz von mir wäre gemäss KB-Artikel Wert senden wenn Eingang TRUE und dann ein FALSE auf die beiden anderen Objekte, dies braucht dann aber 3x den Baustein und Verknüpfungen im DOS.

Ev. gibt es ja einen Ansatz dies in einer Custom-Logik zu machen. Mir fehlt da im Moment aber etwas die Phantasie.

Danke für Inputs

Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#2

Beitrag von Robosoc »

Ich halte drei Standard module und ein gutes passendes Tag für die schneller und übersichtlicher Lösung. Aber wenn es ein custom module sein soll:

6x levels, nämlich
3x Eingänge
3x Ausgang
3x ["latch" , "EingangX" , "-AusgangX" , 1]
Wobei das X im ersten Latch 1 ist, beim zweiten 2...
Durch den Parameter 1 = trigger auf steigende Flanke.

Und jetzt musst du beim Verschalten der Ausgänge jedem Ausgang zwei knx-Gruppen zuweisen. Also z. B wenn Eingang1 = K-101, DANN Ausgang1 =K-102 + k-103.
usw.

Aber meines Erachtens ist das Aufwändiger als drei simple Standardlogiken. Die legst Du einmal schnell an und kopierst sie zwei Mal
Zuletzt geändert von Robosoc am Mi Okt 02, 2019 6:35 am, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
danik
Reactions:
Beiträge: 391
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 256 Mal
Danksagung erhalten: 266 Mal

#3

Beitrag von danik »

Hi

Danke. Hab's mit latch und unterstehender Custom-Logik versucht, klappt aber nicht.

Habe die Ausgänge auf "A" gestellt, bei "C" sende er nichts. Bei "A" aber 12 Telegramme mit False (stellt dann auch den zuvor mit TRUE gestellten Eingang wieder auf FALSE).

Code: Alles auswählen

{
    "Level":[
        ["$EinA","bool",false],
        ["$EinB","bool",false],
        ["$EinC","bool",false],
        ["$AusA","bool",false],
        ["$AusB","bool",false],
        ["$AusC","bool",false],
        ["$Wahr","bool",true]
    ],
    "Module":[
        ["Latch","$EinA","$AusA","$EinA",1],
        ["Latch","$EinB","$AusB","$EinB",1],
        ["Latch","$EinC","$AusC","$EinC",1]
    ],
    "Input":[
        ["InputA","Eingang","$EinA","c"],
        ["InputB","Eingang","$EinB","c"],
        ["InputC","Eingang","$EinC","c"]
    ],
    "Output":[
        ["OutputA","Ausgang","$AusA","c"],
        ["OutputB","Ausgang","$AusB","c"],
        ["OutputC","Ausgang","$AusC","c"]
    ]
}
Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#4

Beitrag von Robosoc »

Du hast auf jeden Fall das negieren innerhalb de Latches vergessen...probiere es mal so, siehe unten.
Und ein a wie always an den Ausgängen anstelle einem c wie change halte ich hier auch für sinnvoller, dann ist Dir das Ergebnis im Doktormodus klarer. Auf der anderen Seite erzeugst Du unnötig buslast ...

Code: Alles auswählen

{
    "Level":[
        ["$EinA","bool",false],
        ["$EinB","bool",false],
        ["$EinC","bool",false],
        ["$AusA","bool",false],
        ["$AusB","bool",false],
        ["$AusC","bool",false]
    ],
    "Module":[
        ["Latch","-$EinA","$AusA","$EinA",1],
        ["Latch","-$EinB","$AusB","$EinB",1],
        ["Latch","-$EinC","$AusC","$EinC",1]
    ],
    "Input":[
        ["InputA","Eingang","$EinA","c"],
        ["InputB","Eingang","$EinB","c"],
        ["InputC","Eingang","$EinC","c"]
    ],
    "Output":[
        ["OutputA","Ausgang","$AusA","a"],
        ["OutputB","Ausgang","$AusB","a"],
        ["OutputC","Ausgang","$AusC","a"]
    ]
}
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#5

Beitrag von Robosoc »

Noch besser:

Code: Alles auswählen

{
    "Level":[
        ["$EinA","bool",false],
        ["$EinB","bool",false],
        ["$EinC","bool",false],
        ["$AusA","bool",false],
        ["$AusB","bool",false],
        ["$AusC","bool",false],
        ["$Falsch","bool",false]
    ],
    "Module":[
        ["Latch","$Falsch","$AusA","$EinA",1],
        ["Latch","$Falsch","$AusB","$EinB",1],
        ["Latch","$Falsch","$AusC","$EinC",1]
    ],
    "Input":[
        ["InputA","Eingang","$EinA","c"],
        ["InputB","Eingang","$EinB","c"],
        ["InputC","Eingang","$EinC","c"]
    ],
    "Output":[
        ["OutputA","Ausgang","$AusA","c"],
        ["OutputB","Ausgang","$AusB","c"],
        ["OutputC","Ausgang","$AusC","c"]
    ]
}
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#6

Beitrag von Robosoc »

danik hat geschrieben: Mi Okt 02, 2019 10:30 pm Habe die Ausgänge auf "A" gestellt, bei "C" sende er nichts. Bei "A" aber 12 Telegramme mit False (stellt dann auch den zuvor mit TRUE gestellten Eingang wieder auf FALSE).
Ich Hätte wohl verstanden, warum 12 Telegramme gesendet wurden , aber dass sie als false rausgingen wundert mich.

Ich teste jetzt auch mal, ist mit dem iPad 2 air im Bett nur immer so blöd im dok Modus... :D
Zuletzt geändert von Robosoc am Do Okt 03, 2019 5:52 am, insgesamt 2-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#7

Beitrag von Robosoc »

HAbe den Gedankenfehler gefunden und konnte das gesamte Verhalten jetzt nachvollziehen... Du bekommst gleich ne neue :D idee
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#8

Beitrag von Robosoc »

So, jetzt aber, sorry

Getestet und ich meine es funktioniert. Achtung jetzt die Ein- und Ausgänge gleich beschalten:
Bild

Und nicht wundern, wenn Du die Logik manuell durch setzen eines Eingangs auf True im Doktor Modus Triggerst, Triggert sie sich zweimal.

Code: Alles auswählen

{
    "Level":[
        ["$EinA","bool",false],
        ["$EinB","bool",false],
        ["$EinC","bool",false],
        ["$AusA","bool",false],
        ["$AusB","bool",false],
        ["$AusC","bool",false],
        ["$Wahr","bool",true],
        ["$Falsch","bool",false]
    ],
    "Module":[
        // Eingang A würde True gesetzt
        ["Latch","$Wahr","$AusA","$EinA",1],
        ["Latch","$Falsch","$AusB","$EinA",1],
        ["Latch","$Falsch","$AusC","$EinA",1],
        // Eingang B würde True gesetzt
        ["Latch","$Wahr","$AusB","$EinB",1],
        ["Latch","$Falsch","$AusA","$EinB",1],
        ["Latch","$Falsch","$AusC","$EinB",1],
        // Eingang C würde True gesetzt
        ["Latch","$Wahr","$AusC","$EinC",1],
        ["Latch","$Falsch","$AusB","$EinC",1],
        ["Latch","$Falsch","$AusA","$EinC",1]
    ],
    "Input":[
        ["InputA","Eingang","$EinA","c"],
        ["InputB","Eingang","$EinB","c"],
        ["InputC","Eingang","$EinC","c"]
    ],
    "Output":[
        ["OutputA","Ausgang","$AusA","A"],
        ["OutputB","Ausgang","$AusB","A"],
        ["OutputC","Ausgang","$AusC","A"]
    ]
}
Zuletzt geändert von Robosoc am Do Okt 03, 2019 5:52 am, insgesamt 3-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Ersteller
danik
Reactions:
Beiträge: 391
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 256 Mal
Danksagung erhalten: 266 Mal

#9

Beitrag von danik »

Hi Sven

Vielen dank für die Unterstützung. Genau das habe ich gesucht. Alle 3 Gruppenadressen werden noch doppelt gesendet, das spielt ja aber keine Rolle.

Vielen dank

Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 635 Mal
Danksagung erhalten: 775 Mal

#10

Beitrag von Robosoc »

Gerne!
danik hat geschrieben: Sa Okt 05, 2019 10:20 am Alle 3 Gruppenadressen werden noch doppelt gesendet, das spielt ja aber keine Rolle.
Aber nur, wenn du das manuell im Doktormodus trigggers, odeR? Wenn es über den Bus getriggert wird, müsste es glaube ich ohne doppeltes Senden klappen. Hast Du das auch schon analysiert?
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Antworten

Zurück zu „Logikengine & Logik-Editor“