@Scrounger Hi, danke für die Antwort! Das mit dem input-Feld klappt leider nicht, da ich darin kein Objekt speichern kann, weil ioBroker das ganze escaped. Aber das mit dem custom[adapter.instance].key hilft vielleicht, ggf. kann ich da ja direkt einen Wert abspeichern.
Zwischenzeitlich habe ich einen Workaround gefunden - den ich selbst allerdings ein wenig als gebastelt empfinde. Wenn es mit dem custom[adapter.instance].key klappt, werde ich das umstellen. Zu Doku-Zwecken aber hier schon mal meine Lösung:
//Init
if (typeof customPostInits !== 'undefined') {
customPostInits.iqontrol = function ($div, values, instanceObj, type, role) {
var adapter = $div.data('adapter');
$('#dialog-customs .btn-save').on('click', function(){
if($('#tab-customs-settings li[data-adapter="' + adapter + '"] input[data-field="enabled"]').is(":checked")){
(function(){ //Closure--> (everything declared inside keeps its value as ist is at the time the function is created)
var _currentId = gMain.navigateGetParams();
var _currentObj = gMain.objects[_currentId];
var _adapter = adapter;
var _states = states[_adapter]; //<-- Das ist das Object, welches gespeichert werden soll
setTimeout(function(){
if (typeof _currentObj.common.custom == 'undefined') _currentObj.common.custom = {};
if (typeof _currentObj.common.custom[_adapter] == 'undefined') _currentObj.common.custom[_adapter] = {};
_currentObj.common.custom[_adapter].states = _states; //<-- Hier wird das Objekt in den temporären ioBroker-Objekt-Speicher übertragen
gMain.socket.emit('setObject', _currentId, _currentObj, function(err){ //<-- Und hier wird es dann in die Datenbank dauerhaft übertragen
if(err) alert("Errir saving Object");
});
}, 100);
})(); //<--End Closure
}
});
}
}
Das ganze funktioniert. Wenn ich eine gefühlt bessere Lösung habe, werde ich nachberichten.
LG und Danke für die Hilfe!