Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Du musst dafür mehrere Kanäle hintereinander schalten.
Dabei kannst du den Ausgang von dem einen mit einem internen Eingang von dem anderen verknüpfen.
So hast du mit zwei Kanälen bis zu vier werte, die du verarbeiten kannst
ich würde gerne den Mittelwert von mind. 3, oder 4 Eingängen auf den Ausgang senden, geht das irgendwie?
Ist möglich durch Verkettung mehrerer Kanäle. Falls Du den Raumcontroller oder eine andere Applikation mit dem Modul Funktionsblöcke einsetzt, dann ist es einfacher dort die Aggregations-Funktion zu nutzen.
ch würde gerne den Mittelwert von mind. 3, oder 4 Eingängen auf den Ausgang senden, geht das irgendwie?
Am einfachsten wenn du die Funktionsblöcke benutzt, da hast du bis zu 9 Eingänge. Die Funktionsblöcke gibt es aber nicht als eigene FW, sondern die sind bei sehr vielen anderen dabei. Z.B. bei unseren neuen RaumController.
Huhu, wollte gerade mal wieder eine Logik mit Benutzerformel aufbauen. Ich bräuchte dabei aber die Möglichkeit, den Wert zu limitieren. Wollte also sowas wie "min(E1+0.25, 1)" schreiben. Nun sehe ich aber in der Liste der unterstützten Funktionen kein "min". Wäre es eventuell Möglich, min und max einzubauen?
Man kann das natürlich mit nem if nachbauen ("if(E1+0.25 > 1, 1, E1+0.25)"), aber das ist natürlich nicht elegant, vor allem da nicht direkt ersichtlich ist, was das Ziel ist
Achja, und direkt noch eine weitere Frage:
Kann man verhindern, dass ein Eingang bei einem Logikkanal die Auswertung triggert? Ich habe hier zwei Eingänge, einer soll die Auswertung triggern, der andere dient nur dazu, den letzten Dimmwert vom Bus zu speichern (der dann in der Formel verändert wird und eben auf einer anderen GA gesendet). Aber aktuell löst auch jeder Empfang eines neuen Dimmwertes vom Bus ein Senden aus, weil eben dieser zweite Eingang auch immer mit als Auslöser dient.
Ich hätte jetzt intuitiv vermutet, dass man bei der Hauptseite der Logik unter "Logik-Trigger" auswählen kann, welche Eingänge triggern. Da sehe ich aber nur allgemeine Einstellungen. Ansonsten wäre das natürlich denkbar bei den einzelnen Eingangsselektoren (z.B. inaktiv, normal/invertiert aktiv, normal/invertiert aktiv aber nicht als Trigger), würde aber logischerweise die Auswahloptionen verdoppeln. Oder dann auf den jeweiligen Einstellungsseiten der Eingänge, dort kann ich aber wohl nur kontrollieren, ob der Dimmwert als logisch falsch oder logisch wahr gewertet wird, ändert aber dann auch nichts an der Auswertung der Logik.
Übersehe ich da noch etwas oder ist dies aktuell wirklich nicht möglich?
Etwas konkreter als Beispiel:
CODE]OpenKNX,cv1,0xA012:0x51/LOG:0x37/10§f~Name=Dimm%2B%20Test§f~Logic=1§f~NameInput1=Ex t.%20Trigger§f~E1=1§f~NameInput2=Dimmstatus§f~E2=1 §f~E2Dpt=3§f~E2LowDpt5001:1=0§f~I1Name=Schaltstatu s§f~I1=1§f~I1Kind=2§f~I1FunctionRel=1§f~NameOutput =Dimmwert§f~ODpt=3§f~OOn=8§f~OOnAll=8§f~OOnFunctio n=202§f~OOff=0§f~OOffAll=0§;OpenKNX[/CODE]
Die referenzierte Logik +1 spielt inhaltlich keine Rolle. Sie liefert einfach nur eine weitere Komponente (0/1) für die logische UND-Verknüpfung.
Letztlich will ich:
- Eingang 2 speichert den letzten empfangenen Wert vom Bus
- Ausgang wird nur geschrieben, wenn Logik True ergibt - also Eingang 1 und interner Eingang 1 jeweils True sind (Eingang 2 ist so definiert, dass er immer True ist) (der Teil funktioniert natürlich schon).
- Die Logik soll aber nur ausgewertet werden, wenn auf Eingang 1 ein Wert empfangen wird - Ereignisse auf Eingang 2 oder dem internen Eingang 1 sollen *nicht* zu einer Auswertung führen.
Aktuell ist es halt so, dass wenn Eingang 1 zuerst True wird, und danach interner Eingang 1 True, dann wird dabei schon ein Wert gesendet. Ebenso wird dann auch jedesmal ein Wert gesendet, wenn Eingang 2 den Wert ändert. Ich will aber halt nur, dass wenn Eingang 1 einen Wert empfängt (und interner Eingang 1 bereits True ist), dass dann auch ein Wert gesendet wird.
Wäre es eventuell Möglich, min und max einzubauen?
Nur über ein zusätzliches Parsen, weil es in der genutzten Library nicht enthalten ist. Da es einfach über Vergleiche nachzubilden ist, lohnt es nicht den Zusatzaufwand.
Nur über ein zusätzliches Parsen, weil es in der genutzten Library nicht enthalten ist. Da es einfach über Vergleiche nachzubilden ist, lohnt es nicht den Zusatzaufwand.
Ah, dachte das wäre was eigenes. Dann wäre der Zusatzaufwand natürlich kaum vertretbar
Dafür kann man ja die Kommentare bei der Benutzerformel nutzen
Wenn ich Software entwickle dann hab ich gerne Code, der von sich aus schon direkt erkennen lässt, was er macht. Doku dann eher für den größeren Kontext
Aber das geht ja schon so - solange man nicht noch mehr verschachteln muss. Aber dann könnte man das natürlich auch über zwei Funktionen abbilden, oder sich sogar allgemein Benutzerfunktionen "min" und "max" bauen, die man immer wieder verwendet.
Ich formuliere das mal so: Wenn ich wieder was an den Benutzerformeln mache, kann ich gerne mal min und max einbauen. Ich würde den Topf jetzt aber nicht "extra" dafür aufmachen, vor allem, weil Du ja schon selber einen Workaround gefunden hast. Ist also nicht abgelehnt, wird aber nicht forciert. Kann somit schon ein Langläufer werden, mit Realisierungszeiten von > 1 Jahr oder so...
Ich weiß, aber das hilft halt wirklich nur, wenn man außer dem Min/Max nichts machen will
Wieso? Du kannst ja den Ausgang von dem Logikkanal weiter verwenden, auch in einer Benutzerformel. Bevor Benutzerformeln da waren, gingen Berechnungen ausschließlich durch Verkettung von Kanälen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar