NEWS
HomematicIP Gerätenamen auslesen [gelöst]
-
Hallo,
ich bin leider in JS völlig unbedarft und versuche mir anhand bestehender Scripte das nötigste beizubringen.
Allerdings verzeifle ich gerade. Ich habe ein fenster_türen_zählen script
function countOpenWindowsDoors() { var openWindows = 0; var openDoors = 0; // Fenster var windows = getObject("enum.functions.windowStatus").common.members; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; if ( Status == "OPEN") { openWindows = openWindows + 1; } } // Türen var doors = getObject("enum.functions.doorStatus").common.members; for(let i = 0; i < doors.length; i++) { var Status = getState(doors[i]).val; if ( Status == "OPEN" ) { openDoors = openDoors + 1; } } var openWindowsText = "Kein Fenster geöffnet"; var openDoorText = "Keine Tür geöffnet"; if ( openWindows > 0 ) { openWindowsText = openWindows + " Fenster geöffnet"; } if ( openDoors > 0 ) { openDoorText = openDoors + " Türe(n) geöffnet"; } setState('0_userdata.0.StatusWindowOpenText', openWindowsText ); setState('0_userdata.0.StatusDoorOpenText', openDoorText ); setState('0_userdata.0.StatusWindowOpen', openWindows ); setState('0_userdata.0.StatusDoorOpen', openDoors ); } $('state(functions=window)').on(function(obj) { countOpenWindowsDoors(); }); $('state(functions=door)').on(function(obj) { countOpenWindowsDoors(); }); countOpenWindowsDoors();Da funktioniert auch alles, allerdings würde ich mir gern den Namen des Aktors mit ausgeben lassen (welches Fenster genau geöffnet ist).
Ich verstehe aber nicht, wie ich mit JS darauf zugreifen kann:
Eigentlich sollte der Name doch "irgendwo" in getObject vorhanden sein.
Danke schon einmal für die Hilfe
Jens
-
Hallo,
ich bin leider in JS völlig unbedarft und versuche mir anhand bestehender Scripte das nötigste beizubringen.
Allerdings verzeifle ich gerade. Ich habe ein fenster_türen_zählen script
function countOpenWindowsDoors() { var openWindows = 0; var openDoors = 0; // Fenster var windows = getObject("enum.functions.windowStatus").common.members; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; if ( Status == "OPEN") { openWindows = openWindows + 1; } } // Türen var doors = getObject("enum.functions.doorStatus").common.members; for(let i = 0; i < doors.length; i++) { var Status = getState(doors[i]).val; if ( Status == "OPEN" ) { openDoors = openDoors + 1; } } var openWindowsText = "Kein Fenster geöffnet"; var openDoorText = "Keine Tür geöffnet"; if ( openWindows > 0 ) { openWindowsText = openWindows + " Fenster geöffnet"; } if ( openDoors > 0 ) { openDoorText = openDoors + " Türe(n) geöffnet"; } setState('0_userdata.0.StatusWindowOpenText', openWindowsText ); setState('0_userdata.0.StatusDoorOpenText', openDoorText ); setState('0_userdata.0.StatusWindowOpen', openWindows ); setState('0_userdata.0.StatusDoorOpen', openDoors ); } $('state(functions=window)').on(function(obj) { countOpenWindowsDoors(); }); $('state(functions=door)').on(function(obj) { countOpenWindowsDoors(); }); countOpenWindowsDoors();Da funktioniert auch alles, allerdings würde ich mir gern den Namen des Aktors mit ausgeben lassen (welches Fenster genau geöffnet ist).
Ich verstehe aber nicht, wie ich mit JS darauf zugreifen kann:
Eigentlich sollte der Name doch "irgendwo" in getObject vorhanden sein.
Danke schon einmal für die Hilfe
Jens
-
-
@homoran in common.name bekomme ich windows.state zurück, also den Namen von Aktor/channels/1/windowState
@schnitter sagte in HomematicIP Gerätenamen auslesen:
@homoran in common.name bekomme ich windows.state zurück, also den Namen von Aktor/channels/1/windowState
das ist ja für den DP auch korrekt.
Du musst dann das device auslesen -
Hallo,
ich bin leider in JS völlig unbedarft und versuche mir anhand bestehender Scripte das nötigste beizubringen.
Allerdings verzeifle ich gerade. Ich habe ein fenster_türen_zählen script
function countOpenWindowsDoors() { var openWindows = 0; var openDoors = 0; // Fenster var windows = getObject("enum.functions.windowStatus").common.members; for(let i = 0; i < windows.length; i++) { var Status = getState(windows[i]).val; if ( Status == "OPEN") { openWindows = openWindows + 1; } } // Türen var doors = getObject("enum.functions.doorStatus").common.members; for(let i = 0; i < doors.length; i++) { var Status = getState(doors[i]).val; if ( Status == "OPEN" ) { openDoors = openDoors + 1; } } var openWindowsText = "Kein Fenster geöffnet"; var openDoorText = "Keine Tür geöffnet"; if ( openWindows > 0 ) { openWindowsText = openWindows + " Fenster geöffnet"; } if ( openDoors > 0 ) { openDoorText = openDoors + " Türe(n) geöffnet"; } setState('0_userdata.0.StatusWindowOpenText', openWindowsText ); setState('0_userdata.0.StatusDoorOpenText', openDoorText ); setState('0_userdata.0.StatusWindowOpen', openWindows ); setState('0_userdata.0.StatusDoorOpen', openDoors ); } $('state(functions=window)').on(function(obj) { countOpenWindowsDoors(); }); $('state(functions=door)').on(function(obj) { countOpenWindowsDoors(); }); countOpenWindowsDoors();Da funktioniert auch alles, allerdings würde ich mir gern den Namen des Aktors mit ausgeben lassen (welches Fenster genau geöffnet ist).
Ich verstehe aber nicht, wie ich mit JS darauf zugreifen kann:
Eigentlich sollte der Name doch "irgendwo" in getObject vorhanden sein.
Danke schon einmal für die Hilfe
Jens
@schnitter sagte: wie ich mit JS darauf zugreifen kann:
function deviceName(id) { // Datenpunkt-ID id = id.substring(0, id.lastIndexOf('.')); id = id.substring(0, id.lastIndexOf('.')); id = id.substring(0, id.lastIndexOf('.')); if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name; } -
@schnitter sagte: wie ich mit JS darauf zugreifen kann:
function deviceName(id) { // Datenpunkt-ID id = id.substring(0, id.lastIndexOf('.')); id = id.substring(0, id.lastIndexOf('.')); id = id.substring(0, id.lastIndexOf('.')); if(existsObject(id) && getObject(id).type == 'device') return getObject(id).common.name; }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden