Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Sayit: Variierende Ansagen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Sayit: Variierende Ansagen

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pix last edited by

      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.
      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      1.0k
      Online

      31.7k
      Users

      79.7k
      Topics

      1.3m
      Posts

      1
      1
      898
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo