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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Anwesenheit mit Begrüßungen individuell gestalten

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    5
    1
    113

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    156

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    865

Anwesenheit mit Begrüßungen individuell gestalten

Scheduled Pinned Locked Moved Blockly
5 Posts 3 Posters 587 Views 7 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.
  • S Offline
    S Offline
    Silverstone69
    wrote on last edited by
    #1

    Hallo
    Ich versuche folgendes zu erreichen.
    Ich möchte gerne wenn jemand nachhause kommt er begrüßt wird. Das funktioniert schon sehr gut.
    Jetzt möchte ich aber das, wenn zwei Personen gleichzeitig nachhause kommen auch beide begrüßt werden.
    Genauso soll erkannt werden wer schon zuhause ist und wer oder wie viele Personen nun Nachhause kommen damit diese zusammen begrüßt werden jedoch nicht derjenige der schon zuhause war.

    Zur Anwesenheit Erkennung benutze ich den Ping Adapter und den Life 360 Adapter diese Kombination funktioniert zu 90% sehr gut ,habe damit nur sehr selten Fehlmeldungen.
    Eigene Datenpunkte sind folgende schon Vorhanden :
    Für jede Person (3 Personen) den Zeitpunkt wann da und wann nicht da,
    Gesamtanzahl der Anwesenden Personen,
    Entfernung zur Wohnung für jede Person.
    Diese Datenpunkte Arbeiten schon sehr gut.

    Jetzt fehlt mir aber die Logik dahinter wie ich dies in Blockly umsetzen kann damit das alles funktioniert.
    Mein Problem dabei ist das wenn eine Person schon zuhause ist und nun weitere Personen nachhause Kommen ich dies nicht richtig erfassen kann.
    Habe es schon damit versucht die Anwesenheit mit Nummern zu realisieren die dann zusammen gezählt werden wenn eine Person dazukommt und anhand des Ergebnisses dann eine ansage zu starten .
    Dabei ist aber das Problem das der wert sich schon sehr Früh ändert und ich es nicht hin bekomme das nur Die neuen Personen Begrüßt werden.

    Hat da Jemand vielleicht einen Vorschlag wie sowas Umgesetzt werden Kann?
    oder ein Beispiel wo sich dann für mich abändern Liese?
    Vielen dank schon mal im voraus.

    1 Reply Last reply
    0
    • MaufloM Offline
      MaufloM Offline
      Mauflo
      wrote on last edited by
      #2

      Ich habe das zwar mit Radar2 und Javascript gelöst, aber es klappt super. Wobei ich für jede Person extra einen Begrüßungstext individualisiert habe und auch aus mehr als 10 Varianten mittels Zufallszahl auswählen lasse. Jede Person hat eigene Datenpunkte in denen die Abwesenheit oder Anwesenheit vermerkt ist. Wenn sich dieser Datenpunkt auf "true" stellt, wird das für diese Person entsprechend angelegtes Script ausgelöst, dass dann den individuellen Begrüßungstext spricht. Nachdem ich auch vermerke in welchem Raum gerade die Anwesenheit aktuell ist, lasse ich auch noch die entsprechende Alexa den Text sprechen. (Kann bei mehreren Personen die sich in verschiedenen Räumen aufhalten etwas schwierig werden.) Weiters habe ich einen Datenpunkt angelegt, in dem vermerkt wird, ob eine allgemeine Präsenz existiert. Je nach Anzahl der Personen die berücksichtigt werden sollen, lasse ich diese Zahl aufwärts oder abwärts zählen. Bei 0 ist die allgemeine Anwesenheit negativ und es befindet sich also niemand mehr in der Wohnung. (Entsprechend lasse ich alle Lichter und/oder Steckdosen ausschalten!) Script kann ich Dir am Abend zukommen lassen, wenn Du das möchtest!

      RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

      S 1 Reply Last reply
      0
      • MaufloM Mauflo

        Ich habe das zwar mit Radar2 und Javascript gelöst, aber es klappt super. Wobei ich für jede Person extra einen Begrüßungstext individualisiert habe und auch aus mehr als 10 Varianten mittels Zufallszahl auswählen lasse. Jede Person hat eigene Datenpunkte in denen die Abwesenheit oder Anwesenheit vermerkt ist. Wenn sich dieser Datenpunkt auf "true" stellt, wird das für diese Person entsprechend angelegtes Script ausgelöst, dass dann den individuellen Begrüßungstext spricht. Nachdem ich auch vermerke in welchem Raum gerade die Anwesenheit aktuell ist, lasse ich auch noch die entsprechende Alexa den Text sprechen. (Kann bei mehreren Personen die sich in verschiedenen Räumen aufhalten etwas schwierig werden.) Weiters habe ich einen Datenpunkt angelegt, in dem vermerkt wird, ob eine allgemeine Präsenz existiert. Je nach Anzahl der Personen die berücksichtigt werden sollen, lasse ich diese Zahl aufwärts oder abwärts zählen. Bei 0 ist die allgemeine Anwesenheit negativ und es befindet sich also niemand mehr in der Wohnung. (Entsprechend lasse ich alle Lichter und/oder Steckdosen ausschalten!) Script kann ich Dir am Abend zukommen lassen, wenn Du das möchtest!

        S Offline
        S Offline
        Silverstone69
        wrote on last edited by
        #3

        @Mauflo
        Oh sehr schön
        Ja klar hätte ich an dein Script Interesse, kann ja nur dazu lernen.
        Laut deiner Beschreibung ist es ungefähr so wie ich angefangen habe das Script aufzusetzen, mich aber anscheinend irgendwohin verrannt habe und nun Sehe ich vor lauter bäumen keinen Wald mehr😬

        1 Reply Last reply
        0
        • Patchwork 3001P Offline
          Patchwork 3001P Offline
          Patchwork 3001
          wrote on last edited by
          #4

          ich habe auch Interesse hört sich gut an wo gibt es diesen Blokly oder das Skript

          1 Reply Last reply
          0
          • MaufloM Offline
            MaufloM Offline
            Mauflo
            wrote on last edited by Mauflo
            #5

            @SILVERSTONE69 - Hier also mein Script:

            Kurz zur Erklärung:

            • Der eigentliche Algorithmus findet ab Zeile 42 statt. Hier werden je nach Uhrzeit verschiedene Zufallszahlen errechnet und die entsprechende Ansage (const ansage) ausgewählt.

            • Die Funktion begruessung überprüft erstens ob es nicht mitten in der Nacht ist (zwischen 3 und 7 Uhr soll keine Begrüßung stattfinden) und zweitens in welchem Raum gerade eine Anwesenheit existiert. (Da ich derzeit allein lebe, erreicht mich so also die Begrüßung immer in jenem Raum in dem ich mich befinde)

            • Der Aufruf der Funktion begruessung findet in Zeile 50 mit einem Timeout von 12 sec. statt. Dies aus zwei Gründen: 1. Um eine Zufallszahl errechnen zu können bevor die Funktion aufgerufen wird (dazu würde zugegebener Maßen auch nur 1 sec. genügen) 2. aber damit die Präsenz im Raum erkannt wird. Hier gibt es Verzögerungen weil ich in einem anderen Script die Anwesenheit dadurch überprüfe, in welchem Raum sich die letzte Bewegung abgespielt hat. Um das genau festzustellen benötigt dieses System (mit Hue Bewegungsmeldern) ein paar Sekunden um eine stabile Präsenz in einem Raum festzustellen. Das liegt daran, dass ich ein 5 sec. Polling bei meiner Hue-Bridge eingestellt habe. Nach ca 10 sec. gibt es also nur mehr einen Raum in dem ein aktuelles "movement" eindeutig festgestellt werden kann.

            Hoffe es hilft Euch weiter:

            var value;
            const ansage = ['<speak><emphasis level="reduced">"Hallo NamePerson"</emphasis>," willkommen. Ich "<emphasis level="strong">"freue"</emphasis>" mich, dass Du wieder zu Hause bist!"</speak>',
            '<speak>"Willkommen zu "<emphasis level="reduced">" Hause NamePerson!"</emphasis></speak>',
            '<speak><emphasis level="reduced">" Hallo NamePerson."</emphasis>" Willkommen zurück."</speak>',
            '<speak>"Hallo NamePerson."<emphasis level="strong">" Endlich "</emphasis>" wieder zu Hause!"</speak>',
            '<speak>"Willkommen daheim. "<emphasis level="reduced">"NamePerson"</emphasis >", ich hoffe Du hattest einen angenehmen Tag!"</speak>',
            '<speak><emphasis level="reduced">"Guten Abend NamePerson."</emphasis>"Dein Tag war hoffentlich nicht zu hart!</speak>',
            '<speak><emphasis level="reduced">"Hallo, NamePerson."</emphasis>"Ist heute wieder einmal später geworden.</speak>',
            '<speak>"Einen schönen guten Abend, lieber NamePerson."<emphasis level="reduced">"Ich habe schon auf Dich gewartet."</emphasis></speak>',
            '<speak><emphasis level="reduced">"NamePerson,"</emphasis>" du kommst spät."<emphasis level="reduced">"Ich hoffe Du hast nicht zu hart arbeiten müssen"</emphasis></speak>',
            '<speak>"Ich freue mich NamePerson, dass Du endlich da bist."<emphasis level="reduced">"Ist ganz schön spät geworden heute!"</emphasis></speak>',
            '<speak>NamePerson es ist aber heute ganz schön spät geworden."<emphasis level="reduced">"Hauptsache Du bist endlich zu Hause. Ruh Dich aus, schließlich mußt Du bald wieder raus!"</emphasis></speak>'];
            
            function begruessung(value){
                console.log('NamePerson ist gerade zu Hause angekommen. Ansagetext: ' + value);
                if ((value>0) && compareTime("07:00", "03:00", "between")){
                    if (getState('javascript.0.Bewegungsmelder.Bad.presence').val == true){
                        setState('alexa2.0.Echo-Devices.BADEZIMMER.Commands.ssml'/*Bad*/, ansage[value]);
                        console.log('Begrüßung im Bad');
                    }
                    if (getState('javascript.0.Bewegungsmelder.Kueche.Commands.presence').val == true){
                        setState('alexa2.0.Echo-Devices.KÜCHE.Commands.ssml'/*Kueche*/, ansage[value]);
                        console.log('Begrüßung in der Küche');            
                    }
                    if (getState('javascript.0.Bewegungsmelder.Schlafzimmer.Commands.presence').val == true){
                        setState('alexa2.0.Echo-Devices.SCHLAFZIMMER.Commands.ssml'/*Echo Show 5*/, ansage[value]);
                        console.log('Begrüßung im Schlafzimmer'); 
                    }
                    if (getState('javascript.0.Bewegungsmelder.Vorzimmer.Commands.presence').val == true){
                        setState('alexa2.0.Echo-Devices.VORZIMMER.Commands.ssml'/*Vorzimmer*/, ansage[value]);
                        console.log('Begrüßung im Vorzimmer'); 
                    }
                    if (getState('javascript.0.Bewegungsmelder.Wohnzimmer.Commands.presence').val == true){
                        setState('alexa2.0.Echo-Devices.WOHNZIMMER.Commands.ssml'/*Wohnzimmer*/, ansage[value]);
                        console.log('Begrüßung im Wohnzimmer'); 
                    }
                } else {
                    setState('alexa2.0.Echo-Devices.WOHNZIMMER.Commands.ssml'/*Wohnzimmer*/, ansage[value]);
                }
            }
            on({id:'radar2.0.NamePerson_XperiaXP_UserDevice._here',  change: "gt"}, function (obj) {
                if (compareTime("21:00", "null", "<")) {
                    value = Math.round((Math.random() * (5 - 1) + 1));//Ganzzahlige Zufallszahl zwischen 1 und 5
                } else if (compareTime("21:01", "null", ">") && compareTime("22:00", "null", "<")) {
                    value = Math.round((Math.random() * (8 - 5) + 5));//Ganzzahlige Zufallszahl zwischen 6 und 7
                } else if (compareTime("22:01", "null", ">") && compareTime("23:59", "null", "<")) {
                    value = Math.round((Math.random() * (11 - 9) + 9));//Ganzzahlige Zufallszahl zwischen 8 und 10
                }
                setTimeout( begruessung,12000,value); //Verzögere, damit Zufallszahl auch errechnet werden kann und Value nicht undefiniert bleibt
            });
            

            RaspberryPi 4 4 GB - Raspbian light Buster - ARMv7 Processor rev 3 (v7l) - Node.js v12.18.0 - NPM 6.14.4 - Aktive Instanzen 18 (admin, alexa2, backitup, broadlink2, ham-wemo, harmony, history, hs100, hue, info, iot, javascript, radar2, scenes, tr-064, web [2x], wifilight) all latest and updated

            1 Reply Last reply
            0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            Support us

            ioBroker
            Community Adapters
            Donate

            492

            Online

            32.8k

            Users

            82.7k

            Topics

            1.3m

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

            • Don't have an account? Register

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