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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. async, await mit selector oder schleife????

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

async, await mit selector oder schleife????

Geplant Angeheftet Gesperrt Verschoben JavaScript
19 Beiträge 3 Kommentatoren 1.7k Aufrufe 3 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.
  • AlCalzoneA AlCalzone

    @ple sagte in async, await mit selector oder schleife????:

    Gibt es dafür vielleicht eine Lösung?

    Wenn du uns deinen bisherigen Code verheimlichst, eher nicht ;)

    P Offline
    P Offline
    ple
    schrieb am zuletzt editiert von
    #10

    @alcalzone
    Man, da bin ich mal wieder sparsam mit Informationen :-)

    Code für den RFID Leser wäre folgender.

    // in ES6
    //import { NFC } from 'nfc-pcsc';
    
    // without Babel in ES2015
    var { NFC } = require('nfc-pcsc');
    
    var nfc = new NFC(); // optionally you can pass logger
    
    nfc.on('reader', reader => {
    
    	console.log(`${reader.reader.name}  device attached`);
    
    	// enable when you want to auto-process ISO 14443-4 tags (standard=TAG_ISO_14443_4)
    	// when an ISO 14443-4 is detected, SELECT FILE command with the AID is issued
    	// the response is available as card.data in the card event
    	// see examples/basic.js line 17 for more info
    	// reader.aid = 'F222222222';
    
    	reader.on('card', card => {
    
    		// card is object containing following data
    		// [always] String type: TAG_ISO_14443_3 (standard nfc tags like MIFARE) or TAG_ISO_14443_4 (Android HCE and others)
    		// [always] String standard: same as type
    		// [only TAG_ISO_14443_3] String uid: tag uid
    		// [only TAG_ISO_14443_4] Buffer data: raw data from select APDU response
    
    		console.log(`${reader.reader.name}  card detected`, card);
            console.log(card.uid)
           
    
    	});
    
    	reader.on('card.off', card => {
    		console.log(`${reader.reader.name}  card removed`, card);
            reader.disconnect()
    	});
    
    	reader.on('error', err => {
    		console.log(`${reader.reader.name}  an error occurred`, err);
    	});
    
    	reader.on('end', () => {
    		console.log(`${reader.reader.name}  device removed`);
             reader.disconnect()
    	});
    
    });
    
    nfc.on('error', err => {
    	console.log('an error occurred', err);
    });
    

    Und für Daten Schreiben auf dem SQL.

    async function Meta_schreiben() {
        var SpeicherZeit = timeCon()
        setState("javascript.0.Ablauf.Timestamp", SpeicherZeit)
        var Rezept_Nr = getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val
        var Tabelle
        var DB = "Anlagen_Produktdaten";
    
    
        if (Rezept_Nr <= 5) {
            Tabelle = "2590C"
        } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 6) {
            Tabelle = "2590M"
        } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 7) {
            Tabelle = "2590E"
        }
    
        let ssql = "INSERT INTO [" + DB + "].[dbo].[" + Tabelle + "]\
               ([Timestamp]\
               ,[Jahr_Nr]\
               ,[Tag_Nr]\
               ,[Id_Nr]\
               ,[Typ_Name]\
               ,[Typ_Nr]\
               ,[Bediener]\
               ,[DMC]\
               ,[DMC_Kz_Motor]\
               ,[DMC_Kz_Hauptgruppe_Bauteil]\
               ,[DMC_Kz_Teile_Typ]\
               ,[DMC_Kz_Untergruppe_Bauteil]\
               ,[DMC_Q_Status]\
                 ) VALUES ( \
     '" + SpeicherZeit + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Jahr_Nr").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Tag_Nr").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Id_Nr").val + "' \
    ,'" + getState("javascript.0.Rezepte.Rezept_DS_Name").val + "' \
    ,'" + getState("javascript.0.Rezepte.Rezept_DS_Nr").val + "' \
    ,'" + getState("javascript.1.RFID_Name").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.DMC").val.slice(0, 36) + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Kz_Motor").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Kz_Hauptgruppe_Bauteil").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Kz_Teile_Typ").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Kz_Untergruppe_Bauteil").val + "' \
    ,'" + getState("javascript.0.DMC_Kamera.Qstatus").val + "' \
    )";
        // SQL Daten schreiben
        sendTo('sql.1', 'query', ssql);
        console.log(ssql)
        console.log("Metadaten wurde geschrieben")
    }
    

    Intel Nuc + Proxmox

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • P ple

      @alcalzone
      Man, da bin ich mal wieder sparsam mit Informationen :-)

      Code für den RFID Leser wäre folgender.

      // in ES6
      //import { NFC } from 'nfc-pcsc';
      
      // without Babel in ES2015
      var { NFC } = require('nfc-pcsc');
      
      var nfc = new NFC(); // optionally you can pass logger
      
      nfc.on('reader', reader => {
      
      	console.log(`${reader.reader.name}  device attached`);
      
      	// enable when you want to auto-process ISO 14443-4 tags (standard=TAG_ISO_14443_4)
      	// when an ISO 14443-4 is detected, SELECT FILE command with the AID is issued
      	// the response is available as card.data in the card event
      	// see examples/basic.js line 17 for more info
      	// reader.aid = 'F222222222';
      
      	reader.on('card', card => {
      
      		// card is object containing following data
      		// [always] String type: TAG_ISO_14443_3 (standard nfc tags like MIFARE) or TAG_ISO_14443_4 (Android HCE and others)
      		// [always] String standard: same as type
      		// [only TAG_ISO_14443_3] String uid: tag uid
      		// [only TAG_ISO_14443_4] Buffer data: raw data from select APDU response
      
      		console.log(`${reader.reader.name}  card detected`, card);
              console.log(card.uid)
             
      
      	});
      
      	reader.on('card.off', card => {
      		console.log(`${reader.reader.name}  card removed`, card);
              reader.disconnect()
      	});
      
      	reader.on('error', err => {
      		console.log(`${reader.reader.name}  an error occurred`, err);
      	});
      
      	reader.on('end', () => {
      		console.log(`${reader.reader.name}  device removed`);
               reader.disconnect()
      	});
      
      });
      
      nfc.on('error', err => {
      	console.log('an error occurred', err);
      });
      

      Und für Daten Schreiben auf dem SQL.

      async function Meta_schreiben() {
          var SpeicherZeit = timeCon()
          setState("javascript.0.Ablauf.Timestamp", SpeicherZeit)
          var Rezept_Nr = getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val
          var Tabelle
          var DB = "Anlagen_Produktdaten";
      
      
          if (Rezept_Nr <= 5) {
              Tabelle = "2590C"
          } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 6) {
              Tabelle = "2590M"
          } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 7) {
              Tabelle = "2590E"
          }
      
          let ssql = "INSERT INTO [" + DB + "].[dbo].[" + Tabelle + "]\
                 ([Timestamp]\
                 ,[Jahr_Nr]\
                 ,[Tag_Nr]\
                 ,[Id_Nr]\
                 ,[Typ_Name]\
                 ,[Typ_Nr]\
                 ,[Bediener]\
                 ,[DMC]\
                 ,[DMC_Kz_Motor]\
                 ,[DMC_Kz_Hauptgruppe_Bauteil]\
                 ,[DMC_Kz_Teile_Typ]\
                 ,[DMC_Kz_Untergruppe_Bauteil]\
                 ,[DMC_Q_Status]\
                   ) VALUES ( \
       '" + SpeicherZeit + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Jahr_Nr").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Tag_Nr").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Id_Nr").val + "' \
      ,'" + getState("javascript.0.Rezepte.Rezept_DS_Name").val + "' \
      ,'" + getState("javascript.0.Rezepte.Rezept_DS_Nr").val + "' \
      ,'" + getState("javascript.1.RFID_Name").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.DMC").val.slice(0, 36) + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Kz_Motor").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Kz_Hauptgruppe_Bauteil").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Kz_Teile_Typ").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Kz_Untergruppe_Bauteil").val + "' \
      ,'" + getState("javascript.0.DMC_Kamera.Qstatus").val + "' \
      )";
          // SQL Daten schreiben
          sendTo('sql.1', 'query', ssql);
          console.log(ssql)
          console.log("Metadaten wurde geschrieben")
      }
      
      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #11

      @ple Na das ist doch schon besser. Allerdings verstehe ich noch nicht, was ganz spezifisch dein Problem ist.
      Vielleicht zeigst du das noch an einem Beispiel, z.B. mit logs oder so? Der Code sieht auf den ersten Blick nicht falsch aus.

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

      P 1 Antwort Letzte Antwort
      0
      • AlCalzoneA AlCalzone

        @ple Na das ist doch schon besser. Allerdings verstehe ich noch nicht, was ganz spezifisch dein Problem ist.
        Vielleicht zeigst du das noch an einem Beispiel, z.B. mit logs oder so? Der Code sieht auf den ersten Blick nicht falsch aus.

        P Offline
        P Offline
        ple
        schrieb am zuletzt editiert von
        #12

        @alcalzone
        hier mal ein Beispiel, Javascript instanz neugestartet und RFID eingelesen, wurde auch nur 1 mal gelesen, so wie es auch sollte.
        Danach das Script ein paar mal neu gestartet, danach kommt der Inhalt mehrmals, halt so oft wie das Script neu gestartet wurde. Denke der öffnet jeweils eine neue Verbindung zum Reader und somit kommt es öfters.

        11:06:01.417	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
        11:06:01.418	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
        11:06:01.720	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:07.946	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:07.949	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:07.968	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:07.991	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:07.993	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:08.155	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.156	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.168	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:08.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:08.184	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:08.365	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.367	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.380	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:08.395	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:08.396	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:08.581	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.582	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.598	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:08.613	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:08.615	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:08.765	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.767	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.779	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:08.793	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:08.795	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:08.911	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.916	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:08.934	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:08.957	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:08.959	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:09.273	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:09.274	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:09.288	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:09.303	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:09.305	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:10.450	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.452	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.469	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:10.481	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:10.483	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:10.617	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.618	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.635	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:10.648	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:10.650	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:10.785	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.786	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.799	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:10.811	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:10.813	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:10.912	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.915	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:10.949	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:10.970	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:10.972	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.028	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.030	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.048	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.066	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.068	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.161	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.163	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.185	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.202	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.204	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.329	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.329	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.346	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.363	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.364	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.445	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.449	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.465	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.484	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.485	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.569	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.570	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.589	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.614	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.616	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.769	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.768	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.781	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.796	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.798	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:11.937	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.938	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
        11:06:11.962	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
        11:06:11.973	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
        11:06:11.975	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
        11:06:14.533	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
        11:06:14.534	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
        11:06:14.560	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
        11:06:14.561	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
        11:06:14.581	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
        11:06:14.581	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
        11:06:14.605	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
        11:06:14.605	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
        11:06:14.663	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:14.765	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:14.868	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:14.971	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.074	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.178	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.179	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.179	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.180	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.180	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.181	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.181	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.181	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.183	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.183	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.186	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.187	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.188	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.189	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.192	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.193	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.193	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.194	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.195	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.195	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.280	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.280	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.383	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.384	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        11:06:15.486	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
        11:06:15.487	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
        

        Intel Nuc + Proxmox

        AlCalzoneA 1 Antwort Letzte Antwort
        0
        • P ple

          @alcalzone
          hier mal ein Beispiel, Javascript instanz neugestartet und RFID eingelesen, wurde auch nur 1 mal gelesen, so wie es auch sollte.
          Danach das Script ein paar mal neu gestartet, danach kommt der Inhalt mehrmals, halt so oft wie das Script neu gestartet wurde. Denke der öffnet jeweils eine neue Verbindung zum Reader und somit kommt es öfters.

          11:06:01.417	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
          11:06:01.418	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
          11:06:01.720	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:07.946	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:07.949	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:07.968	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:07.991	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:07.993	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:08.155	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.156	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.168	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:08.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:08.184	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:08.365	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.367	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.380	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:08.395	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:08.396	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:08.581	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.582	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.598	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:08.613	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:08.615	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:08.765	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.767	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.779	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:08.793	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:08.795	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:08.911	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.916	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:08.934	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:08.957	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:08.959	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:09.273	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:09.274	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:09.288	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:09.303	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:09.305	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:10.450	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.452	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.469	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:10.481	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:10.483	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:10.617	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.618	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.635	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:10.648	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:10.650	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:10.785	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.786	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.799	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:10.811	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:10.813	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:10.912	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.915	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:10.949	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:10.970	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:10.972	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.028	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.030	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.048	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.066	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.068	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.161	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.163	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.185	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.202	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.204	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.329	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.329	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.346	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.363	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.364	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.445	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.449	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.465	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.484	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.485	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.569	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.570	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.589	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.614	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.616	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.769	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.768	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.781	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.796	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.798	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:11.937	info	javascript.0 (31556) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.938	info	javascript.1 (24248) Stop script script.js.Benutzer.Test_Cardreader
          11:06:11.962	info	javascript.1 (24248) Start javascript script.js.Benutzer.Test_Cardreader
          11:06:11.973	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: registered 0 subscriptions and 0 schedules
          11:06:11.975	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 device attached
          11:06:14.533	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
          11:06:14.534	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
          11:06:14.560	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
          11:06:14.561	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
          11:06:14.581	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
          11:06:14.581	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
          11:06:14.605	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card detected
          11:06:14.605	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: 74c3fe38
          11:06:14.663	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:14.765	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:14.868	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:14.971	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.074	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.178	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.179	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.179	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.180	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.180	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.181	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.181	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.181	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.182	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.183	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.183	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.186	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.187	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.188	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.189	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.192	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.193	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.193	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.194	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.195	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.195	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.280	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.280	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.383	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.384	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          11:06:15.486	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 an error occurred
          11:06:15.487	info	javascript.1 (24248) script.js.Benutzer.Test_Cardreader: ACS ACR122U PICC Interface 00 00 card removed
          
          AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von
          #13

          @ple Ich vermute, da müsste mindestens mal beim Skriptende die Verbindung geschlossen werden:

          onStop(() => {
            nfc.close();
          });
          

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

          P 1 Antwort Letzte Antwort
          0
          • AlCalzoneA AlCalzone

            @ple Ich vermute, da müsste mindestens mal beim Skriptende die Verbindung geschlossen werden:

            onStop(() => {
              nfc.close();
            });
            
            P Offline
            P Offline
            ple
            schrieb am zuletzt editiert von
            #14

            @alcalzone sagte in async, await mit selector oder schleife????:

            @ple Ich vermute, da müsste mindestens mal beim Skriptende die Verbindung geschlossen werden:

            onStop(() => {
              nfc.close();
            });
            

            So, habs mal ein paar Wochen immer mal wieder probiert, klappt nicht wie gehofft, egal.
            nun habe ich ein größeres Problem, anscheinend habe ich immer noch nicht gecheckt wie man am besten eine Schrittkette aufbaut, wenn in der Schrittkette eine weitere Schrittkette aufgerufen werden soll, so das der Code komplett asyncron aufgerufen wird. Ich muss echt noch viel lernen.
            Also das was ich erreichen möchte ist folgendes.

            In Main werden einzelne Funktionen aufgerufen
            // alles asyncron
            // alte Daten löschen
            await loeschen()
            // eine Rezeptsuche
            await Rezeptsuche()
            // Mehrere SQL Tabelle Daten abholen
            await Daten_lesen()
            // Danach Metadaten schreiben auf dem SQL
            await Meta_schreiben()
            

            So, nun ist es so, dass ich in Daten_lesen() mehrere SQL Querys absetze und ich darauf warten möchte. Es kann mal sein, das keine Daten zurückkommen, z.B. wenn die Netzwerkverbindung abschmiert.
            Also mehrere Funktionen verschachtelt, die asyncron ablaufen sollen, und genau da hänge ich.

            Oft bekomme ich folgende Fehler, weil ich irgendwo asyncron abarbeite aber keine Fehlerbehandlung gemacht habe.

            2022-06-21 08:12:29.120 - error: javascript.0 (19020) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
            2022-06-21 08:12:29.121 - error: javascript.0 (19020) unhandled promise rejection: undefined
            2022-06-21 08:12:29.122 - error: javascript.0 (19020) undefined
            

            Würdest du mir da vielleicht noch ein paar Dinge erklären, wie man es am einfachsten macht, damit ich das verstehe? Denke das werde ich in Zukunft öfter gebrauchen müssen.

            Anbei mal der vereinfachte Code.

            var Meldungen
            var DMC
            
            /************************* Main ******************************* */
            async function main() {
                
                try {
                    setState(Meldungen, "Alte Daten werden gelöscht")
                    await loeschen()
                    await setStateAsync(Trigger_neue_Nummer, false);
                    setState(Meldungen, "Rezept wird gesucht")
                    await Rezeptsuche()
                    setState(Meldungen, "Daten werden gelesen")
                    await Daten_lesen()
                    await Meta_schreiben()
                } catch (e) {
                    setState(Meldungen, ("Fehler in Main: " + e))
                    console.error("Fehler in Main: " + e);
                } finally {
                }
            }
            
            
            
            /************************* alte Daten löschen ******************************* */
            async function loeschen() {
                await $('state[state.id=javascript.0.Daten_senden.A_654_Endkontrolle.*]').setStateAsync(false)
                await $('state[state.id=javascript.0.Daten_lesen.A_654_Endkontrolle.*]').setStateAsync(false)
                console.log("************ Daten gelöscht")
            }
            
            //##############################################  Rezept suchen  ##############################################
            async function Rezeptsuche() {
                var DS_Nr = 0
                var DS_gefunden = false
                var Suche_beendet = false
                var treffer = false
            
                for (i = 1; i <= 20; i++) {
                    var i = "000" + i;
                    i = i.substring(i.length - 2, i.length);
                    treffer = true
                    DS_gefunden = true
                    if (!getState('javascript.0.Rezepte.' + i + '.Rezept_aktiv').val) {
                        treffer = false;
                        DS_gefunden = false;
                    } else {
                        for (a = 1; a <= 36; a++) {
                            var a = "000" + a;
                            a = a.substring(a.length - 2, a.length);
                            if (getState('javascript.0.Rezepte.' + i + '.DMC_aktiv_' + a).val) {
                                if (!(getState('javascript.0.Rezepte.' + i + '.DMC_Wert_' + a).val == (DMC.slice(a - 1, a)))) {
                                    treffer = false
                                    DS_gefunden = false
                                }
                            }
                        }
                    }
                    if (treffer) {
                        DS_Nr = i
                        DS_gefunden = true
                        await setStateAsync('javascript.0.Rezepte.Rezept_DS_gefunden', true)
                        console.log("***** Rezept gefunden")
                        break;
                    } else {
                    }
                }
                await setStateAsync("javascript.0.Rezepte.Rezept_DS_Nr", DS_Nr)
                //console.log("Rezept gefunden: " + getState("javascript.0.Rezepte.Rezept_DS_Nr").val)
                //console.log("***************   Rezept gefunden")
            }
            
            
            
            //##############################################  Daten Lesen Main  ##############################################
            async function Daten_lesen() {
                if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val <= 5) {
                    await Daten_lesen_SQL('0265')
                    await Daten_lesen_SQL('U_654')
                    await Daten_lesen_SQL('U_655')
                    await Daten_lesen_SQL('A_656')
                } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 6) {
                    await Daten_lesen_SQL('0290')
                    await Daten_lesen_SQL('A_656')
                } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 7) {
                    await Daten_lesen_SQL('0290')
                    await Daten_lesen_SQL('A_656')
                }
            }
            
            
            //##############################################  Daten Lesen der einzelnen Tabellen  ##############################################
            async function Daten_lesen_SQL(Tabelle) {
                var Data;
                var i;
                var Spaltenname;
                var Data_Column = {};
                var DB = "Testdaten";
                var sql_string
                switch (Tabelle) {
                    case '2590C':
                        sql_string = "USE " + DB + " SELECT TOP (1) * \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              ORDER BY id DESC"
                        break;
                    case '2590M':
                        sql_string = "USE " + DB + " SELECT TOP (1) * \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              ORDER BY id DESC"
                        break;
                    case '2590E':
                        sql_string = "USE " + DB + " SELECT TOP (1) * \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              ORDER BY id DESC"
                        break;
                    case '0265':
                        sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Jahr_Nr, Tag_Nr, Id_Nr \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              ORDER BY id DESC"
                        break;
                    case '0290':
                        sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Jahr_Nr, Tag_Nr, Id_Nr \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              ORDER BY id DESC"
                        break;
                    case '0650':
                        sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Jahr_Nr, Tag_Nr, Id_Nr \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              ORDER BY id DESC"
                        break;
                    case 'U_654':
                        sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, AnlagenNr \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              "
                        break;
                    case 'U_655':
                        sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Anlagen_Nr \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              "
                        break;
                    case 'A_656':
                        sql_string = "USE " + DB + " SELECT TOP (1) * \
                              FROM dbo.[" + Tabelle + "] \
                              WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                              "
                        break;
                    default:
                        break;
                }
            
                setState(Meldungen, "Lese Daten von Tabelle: " + Tabelle);
                console.log("Lese Daten von Tabelle: " + Tabelle)
                const result = await sendToAsync('sql.1', 'query', sql_string);
                Data = (result[0]);
                for (Spaltenname in Data) {
                    let x = Data[Spaltenname];
                    let Daten = JSON.stringify(x);
                    if (typeof Data === 'undefined') {
                        //log(Tabelle + " keine Daten vorhanden");
                    }
                    if (typeof Data !== 'undefined') {
                        // States anlegen
                        if (await existsStateAsync('javascript.0.Daten_lesen.' + Tabelle + '.' + Spaltenname)) {
                            //log(Spaltenname + "    " + Daten)
                            if (Spaltenname == "Timestamp") {
                                Daten = Daten.replace('Z', '');
                            }
                            Daten = Daten.replace('"', '');
                            Daten = Daten.replace('"', '');
                            await setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
                        } else {
            
                            // Daten lesen Datenpunkte werden erzeugt
                            await createStateAsync('javascript.0.Daten_lesen.' + Tabelle + '.' + Spaltenname, '', {
                                name: Spaltenname,
                                type: 'mixed',
                                role: 'state'
                            });
                            await setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
                            log("State wurde erstellt  " + 'javascript.0.Daten_lesen.' + Tabelle + '.' + Spaltenname)
            
            
                            // Daten senden Datenpunkte werden erzeugt
                            await createStateAsync('javascript.0.Daten_senden.' + Tabelle + '.' + Spaltenname, '', {
                                name: Spaltenname,
                                type: 'mixed',
                                role: 'state'
                            });
                            await setStateAsync('javascript.0.Daten_senden.' + Tabelle + '.' + Spaltenname, Daten);
                            log("State wurde erstellt  " + 'javascript.0.Daten_senden.' + Tabelle + '.' + Spaltenname)
                        }
                    }
                }
            }
            
            
            /******************************* Metadaten schreiben *********************** */
            async function Meta_schreiben() {
                await timeCon()
                var Rezept_Nr = getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val
                var Tabelle
                var DB = "Test";
            
            
                if (Rezept_Nr <= 5) {
                    Tabelle = "A_656"
                } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 6) {
                    Tabelle = "A_656"
                } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 7) {
                    Tabelle = "A_656"
                }
            
                let ssql = "INSERT INTO [" + DB + "].[dbo].[" + Tabelle + "]\
                       ([Timestamp]\
                       ,[Typ_Nr]\
                         ) VALUES ( \
             '" + getState('javascript.0.Ablauf.Timestamp').val + "' \
            ,'" + getState("javascript.0.Rezepte.Rezept_DS_Nr").val + "' \
            )";
                sendTo('sql.1', 'query', ssql);
                console.log("******** Metadaten wurde geschrieben")
            }
            
            
            
            /******************************* Timestamp für MS SQL zusammenstellen *********************** */
            async function timeCon() {
                var a = new Date(Date.now());
                var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
                var year = a.getFullYear();
                var month = months[a.getMonth()];
                var date = a.getDate();
                var hour = a.getHours();
                var min = a.getMinutes();
                var sec = a.getSeconds();
                var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec;
                await setStateAsync('javascript.0.Ablauf.Timestamp', time)
            }
            
            
            /******************************** String to boolean ***************** */
            function STB(Wert) {
                switch (Wert.toLowerCase().trim()) {
                    case "true": case "yes": case "1": return true;
                    case "false": case "no": case "0": case null: case "null": return false;
                    //default: return Boolean(Wert);
                    default: return Wert;
                }
            }
            
            /******************************** Bit to integar ***************** */
            function BTI(Wert) {
                var Ergebnis
                if (Wert) {
                    Ergebnis = 1
                } else {
                    Ergebnis = 0
                }
                return Ergebnis
            }
            
            /********************************SQL Sendto Wrapper ***************** */
            function sendToAsync(instance, command, arg) {
                return new Promise((resolve, reject) => {
                    sendTo(instance, command, arg,
                        (result) => {
                            if (result.error) {
                                reject(result.error);
                            } else {
                                resolve(result.result);
                            }
                        });
                });
            }
            

            Intel Nuc + Proxmox

            DutchmanD 1 Antwort Letzte Antwort
            0
            • P ple

              @alcalzone sagte in async, await mit selector oder schleife????:

              @ple Ich vermute, da müsste mindestens mal beim Skriptende die Verbindung geschlossen werden:

              onStop(() => {
                nfc.close();
              });
              

              So, habs mal ein paar Wochen immer mal wieder probiert, klappt nicht wie gehofft, egal.
              nun habe ich ein größeres Problem, anscheinend habe ich immer noch nicht gecheckt wie man am besten eine Schrittkette aufbaut, wenn in der Schrittkette eine weitere Schrittkette aufgerufen werden soll, so das der Code komplett asyncron aufgerufen wird. Ich muss echt noch viel lernen.
              Also das was ich erreichen möchte ist folgendes.

              In Main werden einzelne Funktionen aufgerufen
              // alles asyncron
              // alte Daten löschen
              await loeschen()
              // eine Rezeptsuche
              await Rezeptsuche()
              // Mehrere SQL Tabelle Daten abholen
              await Daten_lesen()
              // Danach Metadaten schreiben auf dem SQL
              await Meta_schreiben()
              

              So, nun ist es so, dass ich in Daten_lesen() mehrere SQL Querys absetze und ich darauf warten möchte. Es kann mal sein, das keine Daten zurückkommen, z.B. wenn die Netzwerkverbindung abschmiert.
              Also mehrere Funktionen verschachtelt, die asyncron ablaufen sollen, und genau da hänge ich.

              Oft bekomme ich folgende Fehler, weil ich irgendwo asyncron abarbeite aber keine Fehlerbehandlung gemacht habe.

              2022-06-21 08:12:29.120 - error: javascript.0 (19020) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
              2022-06-21 08:12:29.121 - error: javascript.0 (19020) unhandled promise rejection: undefined
              2022-06-21 08:12:29.122 - error: javascript.0 (19020) undefined
              

              Würdest du mir da vielleicht noch ein paar Dinge erklären, wie man es am einfachsten macht, damit ich das verstehe? Denke das werde ich in Zukunft öfter gebrauchen müssen.

              Anbei mal der vereinfachte Code.

              var Meldungen
              var DMC
              
              /************************* Main ******************************* */
              async function main() {
                  
                  try {
                      setState(Meldungen, "Alte Daten werden gelöscht")
                      await loeschen()
                      await setStateAsync(Trigger_neue_Nummer, false);
                      setState(Meldungen, "Rezept wird gesucht")
                      await Rezeptsuche()
                      setState(Meldungen, "Daten werden gelesen")
                      await Daten_lesen()
                      await Meta_schreiben()
                  } catch (e) {
                      setState(Meldungen, ("Fehler in Main: " + e))
                      console.error("Fehler in Main: " + e);
                  } finally {
                  }
              }
              
              
              
              /************************* alte Daten löschen ******************************* */
              async function loeschen() {
                  await $('state[state.id=javascript.0.Daten_senden.A_654_Endkontrolle.*]').setStateAsync(false)
                  await $('state[state.id=javascript.0.Daten_lesen.A_654_Endkontrolle.*]').setStateAsync(false)
                  console.log("************ Daten gelöscht")
              }
              
              //##############################################  Rezept suchen  ##############################################
              async function Rezeptsuche() {
                  var DS_Nr = 0
                  var DS_gefunden = false
                  var Suche_beendet = false
                  var treffer = false
              
                  for (i = 1; i <= 20; i++) {
                      var i = "000" + i;
                      i = i.substring(i.length - 2, i.length);
                      treffer = true
                      DS_gefunden = true
                      if (!getState('javascript.0.Rezepte.' + i + '.Rezept_aktiv').val) {
                          treffer = false;
                          DS_gefunden = false;
                      } else {
                          for (a = 1; a <= 36; a++) {
                              var a = "000" + a;
                              a = a.substring(a.length - 2, a.length);
                              if (getState('javascript.0.Rezepte.' + i + '.DMC_aktiv_' + a).val) {
                                  if (!(getState('javascript.0.Rezepte.' + i + '.DMC_Wert_' + a).val == (DMC.slice(a - 1, a)))) {
                                      treffer = false
                                      DS_gefunden = false
                                  }
                              }
                          }
                      }
                      if (treffer) {
                          DS_Nr = i
                          DS_gefunden = true
                          await setStateAsync('javascript.0.Rezepte.Rezept_DS_gefunden', true)
                          console.log("***** Rezept gefunden")
                          break;
                      } else {
                      }
                  }
                  await setStateAsync("javascript.0.Rezepte.Rezept_DS_Nr", DS_Nr)
                  //console.log("Rezept gefunden: " + getState("javascript.0.Rezepte.Rezept_DS_Nr").val)
                  //console.log("***************   Rezept gefunden")
              }
              
              
              
              //##############################################  Daten Lesen Main  ##############################################
              async function Daten_lesen() {
                  if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val <= 5) {
                      await Daten_lesen_SQL('0265')
                      await Daten_lesen_SQL('U_654')
                      await Daten_lesen_SQL('U_655')
                      await Daten_lesen_SQL('A_656')
                  } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 6) {
                      await Daten_lesen_SQL('0290')
                      await Daten_lesen_SQL('A_656')
                  } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 7) {
                      await Daten_lesen_SQL('0290')
                      await Daten_lesen_SQL('A_656')
                  }
              }
              
              
              //##############################################  Daten Lesen der einzelnen Tabellen  ##############################################
              async function Daten_lesen_SQL(Tabelle) {
                  var Data;
                  var i;
                  var Spaltenname;
                  var Data_Column = {};
                  var DB = "Testdaten";
                  var sql_string
                  switch (Tabelle) {
                      case '2590C':
                          sql_string = "USE " + DB + " SELECT TOP (1) * \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                ORDER BY id DESC"
                          break;
                      case '2590M':
                          sql_string = "USE " + DB + " SELECT TOP (1) * \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                ORDER BY id DESC"
                          break;
                      case '2590E':
                          sql_string = "USE " + DB + " SELECT TOP (1) * \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                ORDER BY id DESC"
                          break;
                      case '0265':
                          sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Jahr_Nr, Tag_Nr, Id_Nr \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                ORDER BY id DESC"
                          break;
                      case '0290':
                          sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Jahr_Nr, Tag_Nr, Id_Nr \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                ORDER BY id DESC"
                          break;
                      case '0650':
                          sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Jahr_Nr, Tag_Nr, Id_Nr \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                ORDER BY id DESC"
                          break;
                      case 'U_654':
                          sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, AnlagenNr \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                "
                          break;
                      case 'U_655':
                          sql_string = "USE " + DB + " SELECT TOP (1) Timestamp, Anlagen_Nr \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                "
                          break;
                      case 'A_656':
                          sql_string = "USE " + DB + " SELECT TOP (1) * \
                                FROM dbo.[" + Tabelle + "] \
                                WHERE     (Jahr_Nr = " + DMC_Jahr_Nr + ") AND (Tag_Nr = " + DMC_Tag_Nr + ") AND (ID_Nr = " + DMC_Id_Nr + ") \
                                "
                          break;
                      default:
                          break;
                  }
              
                  setState(Meldungen, "Lese Daten von Tabelle: " + Tabelle);
                  console.log("Lese Daten von Tabelle: " + Tabelle)
                  const result = await sendToAsync('sql.1', 'query', sql_string);
                  Data = (result[0]);
                  for (Spaltenname in Data) {
                      let x = Data[Spaltenname];
                      let Daten = JSON.stringify(x);
                      if (typeof Data === 'undefined') {
                          //log(Tabelle + " keine Daten vorhanden");
                      }
                      if (typeof Data !== 'undefined') {
                          // States anlegen
                          if (await existsStateAsync('javascript.0.Daten_lesen.' + Tabelle + '.' + Spaltenname)) {
                              //log(Spaltenname + "    " + Daten)
                              if (Spaltenname == "Timestamp") {
                                  Daten = Daten.replace('Z', '');
                              }
                              Daten = Daten.replace('"', '');
                              Daten = Daten.replace('"', '');
                              await setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
                          } else {
              
                              // Daten lesen Datenpunkte werden erzeugt
                              await createStateAsync('javascript.0.Daten_lesen.' + Tabelle + '.' + Spaltenname, '', {
                                  name: Spaltenname,
                                  type: 'mixed',
                                  role: 'state'
                              });
                              await setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
                              log("State wurde erstellt  " + 'javascript.0.Daten_lesen.' + Tabelle + '.' + Spaltenname)
              
              
                              // Daten senden Datenpunkte werden erzeugt
                              await createStateAsync('javascript.0.Daten_senden.' + Tabelle + '.' + Spaltenname, '', {
                                  name: Spaltenname,
                                  type: 'mixed',
                                  role: 'state'
                              });
                              await setStateAsync('javascript.0.Daten_senden.' + Tabelle + '.' + Spaltenname, Daten);
                              log("State wurde erstellt  " + 'javascript.0.Daten_senden.' + Tabelle + '.' + Spaltenname)
                          }
                      }
                  }
              }
              
              
              /******************************* Metadaten schreiben *********************** */
              async function Meta_schreiben() {
                  await timeCon()
                  var Rezept_Nr = getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val
                  var Tabelle
                  var DB = "Test";
              
              
                  if (Rezept_Nr <= 5) {
                      Tabelle = "A_656"
                  } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 6) {
                      Tabelle = "A_656"
                  } else if (getState('javascript.0.Rezepte.Rezept_DS_Nr'/*Rezept DS Nr*/).val = 7) {
                      Tabelle = "A_656"
                  }
              
                  let ssql = "INSERT INTO [" + DB + "].[dbo].[" + Tabelle + "]\
                         ([Timestamp]\
                         ,[Typ_Nr]\
                           ) VALUES ( \
               '" + getState('javascript.0.Ablauf.Timestamp').val + "' \
              ,'" + getState("javascript.0.Rezepte.Rezept_DS_Nr").val + "' \
              )";
                  sendTo('sql.1', 'query', ssql);
                  console.log("******** Metadaten wurde geschrieben")
              }
              
              
              
              /******************************* Timestamp für MS SQL zusammenstellen *********************** */
              async function timeCon() {
                  var a = new Date(Date.now());
                  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
                  var year = a.getFullYear();
                  var month = months[a.getMonth()];
                  var date = a.getDate();
                  var hour = a.getHours();
                  var min = a.getMinutes();
                  var sec = a.getSeconds();
                  var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec;
                  await setStateAsync('javascript.0.Ablauf.Timestamp', time)
              }
              
              
              /******************************** String to boolean ***************** */
              function STB(Wert) {
                  switch (Wert.toLowerCase().trim()) {
                      case "true": case "yes": case "1": return true;
                      case "false": case "no": case "0": case null: case "null": return false;
                      //default: return Boolean(Wert);
                      default: return Wert;
                  }
              }
              
              /******************************** Bit to integar ***************** */
              function BTI(Wert) {
                  var Ergebnis
                  if (Wert) {
                      Ergebnis = 1
                  } else {
                      Ergebnis = 0
                  }
                  return Ergebnis
              }
              
              /********************************SQL Sendto Wrapper ***************** */
              function sendToAsync(instance, command, arg) {
                  return new Promise((resolve, reject) => {
                      sendTo(instance, command, arg,
                          (result) => {
                              if (result.error) {
                                  reject(result.error);
                              } else {
                                  resolve(result.result);
                              }
                          });
                  });
              }
              
              DutchmanD Offline
              DutchmanD Offline
              Dutchman
              Developer Most Active Administrators
              schrieb am zuletzt editiert von
              #15

              @ple

              In Zeile 1-10 rufst du await functionen auf ohne Try/catch dadurch Schmiert dein Script gerade ab.

              P 1 Antwort Letzte Antwort
              0
              • DutchmanD Dutchman

                @ple

                In Zeile 1-10 rufst du await functionen auf ohne Try/catch dadurch Schmiert dein Script gerade ab.

                P Offline
                P Offline
                ple
                schrieb am zuletzt editiert von
                #16

                @dutchman
                Besten dank schon mal im voraus für deine Hilfe.
                Um das für mich zu verstehen, was für andere wahrscheinlich selbstverständlich ist, benötigt man immer ein try and catch in jeder await funktion die ich so aufrufe? Würde dann beim einem Fehler in einer await funktion das catch greifen und damit würde das main trotzdem weitergehen?

                also so dann ungefähr?

                async function main() {
                
                    try {
                        setState(Meldungen, "Alte Daten werden gelöscht")
                        await loeschen()
                        await setStateAsync(Trigger_neue_Nummer, false);
                        setState(Meldungen, "Rezept wird gesucht")
                        await Rezeptsuche()
                        setState(Meldungen, "Daten werden gelesen")
                        await Daten_lesen()
                        await Meta_schreiben()
                    } catch (e) {
                        setState(Meldungen, ("Fehler in Main: " + e))
                        console.error("Fehler in Main: " + e);
                    } finally {
                    }
                }
                
                
                
                /************************* alte Daten löschen ******************************* */
                async function loeschen() {
                    try {
                        await $('state[state.id=javascript.0.Daten_senden.A_654_Endkontrolle.*]').setStateAsync(false)
                        await $('state[state.id=javascript.0.Daten_lesen.A_654_Endkontrolle.*]').setStateAsync(false)
                        console.log("************ Daten gelöscht")
                    } catch (e) {
                        console.error("Fehler beim löschen: " + e)
                    }
                }
                

                Hat einer vielleicht noch ne guten Tip für Schulungen zu Javascript, oder bietet vielleicht einer sowas auch an?

                Gruß und Danke

                Intel Nuc + Proxmox

                DutchmanD 1 Antwort Letzte Antwort
                0
                • P ple

                  @dutchman
                  Besten dank schon mal im voraus für deine Hilfe.
                  Um das für mich zu verstehen, was für andere wahrscheinlich selbstverständlich ist, benötigt man immer ein try and catch in jeder await funktion die ich so aufrufe? Würde dann beim einem Fehler in einer await funktion das catch greifen und damit würde das main trotzdem weitergehen?

                  also so dann ungefähr?

                  async function main() {
                  
                      try {
                          setState(Meldungen, "Alte Daten werden gelöscht")
                          await loeschen()
                          await setStateAsync(Trigger_neue_Nummer, false);
                          setState(Meldungen, "Rezept wird gesucht")
                          await Rezeptsuche()
                          setState(Meldungen, "Daten werden gelesen")
                          await Daten_lesen()
                          await Meta_schreiben()
                      } catch (e) {
                          setState(Meldungen, ("Fehler in Main: " + e))
                          console.error("Fehler in Main: " + e);
                      } finally {
                      }
                  }
                  
                  
                  
                  /************************* alte Daten löschen ******************************* */
                  async function loeschen() {
                      try {
                          await $('state[state.id=javascript.0.Daten_senden.A_654_Endkontrolle.*]').setStateAsync(false)
                          await $('state[state.id=javascript.0.Daten_lesen.A_654_Endkontrolle.*]').setStateAsync(false)
                          console.log("************ Daten gelöscht")
                      } catch (e) {
                          console.error("Fehler beim löschen: " + e)
                      }
                  }
                  

                  Hat einer vielleicht noch ne guten Tip für Schulungen zu Javascript, oder bietet vielleicht einer sowas auch an?

                  Gruß und Danke

                  DutchmanD Offline
                  DutchmanD Offline
                  Dutchman
                  Developer Most Active Administrators
                  schrieb am zuletzt editiert von Dutchman
                  #17

                  @ple sagte in async, await mit selector oder schleife????:

                  Um das für mich zu verstehen, was für andere wahrscheinlich selbstverständlich ist, benötigt man immer ein try and catch in jeder await funktion die ich so aufrufe?

                  korrekt sollte man so machen, den die Meldung

                  Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                  

                  kommt von der await function und das die promise (siehe erklaehrung @AlCalzone) ein throw error macht dieser error aber nicht abgefangen wird.

                  Mit try catch kannst du dies fehler dan im catch abfangen und Aktionen auslösen.
                  Kann mir z.b. vorstellen wenn einer der schritte schiefgeht, die anderen auch nicht stattfinden sollten?

                  @ple sagte in async, await mit selector oder schleife????:

                  Würde dann beim einem Fehler in einer await funktion das catch greifen und damit würde das main trotzdem weitergehen?

                  richtig verstanden, beachte hierbei aber ob der code weiter laufen darf wenn die function einen Fehler abgegeben hat, Beispiel :

                  Ich habe einige adapter die frage eine API ab, z.b. alle 10 min. Schlägt der API Aufruf fehl stoppt mein code (ohne Daten kann ich ja auch nichts verarbeiten)

                  @ple sagte in async, await mit selector oder schleife????:

                  also so dann ungefähr?

                  mja fast, denn jetzt hast du einen try um alle await, also geht einer schief stop der code im catch (wenn das so gewünscht ist alles gut !) Wen man separate die Rückgabe auswerten moechte sollte ein try/catch for jedem await anstatt in einem Block

                  @ple sagte in async, await mit selector oder schleife????:

                  Hat einer vielleicht noch ne guten Tip für Schulungen zu Javascript, oder bietet vielleicht einer sowas auch an?

                  Wir selber nicht wirklich, sind aber gerne bereit fragen zu beantworten und unnterstuetzen sowohl hier als auch im Discord wo wir eine live chat haben.
                  Allgemein aka ich die Kurse von Udemy sehr empfehlen, die kosten im Angebot oft nur 10-15 euro.

                  Ich kann z.b. "JavaScript: Understanding the Weird Parts" sehr empfehlen, ist ein eye opener wen man aus anderen programmier sprachen kommt, de gibt es glaube ich auch in Deutsch.

                  Bei fragen einfach melden, oder eventuell discord joinen dan kan man auch bissl live unterstützen :)

                  P 1 Antwort Letzte Antwort
                  0
                  • DutchmanD Dutchman

                    @ple sagte in async, await mit selector oder schleife????:

                    Um das für mich zu verstehen, was für andere wahrscheinlich selbstverständlich ist, benötigt man immer ein try and catch in jeder await funktion die ich so aufrufe?

                    korrekt sollte man so machen, den die Meldung

                    Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().
                    

                    kommt von der await function und das die promise (siehe erklaehrung @AlCalzone) ein throw error macht dieser error aber nicht abgefangen wird.

                    Mit try catch kannst du dies fehler dan im catch abfangen und Aktionen auslösen.
                    Kann mir z.b. vorstellen wenn einer der schritte schiefgeht, die anderen auch nicht stattfinden sollten?

                    @ple sagte in async, await mit selector oder schleife????:

                    Würde dann beim einem Fehler in einer await funktion das catch greifen und damit würde das main trotzdem weitergehen?

                    richtig verstanden, beachte hierbei aber ob der code weiter laufen darf wenn die function einen Fehler abgegeben hat, Beispiel :

                    Ich habe einige adapter die frage eine API ab, z.b. alle 10 min. Schlägt der API Aufruf fehl stoppt mein code (ohne Daten kann ich ja auch nichts verarbeiten)

                    @ple sagte in async, await mit selector oder schleife????:

                    also so dann ungefähr?

                    mja fast, denn jetzt hast du einen try um alle await, also geht einer schief stop der code im catch (wenn das so gewünscht ist alles gut !) Wen man separate die Rückgabe auswerten moechte sollte ein try/catch for jedem await anstatt in einem Block

                    @ple sagte in async, await mit selector oder schleife????:

                    Hat einer vielleicht noch ne guten Tip für Schulungen zu Javascript, oder bietet vielleicht einer sowas auch an?

                    Wir selber nicht wirklich, sind aber gerne bereit fragen zu beantworten und unnterstuetzen sowohl hier als auch im Discord wo wir eine live chat haben.
                    Allgemein aka ich die Kurse von Udemy sehr empfehlen, die kosten im Angebot oft nur 10-15 euro.

                    Ich kann z.b. "JavaScript: Understanding the Weird Parts" sehr empfehlen, ist ein eye opener wen man aus anderen programmier sprachen kommt, de gibt es glaube ich auch in Deutsch.

                    Bei fragen einfach melden, oder eventuell discord joinen dan kan man auch bissl live unterstützen :)

                    P Offline
                    P Offline
                    ple
                    schrieb am zuletzt editiert von
                    #18

                    @dutchman
                    Sorry, die Kids haben mich ein wenig in Anspruch genommen, aber ne kleine Pause ist auch mal nicht schlecht um das geschriebene neu zu lesen :-)
                    Ok, grundsätzlich alles was await ist abfangen mit try und catch.
                    Müsste man es auch bei einem

                    await setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
                    

                    oder ist es in der function setStateAsync bereits mit eingebaut oder geht man davon aus, dass es garantiert beschrieben werden kann.

                    Zum Thema abbrechen und eine Fehlermeldung ausspucken.
                    Kann ich meine function Main irgendwie abbrechen, wenn ein error bei irgendein await auftritt? z.B, das die Metadaten nicht geschrieben werden können, weil der SQL nicht erreichbar ist? Dann sollte der Rest auch nicht mehr laufen.

                    Und nochmals herzlichen Dank für eure Unterstützung :-)
                    Einige Bücher werde ich mir mal zulegen bei Zeiten.
                    Gruß

                    Intel Nuc + Proxmox

                    AlCalzoneA 1 Antwort Letzte Antwort
                    1
                    • P ple

                      @dutchman
                      Sorry, die Kids haben mich ein wenig in Anspruch genommen, aber ne kleine Pause ist auch mal nicht schlecht um das geschriebene neu zu lesen :-)
                      Ok, grundsätzlich alles was await ist abfangen mit try und catch.
                      Müsste man es auch bei einem

                      await setStateAsync('Daten_lesen.' + Tabelle + '.' + Spaltenname, Daten);
                      

                      oder ist es in der function setStateAsync bereits mit eingebaut oder geht man davon aus, dass es garantiert beschrieben werden kann.

                      Zum Thema abbrechen und eine Fehlermeldung ausspucken.
                      Kann ich meine function Main irgendwie abbrechen, wenn ein error bei irgendein await auftritt? z.B, das die Metadaten nicht geschrieben werden können, weil der SQL nicht erreichbar ist? Dann sollte der Rest auch nicht mehr laufen.

                      Und nochmals herzlichen Dank für eure Unterstützung :-)
                      Einige Bücher werde ich mir mal zulegen bei Zeiten.
                      Gruß

                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #19

                      @ple sagte in async, await mit selector oder schleife????:

                      geht man davon aus, dass es garantiert beschrieben werden kann.

                      Nein, musst du selbst abfangen.

                      Kann ich meine function Main irgendwie abbrechen, wenn ein error bei irgendein await auftritt? z.B, das die Metadaten nicht geschrieben werden können, weil der SQL nicht erreichbar ist? Dann sollte der Rest auch nicht mehr laufen.

                      Ja, try-catch um jedes setStateAsync und im catch die Funktion mit return verlassen. (Wäre die Variante wo du am meisten Kontrolle hast).
                      Ansonsten kannst du auch den ganzen Schreibprozess in ein try-catch packen. Dann wird automatisch ins catch gesprungen, sobald ein Versuch fehlschlägt.

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

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


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      627

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      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