Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. GetObject( id, "rooms") liefert zu viele "Räume"

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

GetObject( id, "rooms") liefert zu viele "Räume"

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
2 Beiträge 2 Kommentatoren 1.3k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • R Offline
    R Offline
    raller09
    schrieb am zuletzt editiert von
    #1

    Moin,

    ich versuche mich gerade auch am ioBroker. Komme so langsam etwas rein, auch wenn ich mich echt noch orientieren muss.

    Ich habe mich zuerst am "Licht zählen"-Skript versucht.

    Da habe ich ein Problem mit "getObject( id, "rooms");":

    Es werden mittels ".enumNames" ein Array von Räumen zurückgegeben, wo ich aber den Zusammenhang zu meinen Objekten nicht herstellen kann:

    Test-Skript mit entsprechender Log-Meldung:

    function testRooms( obj) {
        var textRaum = []; 
    
        $('state[id=*.on][role=switch.light](functions="funcLight")').each( function( id, i){
            var status  = getState( id).val;
            var obj     = getObject( id);
            var raeume  = getObject( id, "rooms");
    
            log( obj.common.name);
            log( raeume.enumNames);
    
            textRaum.push( raeume.enumNames);
        });
    
        //*** doppelte Raumnamen entfernen
        textRaum = textRaum.filter( ( x, i, a) => a.indexOf( x) == i);
    
        log( textRaum);
    }
    
    function main() {
        setTimeout( function(){
            testRooms( );
        }, 2000);
    }
    
    main();
    
    -------
    
    Log
    
    18:56:00.038    [info]  javascript.0 Stop script script.js.common.test_rooms
    18:56:00.050    [info]  javascript.0 Start javascript script.js.common.test_rooms
    18:56:00.050    [info]  javascript.0 script.js.common.test_rooms: registered 0 subscriptions and 0 schedules
    18:56:02.110    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Flur_1.on
    18:56:02.110    [info]  javascript.0 script.js.common.test_rooms: Flur,Wohnzimmer
    18:56:02.113    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Flur_2.on
    18:56:02.113    [info]  javascript.0 script.js.common.test_rooms: Flur,Wohnzimmer
    18:56:02.115    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Flur_3.on
    18:56:02.116    [info]  javascript.0 script.js.common.test_rooms: Flur,Wohnzimmer
    18:56:02.118    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Ida_1.on
    18:56:02.118    [info]  javascript.0 script.js.common.test_rooms: Kinderzimmer Ida,Wohnzimmer
    18:56:02.119    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Ida_2.on
    18:56:02.120    [info]  javascript.0 script.js.common.test_rooms: Kinderzimmer Ida,Wohnzimmer
    18:56:02.120    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Ida_3.on
    18:56:02.121    [info]  javascript.0 script.js.common.test_rooms: Kinderzimmer Ida,Wohnzimmer
    18:56:02.121    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Küche_Tisch.on
    18:56:02.122    [info]  javascript.0 script.js.common.test_rooms: Küche,Wohnzimmer
    18:56:02.122    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Schlafzimmer_1.on
    18:56:02.122    [info]  javascript.0 script.js.common.test_rooms: Schlafzimmer,Wohnzimmer
    18:56:02.123    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Schlafzimmer_2.on
    18:56:02.123    [info]  javascript.0 script.js.common.test_rooms: Schlafzimmer,Wohnzimmer
    18:56:02.124    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Schlafzimmer_3.on
    18:56:02.124    [info]  javascript.0 script.js.common.test_rooms: Schlafzimmer,Wohnzimmer
    18:56:02.125    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Schlafzimmer_4.on
    18:56:02.125    [info]  javascript.0 script.js.common.test_rooms: Schlafzimmer,Wohnzimmer
    18:56:02.125    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Schlafzimmer_5.on
    18:56:02.126    [info]  javascript.0 script.js.common.test_rooms: Schlafzimmer,Wohnzimmer
    18:56:02.126    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Wohnzimmer_Iris.on
    18:56:02.127    [info]  javascript.0 script.js.common.test_rooms: Wohnzimmer
    18:56:02.127    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Wohnzimmer_Kommode.on
    18:56:02.128    [info]  javascript.0 script.js.common.test_rooms: Wohnzimmer
    18:56:02.128    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Wohnzimmer_Kugel.on
    18:56:02.128    [info]  javascript.0 script.js.common.test_rooms: Wohnzimmer
    18:56:02.129    [info]  javascript.0 script.js.common.test_rooms: ralloHUE_2.0.Wohnzimmer_Tisch.on
    18:56:02.129    [info]  javascript.0 script.js.common.test_rooms: Wohnzimmer
    18:56:02.130    [info]  javascript.0 script.js.common.test_rooms: Flur,Wohnzimmer,Flur,Wohnzimmer,Flur,Wohnzimmer,Kinderzimmer Ida,Wohnzimmer,Kinderzimmer Ida,Wohnzimmer,Kinderzimmer Ida,Wohnzimmer,Küche,Wohnzimmer,Schlafzimmer,Wohnzimmer,Schlafzimmer,Wohnzimmer,Schlafzimmer,Wohnzimmer,Schlafzimmer,Wohnzimmer,Schlafzimmer,Wohnzimmer,Wohnzimmer,Wohnzimmer,Wohnzimmer,Wohnzimmer
    

    Es wird teilweise willkürlich? ein zweiter Raum mit ausgegeben.

    Wenn ich das mit ".enumNames[0]" begrenze scheint es der korrekte Raum zu sein.

    Ich habe jeder HUE-Lampe genau einem Raum zugeordnet. enum.rooms wurde (meine ich) durch Homematic Instanzen angelegt:
    9678_bildschirmfoto_2018-11-28_um_19.51.01.png

    Mache ich da was falsch oder habe ich da was nicht verstanden?

    Danke

    raller09

    1 Antwort Letzte Antwort
    0
    • greyhoundG Offline
      greyhoundG Offline
      greyhound
      schrieb am zuletzt editiert von
      #2

      Ich habe dasselbe Problem, bin durch einen Skriptfehler drauf gestoßen und kann das Datenkonsistens-Problem nicht lösen! Ich habe mehrer Räume definiert (29 Räume, spezielles Gebäude mit Nebengelass).

      Unter javascript.0.alarm.devices.cams.Camx sind diverse Kameras als device mit weiteren Unterdatenpunkten vorhanden.

      Den Geräten Cam0 - CamX habe ich nun die entsprechenden Räume zugewiesen, jede Kamera ist und kann nur in einem Raum sein.

      Das habe ich in der object.json verifizieren können und auch bei der Anzeige der enums und der Zuordnung der Räume (auch nach einem Neustart des ioBrokers oder Linux) ist alles in Ordnung.

      Bsp.

      let dppCamProp = 'javascript.0.alarm.devices.Cams.Cam0';

      let oCamRooms = getObject(dppCamProp), 'rooms')

      logs(fctName + ', oCamRooms: ' + JSON.stringify(oCamRooms), 'debug2');

      "enumIds":["enum.rooms.entrance","enum.rooms.workshop"],"enumNames":["entrance","workshop"]
      

      Die Kamera ist aber gar nicht der Werkstatt zugeordnet

      "enum.rooms.entrance":

      {
      	"_id": "enum.rooms.entrance",
      	"type": "enum",
      	"common": {
      		"name": {
      			"en": "entrance",
      			"de": "Hauseingang außen"
      		},
      		"desc": "Hauseingang außen",
      		"members": [
      			"javascript.0.alarm.devices.Cams.Cam0",
      			"javascript.0.alarm.zones.2.20"
      		]
      	},
      	"from": "system.adapter.hm-rega.0",
      	"ts": 1544567253529,
      	"acl": {
      		"object": 1636,
      		"owner": "system.user.admin",
      		"ownerGroup": "system.group.administrator"
      	},
      	"enumIds": [
      	],
      	"enumNames": [
      	]
      }
      
      

      "enum.rooms.workshop"

      {
      	"_id": "enum.rooms.workshop",
      	"type": "enum",
      	"common": {
      		"name": {
      			"en": "workshop",
      			"de": "Werkstatt"
      		},
      		"desc": "Werkstatt",
      		"members": [
      			"javascript.0.alarm.devices.Cams.Cam7",
      			"hm-rpc.0.BidCoS-RF",
      			"javascript.0.alarm.zones.2.22"
      		]
      	},
      	"from": "system.adapter.hm-rega.0",
      	"ts": 1544124463498,
      	"acl": {
      		"object": 1636,
      		"owner": "system.user.admin",
      		"ownerGroup": "system.group.administrator"
      	},
      	"enumIds": [
      	],
      	"enumNames": [
      	]
      }
      
      

      Nach meinem Verständnis der Funktion getObject(id, 'rooms') bzw. getObject(id, true) liefert dieser Aufruf quasi "reverse engineered" aus enum.rooms den zugeordneten Raum. Aber wieso auch die Werkstatt?

      Es gibt 2 Kameras (Cam1 und Cam2), wo die Raum-Zuordnung stimmt. Diese beiden Kameras sind die beiden einzigen, wo es anscheinend immer stimmt (auch nach löschen eines Raumes).

      Folgendes habe ich noch beobachtet:

      • Es wird an fast jeder Kamera ein 2. Raum angehangen, der 2. Raum ist überall derselbe

      • Wenn ich einen Raum lösche, z. B. den "FALSCHEN" angehangenen, dann sucht sich ioBroker einen neuen Zombieraum

      Die Ausgaben der enum.rooms-Objekte von "entrance" und "workshop" sind ja korrekt.

      Gibt es Beschränkungen in der Namensgebung für Räume?

      Meine enum.room-Ids lauten z. B. wie folgt:

      • enum.rooms.dining_room

      • enum.rooms.co-op_office

      • enum.rooms.co-op_entrance_hall

      • enum.rooms.utility_room

      • enum.rooms.entrance

      • …

      Ist das nun ein Fehler in javascript-Adapter oder im js-Controller?

      Laufen tut das ganze bei mir unter

      node: v8.14.0

      debian Jessie, aktueller Patchstand

      Script-Engine: 4.0.5

      js-Controller: 1.4.2

      ioBroker auf ODROID-XU4 / Influx u. a. auf FUJITSU D3400-B, Celeron G3900, 16 GB RAM / CCU2 / Nuki

      1 Antwort Letzte Antwort
      0
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      654

      Online

      32.6k

      Benutzer

      82.3k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe