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. Sayit: Variierende Ansagen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Sayit: Variierende Ansagen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
1 Beiträge 1 Kommentatoren 927 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #1

    Hallo,

    Sayit sagt mir "Gute Nacht!" wenn ich schlafen gehe und "Auf Wiedersehen!" wenn ich die Wohnung verlasse. Diese Ansagen kommen nicht aus Höflichkeit, sondern damit ich weiß, ob der gewünschte Zustand "Nachtruhe" oder "Abwesenheit" eingeschaltet wurde. Mir wurde das aber mit der Zeit zu langweilig. Also habe ich nach Variationen gesucht. Anbei ein globales Skript "zufallsansage", welches genau das macht.

    Im auslösenden Skript, dort wo der Sayit-Datenpunkt gefüllt wird, gebe ich das Thema vor (0=Abwesenheit, 1=Anwesenheit, 2=Nachtruhe) und übergebe es an das globale Skript.

    setState(sayit, '30;' + zufallsansage(0)); // Lautstärke 30%, Zufallsansage Thema 0 (Verabschiedung)
    

    Dieses Skript wählt per http://wiki.selfhtml.org/wiki/JavaScript/Anwendung_und_Praxis/Zufallszahlen eine Position im Array aus und gibt den hinterlegten Text zurück an Sayit. Voilà.

    Diesen Code als globales Skript abspeichern:

    ! ````
    /* global sayit_zufallsansage
    Skript varriert bestimmt Ansagen zu bestimmten Ereignissen
    Zufallsfunktion von hier: http://wiki.selfhtml.org/wiki/JavaScript/Anwendung_und_Praxis/Zufallszahlen
    ! Im 2stufigen Array sind verschiedene Sätze zu bestimmten Ereignissen gespeichert
    0 = Verabschiedung
    1 = Begrüßung
    2 = Nachtruhe ein
    ! 21.10.2015 erstellt von Pix
    */
    ! var ansagen = [];
    // 0 = Verabschiedung
    ansagen[0] = new Array('Auf Wiedersehen!',
    'Auf Wiedersehen!',
    'Auf Wiedersehen!',
    'Auf Wiedersehen!',
    'Auf Wiedersehen!',
    'Mach es gut!',
    'Bis bald!',
    'Bis bald!',
    'Komm nicht so spät nach Hause!',
    'Tschüß!',
    'Hast du eine warme Jacke an?',
    'Wennste jetzt gehst, brauchste nicht mehr wiederkommen!',
    'Ich warte hier auf dich!',
    'Lass mich nicht so lang allein',
    'Bringst du mir was mit?');
    // 1 = Bergüßung
    ansagen[1] = new Array('Hallo!',
    'Schön, dass du wieder da bist!',
    'Freu mich, dich zu sehen!',
    'Wo warst du so lange?',
    'Hereinspaziert',
    'Gut, dass du da bist.',
    'Herzlich willkommen!',
    'Komm rein, kannste rausgucken!',
    'Hast du mir was mitgebracht?',
    'Guck mal, wer da ist?');
    // 2 = Nachtruhe ein
    ansagen[2] = new Array('Gute Nacht!',
    'Gute Nacht!',
    'Gute Nacht!',
    'Schlaf gut!',
    'Bis morgen!',
    'Leg jetzt dein Telefon weg!',
    'Schön zudecken!',
    'Bist du schon müde?');
    ! // Zufallszahl ermitteln
    function rand (min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    ! // Ansage aus Array "ansagen" im passenden Thema (zB Verabschiedung/0) zurückgeben
    function zufallsansage(thema) {
    var min = 0,
    max = ansagen[thema].length; // Zahl der verschiedenen Sätze im Thema
    return ansagen[thema][rand(min,max)];
    }

    
    Die Arrays können beliebig erweitert werden. Soll eine Ansage häufiger als andere kommen, einfach mehrmals ins Array schreiben.
    
    Viel Spass und Gruß,
    
    Pix
    
    Edit: Wenn man die Arrays von Anfang an richtig benennt ('Abwesenheit', 'Anwesenheit', 'Nachtruhe' statt 0,1,2, dann kann man den Code im auslösenden Skript etwas menschenlesbarer machen setState(sayit, '30;' + zufallsansage('Abwesenheit'));. Das geht natürlich genauso.

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    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

    708

    Online

    32.6k

    Benutzer

    82.2k

    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