Seite 1 von 2

Schalten mit langer / kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: So Aug 02, 2020 9:32 pm
von Robert_Mini
Hallo zusammen!

Im folgenden möchte ich einen Baustein zum Schalten, der langen und kurzen Tastendruck auswertet/unterscheidet, mit euch teilen.

Aufgrund der performanten Logik-Engine des TWS funktioniert das Schalten tatsächlich verzögerungsfrei wie bei KNX Tastern, die lang/kurz intern auswerten können. Mein 230V Binäreingang konnte das nicht, jetzt kann er es :D :dance:!

Funktion:
  • Der Taster muss auf "Sende 1 bei Betätigung, sende 0 beim Loslassen" parametriert sein.
  • Abhängig von der Dauer der Betätigung der Taste wird Ausgang A oder B umgeschaltet.
  • Das Umschalten erfolgt parametrierbar entweder vom Status eines Rückmeldeobjektes oder vom letzten Status des Ausgangs der Logik.
  • Dauer für langen Tastendruck ist einstellbar, wie auch ein Timeout, falls kein Aus-Telegramm vom Taster kommt.
  • Neu mit V1.0: Bei Timeout=0 wird direkt bei erreichen der langen Betätigungszeit geschaltet und nicht erst beim Loslassen.
Ein- und Ausgänge:
  • Eingang Taster: Hier wir die GA des Tasters verknüpft, der 1 bei Betätigung und 0 beim Loslassen sendet.
  • Rückmeldeobjekt A/B:Hier kann für jeden Ausgang das Rückmeldeobjekt des Schaltaktors (nicht des Tasters!) verknüpft werden. Es wird dann vom letzten zurück gemeldeten Status umgeschaltet (==> Wichtig zb bei Zentral aus!)
  • Enable Rückmeldung: Damit werden beide Rückmeldeeingänge berücksichtigt (einzeln nicht vorgesehen!). Bleibt dieser Eingang auf "false",
    so wird das Ausgang intern auf den Eingang zurückgeführt
  • Dauer langer Tastendruck: Betätigungszeit, ab der ein langer Tastendruck ausgewertet wird und Objekt B umgeschaltet wird.
  • Timeout langer Tastendruck: Zeit nach Empfang des "True" ab der "False" nicht mehr ausgewertet wird. zB Taster bleibt hängen und löst sich nach 2h => ignorieren. Mit Timeout = 0 wird der Timeout deaktiviert! Ab V1.0 wird bei Timeout=0 direkt bei Ablauf der Zeit für Betätigung lang geschaltet. Soll weiterhin erst bei Loslassen geschaltet werden, einfach einen ausreichend langen Timeout setzen.
  • Ausgang Schalten A: Schaltobjekt, das bei kurzer Betätigung umgeschaltet wird.
  • Ausgang Schalten B: Schaltobjekt, das bei langer Betätigung umgeschaltet wird.
Nutzungsrechte:
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.

Falls wer einen freiwilligen Beitrag zur Motivation leisten will: Klick

lg
Robert
Logik_uebersicht.png

Neue Version V1.0

Code: Alles auswählen

