<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Guten Morgen,<div class=""><br class=""></div><div class="">Kurze Erklärung: </div><div class=""><br class=""></div><div class="">Zur Zeit arbeite ich an einer "one4all SmartHome App“. Mit dieser kann ich die einzelnen SmartHome-Komponenten (Audio Video, TV plus digitalStrom), pro Zone/Raum steuern. Die Anbindung ans dSS ist eine Web-App, die mit AngularJS entwickelt wird, die Kommunikation basiert auf MQTT, für die ich eine Bridget geschrieben habe (siehe <a href="https://www.npmjs.com/package/mqtt-dss-bridge" class="">https://www.npmjs.com/package/mqtt-dss-bridge</a>).</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><img apple-inline="yes" id="A6B8EC7A-6D02-446F-B944-780F62B8305C" height="240" width="320" apple-width="yes" apple-height="yes" src="cid:53C9A5FB-68AB-472B-93EF-FEDB353B7834@glattnet.ch" class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Das „Problem“:</div><div class=""><br class=""></div><div class="">Von der Konfiguration des dSS-Servers, lese ich die einzelnen Gruppen (yellow, black, etc) der Zone aus, um festzustellen, ob die jeweilige Gruppe, ein Device/Klemme (z.B. Tischleuchte) enthält, das man Steuern kann, anderenfalls wird die ganze Gruppe nicht dargestellt. Bis anhin habe ich dies über das Attribute groups/X/valid gemacht. Da dieses nicht mehr exsistiert brauch ich ein anderes Selektions-Kriterium. Bei der genaueren Analyse des Device Property Tree bin ich auf das outputMode-Attribute gestossen. Falls dieses bei jedem Taster, etc. den Wert 0 hat, ist mein Problem gelöst.    </div><div class=""><br class=""></div><div class="">Das ganze, ist mit einem AngularJS-Filter gelöst:</div><div class=""><br class=""></div><div class=""><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Menlo';font-size:12,0pt;" class=""><span style="color:#808080;" class="">/* @ngInject */<br class=""></span><span style="color:#cc7832;font-weight:bold;" class="">function </span><span style="color:#ffc66d;" class="">groupIsValid</span>() {<br class="">    <span style="color:#808080;" class="">/*jshint validthis: true */<br class=""></span><span style="color:#808080;" class="">    </span><span style="color:#cc7832;font-weight:bold;" class="">return function </span>(items<span style="color:#cc7832;" class="">, </span>prop<span style="color:#cc7832;" class="">, </span>val) {<br class="">        <span style="color:#cc7832;font-weight:bold;" class="">var </span>filtered = []<span style="color:#cc7832;" class="">;<br class=""></span><span style="color:#cc7832;" class="">        </span><span style="color:#9876aa;" class="">angular</span>.<span style="color:#ffc66d;" class="">forEach</span>(items<span style="color:#cc7832;" class="">, </span><span style="color:#cc7832;font-weight:bold;" class="">function </span>(item) {<br class="">            <span style="color:#cc7832;font-weight:bold;" class="">if </span>(<span style="color:#9876aa;" class="">angular</span>.<span style="color:#ffc66d;" class="">isDefined</span>(item.<span style="color:#9876aa;" class="">devices</span>) && Object.<span style="color:#ffc66d;" class="">keys</span>(item.<span style="color:#9876aa;" class="">devices</span>).<span style="color:#9876aa;" class="">length </span>> <span style="color:#6897bb;" class="">0</span>) {<br class="">                <span style="color:#9876aa;" class="">angular</span>.<span style="color:#ffc66d;" class="">forEach</span>(item.<span style="color:#9876aa;" class="">devices</span><span style="color:#cc7832;" class="">, </span><span style="color:#cc7832;font-weight:bold;" class="">function </span>(device) {<br class="">                    <span style="color:#cc7832;font-weight:bold;" class="">if </span>(<span style="color:#9876aa;" class="">angular</span>.<span style="color:#ffc66d;" class="">isDefined</span>(device.outputMode) && device.outputMode.<span style="color:#ffc66d;" class="">val </span>!== <span style="color:#6897bb;" class="">0</span>) {<br class="">                        filtered.<span style="color:#ffc66d;" class="">push</span>(item)<span style="color:#cc7832;" class="">;<br class=""></span><span style="color:#cc7832;" class="">                    </span>}<br class="">                })<span style="color:#cc7832;" class="">;<br class=""></span><span style="color:#cc7832;" class="">            </span>}<br class="">        })<span style="color:#cc7832;" class="">;<br class=""></span><span style="color:#cc7832;" class="">        </span><span style="color:#cc7832;font-weight:bold;" class="">return </span>filtered<span style="color:#cc7832;" class="">;<br class=""></span><span style="color:#cc7832;" class="">    </span>}<br class="">}<br class=""></pre><div class=""><br class=""></div><div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Gruss</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Chris Gross<br class=""><br class="">—————————————————</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Software Engineer<br class=""><br class="">Dietlikon, Switzerland<br class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:cgHome@gmx.net" class="">cgHome@gmx.net</a></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://github.com/cgHome" class="">https://github.com/cgHome</a></div>
</div>

<br class=""></div></body></html>