NEWS
getObject();
-
@chrweh34 sagte in getObject();:
Leider bekomme ich bei der Zeile
var windows = getObject(id).common.members ; immer angezeigt das members keine Eigenschaft des Objektes ist.id muss die ID einer existierenden Aufzählung sein, z.B. "enum.functions.fenster".
-
Hallo nochmal,
danke für die Rückmeldung!@LausiD
Der code ist von der Seite www.smarthome-tricks.de. Hier der ganze Code:function listEnumDevices() {
log("Liste der Fenster und Status:");
var windows = getObject('enum.functions.windowstatus').common.members;
for(let i = 0; i < windows.length; i++) {
var Status = getState(windows[i]).val;
log(windows[i] + " " + Status);
}log("Liste der Türen und Status:");
var doors = getObject("enum.functions.doorstatus").common.members;
for(let i = 0; i < doors.length; i++) {
var Status = getState(doors[i]).val;
log(doors[i] + " " + Status);
}
}Ich habe die Aufzählungen entsprechend angelegt, nutze allerdings innogy-smarthome fenster-sensoren.
@paul53: "id" war nur zur Verallgemeinerung. Ich benutze "enum.functions.windowstatus" als Aufzählung
. -
@chrweh34 sagte in getObject();:
immer angezeigt das members keine Eigenschaft des Objektes ist.
Wo und wann bekommst Du es angezeigt ?
-
Es wird immer dann angezeigt wenn ich das Script im compiler (Administrator) aufrufe.
-
@chrweh34 sagte in getObject();:
Es wird immer dann angezeigt wenn ich das Script im compiler (Administrator) aufrufe.
Also vom Editor/Parser und nicht bei der Ausführung ? Dann kannst Du es ignorieren.
-
-
Ich habe noch eine Verständnisfrage, mit
log(windows[i] + " " + Status);
bekomme ich den Status aller Fenster im Log angezeigt, das funktioniert einwandfrei.
Wie kriege ich aber diesen Status (Liste aller offenen Fenster) in ein Datenpunkt übergeben, so dass ich z.B. VIS danach triggern kann?
Danke, viele Grüße
-
@mumurik mit der Funktion setState:
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#setstate -
@AlCalzone
danke, das habe ich mir schon gedacht, allerdings verstehe ich nicht ganz, wie es in diesem konkreten Beispiel aussehen soll.So etwa?
setState('Datenpunkte.0.StatusWindowOpenText', Status );
bzw.
function listEnumDevices() {
log("Liste der Fenster und Status:");
var windows = getObject('enum.functions.windowstatus').common.members;
for(let i = 0; i < windows.length; i++) {
var Status = getState(windows[i]).val;
log(windows[i] + " " + Status);
setState('Datenpunkte.0.StatusWindowOpenText', Status );
}???
-
@mumurik sagte:
(Liste aller offenen Fenster) in ein Datenpunkt übergeben
Etwa so:
function listEnumDevices() { log("Liste der Fenster und Status:"); var windows = getObject('enum.functions.windowstatus').common.members; var txt = ''; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; log(windows[i] + " " + Status); if(Status) txt = txt + windows[i] + ',<br>'; } if(txt.length == 0) txt = 'Alle Fenster geschlossen'; setState('Datenpunkte.0.StatusWindowOpenText', txt, true ); }
-
@paul53 sagte in getObject();:
function listEnumDevices() { log("Liste der Fenster und Status:"); var windows = getObject('enum.functions.windowstatus').common.members; var txt = ''; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; log(windows[i] + " " + Status); if(Status) txt = txt + windows[i] + ',<br>'; } if(txt.length == 0) txt = 'Alle Fenster geschlossen'; setState('Datenpunkte.0.StatusWindowOpenText', txt, true ); }
Super, vielen Dank!