NEWS
Iobroker.admin v1.0.0
-
Update: Habe in JIRA unter ADMIN-4 eine geänderte "adminStates.js" eingestellt, mit der das Problem behoben sein sollte.
-
Update: Habe in JIRA unter ADMIN-4 eine geänderte "adminStates.js" eingestellt, mit der das Problem behoben sein sollte. `
Bist du sicher, dass du wirklich die neueste Version von admin hast?Ich kann den Kode nicht erkennen hier:
-
Habe weiter getestet, und festgestellt, dass zwar die Selektion so funktioniert, aber es treten andere Effekte auf.
-
Nun habe ich einen kleineren Teil (ab Zeile 95) geändert: Ein Zeile (Kommentar: NEU) hinzugefügt und einiges auskommentiert. Nach einigen Test mit states als String und als Objekt scheint es so zu funktionieren.
! ```
if (main.objects[_id] && main.objects[_id].common && main.objects[_id].common.type == 'boolean' && main.objects[_id].common.states) { var states = main.objects[_id].common.states; /* if (typeof main.objects[_id].common.states == 'string' && main.objects[_id].common.states[0] == '{') { try { states = JSON.parse(main.objects[_id].common.states); var text = ''; for (var s in states) { text += text ? ';' : ''; text += s + ':' + states[s]; } states = text; } catch (ex) { console.error('Cannot parse states: ' + main.objects[_id].common.states); states = null; } } else if (typeof main.objects[_id].common.states == 'object') { var text = ''; for (var s in states) { text += text ? ';' : ''; text += s + ':' + states[s]; } states = text; } if (states) { */ that.$grid.setColProp('val', { editable: true, edittype: 'select', formatter: 'select', // NEU editoptions: {value: states}, align: 'center' }); /* } else { that.$grid.setColProp('val', { editable: true, edittype: 'select', editoptions: {value: 'true:false'}, align: 'center' }); ! } */ } else if (
-
Nun habe ich einen kleineren Teil (ab Zeile 95) geändert: Ein Zeile (Kommentar: NEU) hinzugefügt und einiges auskommentiert. Nach einigen Test mit states als String und als Objekt scheint es so zu funktionieren.
!
`if (main.objects[_id] && main.objects[_id].common && main.objects[_id].common.type == 'boolean' && main.objects[_id].common.states) { var states = main.objects[_id].common.states; /* if (typeof main.objects[_id].common.states == 'string' && main.objects[_id].common.states[0] == '{') { try { states = JSON.parse(main.objects[_id].common.states); var text = ''; for (var s in states) { text += text ? ';' : ''; text += s + ':' + states[s]; } states = text; } catch (ex) { console.error('Cannot parse states: ' + main.objects[_id].common.states); states = null; } } else if (typeof main.objects[_id].common.states == 'object') { var text = ''; for (var s in states) { text += text ? ';' : ''; text += s + ':' + states[s]; } states = text; } if (states) { */ that.$grid.setColProp('val', { editable: true, edittype: 'select', formatter: 'select', // NEU editoptions: {value: states}, align: 'center' }); /* } else { that.$grid.setColProp('val', { editable: true, edittype: 'select', editoptions: {value: 'true:false'}, align: 'center' }); ! } */ } else if (` Du hast ganze Umwandlung deaktiviert. Wie seht dein Problem-Objekt aus?[/s][/s]
` -
Wie seht dein Problem-Objekt aus? `
Z.B. so:{ "_id": "javascript.0.Test.Schalter", "type": "state", "common": { "name": "Test.Schalter", "role": "", "type": "boolean", "read": true, "write": true, "desc": "Schaltertest", "def": false, "states": { "false": "Aus", "true": "Ein" } }, "native": {}, "acl": { "object": 1638, "state": 1638 } }
Mit Umwandlung, aber ohne formatter: 'select' liefert die Auswahl "Aus" bzw. "Ein" (string). Mit der Änderung ist das Ergebnis false bzw. true (boolean).
-
Ich kann dein Problem nicht reproduzieren mit dem Object.
Allerdings es gibt neue Version. Probier mal die.
Ansonsten das wird geschrieben beim Steuern:
{"id":"javascript.0.Test.Schalter","newState":{"val":false,"ts":1462040239,"ack":false,"lc":1462040239,"from":"system.adapter.admin.0"}}
{"id":"javascript.0.Test.Schalter","newState":{"val":true,"ts":1462040221,"ack":false,"lc":1462040221,"from":"system.adapter.admin.0"}}
-
Habe es mit frisch installierter Version 1.0.3 von ibroker.admin gestestet mit folgendem Ergebnis:
javascript-0 2016-04-30 23:46:12 info script.js._Multistate-Test: Test.Schalter: Ein string javascript-0 2016-04-30 23:46:07 info script.js._Multistate-Test: Test.Schalter: Aus string javascript-0 2016-04-30 23:45:43 info script.js._Multistate-Test: Test.String: 20.3 °C string javascript-0 2016-04-30 23:45:18 info script.js._Multistate-Test: Test.String: neuer Text string javascript-0 2016-04-30 23:44:55 info script.js._Multistate-Test: Test.swi: Nein string javascript-0 2016-04-30 23:44:51 info script.js._Multistate-Test: Test.swi: Ja string javascript-0 2016-04-30 23:44:25 info script.js._Multistate-Test: Test.3-Stufen: 2 number javascript-0 2016-04-30 23:44:21 info script.js._Multistate-Test: Test.3-Stufen: 3 number javascript-0 2016-04-30 23:44:07 info script.js._Multistate-Test: Test.Checkbox: true boolean javascript-0 2016-04-30 23:44:03 info script.js._Multistate-Test: Test.Checkbox: false boolean javascript-0 2016-04-30 23:43:43 info script.js._Multistate-Test: Test.Analog: 42 number javascript-0 2016-04-30 23:43:38 info script.js._Multistate-Test: Test.Analog: 43 number admin-0 2016-04-30 23:43:30 info Repository received successfully.
Das ist das zugehörige Testscript:
var anaid = getIdByName("Test.Analog"); var checkid = getIdByName("Test.Checkbox"); var msid = getIdByName("Test.3-Stufen"); var swiid = getIdByName("Test.swi"); var strid = getIdByName("Test.String"); var schaltid =getIdByName("Test.Schalter"); function loggen(dp) { log(dp.common.name +": " + dp.state.val + " " + typeof dp.state.val); } on(anaid, loggen); on(checkid, loggen); on(msid, loggen); on(swiid, loggen); on(strid, loggen); on(schaltid, loggen);
Wie man sieht, liefert die Veränderung des Wertes im Reiter "Zustände" bei den beiden Datenpunkten (common.type: boolean) "Test.swi" und "Test.Schalter" einen String zurück. Der Unterschied zwischen "Test.Schalter" und "Test.swi" ist common.states: Schalter als Objekt und swi als String.
"states": "false:Nein;true:Ja",
-
Habe es mit frisch installierter Version 1.0.3 von ibroker.admin gestestet mit folgendem Ergebnis:
javascript-0 2016-04-30 23:46:12 info script.js._Multistate-Test: Test.Schalter: Ein string javascript-0 2016-04-30 23:46:07 info script.js._Multistate-Test: Test.Schalter: Aus string javascript-0 2016-04-30 23:45:43 info script.js._Multistate-Test: Test.String: 20.3 °C string javascript-0 2016-04-30 23:45:18 info script.js._Multistate-Test: Test.String: neuer Text string javascript-0 2016-04-30 23:44:55 info script.js._Multistate-Test: Test.swi: Nein string javascript-0 2016-04-30 23:44:51 info script.js._Multistate-Test: Test.swi: Ja string javascript-0 2016-04-30 23:44:25 info script.js._Multistate-Test: Test.3-Stufen: 2 number javascript-0 2016-04-30 23:44:21 info script.js._Multistate-Test: Test.3-Stufen: 3 number javascript-0 2016-04-30 23:44:07 info script.js._Multistate-Test: Test.Checkbox: true boolean javascript-0 2016-04-30 23:44:03 info script.js._Multistate-Test: Test.Checkbox: false boolean javascript-0 2016-04-30 23:43:43 info script.js._Multistate-Test: Test.Analog: 42 number javascript-0 2016-04-30 23:43:38 info script.js._Multistate-Test: Test.Analog: 43 number admin-0 2016-04-30 23:43:30 info Repository received successfully.
Das ist das zugehörige Testscript:
var anaid = getIdByName("Test.Analog"); var checkid = getIdByName("Test.Checkbox"); var msid = getIdByName("Test.3-Stufen"); var swiid = getIdByName("Test.swi"); var strid = getIdByName("Test.String"); var schaltid =getIdByName("Test.Schalter"); function loggen(dp) { log(dp.common.name +": " + dp.state.val + " " + typeof dp.state.val); } on(anaid, loggen); on(checkid, loggen); on(msid, loggen); on(swiid, loggen); on(strid, loggen); on(schaltid, loggen);
Wie man sieht, liefert die Veränderung des Wertes im Reiter "Zustände" bei den beiden Datenpunkten (common.type: boolean) "Test.swi" und "Test.Schalter" einen String zurück. Der Unterschied zwischen "Test.Schalter" und "Test.swi" ist common.states: Schalter als Objekt und swi als String.
"states": "false:Nein;true:Ja", ```` `
Und du schaltest über Objekte oder über Zustände?
-
Und du schaltest über Objekte oder über Zustände? `
Tab "Zustände".EDIT: Habe es gerade im Tab "Objekte" getestet. Hier funktioniert es jetzt für alle Datenpunkttypen korrekt
-
Hey,
im Github sind noch Issues … Mich quält schon länger das https://github.com/ioBroker/ioBroker.admin/issues/63 ... Ist da eine Lösung in Sicht? Vorher ist das für mich nicht wirklich "stable"