NEWS
getObject();
-
Hallo zusammen,
ich bin noch recht frisch mit ioBroker beschäftigt. Ich bin im Internet auf das Script gestoßen mit dem man die offenen Fenster zählen kann. Leider bekomme ich bei der Zeile
var windows = getObject(id).common.members ; immer angezeigt das members keine Eigenschaft des Objektes ist. Ich habe keine Ahnung woran das liegt.
Kennt ihr das Problem und habt vielleicht einen Tipp für mich?Viele Grüße und danke schon mal im voraus!
Christoph -
Hallo Christoph,
ohne das verwendete Script zu kennen ist glaub keine Hilfe möglich
Gruß
LausiD -
@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!