NEWS
DP mit custom Element anlegen
-
Hallo,
ich habe gestern Abend in meiner geistigen Umnachtung in einem Skript einen Baustein gelöscht und bekomme es einfach nicht mehr hin ......
Beim ersten mal, hat es irgendwann geklappt, bekomme es aber nicht mehr reproduziert ^^.Habe jetzt alles so weit neu gebaut:

Mein DP wird korrekt gelöscht und neu angelegt.
Allerdings hatte ich auch noch ein custom Element vergeben.
"custom": { "lovelace.0": { "enabled": true, "entity": "sensor", "name": "VIS_Tabellen_EPG_Tag"Das möchte Irgendwie nicht so wie ich. Irgendwo baue ich wohl immer wieder einen Fehler in die Verschachtelung ein.
Was müsste ich ganz am ende beim Text erstellen noch einfügen (Vermutlich müsste das letzte "} dann auch angepasst werden?
EDIT:
Habe jetzt mal im Backup das JS angeschaut.
Das scheint der Ausschnitt zu sein:........parseFloat(6) * 86400000,':',formatDate(getDateObject((parseFloat((new Date().getTime())) + parseFloat(6) * 86400000)), \"W\", \"de\"),' ',formatDate(getDateObject((parseFloat((new Date().getTime())) + parseFloat(6) * 86400000)), \"DD/MM\"),'\",'].join(''),'\"custom\": { \"lovelace.0\": { \"enabled\": true, \"entity\": \"input_select\", \"name\": \"aber\" } }}',''].join(''))), a.........Habe es jetzt mal so gemacht:

Im letzten Textbaustein habe ich:
"custom":{"lovelace.0":{"enabled": true, "entity":"input_select",":"aber"}}}Will aber noch immer nicht.
@david-g sagte:
,":"aber"Was soll das sein?
Es fehlt die abschließende geschweifte Klammer für "states" vor dem Komma.
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Mittels JS-Funktion ist es erheblich einfacher:
const states = {}; for(let i = 0; i < 7; i++) { states[i] = formatDate(Date.now() + i * 86400000, 'W DD.MM.'); } return JSON.stringify(states);
Ergebnis:
{"type":"number","role":"value","states":{"0":"Mi 13.03.","1":"Do 14.03.","2":"Fr 15.03.","3":"Sa 16.03.","4":"So 17.03.","5":"Mo 18.03.","6":"Di 19.03."},"custom":{"lovelace.0":{"enabled":true,"entity":"input_select","name":"aber"}}} -
@david-g sagte:
,":"aber"Was soll das sein?
Es fehlt die abschließende geschweifte Klammer für "states" vor dem Komma.
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Mittels JS-Funktion ist es erheblich einfacher:
const states = {}; for(let i = 0; i < 7; i++) { states[i] = formatDate(Date.now() + i * 86400000, 'W DD.MM.'); } return JSON.stringify(states);
Ergebnis:
{"type":"number","role":"value","states":{"0":"Mi 13.03.","1":"Do 14.03.","2":"Fr 15.03.","3":"Sa 16.03.","4":"So 17.03.","5":"Mo 18.03.","6":"Di 19.03."},"custom":{"lovelace.0":{"enabled":true,"entity":"input_select","name":"aber"}}}@paul53 sagte in DP mit custom Element anlegen:
Was soll das sein?
Da fehlt in der Tat was vor.....
@paul53 sagte in DP mit custom Element anlegen:
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Das stimmt wohl....
Werde deinen Vorschlag heute Abend einmal nachbauen.
Auf das "heute, morgen und übermorgen" bei den States kann ich verzichten.
-
@david-g sagte:
,":"aber"Was soll das sein?
Es fehlt die abschließende geschweifte Klammer für "states" vor dem Komma.
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Mittels JS-Funktion ist es erheblich einfacher:
const states = {}; for(let i = 0; i < 7; i++) { states[i] = formatDate(Date.now() + i * 86400000, 'W DD.MM.'); } return JSON.stringify(states);
Ergebnis:
{"type":"number","role":"value","states":{"0":"Mi 13.03.","1":"Do 14.03.","2":"Fr 15.03.","3":"Sa 16.03.","4":"So 17.03.","5":"Mo 18.03.","6":"Di 19.03."},"custom":{"lovelace.0":{"enabled":true,"entity":"input_select","name":"aber"}}}@paul53 sagte in DP mit custom Element anlegen:
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Jetzt zum Glück nicht mehr:
https://forum.iobroker.net/topic/73439/javascript-7-9-0-neue-objekt-und-http-bausteine
-
@paul53 sagte in DP mit custom Element anlegen:
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Jetzt zum Glück nicht mehr:
https://forum.iobroker.net/topic/73439/javascript-7-9-0-neue-objekt-und-http-bausteine
@haus-automatisierung sagte: Jetzt zum Glück nicht mehr:
Endlich! Habe gerade getestet

-
@paul53 sagte in DP mit custom Element anlegen:
JSON (Objekte) per Blockly zu erstellen, ist immer ein Krampf.
Jetzt zum Glück nicht mehr:
https://forum.iobroker.net/topic/73439/javascript-7-9-0-neue-objekt-und-http-bausteine
Das sieht gut aus.
Dann versuche ich es mit den neuen Bausteinen, auch wenn sich in meinem Fall die Schleife natürlich anbietet.Ich mag es aber, Dinge für einen anderen Zweck modifizieren zu können.
-
Das sieht gut aus.
Dann versuche ich es mit den neuen Bausteinen, auch wenn sich in meinem Fall die Schleife natürlich anbietet.Ich mag es aber, Dinge für einen anderen Zweck modifizieren zu können.
@david-g sagte in DP mit custom Element anlegen:
Dann versuche ich es mit den neuen Bausteinen
Ich glaube im "Datenpunkt erzeugen"-Baustein steht fix ein
JSON.parse()im generierten JS-Code. Es könnte also sein, dass man dort nicht direkt ein Objekt fürcommonübergeben kann. Da müsste ich den Block dann nochmal anpassen damit beide Fälle abgedeckt werden. -
Das sieht gut aus.
Dann versuche ich es mit den neuen Bausteinen, auch wenn sich in meinem Fall die Schleife natürlich anbietet.Ich mag es aber, Dinge für einen anderen Zweck modifizieren zu können.
@david-g sagte: auch wenn sich in meinem Fall die Schleife natürlich anbietet.
Ja, aber mit einer kleinen Änderung:
const states = {}; for(let i = 0; i < 7; i++) { states[i] = formatDate(Date.now() + i * 86400000, 'W DD.MM.'); } return states;Blockly:

-
@david-g sagte: auch wenn sich in meinem Fall die Schleife natürlich anbietet.
Ja, aber mit einer kleinen Änderung:
const states = {}; for(let i = 0; i < 7; i++) { states[i] = formatDate(Date.now() + i * 86400000, 'W DD.MM.'); } return states;Blockly:

@paul53 Ah tricky, ist halt etwas unschön dass man dann ein
JSON.parse(JSON.stringify(...))generiert. -
@david-g sagte in DP mit custom Element anlegen:
Dann versuche ich es mit den neuen Bausteinen
Ich glaube im "Datenpunkt erzeugen"-Baustein steht fix ein
JSON.parse()im generierten JS-Code. Es könnte also sein, dass man dort nicht direkt ein Objekt fürcommonübergeben kann. Da müsste ich den Block dann nochmal anpassen damit beide Fälle abgedeckt werden.@haus-automatisierung sagte: Da müsste ich den Block dann nochmal anpassen damit beide Fälle abgedeckt werden.
Du meinst den Block "Datenpunkt erzeugen"? Dort wäre es sinnvoll. Dann bitte auch gleich so, dass man eine Text-Variable als ID übergeben kann (für konstruierte IDs).
-
@david-g sagte: auch wenn sich in meinem Fall die Schleife natürlich anbietet.
Ja, aber mit einer kleinen Änderung:
const states = {}; for(let i = 0; i < 7; i++) { states[i] = formatDate(Date.now() + i * 86400000, 'W DD.MM.'); } return states;Blockly:

-
Habe es nachgebaut.
Klappt auf Anhieb. Dank dir.In dem Fall macht man die States ja schön mit der Funktion.
Könnte man es auch mit den neuen Blöcken machen? Falls man mal was hat, was man nicht sdquenziell abarbeiten kann.
-
@david-g sagte: Könnte man es auch mit den neuen Blöcken machen?
Nein, man kann für das in der Schleife zu setzende Attribut keine Variable übergeben.
states[i] = // ist nicht möglichOkay.
So klappt es jedenfalls auch, falls man Werte hat die man nicht mit einer Schleife berechnen kann.
Hab zum testen einfach mal den selben Fall genommen.
Wenn man irgendwann mit den Objekten direkt im Datenpunkt erzeugen arbeiten könnte, macht es natürlich weniger Fehleranfallig.
Super Baustein @haus-automatisierung
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden