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. Seltsames Verhalten von getEnums Funktion

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    29

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Seltsames Verhalten von getEnums Funktion

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
9 Beiträge 4 Kommentatoren 1.2k 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.
  • G Offline
    G Offline
    glaz123
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • G Offline
        G Offline
        glaz123
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • G Offline
              G Offline
              glaz123
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • G Offline
                G Offline
                glaz123
                schrieb am zuletzt editiert von
                #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 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • lobomauL Offline
                    lobomauL Offline
                    lobomau
                    schrieb am zuletzt editiert von
                    #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 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

                    660

                    Online

                    32.5k

                    Benutzer

                    81.7k

                    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