Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Unifi WLAN Script 2 mit Anwesenheitskontrolle

NEWS

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

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

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

Unifi WLAN Script 2 mit Anwesenheitskontrolle

Scheduled Pinned Locked Moved JavaScript
javascriptmonitoring
1.4k Posts 46 Posters 476.1k Views 51 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • dslraserD dslraser

    @SirDirk

    Kannst Du mal diesen Teil ( also ohne Deine Zugangsdaten ab unter Const apName (ohne Deine AP'S) posten

    //Vordefinierte Vouchers für  one-click-create - wird hier etwas geändert BITTE DATENPUNKT (Vouchers_StandardList) LÖSCHEN vor Scriptstart!!!!
    //BITTE alle Werte eingeben - für nichtbenutzte wie up-, download und nmb_begrenzung eine 0 eintragen
    // Pflichteinträge sind dauer, anzahl, multiuse und notiz !!!
    const standardVouchers = {"Vier Tage" : {dauer: 240, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 4 Tage"}, 
                             "Sieben Tage" : {dauer: 10080, anzahl: 1, multiuse: 1, upload: 300, download:300, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 7 Tage"},
                             "99 Minuten" : {dauer: 99, anzahl: 2, multiuse: 1, upload: 0, download:200, mb_begrenzung: 500, notiz:"Dauer 99 Minuten - Anzahl 2"}}
    
    const blackList = [] //Blacklist - diese clients werden nicht berücksichtigt - aber nur wenn ein alias im controller definiert ist
    const checkConnType=["Heiko-Note10","Kerstin-Note8"];  // Datenpunkte (werden erstellt) für Überwachung von Connection (WLAN only) - aber nur wenn ein alias im controller definiert ist
                                                      // wenn leer - keine überwachung (const checkConnType=[])
    
    //Pause bei Umschalten der WLANnetze, damit Netzanmeldungen der clients wieder normal
    const clientPauseConst = 200000;    //1000 bedeutet 1 Sekunde -  das braucht Zeit !!!
    // Abfragezyklus definieren
    const abfragezyklus =30000; // es ist nicht zu empfehlen unter 20000 (20 sekunden) zu gehen
    const abfageoffset = 40000; // zu schnelle Abmeldungen können hier eingestellt weren - > erhöhen (15000 = 15 sek.)
    //HIER Einstellungen : EIN-AUSSCHALTEN Vouchers, iqontrol-Datei erstellen, anwesenheitskontrolle-clientpflege
    let iqontrol = true;
    let anwesenheit = true; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen
    let vouchers = true;
    let apInfo = true;
    let problemWLAN=false; //bei problemen mit APs die über WLAN angebuden sind
    let countFalseSetting=2; //2 bedeutet : einmal einen abfragezyklus auslassen bevor auf false gesetzt wird: Formel:  n-1
    let aliasname=true; 
    let disConClientsFirst=true; //zeigt disconnected clients als erstes im table (vis) oder iqontrol an
    let ohneClientAbfrage=false; //schaltet das bearbeiten der clients vollständig ab - auch keine datenpunkte
    let sortedByIP =true; //client anzeige nach IP sortiert
    //FARBEN für IQontrol und VIS
    //die farbe für die tabellen in der vis wird im widget eingestellt
    //color_vis_text_client_in_table
    //color_vis_text_voucher_in_table
    let color_iqontrol_text__client_letzteAenderung_VIS="lightblue";
    let color_iqontrol_text__client_letzteAenderung_VIS_Text="#d0cdcd";
    let color_iqontrol_text_client_in_table= "black";  
    let color_iqontrol_text__client_disconnected="#01A9DB";
    let color_iqontrol_client_gradient1= "lightblue";   
    let color_iqontrol_text_voucher_in_table= "black"; 
    let color_iqontrol_voucher_gradient1= "lightblue"; 
    let color_iqontrol_text__client_letzteAenderung="#848484";
    let color_iqontrol_text__voucher_ueberschrift="blue";
    let schriftart="Helvetica";  //möglich: Helvetica,Serif
    
    //-----------------AB HIER NICHTS MEHR ÄNDERN------------------------------------------------------
    
    const versionNr = "12122019-3.0"
    const dpPrefix = "javascript."+ instance +".";
    // Hier Definition iqontrol-Style für Popup
    const format = "<!DOCTYPE html><html lang=\"de\"><head><title>Voucher</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body><table style=\"color:"+color_iqontrol_text_voucher_in_table+";text-align:center; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent,"+color_iqontrol_voucher_gradient1+");\">";
    const format2 = "<!DOCTYPE html><html lang=\"de\"><head><title>Clients</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body><table style=\"color:"+color_iqontrol_text_client_in_table+"; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent," +color_iqontrol_client_gradient1+");\">";
    const format3 = "<table style=\"color:"+color_iqontrol_text__client_letzteAenderung_VIS_Text+"; font-family:"+schriftart+";\">";
    const format6 ="<tr><td>&ensp;</td><td>&ensp;</td></tr> <tr style=\"color:"+color_iqontrol_text__voucher_ueberschrift+";\">"
    const apHead = "<!DOCTYPE html><html lang=\"de\"><head><title>Voucher</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body>"
    const apTable = "<table style=\"color:"+color_iqontrol_text_client_in_table+"; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent," +color_iqontrol_client_gradient1+");\">";
    const tableAus = "</table>";
    
    
    
    const request = require('request-promise-native').defaults({ rejectUnauthorized: false });
    
    const pathVoucher = "/htmlvoucher.html"; const pathClient = "/htmlclients.html"; const pathInfo = "/htmlinfo.html"; const pathAlarm = "/htmlalarm.html"; const pathAbmelung = "/htmlLog.html";
    const pathOnlyWLAN = "/htmlwlan.html";const pathOnlyLAN = "/htmllan.html";const pathOnlyDISC = "/htmldisc.html";
    let cookies = [];
    let loggedIn = false;
    let debug = false;
    let mylogs = false;
    let syslogs = false;
    let xxClientxx="Heiko-Note10";"Kerstin-Note8"; // falls der name leerzeichen beinhaltet müssen diese mit _ ersetzt werden z.b : "liv in sky handy"  zu  "liv_in_sky_handy"
    let xxClientxxIndex=0;
    let clientPause = false;
    let clientPauseVal;
    let wifiDPs = [];
    let wifiDPsHide = [];
    let vouchiesDPs=[];
    let myname = 'hostname';
    let respv; let respc; let respw; let resph; let respgv; let respa; let respal; //geholte Daten
    let countFalse=1; 
    let statusarr=[];
    let writeFileVar =0;
    let listValue=[];            //iqontrol löschen kachel
    let listValue2;              //iqontrol löschen kachel
    let listValue3;              //iqontrol löschen VIS
    let nichtSchalten=true;   
    //let nichtSchalten2=false;    //iqontrol löschen kachel
    let versuch;
    let listeDatenpunkte = [];
    let listeDatenpunkteControl=[];
    let countie;
    let binAmArbeiten=false;
    var midnight=false;
    let apListeTable;
    let apListe;
    let healthListe;
    let healthListeTable;
    let notSeen=[];
    let ipArrFehlt=[];
    var notseenLengthOld;
    var notseenLength;
    let lastChange=[];
    let mybodyVouchers2; // create-one-click-standard-voucher
    let expire_var; // create-one-click-standard-voucher
    let n_var; // create-one-click-standard-voucher
    let quota_var; // create-one-click-standard-voucher
    let note_var; // create-one-click-standard-voucher
    let up_var; // create-one-click-standard-voucher
    let down_var; // create-one-click-standard-voucher
    let MBytes_var; // create-one-click-standard-voucher
    let testerral=false; let testerrc=false; let testerrl=false; let testerrv=false; let testerrs=false; let testerrh=false; let testerrcv=false; let testerrdv=false; let testerrws=false; let testerrap=false; 
    var scriptCounter=0;
    let health = true;  // Angaben zum Systemstatus - die Healtdaten werden nur alle 5 Abfragezyklen geholt
    let alarmSwitch =false;
    let alarmCounter =0;
    let firstTime=0;
    let mybodyVouchers;
    let monthChangeData=false;
    let checkNetwork=false;
    var wifiLength=0;
         for(let wifi_name in wifis) {      
       wifiLength++; }
    
    

    SirDirkS Offline
    SirDirkS Offline
    SirDirk
    wrote on last edited by
    #1027

    @dslraser sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

    Kannst Du mal diesen Teil ( also ohne Deine Zugangsdaten ab unter Const apName (ohne Deine AP'S) posten

    Folgt hier:

    
    //Vordefinierte Vouchers für  one-click-create - wird hier etwas geändert BITTE DATENPUNKT (Vouchers_StandardList) LÖSCHEN vor Scriptstart!!!!
    //BITTE alle Werte eingeben - für nichtbenutzte wie up-, download und nmb_begrenzung eine 0 eintragen
    // Pflichteinträge sind dauer, anzahl, multiuse und notiz !!!
    const standardVouchers = {"Vier Tage" : {dauer: 240, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 4 Tage"}, 
                              "Sieben Tage" : {dauer: 10080, anzahl: 1, multiuse: 1, upload: 300, download:300, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 7 Tage"},
                              "99 Minuten" : {dauer: 99, anzahl: 2, multiuse: 1, upload: 0, download:200, mb_begrenzung: 500, notiz:"Dauer 99 Minuten - Anzahl 2"}}
    
    const blackList = [] //Blacklist - diese clients werden nicht berücksichtigt - aber nur wenn ein alias im controller definiert ist
    const checkConnType=["MephistoFon"];  // Datenpunkte (werden erstellt) für Überwachung von Connection (WLAN only) - aber nur wenn ein alias im controller definiert ist
                                                       // wenn leer - keine überwachung (const checkConnType=[])
    
    //Pause bei Umschalten der WLANnetze, damit Netzanmeldungen der clients wieder normal
    const clientPauseConst = 200000;    //1000 bedeutet 1 Sekunde -  das braucht Zeit !!!
    
    // Abfragezyklus definieren
    const abfragezyklus =20000; // es ist nicht zu empfehlen unter 20000 (20 sekunden) zu gehen
    const abfageoffset = 45000; // zu schnelle Abmeldungen können hier eingestellt weren - > erhöhen (15000 = 15 sek.)
    
    //HIER Einstellungen : EIN-AUSSCHALTEN Vouchers, iqontrol-Datei erstellen, anwesenheitskontrolle-clientpflege
    let iqontrol = true;
    let anwesenheit = true; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen
    
    let vouchers = false;
    let apInfo = true;
    let problemWLAN=false; //bei problemen mit APs die über WLAN angebuden sind
    let countFalseSetting=2; //2 bedeutet : einmal einen abfragezyklus auslassen bevor auf false gesetzt wird: Formel:  n-1
    let aliasname=false; 
    let disConClientsFirst=true; //zeigt disconnected clients als erstes im table (vis) oder iqontrol an
    
    let ohneClientAbfrage=false; //schaltet das bearbeiten der clients vollständig ab - auch keine datenpunkte
    
    let sortedByIP =false; //client anzeige nach IP sortiert
    
    
    //FARBEN für IQontrol und VIS
    //die farbe für die tabellen in der vis wird im widget eingestellt
    //color_vis_text_client_in_table
    //color_vis_text_voucher_in_table
    let color_iqontrol_text__client_letzteAenderung_VIS="lightblue";
    let color_iqontrol_text__client_letzteAenderung_VIS_Text="#d0cdcd";
    let color_iqontrol_text_client_in_table= "black";  
    let color_iqontrol_text__client_disconnected="#01A9DB";
    
    let color_iqontrol_client_gradient1= "lightblue";   
    
    let color_iqontrol_text_voucher_in_table= "black"; 
    let color_iqontrol_voucher_gradient1= "lightblue"; 
    let color_iqontrol_text__client_letzteAenderung="#848484";
    let color_iqontrol_text__voucher_ueberschrift="lightblue";
    
    let schriftart="Helvetica";  //möglich: Helvetica,Serif
    
    
    //-----------------AB HIER NICHTS MEHR ÄNDERN------------------------------------------------------
    
    const versionNr = "12122019-3.0"
    const dpPrefix = "javascript."+ instance +".";
    // Hier Definition iqontrol-Style für Popup
    const format = "<!DOCTYPE html><html lang=\"de\"><head><title>Voucher</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body><table style=\"color:"+color_iqontrol_text_voucher_in_table+";text-align:center; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent,"+color_iqontrol_voucher_gradient1+");\">";
    const format2 = "<!DOCTYPE html><html lang=\"de\"><head><title>Clients</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body><table style=\"color:"+color_iqontrol_text_client_in_table+"; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent," +color_iqontrol_client_gradient1+");\">";
    const format3 = "<table style=\"color:"+color_iqontrol_text__client_letzteAenderung_VIS_Text+"; font-family:"+schriftart+";\">";
    const format6 ="<tr><td>&ensp;</td><td>&ensp;</td></tr> <tr style=\"color:"+color_iqontrol_text__voucher_ueberschrift+";\">"
    const apHead = "<!DOCTYPE html><html lang=\"de\"><head><title>Voucher</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body>"
    const apTable = "<table style=\"color:"+color_iqontrol_text_client_in_table+"; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent," +color_iqontrol_client_gradient1+");\">";
    const tableAus = "</table>";
    
    
    
    const request = require('request-promise-native').defaults({ rejectUnauthorized: false });
    
    const pathVoucher = "/htmlvoucher.html"; const pathClient = "/htmlclients.html"; const pathInfo = "/htmlinfo.html"; const pathAlarm = "/htmlalarm.html"; const pathAbmelung = "/htmlLog.html";
    const pathOnlyWLAN = "/htmlwlan.html";const pathOnlyLAN = "/htmllan.html";const pathOnlyDISC = "/htmldisc.html";
    let cookies = [];
    let loggedIn = false;
    let debug = false;
    let mylogs = false;
    let syslogs = false;
    let xxClientxx="Heiko-Note10"; // falls der name leerzeichen beinhaltet müssen diese mit _ ersetzt werden z.b : "liv in sky handy"  zu  "liv_in_sky_handy"
    let xxClientxxIndex=0;
    let clientPause = false;
    let clientPauseVal;
    let wifiDPs = [];
    
    let wifiDPsHide = [];
    let vouchiesDPs=[];
    let myname = 'hostname';
    let respv; let respc; let respw; let resph; let respgv; let respa; let respal; //geholte Daten
    let countFalse=1; 
    let statusarr=[];
    let writeFileVar =0;
    let listValue=[];            //iqontrol löschen kachel
    let listValue2;              //iqontrol löschen kachel
    let listValue3;              //iqontrol löschen VIS
    let nichtSchalten=true;   
    //let nichtSchalten2=false;    //iqontrol löschen kachel
    let versuch;
    let listeDatenpunkte = [];
    let listeDatenpunkteControl=[];
    let countie;
    let binAmArbeiten=false;
    var midnight=false;
    let apListeTable;
    let apListe;
    let healthListe;
    let healthListeTable;
    let notSeen=[];
    let ipArrFehlt=[];
    var notseenLengthOld;
    var notseenLength;
    let lastChange=[];
    let mybodyVouchers2; // create-one-click-standard-voucher
    let expire_var; // create-one-click-standard-voucher
    let n_var; // create-one-click-standard-voucher
    let quota_var; // create-one-click-standard-voucher
    let note_var; // create-one-click-standard-voucher
    let up_var; // create-one-click-standard-voucher
    let down_var; // create-one-click-standard-voucher
    let MBytes_var; // create-one-click-standard-voucher
    let testerral=false; let testerrc=false; let testerrl=false; let testerrv=false; let testerrs=false; let testerrh=false; let testerrcv=false; let testerrdv=false; let testerrws=false; let testerrap=false; 
    var scriptCounter=0;
    let health = true;  // Angaben zum Systemstatus - die Healtdaten werden nur alle 5 Abfragezyklen geholt
    let alarmSwitch =false;
    let alarmCounter =0;
    let firstTime=0;
    let mybodyVouchers;
    let monthChangeData=false;
    let checkNetwork=false;
    var wifiLength=0;
          for(let wifi_name in wifis) {      
        wifiLength++; }
    
    
     if (aliasname)  myname="name";
     if (ohneClientAbfrage) anwesenheit=false;
     writeMyFile("neugestartet ... bitte warten", pathClient);
     writeMyFile("neugestartet ... bitte warten", pathVoucher);
     writeMyFile("neugestartet ... bitte warten", pathAlarm);
     writeMyFile("neugestartet ... bitte warten", pathInfo);
     writeMyFile("neugestartet ... bitte warten", pathOnlyWLAN);
     writeMyFile("neugestartet ... bitte warten", pathOnlyLAN);
     writeMyFile("neugestartet ... bitte warten", pathOnlyDISC);
     if ( !anwesenheit) {writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathClient);
                         writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathOnlyWLAN);
                         writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathOnlyLAN);
                         writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathOnlyDISC);}
    
    
     if ( !vouchers && !iqontrol) writeMyFile("variable vouchers und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathVoucher);
    
    for(let wifi_name in wifis) {
         wifiDPsHide.push(dpPrefix + "WLANUnifi.WLANSSIDsHide." + wifis[wifi_name].name);
         createState(dpPrefix + "WLANUnifi.WLANSSIDsHide."+ wifi_name, false, { name: wifis[wifi_name].desc, role: 'switch', read: true, write: true, type: "boolean" });}
    
     //Erstelle Datenpunkte für die WLANs automatisch
     for(let wifi_name in wifis) {
         wifiDPs.push(dpPrefix + "WLANUnifi." + wifis[wifi_name].name);
         createState(dpPrefix + "WLANUnifi."+ wifi_name, { name: wifis[wifi_name].desc, role: 'switch', read: true, write: true, type: "boolean" });}
    
     createState(dpPrefix + "WLANUnifi.Wifi_Clients", "not available",{ name: 'Clients_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
     createState(dpPrefix + "WLANUnifi.Wifi_ClientsOnlyLAN", "not available",{ name: 'Clients_LAN_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
     createState(dpPrefix + "WLANUnifi.Wifi_ClientsOnlyWLAN", "not available",{ name: 'Clients__WLAN_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
     createState(dpPrefix + "WLANUnifi.Wifi_ClientsOnlyDISC", "not available",{ name: 'Clients__Disconnected_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
     createState(dpPrefix + "WLANUnifi.Wifi_Clients_Anzahl_LAN",  { name: 'Wifi_Clients_Anzahl_LAN', desc: 'Wifi_Clients_Anzahl_LAN', type: 'number',def:0, unit: '', min: '0', max: '100', role: '',read: true, write: false });
     createState(dpPrefix + "WLANUnifi.Wifi_Clients_Anzahl_WLAN",  { name: 'Wifi_Clients_Anzahl_WLAN', desc: 'Wifi_Clients_Anzahl_WLAN', type: 'number',def:0, unit: '', min: '0', max: '100', role: '',read: true, write: false });
     createState(dpPrefix + "WLANUnifi.Wifi_Clients_Anzahl_DISC",  { name: 'Wifi_Clients_Anzahl_DISC', desc: 'Wifi_Clients_Anzahl_DISC', type: 'number',def:0, unit: '', min: '0', max: '100', role: '',read: true, write: false });
     createState(dpPrefix + "WLANUnifi.SiteLED", false, { name: 'SiteLED',  type: 'boolean', role: 'switch', read:  true,  write: true,});
     createState(dpPrefix + "WLANUnifi.Client_WhiteList", "default", { name: 'Client_WhiteList_Filter_String', desc: 'Alarm_Table', type: 'string', unit: '',  role: '',read: true, write: true }); 
     createState(dpPrefix + "WLANUnifi.Alarm.Alarm", { name: 'Alarm_Table_not_archieved', desc: 'Alarm_Table', type: 'string', unit: '',  role: '',read: true, write: true }); 
     createState(dpPrefix + "WLANUnifi.Missing_Name", "not available", { name: 'Missing_Name', desc: 'Missing_Name', type: 'string', unit: '',  role: '',read: true, write: true }); 
     createState(dpPrefix + "WLANUnifi.Alarm.Alarm_Anzahl", { name: 'Alarm_Anzahl', desc: 'Alarm_Table', type: 'number', unit: '',  role: '',read: true, write: true });
     createState(dpPrefix + "WLANUnifi.ZyklusZaehler", 1, { name: 'ZyklusZaehler', desc: 'ZyklusZaehler', type: 'number', unit: '',  role: '',read: true, write: true });
     createState(dpPrefix + "WLANUnifi.xxxScriptVersionxxx", versionNr,{ name: 'ScriptVersion', desc: 'ScriptVersion', type: 'string', unit: '',  role: '',read: true, write: true });
     if (anwesenheit) createState(dpPrefix + "WLANUnifi.Wifi_Clients_Log", { name: 'Clients_HTML_Table_VIS_Log',  role: 'string', read:  true,  write: true,});
    
     var foo = (aliasname) ? true : false;
     createState(dpPrefix + "WLANUnifi.AliasName", foo,  { name: ' AliasName',  desc:  'schaltet Aliasnamen ein', role: 'switch', type: 'boolean', read:  true,  write: true,
                }  , function() {setStateDelayed(dpPrefix + "WLANUnifi.AliasName", foo, 200)});
    
     //createState(dpPrefix + "WLANUnifi.Aussortiert", { name: 'Aussortiert',  role: 'string', read:  true,  write: true,});
    
    
     if (vouchers) {
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers", { name: 'Vouchers_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_List", { name: 'Vouchers_ID_List',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_CodeList", { name: 'Vouchers_Texte_Delete_VIS_Widget',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_CodeList2", { name: 'Vouchers_Werte_Delete_VIS_Widget',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_ValueCodeList", { name: 'Vouchers_ValueList_IQontrol', desc:"ValueCodeList", role: "", type:'number', states: "1:please wait ...;2:refresh webpage", def:1, min: 0, max: 20,  read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Create", false,  { name: 'A_New_Voucher_Create',  role: 'switch', type: 'boolean', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_DeleteVIS",   { name: 'Vouchers_Schalter_Delete_VIS_Widget',  role: 'switch', type: 'number', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_CreateStandard", 1,  { name: 'Vouchers_Schalter_Create_VIS_Widget',  role: 'switch', type: 'number', read:  true,  write: true,});
      //createState(dpPrefix + "WLANUnifi.Wifi_Create_Standard_Voucher", false,  { name: 'A_Delete_Voucher',  role: 'switch', type: 'boolean', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_Delete_Voucher.Delete", false,  { name: 'Voucher_Delete__Botton_VIS',  role: 'switch', type: 'boolean', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_Delete_Voucher.Voucher_ID", "must be set",{ name: 'A_Delete_Voucher.Voucher_ID', role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Dauer", "must be set",{ name: ' A_New_Voucher_Dauer',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.MultiUse", "must be set",{ name: ' A_New_Voucher_MultiUse',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Anzahl", "must be set",{ name: ' A_New_Voucher_Anzahl',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Notiz", "",{ name: ' A_New_Voucher_Notiz',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Upload", "",{ name: ' A_New_Voucher_Uplaod',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Download", "",{ name: ' A_New_Voucher_Download',  role: 'string', read:  true,  write: true,});
      createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Mb_Begrenzung", "", { name: ' A_New_Voucher_Mb_Begrenzung',  role: 'string', read:  true,  write: true,});
    
    for (var i = 1; i < 21; i++) { 
        var x=i.toString();
        if (i<10) x="0"+x;
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x, { name: 'Unifi Voucher_Code'+x,  role: 'string', read:  true,  write: true, });
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".code"+x, { name: 'Unifi Voucher_Code_code'+x,  role: 'string', read:  true,  write: true, });    
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".erstellt", { name: 'Unifi Voucher_Code_erstellt'+x,  role: 'string', read:  true,  write: true, });
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".dauer", { name: 'Unifi Voucher_Code_duration'+x,  role: 'string', read:  true,  write: true, });
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".abgelaufen", { name: 'Unifi Voucher_Code_expires'+x,  role: 'string', read:  true, write: true, });
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".id", { name: 'Unifi Voucher_Code_id'+x,  role: 'string', read:  true,  write: true, });
       createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".notiz", { name: 'Unifi Voucher_Code_notiz'+x,  role: 'string', read:  true,  write: true, });
    }
        let vouchiesHelper=""  //Werteliste-Datenpunkt für StandardVouchies
        let vouchiesHelper2="Wähle Standard;"
        let vouchiesHelper3="1;"
         countie=0;
    dslraserD 1 Reply Last reply
    0
    • dslraserD dslraser

      @liv-in-sky

      ich finde es ein bisschen "unglücklich" das dieser Punkt

      let xxClientxx="Heiko-Note10";"Kerstin-Note8"; // falls der name leerzeichen beinhaltet müssen diese mit _ ersetzt werden z.b : "liv in sky handy"  zu  "liv_in_sky_handy"
      

      unter "ab hier nichts mehr ändern" steht. Ich vermute da auch den Fehler von @SirDirk , kann das sein ?
      Weil da eigentlich nichts geändert werden soll, aber die eigenen Geräte da rein müssen.

      SirDirkS Offline
      SirDirkS Offline
      SirDirk
      wrote on last edited by
      #1028

      @dslraser

      unter dem Teil "//-----------------AB HIER NICHTS MEHR ÄNDERN------------------------------------------------------" habe ich nichts geändert.

      Was muss denn da rein?

      1 Reply Last reply
      0
      • SirDirkS SirDirk

        @dslraser sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

        Kannst Du mal diesen Teil ( also ohne Deine Zugangsdaten ab unter Const apName (ohne Deine AP'S) posten

        Folgt hier:

        
        //Vordefinierte Vouchers für  one-click-create - wird hier etwas geändert BITTE DATENPUNKT (Vouchers_StandardList) LÖSCHEN vor Scriptstart!!!!
        //BITTE alle Werte eingeben - für nichtbenutzte wie up-, download und nmb_begrenzung eine 0 eintragen
        // Pflichteinträge sind dauer, anzahl, multiuse und notiz !!!
        const standardVouchers = {"Vier Tage" : {dauer: 240, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 4 Tage"}, 
                                  "Sieben Tage" : {dauer: 10080, anzahl: 1, multiuse: 1, upload: 300, download:300, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 7 Tage"},
                                  "99 Minuten" : {dauer: 99, anzahl: 2, multiuse: 1, upload: 0, download:200, mb_begrenzung: 500, notiz:"Dauer 99 Minuten - Anzahl 2"}}
        
        const blackList = [] //Blacklist - diese clients werden nicht berücksichtigt - aber nur wenn ein alias im controller definiert ist
        const checkConnType=["MephistoFon"];  // Datenpunkte (werden erstellt) für Überwachung von Connection (WLAN only) - aber nur wenn ein alias im controller definiert ist
                                                           // wenn leer - keine überwachung (const checkConnType=[])
        
        //Pause bei Umschalten der WLANnetze, damit Netzanmeldungen der clients wieder normal
        const clientPauseConst = 200000;    //1000 bedeutet 1 Sekunde -  das braucht Zeit !!!
        
        // Abfragezyklus definieren
        const abfragezyklus =20000; // es ist nicht zu empfehlen unter 20000 (20 sekunden) zu gehen
        const abfageoffset = 45000; // zu schnelle Abmeldungen können hier eingestellt weren - > erhöhen (15000 = 15 sek.)
        
        //HIER Einstellungen : EIN-AUSSCHALTEN Vouchers, iqontrol-Datei erstellen, anwesenheitskontrolle-clientpflege
        let iqontrol = true;
        let anwesenheit = true; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen
        
        let vouchers = false;
        let apInfo = true;
        let problemWLAN=false; //bei problemen mit APs die über WLAN angebuden sind
        let countFalseSetting=2; //2 bedeutet : einmal einen abfragezyklus auslassen bevor auf false gesetzt wird: Formel:  n-1
        let aliasname=false; 
        let disConClientsFirst=true; //zeigt disconnected clients als erstes im table (vis) oder iqontrol an
        
        let ohneClientAbfrage=false; //schaltet das bearbeiten der clients vollständig ab - auch keine datenpunkte
        
        let sortedByIP =false; //client anzeige nach IP sortiert
        
        
        //FARBEN für IQontrol und VIS
        //die farbe für die tabellen in der vis wird im widget eingestellt
        //color_vis_text_client_in_table
        //color_vis_text_voucher_in_table
        let color_iqontrol_text__client_letzteAenderung_VIS="lightblue";
        let color_iqontrol_text__client_letzteAenderung_VIS_Text="#d0cdcd";
        let color_iqontrol_text_client_in_table= "black";  
        let color_iqontrol_text__client_disconnected="#01A9DB";
        
        let color_iqontrol_client_gradient1= "lightblue";   
        
        let color_iqontrol_text_voucher_in_table= "black"; 
        let color_iqontrol_voucher_gradient1= "lightblue"; 
        let color_iqontrol_text__client_letzteAenderung="#848484";
        let color_iqontrol_text__voucher_ueberschrift="lightblue";
        
        let schriftart="Helvetica";  //möglich: Helvetica,Serif
        
        
        //-----------------AB HIER NICHTS MEHR ÄNDERN------------------------------------------------------
        
        const versionNr = "12122019-3.0"
        const dpPrefix = "javascript."+ instance +".";
        // Hier Definition iqontrol-Style für Popup
        const format = "<!DOCTYPE html><html lang=\"de\"><head><title>Voucher</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body><table style=\"color:"+color_iqontrol_text_voucher_in_table+";text-align:center; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent,"+color_iqontrol_voucher_gradient1+");\">";
        const format2 = "<!DOCTYPE html><html lang=\"de\"><head><title>Clients</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body><table style=\"color:"+color_iqontrol_text_client_in_table+"; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent," +color_iqontrol_client_gradient1+");\">";
        const format3 = "<table style=\"color:"+color_iqontrol_text__client_letzteAenderung_VIS_Text+"; font-family:"+schriftart+";\">";
        const format6 ="<tr><td>&ensp;</td><td>&ensp;</td></tr> <tr style=\"color:"+color_iqontrol_text__voucher_ueberschrift+";\">"
        const apHead = "<!DOCTYPE html><html lang=\"de\"><head><title>Voucher</title><meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\"></head><body>"
        const apTable = "<table style=\"color:"+color_iqontrol_text_client_in_table+"; font-family:"+schriftart+";background-image: linear-gradient(42deg,transparent," +color_iqontrol_client_gradient1+");\">";
        const tableAus = "</table>";
        
        
        
        const request = require('request-promise-native').defaults({ rejectUnauthorized: false });
        
        const pathVoucher = "/htmlvoucher.html"; const pathClient = "/htmlclients.html"; const pathInfo = "/htmlinfo.html"; const pathAlarm = "/htmlalarm.html"; const pathAbmelung = "/htmlLog.html";
        const pathOnlyWLAN = "/htmlwlan.html";const pathOnlyLAN = "/htmllan.html";const pathOnlyDISC = "/htmldisc.html";
        let cookies = [];
        let loggedIn = false;
        let debug = false;
        let mylogs = false;
        let syslogs = false;
        let xxClientxx="Heiko-Note10"; // falls der name leerzeichen beinhaltet müssen diese mit _ ersetzt werden z.b : "liv in sky handy"  zu  "liv_in_sky_handy"
        let xxClientxxIndex=0;
        let clientPause = false;
        let clientPauseVal;
        let wifiDPs = [];
        
        let wifiDPsHide = [];
        let vouchiesDPs=[];
        let myname = 'hostname';
        let respv; let respc; let respw; let resph; let respgv; let respa; let respal; //geholte Daten
        let countFalse=1; 
        let statusarr=[];
        let writeFileVar =0;
        let listValue=[];            //iqontrol löschen kachel
        let listValue2;              //iqontrol löschen kachel
        let listValue3;              //iqontrol löschen VIS
        let nichtSchalten=true;   
        //let nichtSchalten2=false;    //iqontrol löschen kachel
        let versuch;
        let listeDatenpunkte = [];
        let listeDatenpunkteControl=[];
        let countie;
        let binAmArbeiten=false;
        var midnight=false;
        let apListeTable;
        let apListe;
        let healthListe;
        let healthListeTable;
        let notSeen=[];
        let ipArrFehlt=[];
        var notseenLengthOld;
        var notseenLength;
        let lastChange=[];
        let mybodyVouchers2; // create-one-click-standard-voucher
        let expire_var; // create-one-click-standard-voucher
        let n_var; // create-one-click-standard-voucher
        let quota_var; // create-one-click-standard-voucher
        let note_var; // create-one-click-standard-voucher
        let up_var; // create-one-click-standard-voucher
        let down_var; // create-one-click-standard-voucher
        let MBytes_var; // create-one-click-standard-voucher
        let testerral=false; let testerrc=false; let testerrl=false; let testerrv=false; let testerrs=false; let testerrh=false; let testerrcv=false; let testerrdv=false; let testerrws=false; let testerrap=false; 
        var scriptCounter=0;
        let health = true;  // Angaben zum Systemstatus - die Healtdaten werden nur alle 5 Abfragezyklen geholt
        let alarmSwitch =false;
        let alarmCounter =0;
        let firstTime=0;
        let mybodyVouchers;
        let monthChangeData=false;
        let checkNetwork=false;
        var wifiLength=0;
              for(let wifi_name in wifis) {      
            wifiLength++; }
        
        
         if (aliasname)  myname="name";
         if (ohneClientAbfrage) anwesenheit=false;
         writeMyFile("neugestartet ... bitte warten", pathClient);
         writeMyFile("neugestartet ... bitte warten", pathVoucher);
         writeMyFile("neugestartet ... bitte warten", pathAlarm);
         writeMyFile("neugestartet ... bitte warten", pathInfo);
         writeMyFile("neugestartet ... bitte warten", pathOnlyWLAN);
         writeMyFile("neugestartet ... bitte warten", pathOnlyLAN);
         writeMyFile("neugestartet ... bitte warten", pathOnlyDISC);
         if ( !anwesenheit) {writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathClient);
                             writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathOnlyWLAN);
                             writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathOnlyLAN);
                             writeMyFile("variable anwesenheit und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathOnlyDISC);}
        
        
         if ( !vouchers && !iqontrol) writeMyFile("variable vouchers und/oder iqontrol ist nicht im unifiscript aktiviert - auf true setzen", pathVoucher);
        
        for(let wifi_name in wifis) {
             wifiDPsHide.push(dpPrefix + "WLANUnifi.WLANSSIDsHide." + wifis[wifi_name].name);
             createState(dpPrefix + "WLANUnifi.WLANSSIDsHide."+ wifi_name, false, { name: wifis[wifi_name].desc, role: 'switch', read: true, write: true, type: "boolean" });}
        
         //Erstelle Datenpunkte für die WLANs automatisch
         for(let wifi_name in wifis) {
             wifiDPs.push(dpPrefix + "WLANUnifi." + wifis[wifi_name].name);
             createState(dpPrefix + "WLANUnifi."+ wifi_name, { name: wifis[wifi_name].desc, role: 'switch', read: true, write: true, type: "boolean" });}
        
         createState(dpPrefix + "WLANUnifi.Wifi_Clients", "not available",{ name: 'Clients_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
         createState(dpPrefix + "WLANUnifi.Wifi_ClientsOnlyLAN", "not available",{ name: 'Clients_LAN_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
         createState(dpPrefix + "WLANUnifi.Wifi_ClientsOnlyWLAN", "not available",{ name: 'Clients__WLAN_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
         createState(dpPrefix + "WLANUnifi.Wifi_ClientsOnlyDISC", "not available",{ name: 'Clients__Disconnected_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
         createState(dpPrefix + "WLANUnifi.Wifi_Clients_Anzahl_LAN",  { name: 'Wifi_Clients_Anzahl_LAN', desc: 'Wifi_Clients_Anzahl_LAN', type: 'number',def:0, unit: '', min: '0', max: '100', role: '',read: true, write: false });
         createState(dpPrefix + "WLANUnifi.Wifi_Clients_Anzahl_WLAN",  { name: 'Wifi_Clients_Anzahl_WLAN', desc: 'Wifi_Clients_Anzahl_WLAN', type: 'number',def:0, unit: '', min: '0', max: '100', role: '',read: true, write: false });
         createState(dpPrefix + "WLANUnifi.Wifi_Clients_Anzahl_DISC",  { name: 'Wifi_Clients_Anzahl_DISC', desc: 'Wifi_Clients_Anzahl_DISC', type: 'number',def:0, unit: '', min: '0', max: '100', role: '',read: true, write: false });
         createState(dpPrefix + "WLANUnifi.SiteLED", false, { name: 'SiteLED',  type: 'boolean', role: 'switch', read:  true,  write: true,});
         createState(dpPrefix + "WLANUnifi.Client_WhiteList", "default", { name: 'Client_WhiteList_Filter_String', desc: 'Alarm_Table', type: 'string', unit: '',  role: '',read: true, write: true }); 
         createState(dpPrefix + "WLANUnifi.Alarm.Alarm", { name: 'Alarm_Table_not_archieved', desc: 'Alarm_Table', type: 'string', unit: '',  role: '',read: true, write: true }); 
         createState(dpPrefix + "WLANUnifi.Missing_Name", "not available", { name: 'Missing_Name', desc: 'Missing_Name', type: 'string', unit: '',  role: '',read: true, write: true }); 
         createState(dpPrefix + "WLANUnifi.Alarm.Alarm_Anzahl", { name: 'Alarm_Anzahl', desc: 'Alarm_Table', type: 'number', unit: '',  role: '',read: true, write: true });
         createState(dpPrefix + "WLANUnifi.ZyklusZaehler", 1, { name: 'ZyklusZaehler', desc: 'ZyklusZaehler', type: 'number', unit: '',  role: '',read: true, write: true });
         createState(dpPrefix + "WLANUnifi.xxxScriptVersionxxx", versionNr,{ name: 'ScriptVersion', desc: 'ScriptVersion', type: 'string', unit: '',  role: '',read: true, write: true });
         if (anwesenheit) createState(dpPrefix + "WLANUnifi.Wifi_Clients_Log", { name: 'Clients_HTML_Table_VIS_Log',  role: 'string', read:  true,  write: true,});
        
         var foo = (aliasname) ? true : false;
         createState(dpPrefix + "WLANUnifi.AliasName", foo,  { name: ' AliasName',  desc:  'schaltet Aliasnamen ein', role: 'switch', type: 'boolean', read:  true,  write: true,
                    }  , function() {setStateDelayed(dpPrefix + "WLANUnifi.AliasName", foo, 200)});
        
         //createState(dpPrefix + "WLANUnifi.Aussortiert", { name: 'Aussortiert',  role: 'string', read:  true,  write: true,});
        
        
         if (vouchers) {
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers", { name: 'Vouchers_HTML_Table_VIS',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_List", { name: 'Vouchers_ID_List',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_CodeList", { name: 'Vouchers_Texte_Delete_VIS_Widget',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_CodeList2", { name: 'Vouchers_Werte_Delete_VIS_Widget',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_ValueCodeList", { name: 'Vouchers_ValueList_IQontrol', desc:"ValueCodeList", role: "", type:'number', states: "1:please wait ...;2:refresh webpage", def:1, min: 0, max: 20,  read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Create", false,  { name: 'A_New_Voucher_Create',  role: 'switch', type: 'boolean', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_DeleteVIS",   { name: 'Vouchers_Schalter_Delete_VIS_Widget',  role: 'switch', type: 'number', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers_CreateStandard", 1,  { name: 'Vouchers_Schalter_Create_VIS_Widget',  role: 'switch', type: 'number', read:  true,  write: true,});
          //createState(dpPrefix + "WLANUnifi.Wifi_Create_Standard_Voucher", false,  { name: 'A_Delete_Voucher',  role: 'switch', type: 'boolean', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_Delete_Voucher.Delete", false,  { name: 'Voucher_Delete__Botton_VIS',  role: 'switch', type: 'boolean', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_Delete_Voucher.Voucher_ID", "must be set",{ name: 'A_Delete_Voucher.Voucher_ID', role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Dauer", "must be set",{ name: ' A_New_Voucher_Dauer',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.MultiUse", "must be set",{ name: ' A_New_Voucher_MultiUse',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Anzahl", "must be set",{ name: ' A_New_Voucher_Anzahl',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Notiz", "",{ name: ' A_New_Voucher_Notiz',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Upload", "",{ name: ' A_New_Voucher_Uplaod',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Download", "",{ name: ' A_New_Voucher_Download',  role: 'string', read:  true,  write: true,});
          createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.A_New_Voucher.Mb_Begrenzung", "", { name: ' A_New_Voucher_Mb_Begrenzung',  role: 'string', read:  true,  write: true,});
        
        for (var i = 1; i < 21; i++) { 
            var x=i.toString();
            if (i<10) x="0"+x;
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x, { name: 'Unifi Voucher_Code'+x,  role: 'string', read:  true,  write: true, });
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".code"+x, { name: 'Unifi Voucher_Code_code'+x,  role: 'string', read:  true,  write: true, });    
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".erstellt", { name: 'Unifi Voucher_Code_erstellt'+x,  role: 'string', read:  true,  write: true, });
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".dauer", { name: 'Unifi Voucher_Code_duration'+x,  role: 'string', read:  true,  write: true, });
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".abgelaufen", { name: 'Unifi Voucher_Code_expires'+x,  role: 'string', read:  true, write: true, });
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".id", { name: 'Unifi Voucher_Code_id'+x,  role: 'string', read:  true,  write: true, });
           createState(dpPrefix + "WLANUnifi.Wifi_Vouchers-CODES.CODE"+x+".notiz", { name: 'Unifi Voucher_Code_notiz'+x,  role: 'string', read:  true,  write: true, });
        }
            let vouchiesHelper=""  //Werteliste-Datenpunkt für StandardVouchies
            let vouchiesHelper2="Wähle Standard;"
            let vouchiesHelper3="1;"
             countie=0;
        dslraserD Offline
        dslraserD Offline
        dslraser
        Forum Testing Most Active
        wrote on last edited by dslraser
        #1029

        @SirDirk
        @liv-in-sky

        schau mal in Zeile 79....(wie vermutet, da steht noch mein Gerät vom testen drinn)

        Da muß Dein Gerät /Deine Geräte rein die Du überwachen möchtest, das aus Zeile 10 vom Post oben.

        SirDirkS 1 Reply Last reply
        0
        • dslraserD dslraser

          @SirDirk
          @liv-in-sky

          schau mal in Zeile 79....(wie vermutet, da steht noch mein Gerät vom testen drinn)

          Da muß Dein Gerät /Deine Geräte rein die Du überwachen möchtest, das aus Zeile 10 vom Post oben.

          SirDirkS Offline
          SirDirkS Offline
          SirDirk
          wrote on last edited by
          #1030

          @dslraser

          Also Zeile 96?

          e9bf440e-aed4-41c0-a84d-3aa6ffcfad55-grafik.png

          Und was müsste ich für mehrere Geräte eintragen?

          dslraserD 1 Reply Last reply
          0
          • SirDirkS SirDirk

            @dslraser

            Also Zeile 96?

            e9bf440e-aed4-41c0-a84d-3aa6ffcfad55-grafik.png

            Und was müsste ich für mehrere Geräte eintragen?

            dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            wrote on last edited by dslraser
            #1031

            @SirDirk
            schau mal in meinen Spoiler von oben

            https://forum.iobroker.net/post/340908

            (Bei mir Zeilen 9 und 67)

            1 Reply Last reply
            0
            • SirDirkS SirDirk

              @liv-in-sky
              Ich habe ein kompliziertes Passwort aus einem PW-Manager mit Sonderzeichen und Zahlen - aber keine Umlaute - keine Leerzeichen.

              In der JS-Instanz habe ich die folgenden Einträge:

              14ac5649-3f90-4bff-a20d-57f21d40f249-grafik.png

              @dslraser
              nach dem klein-schreiben von default funktioniert nun der Login - es kommt jetzt aber folgende Fehlermeldung:

              099831ea-0029-4bf4-944c-029e3a33ebfd-grafik.png

              Irgendwie komme ich da auf folgende Zeilen, denn es sind keine MephistoFon-Einträge in den Datenpunkten.

              dce2b33d-8d0b-42ff-a2c2-aefe467fc05f-grafik.png

              Danke für die Hilfe beim Login - habt ihr evtl. eine Idee zu der neuen Fehlermeldung?

              die folgenden Log-Einträge sind auch noch vorhanden:

              7754af29-a0a2-45cb-9626-81120153884d-grafik.png

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              wrote on last edited by
              #1032

              @SirDirk bei den ersten lauf kann es schon mal zu warnungen kommen

              du solltest auf jeden fall mal das script stoppen - dann den javascript adapter auch neustarten und dann wieder das script starten

              kontrolliere mal :

              sind die datenpunkte für die anwesenheit alle da und true

              • ist unter WLANUnifiHelp.Others der datenpunkt mit den wifi-geräten angelegt worden

              @dslraser
              xxClientsxx ist nur zum testen da und kommt nicht zum einsatz, wenn syslog=false ist - ist nur für ausnahmefälle und debug - deshalb der richtige platz - dieses debug sagt einem nur was, wenn man weiß, was im script abläuft

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              dslraserD SirDirkS 2 Replies Last reply
              0
              • liv-in-skyL liv-in-sky

                @SirDirk bei den ersten lauf kann es schon mal zu warnungen kommen

                du solltest auf jeden fall mal das script stoppen - dann den javascript adapter auch neustarten und dann wieder das script starten

                kontrolliere mal :

                sind die datenpunkte für die anwesenheit alle da und true

                • ist unter WLANUnifiHelp.Others der datenpunkt mit den wifi-geräten angelegt worden

                @dslraser
                xxClientsxx ist nur zum testen da und kommt nicht zum einsatz, wenn syslog=false ist - ist nur für ausnahmefälle und debug - deshalb der richtige platz - dieses debug sagt einem nur was, wenn man weiß, was im script abläuft

                dslraserD Offline
                dslraserD Offline
                dslraser
                Forum Testing Most Active
                wrote on last edited by
                #1033

                @liv-in-sky
                okay

                1 Reply Last reply
                0
                • liv-in-skyL liv-in-sky

                  @SirDirk bei den ersten lauf kann es schon mal zu warnungen kommen

                  du solltest auf jeden fall mal das script stoppen - dann den javascript adapter auch neustarten und dann wieder das script starten

                  kontrolliere mal :

                  sind die datenpunkte für die anwesenheit alle da und true

                  • ist unter WLANUnifiHelp.Others der datenpunkt mit den wifi-geräten angelegt worden

                  @dslraser
                  xxClientsxx ist nur zum testen da und kommt nicht zum einsatz, wenn syslog=false ist - ist nur für ausnahmefälle und debug - deshalb der richtige platz - dieses debug sagt einem nur was, wenn man weiß, was im script abläuft

                  SirDirkS Offline
                  SirDirkS Offline
                  SirDirk
                  wrote on last edited by
                  #1034

                  @liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                  nifiHelp.Others der datenpunkt mit den wifi-geräten angelegt word

                  Script habe ich mehrfach gestoppt und auch die Instanz neu gestartet.
                  Datenpunkte für Anwesenheit sind nicht vorhanden.
                  @dslraser
                  Leider habe ich nun nicht verstanden, was ich wo ändern muss.

                  liv-in-skyL dslraserD 2 Replies Last reply
                  0
                  • SirDirkS SirDirk

                    @liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                    nifiHelp.Others der datenpunkt mit den wifi-geräten angelegt word

                    Script habe ich mehrfach gestoppt und auch die Instanz neu gestartet.
                    Datenpunkte für Anwesenheit sind nicht vorhanden.
                    @dslraser
                    Leider habe ich nun nicht verstanden, was ich wo ändern muss.

                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    wrote on last edited by
                    #1035

                    @SirDirk gibt es die möglichkeit anydesk oder teamviewer - dann schau ich mal rein

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    SirDirkS 1 Reply Last reply
                    0
                    • SirDirkS SirDirk

                      @liv-in-sky sagte in Unifi WLAN Script 2 mit Anwesenheitskontrolle:

                      nifiHelp.Others der datenpunkt mit den wifi-geräten angelegt word

                      Script habe ich mehrfach gestoppt und auch die Instanz neu gestartet.
                      Datenpunkte für Anwesenheit sind nicht vorhanden.
                      @dslraser
                      Leider habe ich nun nicht verstanden, was ich wo ändern muss.

                      dslraserD Offline
                      dslraserD Offline
                      dslraser
                      Forum Testing Most Active
                      wrote on last edited by
                      #1036

                      @SirDirk
                      nee, alles gut. Ich war auf dem falschen Dampfer unterwegs.....(Sorry für die Verwirrung)

                      1 Reply Last reply
                      0
                      • liv-in-skyL liv-in-sky

                        @SirDirk gibt es die möglichkeit anydesk oder teamviewer - dann schau ich mal rein

                        SirDirkS Offline
                        SirDirkS Offline
                        SirDirk
                        wrote on last edited by
                        #1037

                        @liv-in-sky
                        Teamviewer wäre kein Problem. Wie kann ich die Daten per PN senden?

                        liv-in-skyL 1 Reply Last reply
                        0
                        • SirDirkS SirDirk

                          @liv-in-sky
                          Teamviewer wäre kein Problem. Wie kann ich die Daten per PN senden?

                          liv-in-skyL Offline
                          liv-in-skyL Offline
                          liv-in-sky
                          wrote on last edited by
                          #1038

                          @SirDirk rechts oben neben der glocke ist der chat

                          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                          1 Reply Last reply
                          0
                          • liv-in-skyL liv-in-sky

                            @dslraser hallo h.

                            so wie es scheint, es ist tatsächlich wieder ein anderes verhalten - wenn mein handy aus dem netz verschwindet - wird bei mir im controller unter last activity "just now" angezeigt - anscheinend kommen da wieder andere werte- wie sich das mit usg auswirkt weiß ich im moment nicht

                            würdest du das bitte mal testen und morgen, wenn du wieder im büro bist, kontrollieren

                            unifi-skipt-ohne-abmelden-test.txt

                            danke dir

                            ps: ist garnicht so leicht darzustellen - das handy aus dem netz zu bekommen, obwohl alle ap'S online sind 😞

                            dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            wrote on last edited by
                            #1039

                            @liv-in-sky
                            heute morgen hat es funktioniert.(mit VPN und dem geänderten Script)
                            Screenshot_20191217-090227_Chrome.jpg

                            liv-in-skyL 1 Reply Last reply
                            0
                            • dslraserD dslraser

                              @liv-in-sky
                              heute morgen hat es funktioniert.(mit VPN und dem geänderten Script)
                              Screenshot_20191217-090227_Chrome.jpg

                              liv-in-skyL Offline
                              liv-in-skyL Offline
                              liv-in-sky
                              wrote on last edited by
                              #1040

                              @dslraser danke - für die gute nachricht

                              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                              1 Reply Last reply
                              0
                              • D Offline
                                D Offline
                                dos1973
                                wrote on last edited by
                                #1041

                                @liv-in-sky
                                Kurze Frage zum Speedtest.

                                Kannst du DP’s für Datum und Uhrzeit erzeugen ... wann der Speed Test gemacht/ geschrieben wurde...

                                Danke

                                liv-in-skyL 2 Replies Last reply
                                0
                                • D dos1973

                                  @liv-in-sky
                                  Kurze Frage zum Speedtest.

                                  Kannst du DP’s für Datum und Uhrzeit erzeugen ... wann der Speed Test gemacht/ geschrieben wurde...

                                  Danke

                                  liv-in-skyL Offline
                                  liv-in-skyL Offline
                                  liv-in-sky
                                  wrote on last edited by
                                  #1042

                                  @dos1973 hi

                                  dazu bräuchte ich die daten nochmal - ich weiß nicht, ob die uhrzeit der messung drinsteht

                                  am roten pfeil mylog in log ändern - dann müßten die daten unter dem script im log sehen

                                  Image 5.png

                                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                  D 1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    MyMeyer
                                    wrote on last edited by MyMeyer
                                    #1043

                                    Hallo,
                                    wie lange braucht das Script um zu erkennen ob ein Gerät Online ist. Mein Handy Huawei ist seit 15 Min im Unifi Controller sichtbar , aber im IoBroker unter Objekt wird nichts angezeigt von dem Gerät. Ich habe jetzt die letzte Version vom Script aktiviert und vorher alle Objekte gelöscht. In Summe habe ich ca. 50 Geräte im Netzwerk.

                                    Hier meine Einstellungen:

                                    //Vordefinierte Vouchers für one-click-create - wird hier etwas geändert BITTE DATENPUNKT (Vouchers_StandardList) LÖSCHEN vor Scriptstart!!!!
                                    //BITTE alle Werte eingeben - für nichtbenutzte wie up-, download und nmb_begrenzung eine 0 eintragen
                                    // Pflichteinträge sind dauer, anzahl, multiuse und notiz !!!
                                    const standardVouchers = {"Vier Tage" : {dauer: 240, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 4 Tage"},
                                    "Sieben Tage" : {dauer: 10080, anzahl: 1, multiuse: 1, upload: 300, download:300, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 7 Tage"},
                                    "99 Minuten" : {dauer: 99, anzahl: 2, multiuse: 1, upload: 0, download:200, mb_begrenzung: 500, notiz:"Dauer 99 Minuten - Anzahl 2"}}

                                    const blackList = ["" ] //Blacklist - diese clients werden nicht berücksichtigt - aber nur wenn ein alias im controller definiert ist
                                    const checkConnType=["Huawei-Mate10","Samsung-Galaxy-A50","Samsung-Galaxy-S7"]; // Datenpunkte (werden erstellt) für Überwachung von Connection (WLAN only) - aber nur wenn ein alias im controller definiert ist
                                    // wenn leer - keine überwachung (const checkConnType=[])

                                    //Pause bei Umschalten der WLANnetze, damit Netzanmeldungen der clients wieder normal
                                    const clientPauseConst = 200000; //1000 bedeutet 1 Sekunde - das braucht Zeit !!!

                                    // Abfragezyklus definieren
                                    const abfragezyklus =20000 ; // es ist nicht zu empfehlen unter 20000 (20 sekunden) zu gehen
                                    const abfageoffset = 15000 ; // zu schnelle Abmeldungen können hier eingestellt weren - > erhöhen (15000 = 15 sek.)

                                    //HIER Einstellungen : EIN-AUSSCHALTEN Vouchers, iqontrol-Datei erstellen, anwesenheitskontrolle-clientpflege
                                    let iqontrol = false;
                                    let anwesenheit = true; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen

                                    let vouchers = false;
                                    let apInfo = true;
                                    let problemWLAN=false; //bei problemen mit APs die über WLAN angebuden sind
                                    let countFalseSetting=2; //2 bedeutet : einmal einen abfragezyklus auslassen bevor auf false gesetzt wird: Formel: n-1
                                    let aliasname=true;
                                    let disConClientsFirst=false; //zeigt disconnected clients als erstes im table (vis) oder iqontrol an

                                    let ohneClientAbfrage=false; //schaltet das bearbeiten der clients vollständig ab - auch keine datenpunkte

                                    let sortedByIP =false; //client anzeige nach IP sortiert

                                    MyMeyer

                                    >>> Hardware: Intel I5 mit ****Debian ProxMox OS: Debian **** <<< >>> Network with UniFi <<<
                                    >>> HomeMatic CCU-2 (Wired und Funk) / Philips HUE / Echo.DOT / Echo.SHOW / Xiaomi Smart-Home / Xiaomi Robot Vacuum Cleaner / Synology DS 918+ / Shelly 1&2 <<<

                                    liv-in-skyL 1 Reply Last reply
                                    0
                                    • liv-in-skyL liv-in-sky

                                      @dos1973 hi

                                      dazu bräuchte ich die daten nochmal - ich weiß nicht, ob die uhrzeit der messung drinsteht

                                      am roten pfeil mylog in log ändern - dann müßten die daten unter dem script im log sehen

                                      Image 5.png

                                      D Offline
                                      D Offline
                                      dos1973
                                      wrote on last edited by
                                      #1044

                                      @liv-in-sky
                                      ok habe das log geändert...
                                      das Ergebnis ist dann im "logging" zu sehen...?

                                      liv-in-skyL 1 Reply Last reply
                                      0
                                      • D dos1973

                                        @liv-in-sky
                                        ok habe das log geändert...
                                        das Ergebnis ist dann im "logging" zu sehen...?

                                        liv-in-skyL Offline
                                        liv-in-skyL Offline
                                        liv-in-sky
                                        wrote on last edited by liv-in-sky
                                        #1045

                                        @dos1973 ja das ergebnis sollte unter dem script in dem log teil zu sehen sein und kommt alle 3 zyklen

                                        Image 1.png

                                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                        D 1 Reply Last reply
                                        0
                                        • M MyMeyer

                                          Hallo,
                                          wie lange braucht das Script um zu erkennen ob ein Gerät Online ist. Mein Handy Huawei ist seit 15 Min im Unifi Controller sichtbar , aber im IoBroker unter Objekt wird nichts angezeigt von dem Gerät. Ich habe jetzt die letzte Version vom Script aktiviert und vorher alle Objekte gelöscht. In Summe habe ich ca. 50 Geräte im Netzwerk.

                                          Hier meine Einstellungen:

                                          //Vordefinierte Vouchers für one-click-create - wird hier etwas geändert BITTE DATENPUNKT (Vouchers_StandardList) LÖSCHEN vor Scriptstart!!!!
                                          //BITTE alle Werte eingeben - für nichtbenutzte wie up-, download und nmb_begrenzung eine 0 eintragen
                                          // Pflichteinträge sind dauer, anzahl, multiuse und notiz !!!
                                          const standardVouchers = {"Vier Tage" : {dauer: 240, anzahl: 1, multiuse: 1, upload: 0, download:0, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 4 Tage"},
                                          "Sieben Tage" : {dauer: 10080, anzahl: 1, multiuse: 1, upload: 300, download:300, mb_begrenzung: 500, notiz:"MB Begrenzung 500 - 7 Tage"},
                                          "99 Minuten" : {dauer: 99, anzahl: 2, multiuse: 1, upload: 0, download:200, mb_begrenzung: 500, notiz:"Dauer 99 Minuten - Anzahl 2"}}

                                          const blackList = ["" ] //Blacklist - diese clients werden nicht berücksichtigt - aber nur wenn ein alias im controller definiert ist
                                          const checkConnType=["Huawei-Mate10","Samsung-Galaxy-A50","Samsung-Galaxy-S7"]; // Datenpunkte (werden erstellt) für Überwachung von Connection (WLAN only) - aber nur wenn ein alias im controller definiert ist
                                          // wenn leer - keine überwachung (const checkConnType=[])

                                          //Pause bei Umschalten der WLANnetze, damit Netzanmeldungen der clients wieder normal
                                          const clientPauseConst = 200000; //1000 bedeutet 1 Sekunde - das braucht Zeit !!!

                                          // Abfragezyklus definieren
                                          const abfragezyklus =20000 ; // es ist nicht zu empfehlen unter 20000 (20 sekunden) zu gehen
                                          const abfageoffset = 15000 ; // zu schnelle Abmeldungen können hier eingestellt weren - > erhöhen (15000 = 15 sek.)

                                          //HIER Einstellungen : EIN-AUSSCHALTEN Vouchers, iqontrol-Datei erstellen, anwesenheitskontrolle-clientpflege
                                          let iqontrol = false;
                                          let anwesenheit = true; // beim setzen von true auf false die verzeichnisstruktur unter iobroker-objects "von hand" löschen

                                          let vouchers = false;
                                          let apInfo = true;
                                          let problemWLAN=false; //bei problemen mit APs die über WLAN angebuden sind
                                          let countFalseSetting=2; //2 bedeutet : einmal einen abfragezyklus auslassen bevor auf false gesetzt wird: Formel: n-1
                                          let aliasname=true;
                                          let disConClientsFirst=false; //zeigt disconnected clients als erstes im table (vis) oder iqontrol an

                                          let ohneClientAbfrage=false; //schaltet das bearbeiten der clients vollständig ab - auch keine datenpunkte

                                          let sortedByIP =false; //client anzeige nach IP sortiert

                                          liv-in-skyL Offline
                                          liv-in-skyL Offline
                                          liv-in-sky
                                          wrote on last edited by liv-in-sky
                                          #1046

                                          @MyMeyer die datenpunkte sollten nach 20 sekunden erscheinen

                                          • bitte mmache die anführungszeichen aus der blacklist raus sollte so aussehen blacklist=[]
                                          • setzte den wert abfageoffset=45000 - man kann später wieder weiter runtergehen
                                          • die mac-adressen der aps in apName solten direkt vom controller rauskopiert werden - alle buchstaben müssen klein sein
                                          • steht was im log ?
                                          • steht der datenpunkt Zykluszaehler zwischen 1-3 oder ist er größer 3
                                          • nutze das neuste skript - post 1 dieses threads

                                          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                                          M 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          520

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

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

                                          • Don't have an account? Register

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