NEWS
UND und ODER Funktionen funktionieren nicht Blockly/KNX
-
Hallo zusammen,
meine ersten Schritte in Blockly habe ich gemacht, leider nicht mit viel Erfolg. Von mehreren Beispielen, hauptsächlich von Youtube-Videos, habe ich probiert ein Blockly zu basteln, welche mir einen Datenpunkt ändert, wenn alle Fenster, alle Türen & alle Fenster&Türen geöffnet sind.
https://www.youtube.com/watch?v=oN71WVgeK4c&t=488s
Verlinktes Video zeigt meine Hauptquelle. Auch den js. Datenpunkt habe ich so erstellt. Bitte nicht wundern, der Punkt heisst alle Fenster und Türen, zu Versuchszwecken, habe ich dir Türen noch nicht mit aufgeführt (-;
Wenn ich dieses Blockly mit nur einer KNX GA trigger und dann die verschachtelte UND Abfrage rauslasse, dann funktioniert das. Es funktionieren also alle Schnittstellen. Sobald ich nur einen UND oder auch ODER Block einfüge funktioniert das Ganze nicht mehr.
Kann ich so eine UND-Abfrage nicht machen? Ich habe das Gefühl dass die UND Blöcke irgendwie Probleme verursachen, leider habe ich kein UND Block gefunden mit mehr als zwei Vergleichen.
Vielleicht habt ihr ja eine Idee. Ich benötige das Objekt für meine Visu um eben zu sehen ob alles zu ist oder nicht.
Schöne Grüße
-
@tompador sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
der Punkt heisst alle Fenster und Türen
wie genau?
Fenster und Türen
?
Mit Leerzeichen und Umlaut?
und ein&
darf auch nicht drin seinFollowing characters are prohibited to use in IDs: ._\-/ :!#$%&()+=@^{}|~.
@tompador sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
Kann ich so eine UND-Abfrage nicht machen?
im Prinzip schon, nur musst du das wahr hinter jeden
Wert von
setzen@tompador sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
hauptsächlich von Youtube-Videos
Darum halte ich da nichts von.
-
@homoran Danke für die schnelle Antwort, das könnte schon die Lösung sein bei jedem UND ein "Wert von" einzusetzen. Werde ich später testen.
Sorry, ich hatte das jetzt exemplarisch aufgeschrieben, der Datenpunkt heisst "Alle-Fenster_Tueren_geschlossen. Wie ich aber sehe, sind auch hier zwei Zeichen(-&_) enthalten. Hat jedoch trotzdem geklappt und der Bindestrich ist nur ein Schreibfehler, eigentlich wollte ich alles mit Unterstrichen machen und Umlaute entsprechend weglassen.
"EG & OG Alle Fenster" sind in diesem Fall KNX Ga´s aus der ETS. Mein genannter Datenpunkt in js ist in diesem Beispiel gar nicht zu sehen weil ich da dann in die Nacht herein noch sehr viel rumprobiert habe. Die Idee die KNX GAs zu ändern habe ich mittlerweile verworfen. Ich erstelle dann drei neue Datenpunkte in js. die keine deiner genannten Zeichen beinhalten.
Leider sind meine kompletten KNX GAs mit Unterstrichen und sogar Umlauten aufgebaut. Hatte bisher keine Probleme damit.
-
@Homoran : In Blockly werden die Namen der Datenpunkte angezeigt. Diese können sich von der ID unterscheiden und auch Leerzeichen und Sonderzeichen enthalten. Die Beschränkungen gelten nur für die IDs.
-
@zarello sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
In Blockly werden die Namen der Datenpunkte angezeigt. Diese können sich von der ID unterscheiden und auch Leerzeichen und Sonderzeichen enthalten.
stimmt!
@Tompador Sorry für die Verwirrung
-
Danke. Das bedeutet aber dass meine kompletten GAs aus KNX dem nicht entsprechen
Bisher hat alles geklappt. Was muss ich denn jetzt erwarten bzw. was könnte dann passieren?
-
@tompador sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
Was muss ich denn jetzt erwarten bzw. was könnte dann passieren?
Ist alles gut.
Umlaute sind offiziell nicht verboten (siehe Liste) -
@homoran Sorry ich muss erst wieder reinkommen in das Forenleben, eigentlich würde ich dich ordentlich zitieren^^
Following characters are prohibited to use in IDs: ._-/ :!#$%&()+=@^{}|~.
Hier sind ja neben den Umlauten auch Binde- und Unterstrich aufgeführt. Die habe ich ausnahmslos in jeder GA und hatte bisher auch immer das Gefühl das alles sauber gelöst zu haben.
-
@tompador sagte: Datenpunkt heisst "Alle-Fenster_Tueren_geschlossen.
Anstelle der Zuweisung von zweimal 18 Datenpunkten kann man es einfacher mittels Selektor und Schleife lösen:
Die Datenpunkte "POSITION" sind true oder 1 bei "offen"?
-
@tompador sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
Hier sind ja neben den Umlauten
keine Umlaute
@tompador sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
auch Binde- und Unterstrich aufgeführt.
richtig
steht so in der Doku:
https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#idsBei den Unterstrichen vermute ich dass diese nicht erlaubt sind, weil die Unterstriche als Ersatz für verbotene Zeichen erstellt werden
-
@homoran sagte: Bei den Unterstrichen vermute ich dass diese nicht erlaubt sind, weil die Unterstriche als Ersatz für verbotene Zeichen erstellt werden
Unterstriche und Bindestriche sind erlaubt, wie man an "0_userdata" und einigen Adapternamen (z.B. "node-red") sieht. Punkte haben eine besondere Bedeutung für die Ordnerstruktur. Ich vermeide Umlaute und ß.
-
@paul53 sagte:
Unterstriche und Bindestriche sind erlaubt,
Dann müsste diese Doku angepasst werden
https://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#ids@paul53 sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
Ich vermeide Umlaute und ß.
mache ich genauso
-
@paul53 said in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
Die Datenpunkte "POSITION" sind true oder 1 bei "offen"?
Geschlossen = true ; in irgendeiner Einstellung bei einem Adapter gab es glaube ich aber einen Haken zu setzen, dass true das Gleiche wie 1 ist....glaube beim KNX-Adapter
wow, danke für das Skript. Das muss ich ersteinmal nachvollziehen wobei ich denke, das grundsätzliche habe ich verstanden. Leider fehlt mir ein wenig der Hintergrund bzg. der Auslastung des RPi4s. Bitte lacht jetzt nicht, aber bedeutet eine Schleife nicht das etliche male pro Sekunde etwas berechnet wird? Ach vielleicht gar nicht weiter drauf eingehen. Ich probiere das nachher mal aus.
-
@tompador sagte: Geschlossen = true
Dann muss man den Wert negieren.
-
@homoran sagte: Dann müsste diese Doku angepasst werden
In der deutschen Doku ist es angepasst.
Folgende Zeichen dürfen nicht in IDs verwendet werden:
[]*,;'"`<>\\?
.
Es wird auch nicht empfohlen,^$()/
zu verwenden. -
So, nachgebastelt habe ich das jetzt. Naja was man eben basteln nennt
Nachvollzogen habe ich das ganze allerdings leider noch nicht. Ich habe auch noch nicht so wirklich mit Variablen gearbeitet. Das ist bestimmt ein Satz wo alle Programmierer jetzt die Augen verdrehen. Sorry
Könnt ihr mir helfen nachzuvollziehen, was genau da jetzt abläuft?
Was genau muss ich in "IDs vom Selektor $" einsetzen. Ich möchte ja drei Datenpunkte ansteuern, Fenster, Türen, Fenster_und_Tueren. Oder soll ich hier die KNX GAs verwenden? Könnte dann die Variablen auch noch durch GAs ersetzen. Allerdings mit _ & und auch Umlauten:
Danke schonmal
-
@tompador sagte: Was genau muss ich in "IDs vom Selektor $" einsetzen.
Für "Alle Fenster & Türen": knx.0.Fenster_und_Türen.*POSITION
Wenn die getrennten Datenpunkte für Fenster / Türen beschrieben werden sollen, benötigt man zwei Schleifen: Eine für Fenster und eine für Türen. -
Hallo,
danke bis hierher. Gestern abend noch getestet, war total erfreut, weil alles den Anschein gemacht hat auf Anhieb zu funktionieren. Nun leider heute noch einmal hier und da mit richtigen Fenstern (also nicht nur die Zustände im Broker oder ETS geändert) getestet und irgendwie funktioniert die Verbindung zwischen knx und iobroker nicht mehr einwandfrei. Mal ja mal nein, und recht willkürlich so macht es zumindest den Anschein. Wenn ich das Skript stoppe funktioniert alles wieder einwandfrei.
Ich habe das Skript noch einmal gestartet und ein Fenster geöffnet und wieder geschlossen. Das Öffnen wird noch angezeigt, das Schließen jedoch nicht.
Hat jemand eine Idee? So sieht es jetzt aus.
Schöne Grüße
-
Mir ist nicht ganz klar, warum der Selektor bei "Falls Objekt" alle Fenster und Türen einsammeln soll, bei den Schleifen jedoch Fenster und Türen getrennt durchlaufen werden müssen.
Edit: Gerade noch meinen Denkfehler gesehen: Das muss natürlich so sein, da man für die Fenster und Türen auch separate Datenpunkte hat.
Trotzdem die Frage: Funktionieren die Selektoren so, dass auch Punkte mit dem Stern gefunden werden?Vielleicht solltest Du bei "Falls Objekt" auch beide Selektoren verwenden, also links auf den blauen Knopf klicken und eine weitere Objekt ID durch ziehen hinzufügen und bei den beiden Anschlüssen von "Falls Objekt" dann die beiden Selektoren verwenden, die auch bei den grünen Blöcken verwendet werden.
-
@tompador sagte: Wenn ich das Skript stoppe funktioniert alles wieder einwandfrei.
Du schreibst auf Datenpunkte, die nach KNX senden? Hake mal "mit Verzögerung" an, insbesondere beim letzten DP.
@zarello sagte in UND und ODER Funktionen funktionieren nicht Blockly/KNX:
Vielleicht solltest Du bei "Falls Objekt" auch beide Selektoren verwenden
Das macht bei der verwendeten Struktur keinen Unterschied.