/**===========================================================
Wertet den Tastendruck aus und schaltet abhäng von kurz/lang
den jeweiligen Ausgang um
V1.0: bei Timeout=0 wird direkt bei erreichen der Zeit für 
lange Betätigung geschaltet
============================================================*/
{
    "Level":[
        // Eingänge
        ["$I_Taster","bool",false],
        ["$I_Rueckmeldung_A","bool",false],
        ["$I_Rueckmeldung_B","bool",false],
        ["$I_DauerKurzLang","float",0.0],
        ["$I_DauerTimeout","float",0.0],
        ["$I_EnableRueckmeldeobjekt","bool",false],
        
        // Ausgänge
        ["$Ausgang_A","bool",false],
        ["$Ausgang_B","bool",false],
        
        // interne Variablen
        ["$Ausgang_B1","bool",false],
        ["$Ausgang_B2","bool",false],

        ["$TimerTasterStatus","bool",false],
        ["$TasterTriggered","bool",false],
        ["$TasterLosgelassen_Kurz","bool",false],
        ["$TasterLosgelassen_Lang","bool",false],
        ["$TasterZeitErreicht_Lang","bool",false],
        
        ["$TimerTasterTimeout","bool",false],
        ["$TimerTasterTimeoutGes","bool",false],
        ["$TimerTasterTimeout0","bool",false],
        ["$KonstFalse","bool",false],
        ["$KonstTrue","bool",true],
        ["$Konst0","float",0.0],
        ["$temp_float","float",0.0]
    ],
    "Module":[
	    // Taster hat Logik getriggert?
	    ["Triggered", "$I_Taster", "$TasterTriggered"],
	    // Prüfen, ob Timeout einen Wert > 0 hat
	    ["Limiter","$TimerTasterTimeout","$temp_float","$TimerTasterTimeout0",["$Konst0", "$Konst0"]],
	    // Timeout oder kein Timeout definiert
	    ["Or",["$TimerTasterTimeout","$TimerTasterTimeout0"],"$TimerTasterTimeoutGes"],
        
        // Auswertung der kurzen Betätigung: Timer noch nicht abgelaufen, Taster hat getriggert und ist losgelassen 
	    ["And" , ["$TimerTasterStatus","$TasterTriggered","-$I_Taster"],"$TasterLosgelassen_Kurz"],
        // Auswertung der langen Betätigung beim Loslassen: Timer abgelaufen, Taster hat getriggert und ist losgelassen 
	    ["And" , ["-$TimerTasterStatus","$TasterTriggered","-$I_Taster","$TimerTasterTimeoutGes"],"$TasterLosgelassen_Lang"],
        // Auswertung ob langen Betätigungszeit erreicht: Taster hat nicht getriggert und ist noch gedrückt, Timer noch aktiv, da noch nicht ausgewertet. 
	    ["And" , ["$TimerTasterStatus","-$TasterTriggered","$I_Taster","$TimerTasterTimeoutGes"],"$TasterZeitErreicht_Lang"],
        
        // Ausgang A umschalten, wenn Taster vor erreichen der Betätigungszeit lang losgelassen wird.
	    ["Multiplexer",["$Ausgang_A","-$I_Rueckmeldung_A"],"$Ausgang_A","$TasterLosgelassen_Kurz"],
        // Ausgang B umschalten - 2 Varianten: beim Loslassen (und Zet lang erreicht) oder unmittelbar bei Erreichen der Betätigungszeit lang
	    ["Multiplexer",["$Ausgang_B","-$I_Rueckmeldung_B"],"$Ausgang_B1","$TasterLosgelassen_Lang"],
	    ["Multiplexer",["$Ausgang_B","-$I_Rueckmeldung_B"],"$Ausgang_B2","$TasterZeitErreicht_Lang"],

	    // Bei Timeout=0 Ausgang bereits bei Ablauf der langen Betätigungszeit schalten
	    ["Multiplexer",["$Ausgang_B1","$Ausgang_B2"],"$Ausgang_B","$TimerTasterTimeout0"],
	    //
	    ["SendExplicit","$TasterLosgelassen_Kurz","$Ausgang_A",0],
	    ["SendExplicit","$TasterLosgelassen_Lang","$Ausgang_B",0],
	    ["SendExplicit","$TasterZeitErreicht_Lang","$Ausgang_B",0],
	    
	    // Ausgang auf Rückmeldung schreiben, wenn nicht Rückmeldung nicht aktiv
	    ["Latch","$Ausgang_A","$I_Rueckmeldung_A","-$I_EnableRueckmeldeobjekt",0],
	    ["Latch","$Ausgang_B","$I_Rueckmeldung_B","-$I_EnableRueckmeldeobjekt",0],
	    
	    // Timer bei steigender Flange starten
	    ["Monoflop","$I_Taster","-$I_Taster","$TimerTasterStatus","$I_DauerKurzLang",2],
	    ["Monoflop","$I_Taster","-$I_Taster","$TimerTasterTimeout","$I_DauerTimeout",2]
	    
    ],
    "Input":[
        ["Eingang Taster","Winter bei Winter=true","$I_Taster","c"],
        ["Rückmeldeobjekt A","Rückmeldeobjekt für kurzen Tastendruck ","$I_Rueckmeldung_A","u"],
        ["Rückmeldeobjekt B","Rückmeldeobjekt für langen Tastendruck","$I_Rueckmeldung_B","u"],
        ["Enable Rückmeldung","Rückmeldeobjekt damit vom tatsächlichen Status umgeschaltet wird","$I_EnableRueckmeldeobjekt","c"],
        ["Dauer langer Tastendruck","Mindestdauer für langen Tastendruck","$I_DauerKurzLang","c"],
        ["Timeout langer Tastendruck","Timeout langer Tastendruck","$I_DauerTimeout","c"]
    ],
    "Output":[
        ["Ausgang Schalten A","Schaltobjekt für Objekt A","$Ausgang_A","x"],
        ["Ausgang Schalten B","Schaltobjekt für Objekt B","$Ausgang_B","x"]
	  //["Debug Val_Small","","$Val_Small","a"]
    ]
}
/**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.*/
Alte Version V0.0

