NEWS
Iobroker.admin v1.0.0
-
-
In JIRA ist eine noch nicht bearbeitete Fehlermeldung enthalten:
Die Behandlung von Datenpunkten vom Typ "boolean" mit Zustandstexten (common.states) im Reiter "Zustände" (adminStates.js) muss korrigiert werden, da die Auswahl über die Select Box anstelle von false/true einen String (den Zustandstext) in den Wert (states.val) des Datenpunktes schreibt.
-
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:
-
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?
-
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" :-(
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