NEWS
Aufzählungen mittels Blockly editieren
-
Mein Wunsch ist, eine Aufzählung (enum) in ioBroker mit Blockly zu erstellen und die Einträge darin löschen und ergänzen zu können.
Ist so etwas möglich?
-
@legro sagte: Aufzählung (enum) in ioBroker mit Blockly zu erstellen und die Einträge darin löschen und ergänzen zu können.
Mit Blockly eher nicht, da ohnehin nur mit speziellen Javascript-Funktionen realisierbar.
-
@paul53 said in Aufzählungen mittels Blockly editieren:
..
Mit Blockly eher nicht, da ohnehin nur mit speziellen Javascript-Funktionen realisierbar.Es darf gerne auch Java Code sein.
Den kann ich ja zur Not selbst in Blockly einbinden.
Leider habe ich nichts dazu gefunden, wie man auf Aufzählungen zugreifen kann und wie diese Daten strukturiert (Objekt, Array, ..?) sind.
-
@legro sagte: wie diese Daten strukturiert (Objekt, Array, ..?) sind.
Beispiel:
{ "_id": "enum.rooms.living_room", "common": { "icon": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDQ4MC4wNDYgNDgwLjA0NiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDgwLjA0NiA0ODAuMDQ2OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PGc+PHBhdGggZD0iTTMyOC4wMzQsMzIwLjA0NmgtMjR2LTg4YzAtNC40MTgtMy41ODItOC04LThoLTI1NmMtNC40MTgsMC04LDMuNTgyLTgsOHY4OGgtMjRjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MTI4YzAsNC40MTgsMy41ODIsOCw4LDhoMjR2MTZoMTZ2LTE2aDI0MHYxNmgxNnYtMTZoMjRjNC40MTgsMCw4LTMuNTgyLDgtOHYtMTI4QzMzNi4wMzQsMzIzLjYyOCwzMzIuNDUyLDMyMC4wNDYsMzI4LjAzNCwzMjAuMDQ2eiBNODAuMDM0LDQ0OC4wNDZoLTY0di0xMTJoNjRWNDQ4LjA0NnogTTI0MC4wMzQsNDQ4LjA0NmgtMTQ0di02NGgxNDRWNDQ4LjA0NnogTTI0MC4wMzQsMzI4LjA0NnY0MGgtMTQ0di00MGMwLTQuNDE4LTMuNTgyLTgtOC04aC00MHYtODBoMjQwdjgwaC00MEMyNDMuNjE1LDMyMC4wNDYsMjQwLjAzNCwzMjMuNjI4LDI0MC4wMzQsMzI4LjA0NnogTTMyMC4wMzQsNDQ4LjA0NmgtNjR2LTExMmg2NFY0NDguMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTQ3OS45NTQsMTUxLjE2NmwtMTYtMTQ0Yy0wLjQ0Ny00LjA0MS0zLjg1NC03LjEwNC03LjkyLTcuMTJoLTExMmMtNC4wOTYtMC4wMjUtNy41NDksMy4wNDktOCw3LjEybC0xNiwxNDRjLTAuMjc2LDIuMjU4LDAuNDIyLDQuNTI4LDEuOTIsNi4yNGMxLjU1LDEuNzE4LDMuNzY3LDIuNjgsNi4wOCwyLjY0aDY0djI3MmgtMzJjLTQuNDE4LDAtOCwzLjU4Mi04LDh2MzJjMCw0LjQxOCwzLjU4Miw4LDgsOGg4MGM0LjQxOCwwLDgtMy41ODIsOC04di0zMmMwLTQuNDE4LTMuNTgyLTgtOC04aC0zMnYtMjcyaDY0YzIuMjg1LDAuMDE3LDQuNDY5LTAuOTQzLDYtMi42NEM0NzkuNTMyLDE1NS42OTQsNDgwLjIzLDE1My40MjUsNDc5Ljk1NCwxNTEuMTY2eiBNNDMyLjAzNCw0NDguMDQ2djE2aC02NHYtMTZINDMyLjAzNHogTTMzNi45OTQsMTQ0LjA0NmwxNC4yNC0xMjhoOTcuNmwxNC4yNCwxMjhIMzM2Ljk5NHoiLz48L2c+PC9nPjxnPjxnPjxwYXRoIGQ9Ik0yNzIuMDM0LDQ4LjA0NmgtNTIuNzJsLTQ1LjYtNDUuNjhjLTMuMTExLTMuMTM3LTguMTc3LTMuMTU4LTExLjMxNC0wLjA0NmMtMC4wMTYsMC4wMTUtMC4wMzEsMC4wMzEtMC4wNDYsMC4wNDZsLTQ1LjYsNDUuNjhoLTUyLjcyYy00LjQxOCwwLTgsMy41ODItOCw4djEyOGMwLDQuNDE4LDMuNTgyLDgsOCw4aDIwOGM0LjQxOCwwLDgtMy41ODIsOC04di0xMjhDMjgwLjAzNCw1MS42MjgsMjc2LjQ1Miw0OC4wNDYsMjcyLjAzNCw0OC4wNDZ6IE0xNjguMDM0LDE5LjMyNmwyOC43MiwyOC43MmgtNTcuNDRMMTY4LjAzNCwxOS4zMjZ6IE0yNjQuMDM0LDE3Ni4wNDZoLTE5MnYtMTEyaDE5MlYxNzYuMDQ2eiIvPjwvZz48L2c+PGc+PGc+PHBhdGggZD0iTTg4LjAzNCw4MC4wNDZ2ODBoMTYwdi04MEg4OC4wMzR6IE0yMzIuMDM0LDE0NC4wNDZoLTEyOHYtNDhoMTI4VjE0NC4wNDZ6Ii8+PC9nPjwvZz48L3N2Zz4=", "name": { "en": "Living room", "de": "Wohnzimmer", "ru": "Гостиная", "pt": "Sala de estar", "nl": "Woonkamer", "fr": "Salon", "it": "Soggiorno", "es": "Sala", "pl": "Salon", "zh-cn": "客厅" }, "members": [ "alias.0.Wohnen.Licht.Deckenlampe", "javascript.1.test.Senderliste" ] }, "type": "enum", "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1564485845483, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Die zugeordneten Objekte befinden sich in einem Array unter common.members.
@legro sagte in Aufzählungen mittels Blockly editieren:
wie man auf Aufzählungen zugreifen kann
getObject(id), setObject(id, obj), extendObject(id, {common: {members: array}})
-
Vielen Dank für deine Hinweise.
Leider ist für mich JavaScript noch alles Andere als etwas Vertrautes. Ich habe zwar in vielen Sprachen Projekte entwickelt, aber nie in JAVA, sodass ich mich wohl oder über erst einmal in diese Sprache einarbeiten muss. Hier https://javascript.info/getting-started habe ich eine gute Einführung gefunden.
Ich habe mir die Datenstruktur ARRAY mit deren Methoden angelesen. Jetzt ist mein - typisch Anfänger - erstes Problem: Wie kann ich in einer Variablen eine Referenz auf eine solche Aufzählung in ioBroker speichern?
Kurzum: Wie kann ich hierzu getObjekt(id), setObject(id,obj), .. verwenden?
-
könntest du mal genauer erklären, was du vor hast ? enums sind ja eigentlich nicht dafür gedacht, dauernd gewechselt zu werden
letztlich bedeutet das: es wird etwas getriggert und darauf hin entscheidest du, was zum enum gehört oder auch nicht
das kansst du auch mit 2 oder mehreren verschiedenen enums machen
was ist den dein eigentliches ziel dahinter ?
-
@liv-in-sky said in Aufzählungen mittels Blockly editieren:
könntest du mal genauer erklären, was du vor hast ?
Ich möchte meine Rollladenaktoren gruppieren, um sie anschließend gruppenweise steuern zu können. Hierzu möchte ich die Zuweisung eines Aktors zu einer Gruppe ändern können.
-
@legro sagte in Aufzählungen mittels Blockly editieren:
Hierzu möchte ich die Zuweisung eines Aktors zu einer Gruppe ändern können.
verstehe ich immer noch nicht, warum die Zugehörigkeit geändert werden muss, aber wenn es so sein soll, kannst du ja die entsprechenden Rollläden auch mehreren enums zuweisen und dann je nach Notwendigkeit mit der einen oder anderen Enum arbeiten
-
stimme @Homoran zu
aber mal ein beispiel (als javascript):
letztlich musst du das array bearbeiten und das script muss wissen, wie das aussehen soll
seltsamerweise bekomme ich (nur) im blockly eine warnung (als pures javascript nicht) - evtl weiß @paul53 warum da die meldung kommt
javascript.0 2021-09-26 13:36:54.145 warn This object will not be created in future versions. Please report this to the developer. javascript.0 2021-09-26 13:36:54.145 warn Object enum.functions.Steckdose is invalid: obj.type has to exist
-
@liv-in-sky sagte in Aufzählungen mittels Blockly editieren:
im blockly eine warnung (als pures javascript nicht)
@liv-in-sky sagte in Aufzählungen mittels Blockly editieren:
obj.type has to exist
Wenn ich es richtig in erinnerung habe kann man mit Blockly keine (???) Objects (korrekt???) erstellen
-
@homoran das object wird erstellt und richtig abgespeichert - es funktioniert soweit - das setObject mit dem neuen array wird ja in der javascript function gemacht - daher die verwunderung
-
@liv-in-sky sagte in Aufzählungen mittels Blockly editieren:
das object wird erstellt und richtig abgespeichert
aber laut log fehlt dort der
type
-
@homoran
und da hast du recht - der type fehlt bei mir tatsächlich - ich denke der fehler ist bei mir, dass dieses enum durch einen import von irgendwelchen test-dp kam und schon falsch waren - ich habe einfach irgendein enum zum test genommen, was ich nicht nutzedaher solle das ganze bei @legro zu keinen fehlern kommen !
-
-
@paul53 hatte ich mich auch gefragt - ist so in der beschreibung https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#setobject
kann man wohl löschen, wenn du das nicht kennst
-
@liv-in-sky
Alternative Funktion setMembers(idEnum, members):extendObject(idEnum, {common: {members: members}});
-
ist das besser und bevorzuziehen ?
das script macht das, was es soll mit beiden befehlen
weißt du, warum das in der beschreibung ist: "myObj.native.settings = 1;" ich hatte das nur reingetan, als ich die warnung erhielt - die hatte aber eine andere ursache gahabt
-
@liv-in-sky sagte: warum das in der beschreibung ist: "myObj.native.settings = 1;"
Das ist nur ein zufälliges Beispiel.
-
@paul53 danke - habe es oben rausgenommen
-
@homoran said in Aufzählungen mittels Blockly editieren:
.., aber wenn es so sein soll, ..Ich hätte es nunmal gerne möglichst variabel.