NEWS
Datenpunkte zusammenfassen - Jalousiesteuerung über VIS
-
@codierknecht dann bleib ich wohl lieber erst mal bei meinem praktmatischen Beispiel
Muss erst einmal reinkommen, bevor ich mich mit komplexeren Themen u.a. Selektoren beschäftige.Danke für den Tipp mit dem Objekt lesen und für das Topic!
-
@kfl
Statt mit Selektoren könnte man auch mit einer Liste arbeiten. Also ein DP, der ein Array enthält.
Mir fällt aber jetzt aus dem Stegreif kein Widget ein, mit dem man sowas in der gewünschten Art realisieren könnte. -
@kfl
Oder so:
Man erstellt eine eigene Struktur unterhalb von0_userdata.0
mit DP vom Typ "Logikwert".
Die kann man in der Vis an- und abwählen.
In "name" (oder "desc") steckt man bei den eigenen DP die ID des zugeordneten Rollo.Im Script reagiert man auf einen weiteren DP, der "auf" oder "ab" bzw. den Ziel-Level liefert.
-
@kfl sagte: Auswahl zusammen hoch oder runter fahren soll bei der Ansteuerung.
Links ist die Auswahl und rechts oben sind zwei Button zur Ansteuerung "hoch" oder "runter"?
Dann kann man zu den Jalousien Alias DP erstellen mit der ID-Struktur von z.B. "alias.0.Jalousien.Wohnzimmer_Links". Eine identische Struktur kann man für die Auswahl unter "0_userdata.0.Jalousien" erstellen.
Das Blockly könnte dann so aussehen: -
-
@codierknecht sagte: funktioniert eigentlich immer
In dem Fall aber nur mit den passenden ID-Strukturen unter "alias.0" und "0_userdata.0", die erst erstellt werden müssen.
-
@paul53
Naja - ein bisschen Arbeit muss ja für den TE auch noch übrig bleiben -
@codierknecht said in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
@paul53
Nimm mal @paul53's Vorschlag.
Was er zeigt, funktioniert eigentlich immer einwandfreiDann beschäftige ich mich mit @paul53 's Vorschlag, Danke für deine Bemühungen
@paul53 said in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
@kfl sagte: Auswahl zusammen hoch oder runter fahren soll bei der Ansteuerung.
Links ist die Auswahl und rechts oben sind zwei Button zur Ansteuerung "hoch" oder "runter"?
Dann kann man zu den Jalousien Alias DP erstellen mit der ID-Struktur von z.B. "alias.0.Jalousien.Wohnzimmer_Links". Eine identische Struktur kann man für die Auswahl unter "0_userdata.0.Jalousien" erstellen.
Das Blockly könnte dann so aussehen:Da hätte ich ja direkt drauf kommen können
Wie bekommt man denn eine Funktion "Um"? Bzw was ist der Unterschied zwischen "Um" und "Nach"?
Bei der Bedienung "Wert von Objekt ID", muss hier nicht noch ein Operator hin, der schaut ob die ID's von den Fenster auch mit gefahren werden sollen oder nicht?
Was macht denn die Zeile setze fenster inder Liste (...)?Sorry wegen den ganzen Fragen, aber ich möchte das auch gerne verstehen, dann ist es einfach umzusetzen
-
@kfl sagte: was ist der Unterschied zwischen "Um" und "Nach"?
Die Version des JS-Adapters.
@kfl sagte in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
"Wert von Objekt ID", muss hier nicht noch ein Operator hin, der schaut ob die ID's von den Fenster auch mit gefahren werden sollen oder nicht?
Nein, das ist bei booleschen Werten nicht erforderlich, denn "falls" prüft auf true für "mache".
@kfl sagte in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
Was macht denn die Zeile setze fenster inder Liste (...)?
Vorher wird die ID in eine Liste aufgespalten, wobei der Punkt das trennende Element im Text ist. Aus dieser Liste wird nur das letzte Element (z.B. "Wohnzimmer_Links") genommen, um damit die Datenpunkt-ID der Jalousie zu bilden.
-
@paul53 said in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
@kfl sagte: was ist der Unterschied zwischen "Um" und "Nach"?
Die Version des JS-Adapters.
@kfl sagte in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
"Wert von Objekt ID", muss hier nicht noch ein Operator hin, der schaut ob die ID's von den Fenster auch mit gefahren werden sollen oder nicht?
Nein, das ist bei booleschen Werten nicht erforderlich, denn "falls" prüft auf true für "mache".
@kfl sagte in Datenpunkte zusammenfassen - Jalousiesteuerung über VIS:
Was macht denn die Zeile setze fenster inder Liste (...)?
Vorher wird die ID in eine Liste aufgespalten, wobei der Punkt das trennende Element im Text ist. Aus dieser Liste wird nur das letzte Element (z.B. "Wohnzimmer_Links") genommen, um damit die Datenpunkt-ID der Jalousie zu bilden.
Super, vielen vielen Dank für die nützlichen Infos
Das Ganze funktioniert auch soweit, allerdings habe ich noch 2 Warnungen im Log, wie eine Frage, wieso zwischen drin immer noch die Meldung kommt:
"14:42:49.841 info javascript.0 (148075) script.js.common.Jalousie_Steuerung: alias.0.Jalousie_EG.Hoch"14:42:49.840 info javascript.0 (148075) script.js.common.Jalousie_Steuerung: alias.0.Jalousie_EG.Esszimmer 14:42:49.840 warn javascript.0 (148075) at Jalousien (script.js.common.Jalousie_Steuerung:11:7) 14:42:49.840 warn javascript.0 (148075) at Object.<anonymous> (script.js.common.Jalousie_Steuerung:21:9) 14:42:49.841 info javascript.0 (148075) script.js.common.Jalousie_Steuerung: alias.0.Jalousie_EG.Hoch 14:42:49.841 warn javascript.0 (148075) at Jalousien (script.js.common.Jalousie_Steuerung:11:7) 14:42:49.841 warn javascript.0 (148075) at Object.<anonymous> (script.js.common.Jalousie_Steuerung:21:9) 14:42:49.841 info javascript.0 (148075) script.js.common.Jalousie_Steuerung: alias.0.Jalousie_EG.Küche
var pos, id, fenster; // Beschreibe diese Funktion … async function Jalousien(pos) { var id_list = Array.prototype.slice.apply($("0_userdata.0.Jalousie_EG.*")); for (var id_index in id_list) { id = id_list[id_index]; if (getState(id).val) { id = id.split('.'); fenster = id.slice(-1)[0]; setStateDelayed(('alias.0.Jalousie_EG.' + String(fenster)), pos, false, parseInt(((0) || "").toString(), 10), false); console.log(('alias.0.Jalousie_EG.' + String(fenster))); } } } on({id: "0_userdata.0.Jalousie_EG.Hoch"/*Hoch*/, val: true}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; await Jalousien(0); }); on({id: "0_userdata.0.Jalousie_EG.Runter"/*Runter*/, val: true}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; await Jalousien(100); });
-
@kfl
Die Namen von Datenpunkten dürfen keine Sonderzeichen enthalten. Insbesondere keine Umlaute! -
@kfl sagte: immer noch die Meldung kommt:
Der Selektor findet auch den Datenpunkt "0_userdata.0.Jalousie_EG.Hoch" zu dem es natürlich keinen Alias gibt.
EDIT: Man kann sie ausblenden:
-
@Codierknecht @paul53 Elegante Lösungen, vielen Dank für eure Unterstützung!!