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. Blockly, Radar, Alexa und Anwesenheitserkennung

NEWS

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

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

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

Blockly, Radar, Alexa und Anwesenheitserkennung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
3 Beiträge 2 Kommentatoren 2.3k Aufrufe
  • Ä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.
  • MessiahsM Offline
    MessiahsM Offline
    Messiahs
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    zurzeit habe ich "Radar" und "Alexa2" laufen.

    Mein Wunsch wäre eine persönliche Begrüßung über Alexa, wenn Radar erkennt, dass eine neue Person in Reichweite ist.

    Beispiel:

    "Person2" ist bereits "anwesend", "Person1" kommt nach Hause und soll über ein Script entsprechend per Namen(also "Willkommen Person1") begrüßt werden.

    "Radar" reagiert wie folgt:

    Variable "allHere" = "Person1, Person2" (alphabetische Sortierung)

    Variable "countHere" = "2"

    Person2.count =32

    Person1.count = 1

    Gerne würde ich nun Alexa über Blockly beibringen, dass ein Begrüßungstext, wie "Willkommen Person1" ausgegeben wird.

    Leider bietet Radar keinen Timestamp oder ähnliches an, so dass ich es nicht hin bekomme, die "neue" Person im Haus zu ermitteln.

    Aktuell habe ich zwei Probleme:

    a.) müsste die richtige Person ermittelt werden (Idee wäre ggf. über eine Hilfsvariable zu gehen (dann Vergleich alter und neuer Wert von "allHere") oder über eine eine Funktion "Ermittle Personennamen zu min(PersonX.count)" )

    b.) über die Zeischenkette "allHere"den Namen zu extrahieren (falls mit einer Hilfsvariablen gearbeitet wird) und diesen dann als ein "say"-Command an Alexa2 zu übergeben.

    Vielleicht hat ja jemand einen Lösungsansatz… oder ist Blockly hier sowieso nicht der richtige Ansatz ?

    Besten Dank

    Markus

    1 Antwort Letzte Antwort
    0
    • TomTT Offline
      TomTT Offline
      TomT
      schrieb am zuletzt editiert von
      #2

      Hallo,

      wie erkennst du denn überhaupt, welche Person nach Hause kommt, bzw. das Haus verlässt?

      Über BT Tags oder WLAn& Handy kannst du der Person doch einfach eine Variable "Person1-Anwesend" zuordnen.

      Bei 2 oder 3 Personen legst du halt für jede Person eine Variable an.

      Dann hast du den Namen und kannst auf Änderung dieser Variable dann per Blockly eine Begrüßung triggern.

      Wenn "PersonX-Anwesend" bei Änderung auf "True", dann SAY Alexa "Willkommen PersonX"….

      Nur mal so als Lösungsansatz

      Grüße

      Tom

      PI3B > Raspimatic / Opi+2 > ioBroker / ESP8266
      if (System == "running") {finger = "weg";} else {lastAction = "Rückgängig";}

      1 Antwort Letzte Antwort
      0
      • MessiahsM Offline
        MessiahsM Offline
        Messiahs
        schrieb am zuletzt editiert von
        #3

        Hallo Tom,

        für die Anwesenheitserkennung habe ich das AddOn "Radar" in ioBroker laufen.

        Sobald mein Handy in Reichweite ist, wird es somit von Radar erkannt (Bluetooth).

        In Radar kann für jedes Bluetooth-Gerät bereits einen Namen vergeben werden… also z.B. "Person1", deshalb wollte ich ungern weitere Variablen (Person1-Anwesend) erstellen.

        Ich habe es in JS wie folgt gelöst:

        function diffArray(arr1, arr2) {
                return arr1.concat(arr2).filter(function (val) {
                if (!(arr1.includes(val) && arr2.includes(val)))
                    return val;
                });
            }
        
        on({id: 'radar.0.whoHere', change: "ne"}, function (obj) {
            console.log('+++++++++ Anwesenheit +++++++++++ '); 
            var newState = '',
                oldState ='',
                newStateArray = [],
                oldStateArray = [],
                changedPerson = '',
                sayString = "",
                delay=0;
        
            newState = (obj.newState.val ? obj.newState.val : "");
            oldState = (obj.oldState.val ? obj.oldState.val : "");
            console.log('newState: ' + newState);      
            console.log('oldState: ' + oldState);      
        
            if(newState.length>0){
                newStateArray = (newState.split(", ") ? newState.split(", ") : newStateArray.push(newState) );
            }
            if(oldState.length>0){
                  oldStateArray = (oldState.split(", ") ? oldState.split(", ") : oldStateArray.push(oldState) );
            }
         // console.log('newStateArray.length: ' + newStateArray.length);
         // console.log('oldStateArray.length: ' + oldStateArray.length);
        
            changedPerson = diffArray(newStateArray, oldStateArray).toString();
            changedPerson =  changedPerson.replace(',',' und ');
            console.log('changedPerson: ' + changedPerson);   
        
            if (newStateArray.length > oldStateArray.length){
               // Person neu hinzugekommen
               sayString = "Willkommen zuhause " +changedPerson;
               delay =5000;
            } else {   
              // Person hat den Bereich verlassen
              sayString = "Tschüss " + changedPerson;
              delay =0;
            }
        
          //Alexa ansteuern
            setState("alexa2.0.Echo-Devices.G000Jxxx.Commands.speak-volume"/*volume*/, 35);
            setStateDelayed("alexa2.0.Echo-Devices.G000xxx.Commands.speak"/*controlNext*/, sayString, delay, false);
        
        });
        
        

        Grüße

        Markus

        Edit: code angepasst

        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

        499

        Online

        32.7k

        Benutzer

        82.5k

        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