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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst]Anwesenheit

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst]Anwesenheit

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
3 Beiträge 2 Kommentatoren 385 Aufrufe 1 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.
  • Dominik F.D Offline
    Dominik F.D Offline
    Dominik F.
    schrieb am zuletzt editiert von Dominik F.
    #1

    Hallo zusammen,

    ich versuche ein kleines Script zu schreiben, dass die anwesenden Handys im Haus (Aktuell 2) zählt, damit ich mir das in Vis anzeigen lassen kann.

    Leider bin ich totaler Laie im Programmieren und bekomme es nicht hin die Datentypen richtig zu übergeben. Hier ist das was ich geschrieben habe:

    createState('javascript.0.Anwesenheit.anzahl_anwesend', {type: 'number'});
    
    const idHandyDomi = 'tr-064.0.devices.Handy-Domi.active'/*active*/;
    const idHandyNadja = 'tr-064.0.devices.Handy-Nadja.active'/*active*/;
     
    var HandyDomi = 0;
        if(getState(idHandyDomi).val) HandyDomi = 1;
    
     var HandyNadja = 0;
        if(getState(idHandyNadja).val) HandyNadja = 1;
        
    function sammelmeldung() {
        var summe = HandyDomi + HandyNadja;
        setState('javascript.0.Anwesenheit.anzahl_anwesend', !!summe);
    }
     
    sammelmeldung(); // Skriptstart
     
    on(idHandyDomi, function(dp) {
        HandyDomi = 0;
        if(dp.state.val) HandyDomi = 1;
        sammelmeldung();
    });
     
    on(idHandyNadja, function(dp) {
        HandyNadja = 0;
        if(dp.state.val) HandyNadja = 1;
        sammelmeldung();
    });
    
    
    

    Hier ist die Fehlermeldung dazu:

    javascript.0	2020-03-23 23:54:43.308	info	(6849) script.js.common.Anwesenheit: registered 2 subscriptions and 0 schedules
    javascript.0	2020-03-23 23:54:43.307	warn	(6849) at script.js.common.Anwesenheit:17:1
    javascript.0	2020-03-23 23:54:43.307	warn	(6849) at sammelmeldung (script.js.common.Anwesenheit:14:5)
    javascript.0	2020-03-23 23:54:43.307	warn	(6849) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1426:20)
    javascript.0	2020-03-23 23:54:43.307	warn	(6849) You are assigning a boolean to the state "javascript.0.Anwesenheit.anzahl_anwesend" which expects a number. Please fix your code to use a number or change the state type to boolean. This warni
    javascript.0	2020-03-23 23:54:43.303	info	(6849) Start javascript script.js.common.Anwesenheit
    javascript.0	2020-03-23 23:54:43.212	info	(6849) Stop script script.js.common.Anwesenheit
    

    Kann mir jemand helfen?

    paul53P 1 Antwort Letzte Antwort
    0
    • Dominik F.D Dominik F.

      Hallo zusammen,

      ich versuche ein kleines Script zu schreiben, dass die anwesenden Handys im Haus (Aktuell 2) zählt, damit ich mir das in Vis anzeigen lassen kann.

      Leider bin ich totaler Laie im Programmieren und bekomme es nicht hin die Datentypen richtig zu übergeben. Hier ist das was ich geschrieben habe:

      createState('javascript.0.Anwesenheit.anzahl_anwesend', {type: 'number'});
      
      const idHandyDomi = 'tr-064.0.devices.Handy-Domi.active'/*active*/;
      const idHandyNadja = 'tr-064.0.devices.Handy-Nadja.active'/*active*/;
       
      var HandyDomi = 0;
          if(getState(idHandyDomi).val) HandyDomi = 1;
      
       var HandyNadja = 0;
          if(getState(idHandyNadja).val) HandyNadja = 1;
          
      function sammelmeldung() {
          var summe = HandyDomi + HandyNadja;
          setState('javascript.0.Anwesenheit.anzahl_anwesend', !!summe);
      }
       
      sammelmeldung(); // Skriptstart
       
      on(idHandyDomi, function(dp) {
          HandyDomi = 0;
          if(dp.state.val) HandyDomi = 1;
          sammelmeldung();
      });
       
      on(idHandyNadja, function(dp) {
          HandyNadja = 0;
          if(dp.state.val) HandyNadja = 1;
          sammelmeldung();
      });
      
      
      

      Hier ist die Fehlermeldung dazu:

      javascript.0	2020-03-23 23:54:43.308	info	(6849) script.js.common.Anwesenheit: registered 2 subscriptions and 0 schedules
      javascript.0	2020-03-23 23:54:43.307	warn	(6849) at script.js.common.Anwesenheit:17:1
      javascript.0	2020-03-23 23:54:43.307	warn	(6849) at sammelmeldung (script.js.common.Anwesenheit:14:5)
      javascript.0	2020-03-23 23:54:43.307	warn	(6849) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1426:20)
      javascript.0	2020-03-23 23:54:43.307	warn	(6849) You are assigning a boolean to the state "javascript.0.Anwesenheit.anzahl_anwesend" which expects a number. Please fix your code to use a number or change the state type to boolean. This warni
      javascript.0	2020-03-23 23:54:43.303	info	(6849) Start javascript script.js.common.Anwesenheit
      javascript.0	2020-03-23 23:54:43.212	info	(6849) Stop script script.js.common.Anwesenheit
      

      Kann mir jemand helfen?

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

      @Dominik-F sagte:

      setState('javascript.0.Anwesenheit.anzahl_anwesend', !!summe);                                                                                                                                                                            
      

      !!summe wandelt eine Zahl in einen Logikwert (boolean). Der Datenpunkt erwartet aber eine Zahl.

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

      Dominik F.D 1 Antwort Letzte Antwort
      1
      • paul53P paul53

        @Dominik-F sagte:

        setState('javascript.0.Anwesenheit.anzahl_anwesend', !!summe);                                                                                                                                                                            
        

        !!summe wandelt eine Zahl in einen Logikwert (boolean). Der Datenpunkt erwartet aber eine Zahl.

        Dominik F.D Offline
        Dominik F.D Offline
        Dominik F.
        schrieb am zuletzt editiert von
        #3

        @paul53

        Dank dir, hab die Ausrufezeichen entfernt und nun klappt es.

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


        Support us

        ioBroker
        Community Adapters
        Donate

        463

        Online

        32.6k

        Benutzer

        82.1k

        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