Code: Alles auswählen

/**===========================================================
Wertet den Tastendruck aus und schaltet abhäng von kurz/lang
den jeweiligen Ausgang um
V0.0: Es wird jeweils beim Loslassen geschaltet.
============================================================*/

{
    "Level":[
        // Eingänge
        ["$I_Taster","bool",false],
        ["$I_Rueckmeldung_A","bool",false],
        ["$I_Rueckmeldung_B","bool",false],
        ["$I_DauerKurzLang","float",0.0],
        ["$I_DauerTimeout","float",0.0],
        ["$I_EnableRueckmeldeobjekt","bool",false],
        
        // Ausgänge
        ["$Ausgang_A","bool",false],
        ["$Ausgang_B","bool",false],
        
        // interne Variablen
        ["$TimerTasterStatus","bool",false],
        ["$TasterTriggered","bool",false],
        ["$TasterLosgelassen_Kurz","bool",false],
        ["$TasterLosgelassen_Lang","bool",false],
        ["$TimerTasterTimeout","bool",false],
        ["$TimerTasterTimeoutGes","bool",false],
        ["$TimerTasterTimeout0","bool",false],
        ["$KonstFalse","bool",false],
        ["$KonstTrue","bool",true],
        ["$Konst0","float",0.0],
        ["$temp_float","float",0.0]
    ],
    "Module":[
	    // Taster hat getriggert?
	    ["Triggered", "$I_Taster", "$TasterTriggered"],
	    
	    //
	    ["Limiter","$TimerTasterTimeout","$temp_float","$TimerTasterTimeout0",["$Konst0", "$Konst0"]],
	    ["Or",["$TimerTasterTimeout","$TimerTasterTimeout0"],"$TimerTasterTimeoutGes"],
	    ["And" , ["$TimerTasterStatus","$TasterTriggered","-$I_Taster"],"$TasterLosgelassen_Kurz"],
	    ["And" , ["-$TimerTasterStatus","$TasterTriggered","-$I_Taster","$TimerTasterTimeoutGes"],"$TasterLosgelassen_Lang"],
	    ["Multiplexer",["$Ausgang_A","-$I_Rueckmeldung_A"],"$Ausgang_A","$TasterLosgelassen_Kurz"],
	    ["Multiplexer",["$Ausgang_B","-$I_Rueckmeldung_B"],"$Ausgang_B","$TasterLosgelassen_Lang"],
	    ["SendExplicit","$TasterLosgelassen_Kurz","$Ausgang_A",0],
	    ["SendExplicit","$TasterLosgelassen_Lang","$Ausgang_B",0],
	    
	    // Ausgang auf Rückmeldung schreiben, wenn nicht Rückmeldung nicht aktiv
	    ["Latch","$Ausgang_A","$I_Rueckmeldung_A","-$I_EnableRueckmeldeobjekt",0],
	    ["Latch","$Ausgang_B","$I_Rueckmeldung_B","-$I_EnableRueckmeldeobjekt",0],
	    
	    // Timer bei steigender Flange starten
	    ["Monoflop","$I_Taster","-$I_Taster","$TimerTasterStatus","$I_DauerKurzLang",2],
	    ["Monoflop","$I_Taster","-$I_Taster","$TimerTasterTimeout","$I_DauerTimeout",2]
	    
    ],
    "Input":[
        ["Eingang Taster","Winter bei Winter=true","$I_Taster","c"],
        ["Rückmeldeobjekt A","Rückmeldeobjekt für kurzen Tastendruck ","$I_Rueckmeldung_A","c"],
        ["Rückmeldeobjekt B","Rückmeldeobjekt für langen Tastendruck","$I_Rueckmeldung_B","c"],
        ["Enable Rückmeldung","Rückmeldeobjekt damit vom tatsächlichen Status umgeschaltet wird","$I_EnableRueckmeldeobjekt","c"],
        ["Dauer langer Tastendruck","Mindestdauer für langen Tastendruck","$I_DauerKurzLang","c"],
        ["Timeout langer Tastendruck","Timeout langer Tastendruck","$I_DauerTimeout","c"]
    ],
    "Output":[
        ["Ausgang Schalten A","Schaltobjekt für Objekt A","$Ausgang_A","x"],
        ["Ausgang Schalten B","Schaltobjekt für Objekt B","$Ausgang_B","x"]
	  //["Debug Val_Small","","$Val_Small","a"]
    ]
}
/**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.*/

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: So Aug 02, 2020 9:38 pm
von Robosoc
Robert, echt Hammer. Vielen Dank für das Teilen. Genial beschrieben und - so mein Eindruck - an alles gedacht.

