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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neue Logikbausteine für den L1/X1: Formelberechnung, Statistik und mehr...
leider muss ich nach einigen Stunden probieren, Dich doch noch mal um Hilfe bitten:
Status:
- Ich habe 10 virtuelle "X1-Schalter" => Geräte-Datenpunkte Binär (welche auch per GA in der ETS zusätzlich verknüpft / erreichbar sind)
- diese Datenpunkte sind in der Visualisierung über einen "Schalter - tastend, nur einschalten" dargestellt
Ziel:
- wenn ich einen der Schalter "taste" sollen alle anderen 9 ausgeschaltet werden
alte Lösung:
- mit einem "alten" Logikblatt hat dies alles funktioniert bei 7 "Schaltern" und ohne weiteren Logikbaustein, nur mit manueller Verknüpfung der jeweils X-Ausgänge (Gesamtanzahl -1) an jeweils alle anderen Ausgänge
Problem:
- nach Erweiterung von 7 auf 10 "Schalter" spinnt das Logikblatt und trotz mehrfacher Versuche / Neubauen funktionieren nur 8 von 10 Schaltern (der erste und zweite Schalter funktionieren einfach nicht, wie im Logikblatt abgebildet)
Idee:
- Ich nutze Deinen Baustein und habe es eigentlich auch ansatzweise hinbekommen.....ABER auch hier spinnt der Schalter 1 und 2
.... was mache ich falsch? Woran könnte dies liegen?
Anbei Screenshots alte Version und Screenshots neue Version.
Die letzten beiden Screenshots sind vom Schalter AUS und STANDBY, welche eben nicht funktionieren.
Warum auch immer (mehrfache Inbetriebnahme, neues Erstellen der Eingangsbausteine) geht jetzt alles wunderbar. Werde noch einige Dinge testen und finalisieren und es im eigenen Thread (den ich ja schon mal dafür benutzt hatte zum Thema "Szenensteuerung") dokumentieren. Nochmals an dieser Stelle DANKE FÜR DEINEN LOGIKBAUSTEIN!
ich möchte gerne den Zustand mehrerer Parameter kombinieren und nutze dazu die Formelberechnung, um die Eingänge zu verknüpfen. Solange an jedem Eingang ein Wert anliegt, funktioniert das wunderbar und die Formelberechnung erzeugt den gewünschten kombinierten Text.
Das Problem entsteht jedoch, wenn nicht alle Eingänge einen Wert haben. Zum Beispiel: Vier Eingänge haben Werte, aber einer nicht. In diesem Fall gibt die Formelberechnung leider kein Ergebnis aus. Ich möchte jedoch, dass die vorhandenen Werte der vier Eingänge trotzdem verknüpft und angezeigt werden.
Beispiel mit zwei Parametern - wenn die Restabfalltonne in weniger al 24 Stunden abgeholt wird geht Restabfall_Warnung auf 1. Dann schreibt der Baustein in den Text den ich später von der Alexa vorlesen lassen "Bitte Restabfalltonne heute raus stellen". Das selbe mit der Biotonne oder ähnlichem. Solange ich aber nicht was in beiden stehen habe kommt gar nichts raus.
Ist das die komplette Logik? Es wäre vielleicht noch hilfreich einen Screenshot Deines Logikblattes zu zeigen. Ansonsten gebe ich als Antwort auf Deine Frage: "Du kannst in der Formelberechnung auch einen Wert vorbelegen". Ich vermute aber, dass dies genauso wenig hilfreich ist, wie Deine ineinander kopierten Formelinhalte.
Die Formelberechnung fragt noch mehr Dinge ab. Aber die Logik ist die selbe. Es sind die Mülltonnen, Feuchtigkeit einiger Sensoren im Garten und ob was im Briefkasten ist :-) Wenn die Tonne raus muss, oder es wo zu trocken ist oder wenn Post da ist spricht die Alexa dies sobald ein Benutzer an der Alexa steht. Es klappt auch super solange alle Parameter Werte schreiben. Nach einem Neustart des X1 ist das aber für eine längere Zeit nicht der Fall - dann kommt gar kein Text an.
({Restabfall_Warnung:B} ? (", Restabfall " + {Restabfall_Info:S}) + ", Bitte Restabfalltonne heute raus stellen " : ".") ({Biotonnel_Warnung:B} ? (", Biotonne " + {Biotonne_Info:S}) + ", Bitte Biotonne heute raus stellen ": ".") ({Gelbetonne_Warnung:B} ? (", Gelbetonne " + {Gelbetonne_Info:S}) + ", Bitte Gelbetonne heute raus stellen ": ".") ({Papiertonne_Warnung:B} ? (", Papiertonne " + {Papiertonne_Info:S}) + ", Bitte Papiertonne heute raus stellen ": ".") ({Rasen_Warnung:B} ? (", Rasen hat nur " + {Rasen_Mitte_Info:S}) + " Prozent Bodenfeuchte. Ich Bewässere den Rasen heute Nacht" : ".") ({Rasen_Vordach_Warnung:B} ? (", Rasen unter dem Vordach hat nur " + {Rasen_Vordach_Info:S} + " Prozent Bodenfeuchte") : ".") ({Hecke_Warnung:B} ? (", Hecke hat nur " + {Hecke_Info:S} + " Prozent Bodenfeuchte") : ".") ({Feigen_Warnung:B} ? (", Die Feigen haben nur " + {Feigen_Info:S} + " Prozent Bodenfeuchte") : ".") ({Post_Warnung:B} ? "Bitte Post aus Briefkasten holen" : ".") ({Irgendeine_Warnung:B} ? (".") : "Alles OK")
Du hast es ja selbst schon geschrieben, nach einem Neustart funktioniert es nicht, bis alle Variablen einen Wert haben. Das ist durch die Formelberechnung bedingt, die erst eine Ergebnis liefert, wenn alle Variablen definiert sind.
Das sollte einfach zu beheben sein.
Du solltest für jede der Eingangsvariablen bei der Datenpunktdefinition „Wert vom KNX Bus lesen“ aktivierten. Damit das funktioniert (also der Readrequest vom X1 nach einem Neustart erfolgreich beantwortet wird), muss für jede GA (bei einem Gerät) das L-Flag gesetzt sein. Das kannst Du einfach in der GA Ansicht kontrollieren.
Solltest Du interne Variable nutzen, gilt das Gleiche. Dann müssen alle Vorstufen für die Erzeugung eines Wertes dieser Variablen erfüllt sein.
Du kann im Webinterface des X1 bei Logik recht weit nach unten scrollen und mit dem Plus das betreffende Logikblatt öffnen. Dann siehst Du nach einem Neustart des X1 alle Variablen/Eingänge des Formelberechners und kannst die Signale identifizieren, die die Berechnung blockieren, weil sie nicht definiert sind.
Viel Erfolg!
Kurze OT Frage, über welchen Baustein steuerst Du Alexa an?
für jede der Eingangsvariablen bei der Datenpunktdefinition „Wert vom KNX Bus lesen“ aktivierten
Dann werden zwei GroupValueRead Telegramme gesendet: Für jeden Logik-Eingang eines und das zweite für den Datenpunkt. Mit anderen Worten, die Datenpunktdefinition „Wert vom KNX Bus lesen“ braucht es nur für X1-Funktionen (Kacheln), nicht jedoch für Eingänge auf Logikblättern.
Der Rest von # 322 ist zutreffend, bei den Kalenderabfragen wird das L-Flag sinngemäß interpretiert werden müssen
Deine ursprüngliche Frage ist ja nun schon beantwortet, das hoffe ich zumindest. Unabhängig davon vielleicht noch ein kleiner Tipp für zukünftige Beiträge in Bezug auf Logikblätter:
- 1x Screenshot des gesamten Logikblattes
- 1x Screenshot des entsprechenden Bausteins MIT sichtbaren Eigenschaften / Feldern (so breit als möglcih)
- die einzelnen Formeln sind als Text zum Analysieren oder Ausprobieren sicherlich hilfreich ABER dann bitte einen Zeilenumbruch nach jeder Formel
Kurze OT Frage, über welchen Baustein steuerst Du Alexa an?
Ich Ich nutze zum ansteuern der Alexa den WebRequest Baustein von Daniel Albuschat in Kombination mit dem voicemonkey.io Dienst. Zum feststellen ob jemand vor der Alexa steht nutze ich eine Routine in der Alexa die durch Präsenz gestartet wird.
Da die meisten Variablen lokal sind und ich sie beim Start nicht direkt einlesen kann, habe ich bei diesen Variablen in den Eigenschaften der GPA einen "Vorgabewert" festgelegt. Diesen Wert habe ich bewusst außerhalb des Alarmbereichs gewählt. Einige Variablen, wie zum Beispiel die Bodenfeuchte im Garten, fragen ihren Status nur alle 60 Minuten per Web-Request ab. Es ist auf jeden Fall besser als vorher. Das die Formelberechnung immer auf Vollständigkeit wartet ist für mich nicht perfekt auch wenn es ein super Baustein ist. Aber, es läuft, und das ist großartig! Daher nochmals vielen Dank!
Aus einem Logikbaustein erhalte ich einen Dimmwert, den ich nicht nur über Deine Formelberechnung "weiterreichen", sondern auf zwei anderen Ausgängen mit einem Offset versehen möchte.
Beispiel: Dimmwert = 78%
Ausgang 1: 78%
Ausgang 2: 68% (Offset von -10)
Ausgang 3: 63% (Offset von -15)
Das funktioniert auch genauso tadellos. Wenn aber nun der Basis-Dimmwert < 10% respektive < 15% ist, dann erhalte ich ein negatives Ergebnis. Im Umkehrschluss ein Ergebnis > 100%. Gibt es einen Weg dies auf 0% und 100% zu begrenzen? Muss ich überhaupt begrenzen oder ist es dem Aktor egal, was für ein Wert kommt?
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