Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Seltsames Verhalten von getEnums Funktion

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    394

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

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

Seltsames Verhalten von getEnums Funktion

Scheduled Pinned Locked Moved Skripten / Logik
9 Posts 4 Posters 1.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    G Offline
    glaz123
    wrote on last edited by
    #1

    Ich schreibe Telegramm Bot und bekam sehr einfaches problem, ich kann keine Zimmernamen von enum bekommen (Javascript 3.6.4).

    Mein Code dafür stammt aus der Dokumentation:

    room = getEnums ("rooms");
    

    Wenn es ausgeführt wird, gibt es "Error in callback: TypeError: Cannot read property 'common' of undefined" zurück und stoppt.

    Ich habe das Forum gelesen und keine Lösung für das Problem gefunden.

    1 Reply Last reply
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      wrote on last edited by
      #2

      Wie ist die Fehlermeldung genau?

      Scheinbar ist da ein Objekt bei dir kaputt.

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • G Offline
        G Offline
        glaz123
        wrote on last edited by
        #3

        Genaue Nachricht:"error: javascript.0 Error in callback: TypeError: Cannot read property 'common' of undefined"

        Im iobroker.javascript-Quellcode fand ich die Definition der getEnums-Funktion - es ist eine einfache Iteration über das Enums-Array und dann die Konstruktion der Struktur von Mitgliedern. Diese Funktion erwartet, dass einige Eigenschaften in Enums existieren, aber leider gibt es keine solchen Eigenschaften.

        1 Reply Last reply
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          wrote on last edited by
          #4

          Und davor und danach sind keine weiteren Fehler Details und Informationen wie Zeilennummern oder Ähnliches? Normalerweise sollte da mehr stehen.

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Reply Last reply
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            wrote on last edited by
            #5

            https://github.com/ioBroker/ioBroker.ja … t.js#L2202

            Anscheinend ist in objects ein Enum-Objekt nicht vorhanden, obwohl es das eigentlich sein sollte. Die Frage ist, ob da ein Objekt aus objects, aber nicht aus enums gelöscht wurde, oder ob da was ganz anderes im Argen liegt.

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Reply Last reply
            0
            • G Offline
              G Offline
              glaz123
              wrote on last edited by
              #6

              nein

              2018-05-23 17:36:12.510 - info: javascript.0 script.js.common.TelegramMenu: [Andrey]/start
              2018-05-23 17:36:12.518 - error: javascript.0 Error in callback: TypeError: Cannot read property 'common' of undefined
              2018-05-23 17:45:40.231 - info: javascript.0 Stop script script.js.common.TelegramMenu
              2018-05-23 17:45:40.241 - info: javascript.0 Start javascript script.js.common.TelegramMenu
              2018-05-23 17:45:40.246 - info: javascript.0 script.js.common.TelegramMenu: registered 1 subscription and 0 schedules
              

              script:

              `on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
                      log(obj.state.val);
                      command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
                      user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']'));
                      prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1);
                      switch(true){
                      	case /^\/start/i.test(command):
                      	    rooms = getEnums('rooms');
                      	    roomsNum = rooms.length;
                      	    roomsStr='[[';
                      	    for(var i in rooms) {
                      	        roomsStr += "{text:"+"\'"+rooms[i].name+"\',callback_data:"+"\'"+rooms[i].id+"\'},";
                      	    }
                      	    roomsStr+=']]';
                      	    log(roomStr);
                      	    sendTo('telegram.0', {user:   user,
                      	                          text:   'Основное меню',
                      	                          reply_markup: {
                      	                          inline_keyboard: roomsStr,
                  	                                  resize_keyboard: true,
                  	                                  //one_time_keyboard: true
              	                                  }
                      	                	    });
                      	    break;
                      }
              });`[/i][/i]
              
              1 Reply Last reply
              0
              • G Offline
                G Offline
                glaz123
                wrote on last edited by
                #7

                Kann es eine Inkompatibilität zwischen Javascript Adapter und Datenbank sein?

                Hier sind meine npm-Module Versionen:

                iobroker.inst@1.1.2 /opt/iobroker
                ├─┬ iobroker.admin@3.4.1
                ├─┬ iobroker.discovery@1.1.0
                ├─┬ iobroker.javascript@3.6.4
                ├─┬ iobroker.js-controller@1.4.2
                ├─┬ iobroker.mikrotik@1.0.0
                ├── iobroker.mobile@0.4.11
                ├─┬ iobroker.mqtt-client@1.1.1
                ├─┬ iobroker.mysensors@1.2.0
                ├─┬ iobroker.node-red@1.5.1
                ├─┬ iobroker.scenes@1.1.0
                ├── iobroker.simple-api@1.6.3
                ├─┬ iobroker.socketio@2.0.1
                ├─┬ iobroker.sonoff@2.1.2
                ├─┬ iobroker.sql@1.8.0
                ├─┬ iobroker.telegram@1.2.3
                ├── iobroker.text2command@1.2.2
                ├─┬ iobroker.vis@1.1.4
                ├── iobroker.vis-history@0.2.7
                ├─┬ iobroker.weatherunderground@1.1.2
                ├─┬ iobroker.web@2.3.3
                └─┬ sqlite3@4.0.0
                
                
                1 Reply Last reply
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  wrote on last edited by
                  #8

                  Wie oben geschrieben vermute ich den Fehler im Skript-Adapter. Habe mal ein https://github.com/ioBroker/ioBroker.javascript/issues/123 eröffnet, damit das nicht vergessen geht.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Reply Last reply
                  0
                  • lobomauL Offline
                    lobomauL Offline
                    lobomau
                    wrote on last edited by
                    #9

                    Ich bin mir nicht sicher, ob ich das gleiche Problem habe wir hier Thema ist, aber Fehlermeldung ist ähnlich:

                    javascript.0	2018-10-08 11:15:58.532	error	TypeError: Cannot read property 'common' of undefined
                    javascript.0	2018-10-08 11:15:58.532	error	^
                    javascript.0	2018-10-08 11:15:58.532	error	} else if (objects[id].common) {
                    javascript.0	2018-10-08 11:15:58.531	error	script.js.common.Licht.Lichter-check_neu: /opt/iobroker/node_modules/iobroker.javascript/javascript.js:1252
                    javascript.0	2018-10-08 11:15:58.415	info	Start javascript script.js.common.Licht.Lichter-check_neu
                    

                    Wenn ich das Licht-Zähl-Skript neustarte kommt immer der Fehler. Ich habe mal testweise javascript-Adapter von 3.6.4 auf 3.6.0 downgegraded zum Testen, aber ohne Wirkung.

                    Lichter-check_neu-Skript:

                    ! ````
                    /* Status Zahl Lichter
                    ! zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                    Daten kommen vom Gewerk "Licht"
                    ! erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
                    23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
                    Log Ausgabe auskommentiert
                    05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
                    24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
                    06.05.2016 Datenpunkt für Ansagen zugefügt
                    02.07.2016 abgeschaltet, da Fehler
                    03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
                    search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
                    27.11.2016 Verschoben in Status
                    Code optimiert
                    23.12.2016 Räume eingebaut
                    21.06.2017 HUE Lampen eingebaut
                    */
                    var logging = false;
                    ! var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
                    idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
                    idText = 'javascript.0.Status.Lichter.Text',
                    idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
                    idAnsage = 'javascript.0.Status.Lichter.Ansage';
                    ! // Ab hier nix mehr ändern
                    createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                    type: 'number',
                    name: 'Anzahl aller Lichter',
                    min: 0,
                    def: 0,
                    role: 'value'
                    });
                    createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
                    type: 'number',
                    name: 'Anzahl der eingeschalteten Lichter',
                    min: 0,
                    def: 0,
                    role: 'value'
                    });
                    createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                    type: 'string',
                    name: 'Eingeschaltete Lichter',
                    desc: 'Namen der eingeschalteten Lichter',
                    def: ' ',
                    role: 'value'
                    });
                    createState(idAnsage, {
                    type: 'string',
                    name: 'Eingeschaltete Lichter (Ansage)',
                    desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
                    def: ' ',
                    role: 'value'
                    });
                    createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                    type: 'string',
                    name: 'Räume mit eingeschalteten Lichter',
                    desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
                    def: ' ',
                    role: 'value'
                    });
                    ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Licht
                    var cacheSelectorLevel = $('channelstate.id=*.LEVEL');
                    var cacheSelectorHue = $('stateid=*.on[role=switch]'); //var cacheSelectorHue = $('channelstate.id=*.ON'); // HUE Lampen (müssen im Gewerk Licht sein)
                    ! function checkDevices(obj) {
                    // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                    var anzahlLichterAn = 0;
                    var anzahlLichter = 0;
                    var textLichterAn = [];
                    var textRaum = [];
                    if (logging) {
                    log('++++++ Lichter Anzahl ++++ ');
                    log('#### SCHALTER ##### ');
                    }
                    cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                    var obj = getObject(id);
                    var name = getObject(id).common.name;
                    var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                    var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                    var raumname = getObject(id, "rooms"); // <---- NEU
                    ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                    // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                    if (logging) {
                    log('-------');
                    log('Kanal: ' + name);
                    log('Status: ' + status);
                    }
                    if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                    ++anzahlLichterAn;
                    textLichterAn.push(devicename); // Zu Array hinzufügen
                    textRaum.push(raumname.enumNames); // <---- NEU
                    }
                    ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                    // } // ENDE VK-Abfrage
                    });

                    cacheSelectorHue.each(function(id, i) { // Schleife für jedes gefundenen Element *.ON im Gewerk Licht
                        var obj = getObject(id);
                        var name = getObject(id).common.name;
                        var status = getState(id).val; // Zustand *.ON abfragen (jedes Element)
                        var devicename = name.substring(0, name.indexOf(".on")); //.state aus Text entfernen
                        var raumname = getObject(id, "rooms"); // <---- NEU
                    

                    ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                    // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                    if (logging) {
                    log('-------');
                    log('Kanal: ' + name);
                    log('Status: ' + status);
                    }
                    if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                    ++anzahlLichterAn;
                    textLichterAn.push(devicename); // Zu Array hinzufügen
                    textRaum.push(raumname.enumNames); // <---- NEU
                    }
                    ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                    // } // ENDE VK-Abfrage
                    });
                    ! if (logging) log('#### DIMMER ##### ');
                    cacheSelectorLevel.each(function(id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                    var obj = getObject(id);
                    var name = getObject(id).common.name;
                    var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                    var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                    var raumname = getObject(id, "rooms"); // <---- NEU
                    ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                    // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                    ! if (logging) {
                    log('-------');
                    log('Kanal: ' + name);
                    log('Status: ' + status + '%');
                    }
                    if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                    ++anzahlLichterAn;
                    textLichterAn.push(devicename); // Zu Array hinzufügen
                    textRaum.push(raumname.enumNames); // <---- NEU
                    }
                    ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                    // } // Ende Abfrage VK
                    });
                    ! // Array mit Lichternamen sortieren
                    textLichterAn.sort();
                    textRaum.sort(); // <---- NEU
                    // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                    if (logging) log("Text: " + textLichterAn);
                    if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                    // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                    setState(idText, textLichterAn.join(',
                    ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                    setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                    setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                    // setState(idRaum, textRaum.join(',
                    ')); // Räume, in denen Licht brennt // <---- NEU
                    setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                    }
                    ! // Trigger
                    cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht
                    if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                    checkDevices();
                    });
                    cacheSelectorHue.on(function(obj) { // bei Zustandänderung *.ON von HUE Lampen im Gewerk Licht
                    if (logging) log('Auslösende HUE: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                    checkDevices();
                    });
                    cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht
                    if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                    checkDevices();
                    });
                    ! function main() {
                    setTimeout(function() {
                    if (logging) log('Auslöser Skriptstart');
                    checkDevices();
                    }, 2000);
                    }
                    ! main(); // Skriptstart-Auslöser
                    ! // Aufbereitung für Ansage
                    function strip_tags(data) {
                    var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                    return (rueckgabe);
                    }
                    ! on(idText, function(obj) {
                    var text = obj.state.val;
                    text = (getState(idAnzahl).val > 0) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
                    setState(idAnsage, text);
                    });

                    
                    Edit: der Downgrade funktioniert irgendwie nicht. Es bleibt bei javascript Version 3.6.4.
                    
                    Edit2: ****Problem wurde wie folgt gelöst**** :-) :
                    
                    von paul53 » 09.10.2018, 22:59
                    
                    Editiere die Datei /opt/iobroker/node_modules/iobroker.javascript/javascript.js und ändere Zeile 1252 in
                    

                    } else if (objects[id] && objects[id].common) {

                    Anschließend die JS-Instanz neu starten, damit die Änderung wirksam wird.

                    Host: NUC8i3 mit Proxmox:

                    • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                    • Slave: Pi4
                    1 Reply Last reply
                    0
                    Reply
                    • Reply as topic
                    Log in to reply
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    710

                    Online

                    32.7k

                    Users

                    82.5k

                    Topics

                    1.3m

                    Posts
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Login

                    • Don't have an account? Register

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Home
                    • Recent
                    • Tags
                    • Unread 0
                    • Categories
                    • Unreplied
                    • Popular
                    • GitHub
                    • Docu
                    • Hilfe