Sind die auskommentierten Zeilen/ Module quasi eine Kopiervorlage oder planst Du noch Erweiterungen? (sieht mir eher nach Kopiervorlage aus)...

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: So Aug 02, 2020 9:41 pm
von Robert_Mini
Danke! Freut mich wenn's gefällt.

Ja das ist meine Kopiervorlage (hab sie gerade noch rausgenommen). Damit kann ich jederzeit auch im Logikeditor noch was ergänzen, ohne dass ich vom Forum o.ä. suchen und kopieren muss.

lg
Robert

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 11:00 am
von StefanW
Liebe Foristen,

Robert leistet einen tollen Job und stellt hier geniale Logiken mit guter Beschreibung und Funktionalität zur Verfügung.

Beim Homeserver müsste man für solche Bausteine jeweils 10 bis 25 EUR bezahlen.

Robert_Mini hat geschrieben: So Aug 02, 2020 9:32 pmFalls wer einen freiwilligen Beitrag zur Motivation leisten will: Klick
==> Bitte seid doch so nett und nutzt diesen Link und lasst dem Robert etwas zukommen für seine Logiken. Das hebt die Motivation und ihr bekommt dann sicher einen Strom von guten Logikmodulen weiterhin

Als jemand, der selbst sehr viel in Foren gibt, kenne ich das frustrative Element, dass zwar gerne von allen anderen genommen, aber kaum etwas zurückgegeben wird. Hier könnt diejenigen, die nur lesen und mitnehmen auch einen guten und gerechten Beitrag leisten.

lg

Stefan

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 11:44 am
von Robert_Mini
Danke Stefan!

Der Baustein wäre meiner Meinung nach auch als Standardbaustein interessant.
Unabhängig davon werde ich noch die Rückmeldung getrennt aktivierbar für A / B machen (braucht man wenn zb 1x Aktor und 1x Zentral aus).

lg
Robert

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 11:52 am
von Robosoc
Robert_Mini hat geschrieben: Mo Aug 03, 2020 11:44 am Der Baustein wäre meiner Meinung nach auch als Standardbaustein interessant.
Sehe ich genauso!

Darauf aufbauend macht auch ein Baustein Sinn, der ein 1-Tasten-Dimmer realisiert. Das ist m.E. in Verbindung z.B.
  • mit 2D-Seiten in der Comet-Visu
  • anderen Visu-Systemen zum Platzsparen in der Anzeige
  • bei einfachen Tastern, die 1-Tasten Dimmen oder Jalousiefahren nicht können
interessant.

Werde ich irgendwann versuchen zu realisieren.

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 4:06 pm
von maggyver
Hallo ...

ja, der sollte in die Reihe der Standardbausteine aufgenommen werden.
Bin auch dafür!

Die Entscheidung dafür liegt in Stefans Händen.

Robert hängt sich da extrem rein, ich gewöhne mich gerade an die sehr vielen, fast unbegrenzten Möglichkeiten, die der Timberwolf Server derzeit schon bietet. Ich lese zwar mehr still mit, aber vielleicht frag ich das ein oder andere Male, eventuell auch "doofe" Sachen. Dann nur nicht steinigen ... aus Fehlern lernt man.

Echt spitze Produkt, gute Mannschaft, tolle Kommunity.

Ich denke mich hat es jetzt richtig erwischt, für alle meine Ideen, da müsste ich glatt noch ein Haus bauen oder renovieren.

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 5:21 pm
von Robert_Mini
maggyver hat geschrieben: Mo Aug 03, 2020 4:06 pm ... aber vielleicht frag ich das ein oder andere Male, eventuell auch "doofe" Sachen. Dann nur nicht steinigen ... aus Fehlern lernt man.
Echt spitze Produkt, gute Mannschaft, tolle Kommunity.
Ich denke mich hat es jetzt richtig erwischt, für alle meine Ideen, da müsste ich glatt noch ein Haus bauen oder renovieren.
Ich sag meinem Sohnemann immer: " Es gibt keine doofen Fragen" :lol: .

Mich hat es schon länger erwischt und ich bin immer wieder begeistert, was alles geht und wie schnell man Dinge getestet hat.

Also gerne her mit Fragen und Vorschlägen, was an Bausteinen alles so fehlt. Ich habe schon viele Dinge umgesetzt, teile aber nur die universellen Sachen. Ich denke aber schon länger an einen Erfahrungsaustausch-Thread, wo jeder so preisgibt, was seine Logiken so treiben. Einerseits Ideengrube als auch die Möglichkeit nach Bausteinen zu fragen.

lg
Robert

Re: Schalten mit langer/kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 6:18 pm
von StefanW
Hi,
maggyver hat geschrieben: Mo Aug 03, 2020 4:06 pmIch lese zwar mehr still mit, aber vielleicht frag ich das ein oder andere Male, eventuell auch "doofe" Sachen. Dann nur nicht steinigen ... aus Fehlern lernt man.
bitte keine Zurückhaltung. Dies ist ein NETTES Forum und wir helfen uns hier auf einer sachlichen Ebene.

==> Es ist jede Frage erlaubt und niemand muss sich irgend etwas vorwerfen lassen. Natürlich wünschen wir uns, dass man vorher ein wenig recherchiert und sich einliest, aber wenn man nichts findet (obwohl das irgendwo dann doch stand) muss man sich dafür nie rechtfertigen.

Die oberste Regel hier im Forum ist "höfliche Unterstützung auf der Basis gegenseitigen Wohlwollens zu sachlichen technischen Themen im Smarthome"

lg

Stefan

Re: Schalten mit langer / kurzer Betätigung und optionalen Rückmeldeobjekten

Verfasst: Mo Aug 03, 2020 6:38 pm
von maggyver
Danke Jungs,

ich weiß ich habe vergessen meine Fußzile mit Leben zu füllen.
Das kommt noch, ich bin gerade erst am Lesen und das ist eine ganze Menge.

Ich versuche mich natürlich bevor ich unnötige Fragen stelle in das Thema einzulesen.

Für so einen Erfahrungsaustausch-Thread für Bausteine oder Lösungsvorschläge sehe ich hier auch Bedarf. Nur wenn es dann spezieller wird muss man der Übersichtlichkeit wegen schon seperate Threads machen. Wo man da denn Schnitt macht ... bin ich überfragt ... aber gerade für "Anfänger" ist ja schon einges zum "Aufholen" hier los.

LG

René