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. JavaScript
  5. Objekt erstellt, aber kein State abrufbar

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    534

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

Objekt erstellt, aber kein State abrufbar

Geplant Angeheftet Gesperrt Verschoben JavaScript
18 Beiträge 3 Kommentatoren 1.1k Aufrufe 2 Watching
  • Ä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.
  • Proper0912P Proper0912

    Guten abend an alle,

    ich bin gerade dran ein Script Teil für ein Adapter zu schreiben und habe diese Problem:
    Ich erstelle in dem Script ein Objekt "alive"

    	await adapter.setObjectNotExistsAsync("alive", {
    		type: "state",
    		common: {
    			name: "connect",
    			type: "boolean",
    			role: "state",
    			read: true,
    			write: true,
    			def: false,
    		},
    		native: {},
    	});
    
    

    und ich möchte den Status in dem script an mehreren stellen schreiben was auch geht, aber nicht auslesen.
    Dazu nehme ich dieses:

    	await adapter.getForeignState(`alive`, (err, state) => {
    		// state can be null!
    		if (state) {
    			alive =  state.val;
    		} else{
    			adapter.log.info(err)
    		}
    	});
    

    Die Variable habe ich deglariert

    
    let alive = false;
    
    

    Kann mir jemand sagen was da falsch ist?
    Aso es kommt immer im Debug diese Meldung:

    [Objekt objekt]

    Danke für euere Hilfe!

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #2

    @proper0912 sagte: ein Script zu schreiben

    Ein Script im Javascript-Adapter? Dort gibt es die verwendeten Funktionen nicht, sondern es sind welche für sind für Adapter-Entwickler.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    Proper0912P 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @proper0912 sagte: ein Script zu schreiben

      Ein Script im Javascript-Adapter? Dort gibt es die verwendeten Funktionen nicht, sondern es sind welche für sind für Adapter-Entwickler.

      Proper0912P Offline
      Proper0912P Offline
      Proper0912
      schrieb am zuletzt editiert von
      #3

      @paul53
      Ein Scipt Teil für ein Adapter.
      Entschuldigung habe dies vergessen werde es anpassen!

      Gruß
      Florian

      System:
      Windows 10
      Admin: 6.3.5
      js-controller: 4.0.23
      Node-js: 16.0.0
      NPM 7.10.0
      repository: lates

      ? 1 Antwort Letzte Antwort
      0
      • Proper0912P Proper0912

        @paul53
        Ein Scipt Teil für ein Adapter.
        Entschuldigung habe dies vergessen werde es anpassen!

        ? Offline
        ? Offline
        Ein ehemaliger Benutzer
        schrieb am zuletzt editiert von Ein ehemaliger Benutzer
        #4

        @proper0912 getForeignState ist für states anderer adapter. Versuch es mit getState.

        alive = this.getState('alive');

        //Edit so nun ist es richtig.

        Proper0912P 1 Antwort Letzte Antwort
        0
        • ? Ein ehemaliger Benutzer

          @proper0912 getForeignState ist für states anderer adapter. Versuch es mit getState.

          alive = this.getState('alive');

          //Edit so nun ist es richtig.

          Proper0912P Offline
          Proper0912P Offline
          Proper0912
          schrieb am zuletzt editiert von
          #5

          @ciddi89 Danke für den Tip.
          Habe es ausprobiert und jetzt kommt im Debug "undefined".
          Habe alive in settingsID.alive unbenannt und der Datenpunkt heisst alive!

          Gruß
          Florian

          System:
          Windows 10
          Admin: 6.3.5
          js-controller: 4.0.23
          Node-js: 16.0.0
          NPM 7.10.0
          repository: lates

          ? 1 Antwort Letzte Antwort
          0
          • Proper0912P Proper0912

            @ciddi89 Danke für den Tip.
            Habe es ausprobiert und jetzt kommt im Debug "undefined".
            Habe alive in settingsID.alive unbenannt und der Datenpunkt heisst alive!

            ? Offline
            ? Offline
            Ein ehemaliger Benutzer
            schrieb am zuletzt editiert von
            #6

            @proper0912 this.log.debug(alive.val)

            1 Antwort Letzte Antwort
            0
            • ? Offline
              ? Offline
              Ein ehemaliger Benutzer
              schrieb am zuletzt editiert von
              #7

              Versuch es mal so:

              settingsIdAlive = this.getState('alive');
              this.log.debug(settingsIdAlive.val)
              
              Proper0912P 1 Antwort Letzte Antwort
              0
              • ? Ein ehemaliger Benutzer

                Versuch es mal so:

                settingsIdAlive = this.getState('alive');
                this.log.debug(settingsIdAlive.val)
                
                Proper0912P Offline
                Proper0912P Offline
                Proper0912
                schrieb am zuletzt editiert von
                #8

                @ciddi89
                Hi habe es heute aus Probiert und geht nicht.
                Keine Ahnung was ich falsch mache!

                Gruß
                Florian

                System:
                Windows 10
                Admin: 6.3.5
                js-controller: 4.0.23
                Node-js: 16.0.0
                NPM 7.10.0
                repository: lates

                ? 1 Antwort Letzte Antwort
                0
                • Proper0912P Proper0912

                  @ciddi89
                  Hi habe es heute aus Probiert und geht nicht.
                  Keine Ahnung was ich falsch mache!

                  ? Offline
                  ? Offline
                  Ein ehemaliger Benutzer
                  schrieb am zuletzt editiert von
                  #9

                  @proper0912 hast mal ein Code wo du das Objekt erstellst, wo du es beschreibst und wo du es abrufst?

                  Proper0912P 1 Antwort Letzte Antwort
                  0
                  • ? Ein ehemaliger Benutzer

                    @proper0912 hast mal ein Code wo du das Objekt erstellst, wo du es beschreibst und wo du es abrufst?

                    Proper0912P Offline
                    Proper0912P Offline
                    Proper0912
                    schrieb am zuletzt editiert von
                    #10

                    @ciddi89

                    Klar hier ist er:

                    async function main() {
                    	adapter.log.debug('adapter.main: << MAIN >>');
                    
                    	settingsID = adapter.config;
                    
                    	
                    	
                    	// +++++++++++++++++++ basic framework of Adapter ++++++++++++++++++++
                    		
                    	
                    	await adapter.setObjectNotExistsAsync("alive", {
                    		type: "state",
                    		common: {
                    			name: "connect",
                    			type: "boolean",
                    			role: "state",
                    			read: true,
                    			write: true,
                    			def: false,
                    		},
                    		native: {},
                    	});
                    
                    	let settingsIdAlive = false;
                    	await adapter.getStateAsync('alive', (err, state) => {
                    		if (state) {
                    			settingsIdAlive = state.val;	
                    		} else{
                    			adapter.log.error(err)
                    		}
                    	});
                    	adapter.log.debug(settingsIdAlive);
                    
                    	if (adapter.on) {
                    		if (settingsIdAlive) {
                    			// @ts-ignore
                    			getDateOfInstanc(settingsID);
                    			getValue(settingsID);
                    		} else { 
                    
                    			// +++++++++++++++++++ basic framework with medium of Adapter ++++++++++++++++++++
                    
                    			if ( settingsID.triggerID > "" && settingsID.medium > "" ){
                    
                    				await adapter.setObjectNotExistsAsync(settingsID.medium + ".connect", {
                    					type: "state",
                    					common: {
                    						name: "connect",
                    						type: "boolean",
                    						role: "state",
                    						read: true,
                    						write: true,
                    						def: false,
                    					},
                    					native: {},
                    				});
                    
                    				await adapter.setObjectNotExistsAsync(settingsID.medium + ".instanceValue", {
                    					type: "state",
                    					common: {
                    						name: "instanceValue_" + settingsID.medium,
                    						type: "number",
                    						role: "value",
                    						read: true,
                    						write: true,
                    						def: 0,
                    						unit: "",
                    					},
                    					native: {},
                    				});
                    
                    				await adapter.subscribeStates("*");
                    
                    				
                    				adapter.log.debug('adapter.main: << MAIN Objekt greated >>');
                    		
                    
                    			} else {
                    				adapter.log.error("Keine referens Objekt-ID oder Medium angegeben")
                    			}
                    
                    			await adapter.setStateAsync("alive", { val: true, ack: true });
                    
                    		}
                    	} else {
                    		adapter.log.error("Instance not startet");
                    	}
                    
                    	await adapter.getStateAsync('alive', (err, state) => {
                    		if (state) {
                    			settingsIdAlive = state.val;	
                    		} else{
                    			adapter.log.error(err)
                    		}
                    	});
                    	adapter.log.debug(settingsIdAlive);
                    
                    	adapter.stop();
                    };
                    

                    Das ist er!

                    Gruß
                    Florian

                    System:
                    Windows 10
                    Admin: 6.3.5
                    js-controller: 4.0.23
                    Node-js: 16.0.0
                    NPM 7.10.0
                    repository: lates

                    ? 1 Antwort Letzte Antwort
                    0
                    • Proper0912P Proper0912

                      @ciddi89

                      Klar hier ist er:

                      async function main() {
                      	adapter.log.debug('adapter.main: << MAIN >>');
                      
                      	settingsID = adapter.config;
                      
                      	
                      	
                      	// +++++++++++++++++++ basic framework of Adapter ++++++++++++++++++++
                      		
                      	
                      	await adapter.setObjectNotExistsAsync("alive", {
                      		type: "state",
                      		common: {
                      			name: "connect",
                      			type: "boolean",
                      			role: "state",
                      			read: true,
                      			write: true,
                      			def: false,
                      		},
                      		native: {},
                      	});
                      
                      	let settingsIdAlive = false;
                      	await adapter.getStateAsync('alive', (err, state) => {
                      		if (state) {
                      			settingsIdAlive = state.val;	
                      		} else{
                      			adapter.log.error(err)
                      		}
                      	});
                      	adapter.log.debug(settingsIdAlive);
                      
                      	if (adapter.on) {
                      		if (settingsIdAlive) {
                      			// @ts-ignore
                      			getDateOfInstanc(settingsID);
                      			getValue(settingsID);
                      		} else { 
                      
                      			// +++++++++++++++++++ basic framework with medium of Adapter ++++++++++++++++++++
                      
                      			if ( settingsID.triggerID > "" && settingsID.medium > "" ){
                      
                      				await adapter.setObjectNotExistsAsync(settingsID.medium + ".connect", {
                      					type: "state",
                      					common: {
                      						name: "connect",
                      						type: "boolean",
                      						role: "state",
                      						read: true,
                      						write: true,
                      						def: false,
                      					},
                      					native: {},
                      				});
                      
                      				await adapter.setObjectNotExistsAsync(settingsID.medium + ".instanceValue", {
                      					type: "state",
                      					common: {
                      						name: "instanceValue_" + settingsID.medium,
                      						type: "number",
                      						role: "value",
                      						read: true,
                      						write: true,
                      						def: 0,
                      						unit: "",
                      					},
                      					native: {},
                      				});
                      
                      				await adapter.subscribeStates("*");
                      
                      				
                      				adapter.log.debug('adapter.main: << MAIN Objekt greated >>');
                      		
                      
                      			} else {
                      				adapter.log.error("Keine referens Objekt-ID oder Medium angegeben")
                      			}
                      
                      			await adapter.setStateAsync("alive", { val: true, ack: true });
                      
                      		}
                      	} else {
                      		adapter.log.error("Instance not startet");
                      	}
                      
                      	await adapter.getStateAsync('alive', (err, state) => {
                      		if (state) {
                      			settingsIdAlive = state.val;	
                      		} else{
                      			adapter.log.error(err)
                      		}
                      	});
                      	adapter.log.debug(settingsIdAlive);
                      
                      	adapter.stop();
                      };
                      

                      Das ist er!

                      ? Offline
                      ? Offline
                      Ein ehemaliger Benutzer
                      schrieb am zuletzt editiert von
                      #11

                      statt

                      	await adapter.getStateAsync('alive', (err, state) => {
                      		if (state) {
                      			settingsIdAlive = state.val;	
                      		} else{
                      			adapter.log.error(err)
                      		}
                      	});
                      

                      mach mal

                      settingsIdAlive = await adapter.getStateAsync('alive')
                      adapter.log.debug(settingsIdAlive.val);
                      
                      Proper0912P 1 Antwort Letzte Antwort
                      0
                      • ? Ein ehemaliger Benutzer

                        statt

                        	await adapter.getStateAsync('alive', (err, state) => {
                        		if (state) {
                        			settingsIdAlive = state.val;	
                        		} else{
                        			adapter.log.error(err)
                        		}
                        	});
                        

                        mach mal

                        settingsIdAlive = await adapter.getStateAsync('alive')
                        adapter.log.debug(settingsIdAlive.val);
                        
                        Proper0912P Offline
                        Proper0912P Offline
                        Proper0912
                        schrieb am zuletzt editiert von Proper0912
                        #12

                        @ciddi89

                        Hi wenn ich das einfüge

                        settingsIdAlive = await adapter.getStateAsync('alive')
                        adapter.log.debug(settingsIdAlive.val);
                        

                        dann Sagt mein Programm: .val ist für boolean nicht verfügbar! ts(2339)

                        Gruß
                        Florian

                        System:
                        Windows 10
                        Admin: 6.3.5
                        js-controller: 4.0.23
                        Node-js: 16.0.0
                        NPM 7.10.0
                        repository: lates

                        ? 1 Antwort Letzte Antwort
                        0
                        • Proper0912P Proper0912

                          @ciddi89

                          Hi wenn ich das einfüge

                          settingsIdAlive = await adapter.getStateAsync('alive')
                          adapter.log.debug(settingsIdAlive.val);
                          

                          dann Sagt mein Programm: .val ist für boolean nicht verfügbar! ts(2339)

                          ? Offline
                          ? Offline
                          Ein ehemaliger Benutzer
                          schrieb am zuletzt editiert von
                          #13

                          @proper0912 ja weil du vorher settingsIdAlive = false; deklariert hast. Nimmst du das raus und machst nur

                          let settingsIdAlive;
                          

                          dann sollte es gehen.

                          Proper0912P 2 Antworten Letzte Antwort
                          0
                          • ? Ein ehemaliger Benutzer

                            @proper0912 ja weil du vorher settingsIdAlive = false; deklariert hast. Nimmst du das raus und machst nur

                            let settingsIdAlive;
                            

                            dann sollte es gehen.

                            Proper0912P Offline
                            Proper0912P Offline
                            Proper0912
                            schrieb am zuletzt editiert von
                            #14

                            @ciddi89 Danke jetzt funktioniert es so wie sein soll danke!

                            Gruß
                            Florian

                            System:
                            Windows 10
                            Admin: 6.3.5
                            js-controller: 4.0.23
                            Node-js: 16.0.0
                            NPM 7.10.0
                            repository: lates

                            1 Antwort Letzte Antwort
                            0
                            • ? Ein ehemaliger Benutzer

                              @proper0912 ja weil du vorher settingsIdAlive = false; deklariert hast. Nimmst du das raus und machst nur

                              let settingsIdAlive;
                              

                              dann sollte es gehen.

                              Proper0912P Offline
                              Proper0912P Offline
                              Proper0912
                              schrieb am zuletzt editiert von
                              #15

                              @ciddi89
                              Hi kannst du mir noch mal helfen?
                              Ich verstehe das einfach nicht.
                              Schau dir mal diesen Code an:

                              await adapter.setStateAsync(`${settingsID.medium}.connect`, { val: false, ack: true });
                              
                              await adapter.getForeignState(settingsID.triggerID, (err, state) => {
                              	// state can be null!
                              	if (state) {
                              		adapter.setState(settingsID.path.instanceValue,{ val: state.val, ack: true });
                              		adapter.setStateAsync(`${settingsID.medium}.connect`, { val: true, ack: true });
                              	} else{
                              		adapter.log.info(err)
                              	}
                              });
                              
                              settingsID.value.instanceValue = await adapter.getStateAsync(`${settingsID.medium}.instanceValue`);
                              adapter.log.debug(settingsID.value.instanceValue.val)
                              

                              Da lese ich Zahl aus einem andere Adapter und schreibe sie in mein Adapter.
                              Danach schreibe ich mir die Zahl aus meinem Adapter in eine Variable und gebe si aus im Debug als Kontrolle!
                              Aber erst beim zweiten mal wird sie auch in die Variable geschrieben! Habe ich das was falsch verstanden?
                              Oder ist es einfach nur zu spät!

                              Kannst du mir das noch mal Helfen ?
                              Oder ein anderer!

                              Danke!

                              Gruß
                              Florian

                              System:
                              Windows 10
                              Admin: 6.3.5
                              js-controller: 4.0.23
                              Node-js: 16.0.0
                              NPM 7.10.0
                              repository: lates

                              ? 1 Antwort Letzte Antwort
                              0
                              • Proper0912P Proper0912

                                @ciddi89
                                Hi kannst du mir noch mal helfen?
                                Ich verstehe das einfach nicht.
                                Schau dir mal diesen Code an:

                                await adapter.setStateAsync(`${settingsID.medium}.connect`, { val: false, ack: true });
                                
                                await adapter.getForeignState(settingsID.triggerID, (err, state) => {
                                	// state can be null!
                                	if (state) {
                                		adapter.setState(settingsID.path.instanceValue,{ val: state.val, ack: true });
                                		adapter.setStateAsync(`${settingsID.medium}.connect`, { val: true, ack: true });
                                	} else{
                                		adapter.log.info(err)
                                	}
                                });
                                
                                settingsID.value.instanceValue = await adapter.getStateAsync(`${settingsID.medium}.instanceValue`);
                                adapter.log.debug(settingsID.value.instanceValue.val)
                                

                                Da lese ich Zahl aus einem andere Adapter und schreibe sie in mein Adapter.
                                Danach schreibe ich mir die Zahl aus meinem Adapter in eine Variable und gebe si aus im Debug als Kontrolle!
                                Aber erst beim zweiten mal wird sie auch in die Variable geschrieben! Habe ich das was falsch verstanden?
                                Oder ist es einfach nur zu spät!

                                Kannst du mir das noch mal Helfen ?
                                Oder ein anderer!

                                Danke!

                                ? Offline
                                ? Offline
                                Ein ehemaliger Benutzer
                                schrieb am zuletzt editiert von Ein ehemaliger Benutzer
                                #16

                                @proper0912 also als erstes musst du bei jeder function wo der Name async drin ist auch ein await vorsetzen. Hier etwas zum lesen über asynchrone Funktionen. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

                                Verstehe nun aber nicht ganz was du vorhast? Wenn du mit variablen weiter arbeiten willst würde ich erstmal auf arrow functions verzichten. Macht es dir vielleicht ein bisschen einfacher. In dem fall ist es okay weil du ja nur setState nutzt aber achte bitte auf korrekte Deklaration wenn du async functions nutzt.

                                Proper0912P 1 Antwort Letzte Antwort
                                0
                                • ? Ein ehemaliger Benutzer

                                  @proper0912 also als erstes musst du bei jeder function wo der Name async drin ist auch ein await vorsetzen. Hier etwas zum lesen über asynchrone Funktionen. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function

                                  Verstehe nun aber nicht ganz was du vorhast? Wenn du mit variablen weiter arbeiten willst würde ich erstmal auf arrow functions verzichten. Macht es dir vielleicht ein bisschen einfacher. In dem fall ist es okay weil du ja nur setState nutzt aber achte bitte auf korrekte Deklaration wenn du async functions nutzt.

                                  Proper0912P Offline
                                  Proper0912P Offline
                                  Proper0912
                                  schrieb am zuletzt editiert von
                                  #17

                                  @ciddi89 Danke noch mal für deine Hilfe!
                                  Habe mir die Seite durchgelesen und habe es jetzt besser hinbekommen!
                                  Klar ist es auch das es immer besser geht, aber für den Anfang bin ich schon ein wenig stolz das es jetzt geht.
                                  Dank deiner Hilfe!

                                  Gruß
                                  Florian

                                  System:
                                  Windows 10
                                  Admin: 6.3.5
                                  js-controller: 4.0.23
                                  Node-js: 16.0.0
                                  NPM 7.10.0
                                  repository: lates

                                  ? 1 Antwort Letzte Antwort
                                  0
                                  • Proper0912P Proper0912

                                    @ciddi89 Danke noch mal für deine Hilfe!
                                    Habe mir die Seite durchgelesen und habe es jetzt besser hinbekommen!
                                    Klar ist es auch das es immer besser geht, aber für den Anfang bin ich schon ein wenig stolz das es jetzt geht.
                                    Dank deiner Hilfe!

                                    ? Offline
                                    ? Offline
                                    Ein ehemaliger Benutzer
                                    schrieb am zuletzt editiert von
                                    #18

                                    @proper0912 gerne, dafür ist das Forum ja da 😊

                                    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

                                    661

                                    Online

                                    32.5k

                                    Benutzer

                                    81.8k

                                    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