ioBroker Forum


Nutzungsbedingungen |Datenschutzrichtlinie
Cloud |Dokumentation
Aktuelle Zeit: 25.02.2018, 04:55

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 05.11.2016, 20:25 
Offline
starter

Registriert: 09.05.2016, 13:13
Beiträge: 34
Hat sich bedankt: 4 Mal
Прошу совета, может быть кто-нибудь уже делал подобное.
Я разделяю слои физических и логических устройств, связывая их между собой в отдельном скрипте.
В результате получаю удобную структуру на логическом уровне и дальше работаю только с логическими устройствами. В случае изменения чего-либо редактирую только связку, в вся основная логика, которая может быть во многих скриптах, остается неизменной.
Вот пример:
Bild[/url]
Теперь собственно вопрос:
Как логичнее и удобнее всего связать выключатель с соответствующими лампами (их может быть как одна, так и несколько). Логичнее всего, на мой взгляд, в объекте выключателя добавить свойство, в которое прописать имена объектов - ламп, которыми он управляет. Система позволяет добавить такое свойство, но из скрипта вытащить его значения у меня не получается...
Можно в global сделать массив и описать ссылки на управляющие и управляемые объекты в нем, но мне кажется, что это некрасиво и громоздко.
Что подскажет коллективный разум?


Nach oben
   
BeitragVerfasst: 06.11.2016, 12:31 
Offline
Site Admin
Benutzeravatar

Registriert: 13.07.2014, 14:42
Beiträge: 7712
Hat sich bedankt: 290 Mal
Danksagung erhalten: 829 Mal
Ho Hum hat geschrieben:
Прошу совета, может быть кто-нибудь уже делал подобное.
Я разделяю слои физических и логических устройств, связывая их между собой в отдельном скрипте.
В результате получаю удобную структуру на логическом уровне и дальше работаю только с логическими устройствами. В случае изменения чего-либо редактирую только связку, в вся основная логика, которая может быть во многих скриптах, остается неизменной.
Вот пример:
Bild[/url]
Теперь собственно вопрос:
Как логичнее и удобнее всего связать выключатель с соответствующими лампами (их может быть как одна, так и несколько). Логичнее всего, на мой взгляд, в объекте выключателя добавить свойство, в которое прописать имена объектов - ламп, которыми он управляет. Система позволяет добавить такое свойство, но из скрипта вытащить его значения у меня не получается...
Можно в global сделать массив и описать ссылки на управляющие и управляемые объекты в нем, но мне кажется, что это некрасиво и громоздко.
Что подскажет коллективный разум?


Ты можешь посмотреть данные объекта, так:
Code:
console.log(JSON.stringify(getObject('Home.0.Lights.FirstFloor.L-20').native));


И даже заносить туда свои значения. Параметр объекта native создан как раз для того, что бы там хранить специфичные данные.
Советую сделать так:
Code:
extendObject('Home.0.Lights.FirstFloor.L-20', {native: {binds: ['myRealID']}});



И потом
Code:
on('Home.0.Lights.FirstFloor.L-20', function (obj) {
    var myObj = getObject('Home.0.Lights.FirstFloor.L-20');
    if (myObj && myObj.native && myObj.native.binds) {
        if (typeof myObj.native.binds === 'object') {
            for (var b = 0; b < myObj.native.binds.length; b++) {
                setState(myObj.native.binds[b], obj.state.val);
            }
        } else {
            setState(myObj.native.binds, obj.state.val);
        }
    }
});


P.S. очень интересный подход. ;)


Nach oben
   
BeitragVerfasst: 06.11.2016, 13:39 
Offline
starter

Registriert: 09.05.2016, 13:13
Beiträge: 34
Hat sich bedankt: 4 Mal
Спасибо, попробую.
Надеюсь, слова про интересный подход сказаны в прямом, а не переносном смысле :)


Nach oben
   
BeitragVerfasst: 06.11.2016, 13:59 
Offline
Site Admin
Benutzeravatar

Registriert: 13.07.2014, 14:42
Beiträge: 7712
Hat sich bedankt: 290 Mal
Danksagung erhalten: 829 Mal
Ho Hum hat geschrieben:
Спасибо, попробую.
Надеюсь, слова про интересный подход сказаны в прямом, а не переносном смысле :)

В прямом.
Я бы даже изменил:
Code:
on(/^Home\./, function (obj) {
    if (obj && obj.native && obj.native.binds) {
        if (typeof obj.native.binds === 'object') {
            for (var b = 0; b < obj.native.binds.length; b++) {
                setState(obj.native.binds[b], obj.state.val);
            }
        } else {
            setState(obj.native.binds, obj.state.val);
        }
    }
});


Nach oben
   
BeitragVerfasst: 04.07.2017, 10:50 
Offline
professional

Registriert: 12.05.2015, 16:49
Beiträge: 514
Wohnort: Lithuania, Vilnius
Hat sich bedankt: 17 Mal
Danksagung erhalten: 38 Mal
Ho Hum hat geschrieben:
Прошу совета, может быть кто-нибудь уже делал подобное.
Я разделяю слои физических и логических устройств, связывая их между собой в отдельном скрипте.
В результате получаю удобную структуру на логическом уровне и дальше работаю только с логическими устройствами. В случае изменения чего-либо редактирую только связку, в вся основная логика, которая может быть во многих скриптах, остается неизменной.
Вот пример:
Bild[/url]
Теперь собственно вопрос:
Как логичнее и удобнее всего связать выключатель с соответствующими лампами (их может быть как одна, так и несколько). Логичнее всего, на мой взгляд, в объекте выключателя добавить свойство, в которое прописать имена объектов - ламп, которыми он управляет. Система позволяет добавить такое свойство, но из скрипта вытащить его значения у меня не получается...
Можно в global сделать массив и описать ссылки на управляющие и управляемые объекты в нем, но мне кажется, что это некрасиво и громоздко.
Что подскажет коллективный разум?

viewtopic.php?f=16&t=7113

_________________
js-controller: 1.2.0 / node.js: v4.8.6 / npm: 2.15.11
admin: 3.0.1
javascript: 3.5.0
web: 2.1.7 vis: 1.0.4
cloud: 2.0.5

Server: DELL FX170 / linux: Debian 8.8 Jessie
Adapter: MegaD-2561, Mega-ESP, Wrapper(Home)


Nach oben
   
BeitragVerfasst: 30.09.2017, 19:42 
Offline
professional

Registriert: 24.08.2016, 11:12
Beiträge: 193
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal
Значение сейчас true :

Code:
var obj1=JSON.stringify(getObject('megad.0.p0').common.custom["sql.0"].enabled);

Как его поменять на false?


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu Forum:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de