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

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    347

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

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

Objekt erstellt, aber kein State abrufbar

Scheduled Pinned Locked Moved JavaScript
18 Posts 3 Posters 1.1k Views 2 Watching
  • 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.
  • Proper0912P Offline
    Proper0912P Offline
    Proper0912
    wrote on last edited by Proper0912
    #1

    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!

    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

    paul53P 1 Reply Last reply
    0
    • 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
      wrote on last edited by
      #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 Reply Last reply
      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
        wrote on last edited by
        #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 Reply Last reply
        0
        • Proper0912P Proper0912

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

          ? Offline
          ? Offline
          A Former User
          wrote on last edited by A Former User
          #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 Reply Last reply
          0
          • ? A Former User

            @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
            wrote on last edited by
            #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 Reply Last reply
            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
              A Former User
              wrote on last edited by
              #6

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

              1 Reply Last reply
              0
              • ? Offline
                ? Offline
                A Former User
                wrote on last edited by
                #7

                Versuch es mal so:

                settingsIdAlive = this.getState('alive');
                this.log.debug(settingsIdAlive.val)
                
                Proper0912P 1 Reply Last reply
                0
                • ? A Former User

                  Versuch es mal so:

                  settingsIdAlive = this.getState('alive');
                  this.log.debug(settingsIdAlive.val)
                  
                  Proper0912P Offline
                  Proper0912P Offline
                  Proper0912
                  wrote on last edited by
                  #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 Reply Last reply
                  0
                  • Proper0912P Proper0912

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

                    ? Offline
                    ? Offline
                    A Former User
                    wrote on last edited by
                    #9

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

                    Proper0912P 1 Reply Last reply
                    0
                    • ? A Former User

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

                      Proper0912P Offline
                      Proper0912P Offline
                      Proper0912
                      wrote on last edited by
                      #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 Reply Last reply
                      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
                        A Former User
                        wrote on last edited by
                        #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 Reply Last reply
                        0
                        • ? A Former User

                          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
                          wrote on last edited by 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 Reply Last reply
                          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
                            A Former User
                            wrote on last edited by
                            #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 Replies Last reply
                            0
                            • ? A Former User

                              @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
                              wrote on last edited by
                              #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 Reply Last reply
                              0
                              • ? A Former User

                                @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
                                wrote on last edited by
                                #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 Reply Last reply
                                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
                                  A Former User
                                  wrote on last edited by A Former User
                                  #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 Reply Last reply
                                  0
                                  • ? A Former User

                                    @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
                                    wrote on last edited by
                                    #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 Reply Last reply
                                    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
                                      A Former User
                                      wrote on last edited by
                                      #18

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

                                      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

                                      563

                                      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