NEWS
[Gelöst] Adapter Updates in Liste anzeigen
-
Hallo zusammen,
wie kann ich denn am besten den Inhalt des DPs "admin.0.info.updatesJson" in meiner VIS darstellen?
Wenn ich das Widget "json Table" naehme, wird nichts angezeigt.
-
@kuddel wie sieht das JSON aus und wie ist das Widget konfiguriert?
-
So sieht der Inhalt vom DP aus. Der DP kommt direkt vom Admin-Adapter.
{"admin":{"availableVersion":"6.13.16","installedVersion":"6.12.0"},"alexa2":{"availableVersion":"3.26.4","installedVersion":"3.26.3"},"daswetter":{"availableVersion":"3.1.13","installedVersion":"3.1.12"},"device-reminder":{"availableVersion":"3.1.2","installedVersion":"3.0.0"},"email":{"availableVersion":"1.2.2","installedVersion":"1.2.1"},"hm-rpc":{"availableVersion":"1.16.0","installedVersion":"1.15.19"},"mihome-vacuum":{"availableVersion":"4.1.1","installedVersion":"4.1.0"},"parser":{"availableVersion":"2.1.0","installedVersion":"2.0.7"},"web":{"availableVersion":"6.2.3","installedVersion":"6.1.10"},"ws":{"availableVersion":"2.5.10","installedVersion":"2.5.8"},"zigbee":{"availableVersion":"1.10.1","installedVersion":"1.9.7"}}
Widget
Ergebnis:
-
@kuddel Das Problem könnte sein, dass in dem json weirere Arrays sind
und somit dem Attribut eine Ebene fehlt
-
@kuddel sagte in Adapter Updates in Liste anzeigen:
wie kann ich denn am besten den Inhalt des DPs "admin.0.info.updatesJson" in meiner VIS darstellen?
Ich verwende dazu de DP
admin.0.info.updatesList
und lass es in einem HTML-Widget anzeigen.[{"tpl":"_tplGroup","data":{"members":["w00458","w00457"],"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","attrCount":"1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"top":"34px","left":"71px","width":"98px","height":"23px","z-index":"5"},"widgetSet":null},{"tpl":"tplValueStringRaw","data":{"oid":"admin.0.info.updatesNumber","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/main2/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/main2/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/main2/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"67.35%","top":"0%","width":"32.65%","height":"100%","color":"white","font-family":"Tahoma, Geneva, sans-serif","z-index":"5"},"widgetSet":"basic","grouped":true,"groupName":"w00458"},{"tpl":"tplHtml","data":{"hm_id":65535,"digits":"","factor":1,"min":0,"max":1,"step":0.01,"html":"Anzahl ","visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/main2/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/main2/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/main2/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"title":"<b>Fritzbox Daten </b>","visibility-groups-action":"hide","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"0%","top":"0%","width":"60.2%","height":"100%","text-shadow":"rgba(0, 0, 0, 0.9) 3px 3px 4px","color":"white","font-family":"Tahoma, Geneva, sans-serif","z-index":"5"},"widgetSet":"basic","grouped":true,"groupName":"w00457"},{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":true,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{state:admin.0.info.updatesList;n1=state.toString();n2=n1.replace(/,/g, \"<br>\");n2}"},"style":{"left":"19px","top":"57.984375px","z-index":"5","color":"white","font-family":"Tahoma, Geneva, sans-serif","width":"200px","height":"102px","font-size":"small"},"widgetSet":"basic"},{"tpl":"tplHtml","data":{"hm_id":65535,"digits":"","factor":1,"min":0,"max":1,"step":0.01,"html":"ioBroker Updates","visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/main2/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/main2/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/main2/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"title":"<b>Fritzbox Daten </b>","visibility-groups-action":"hide","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"55.984375px","top":"8.984375px","width":"128px","height":"21px","text-shadow":"rgba(0, 0, 0, 0.9) 3px 3px 4px","color":"white","font-family":"Tahoma, Geneva, sans-serif","z-index":"5"},"widgetSet":"basic"},{"tpl":"tplFrame","data":{"visibility-cond":"==","visibility-val":1,"title":"","title_color":"#d7cec1","title_top":"-30","title_left":"0","header_height":"0","header_color":"","title_back":"","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/Buchenweg/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/Buchenweg/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/Buchenweg/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"visibility-groups-action":"hide","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"0px","top":"0px","width":"239px","height":"165px","font-family":"RobotoCondensed-Regular","font-style":"","font-variant":"","font-weight":"normal","font-size":"large","z-index":"4","text-shadow":"none","color":"","background":"#202020","border-style":"solid","box-shadow":"5px 5px 5px rgba(20, 20, 20, 50)","border-radius":"10px","border-width":"2px","border-color":"#ffffff"},"widgetSet":"basic"}]
-
-
@kuddel Mal auf die Schnelle ein Blockly gebastelt.
Im Blockly wird ein eigener DP benötigt vom Typ JSON.Bei mir:
0_userdata.0.System.Abfragen.AdapterUpdates
-
Hab im Blockly noch einen Fehler drin, den ich jetzt erst mal finden und korrigieren muss
Kann bissle dauern
-
@negalein sagte in [Gelöst] Adapter Updates in Liste anzeigen:
Ich verwende dazu de DP admin.0.info.updatesList
nette sache, vorallem seit der info adapter ja gestorben ist...
-
So, Fehler entdeckt - besser gesagt waren es 2 Fehler:
Im OriginalDP der Liste befinden sich je ein Leerzeichen nach dem Komma.
Da es einen neuen tollen Baustein gibt um Zeichen in Text zu ersetzen hab ich natürlich den dazu verwendet und ein Leerzeichen durch NICHTS ersetzen lassen.
Ebenso hat sich der DPadmin.0.info.updatesJson
manchmal erst nach der Liste aktualisiert, deshalb PAUSE:
Der untere Bereich (vom Beitrag oben) bleibt gleich:
-
@djmarc75 vielen Dank.
Habe das direkt bei mir eingebaut:
-
Eben festgestellt dass die Abfrage der Listenlänge auch weg kann:
-
@djmarc75 Ich glaube ich muss wirklich mal Blockly-Bausteine anbieten, um vernünftig Attribute von Objekten setzen zu können. Diese String-Verkettungen ertrage ich nicht mehr
-
@haus-automatisierung sagte in [Gelöst] Adapter Updates in Liste anzeigen:
Diese String-Verkettungen ertrage ich nicht mehr
Ja, ist schon etwas mühsam und kann das Blockly in die Länge ziehen - hab mich aber daran gewöhnt
-
@djmarc75 sagte in [Gelöst] Adapter Updates in Liste anzeigen:
und kann das Blockly in die Länge ziehen
Nicht nur das - spätestens wenn Anführungszeichen
"
im Text vorkommen ist das JSON nicht mehr gültig. -
@haus-automatisierung sagte in [Gelöst] Adapter Updates in Liste anzeigen:
spätestens wenn Anführungszeichen " im Text vorkommen ist das JSON nicht mehr gültig.
ja, durfte ich auch schon zu spüren bekommen und das war mehr als ärgerlich weil die JSON so ellenlang und das Suchen anstrengend war:
Hab das dann in ein Paar "Radioskripten" so "gelöst" : -
@djmarc75 Google: JSON Validator. Einfügen, Fehler sehen
-
@haus-automatisierung said in [Gelöst] Adapter Updates in Liste anzeigen:
@djmarc75 Ich glaube ich muss wirklich mal Blockly-Bausteine anbieten, um vernünftig Attribute von Objekten setzen zu können. Diese String-Verkettungen ertrage ich nicht mehr
Hab mal was in meine webUi gebaut:
Erzeugt automatisch inputs für jeden template part "{{...}}". Erfordert aber noch ein bisschen feinschliff.
Das könnte man dann sicher auch in JS-Adapter übernehmen. Oder wie hast du dir das vorgestellt.Blockly.Blocks['template_string'] = { init: function () { this.appendDummyInput() //@ts-ignore .appendField(new Blockly.FieldLabelSerializable("Text"), "NAME") //@ts-ignore .appendField(new Blockly.FieldTextInput("Test Text with {{aa}} and {{bb}}"), "TEXT"); this.setInputsInline(false); this.setOutput(true, 'String'); this.setColour(230); this._addedInputs = []; this._oldtext = ""; this.setOnChange((changeEvent) => { let v = this.getFieldValue('TEXT'); if (this._oldtext == v) return; this._oldtext = v; let m = /{{(.*?)}}/g let result: RegExpExecArray; let oldConnections = {}; for (let i of this._addedInputs) { oldConnections[i] = (<Blockly.Block>this).getInput(i).connection.targetConnection; (<Blockly.Block>this).removeInput(i); // (<Blockly.Block>this).getDescendants(); //(<Blockly.Block>this).set } this._addedInputs = []; while ((result = m.exec(v)) !== null) { let nm = result[1]; this._addedInputs.push(nm); let ip = (<Blockly.Block>this).appendValueInput(nm) .setCheck(null) .setAlign(Blockly.ALIGN_RIGHT) .appendField(nm); if (oldConnections[nm]) { (<Blockly.Connection>oldConnections[nm]).connect(ip.connection); } } }); }, saveExtraState: function () { return { 'inputs': this._addedInputs, }; }, loadExtraState: function (state) { this._addedInputs = state['inputs'] ?? []; for (let nm of this._addedInputs) { this.appendValueInput(nm) .setCheck(null) .setAlign(Blockly.ALIGN_RIGHT) .appendField(nm); } }, };
-
@jogibear9988 sagte in [Gelöst] Adapter Updates in Liste anzeigen:
Oder wie hast du dir das vorgestellt.
Na dass man keine Texte zusammensetzt, sondern eben JS-Objekte definieren kann
- Erstelle neues Objekt mit Eigenschaften ...
- setze Attribute von Objekt auf ...
- lösche Attribut von Objekt
Weil Objekt zu JSON gibt es ja schon. Wäre ja irgendwie umständlich Texte zusammenzubauen.
-
dazu hab ich in meinem frontend blockly schon ein paar funktionen:
weil man sich eben auch dom objekte holen kann, und auf diesen Eigenschaften setzen muss.