FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: yrwyddfa am 22 November 2015, 17:02:10

Titel: zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: yrwyddfa am 22 November 2015, 17:02:10
Hallo zusammen,

Ich würde mir gern als kleines Schmankerl von AMAD einen Text vorlesen lassen, wenn ich nach hause komme. Das funktioniert über ein
set [i]AMAD_Device[/i] ttsMsg [i]Text zum Vorlesen[/i]
fantastisch.

Da ich jetzt aber nicht jedes Mal den selben Text als Willkommensnachricht hören möchte, suche ich eine Möglichkeit, mehrere Nachrichten anzugeben und diese dann zufällig auszuwählen. Bei meiner Suche bin ich schon über
int(rand ())
gestoßen, aber wie zum Teufel kann ich das umsetzen? Hat jemand eine Idee?
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: Ellert am 25 November 2015, 23:48:10
Schreib die Texte in ein Array und lass Dir einen ganzzahligen Wert mit rand() erzeugen, der im Bereich eines gültigen Indexwertes des Arrays liegt. Dann lässt Du Dir Array[zufälligerIndex] vorlesen.
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: CoolTux am 26 November 2015, 08:50:37
Den Index des letzten Elements bekommt man immer mit


$ende = $#arrayname;



Grüße
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: CoolTux am 26 November 2015, 09:29:01
Ich wollte das auch mal in Angriff nehmen, als Guten Morgen Text für meine Tochter.
Daher hier ein Beispielcode


#!/usr/bin/perl

use strict;
use warnings;

my @texte;
my $indexend;
my $index;


@texte = (  "Dies ist ein Tesst 0",
            "Hier kommt bald was 1",
            "Heute ist ein schöner Tag 2",
            "Wie soll das nur enden 3",
            "Was könnne wie d amachen 4",
            "Man so kann das ja nicht gehen 5"
         );
$indexend = $#texte;
$index = int( rand( $indexend ) );

printf "\n\n$texte[$index]\n\n";
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: yrwyddfa am 27 November 2015, 19:03:43
Hey ihr beiden,

Danke für die schnelle Hilfe! Ich bin jetzt so weit: die Zeilen von Dir, CoolTux, habe ich in die 99_myUtils integriert, natürlich ohne die einleitende Zeile und eingeleitet mit sub myWelcomeText {

Jetzt scheitere ich aber an der Integration des print-Textes ins "set AMAD_FlurDisplay ttsMsg "
Wie kann ich die Ausgabe der sub denn da integrieren?
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: CoolTux am 27 November 2015, 19:51:36
Wo genau willst Du das denn einbauen?

Wenn Du es einfach nur so aufrufen willst musst Du Dir den Text vorher holen.
Dafür musst Du aber ein return am Ende der sub setzen.


return ('$texte[$index]');


im Notify rufst dann so auf


{
my $randText = myWelcomText();
fhem "set Tablet ttsMsg $randText";
}


Code ungeprüft


Grüße
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: mrbreil am 04 Dezember 2015, 13:24:31
Also ich bekomme es nicht gebacken. Habe folgendes meiner 99_myUtils.pm hinzugefügt.
sub mymorgentext {
my @texte;
my $indexend;
my $index;


@texte = (  "Guten Morgen 0",
            "Moin Moin 1",
            "Hoffe wohl geruht zu haben 2",
            "Morgen 3",
            "Good Morning 4",
            "Ausgeschlafen oder Aufgehört 5",
"Ich wünsche einen guten Start in den Tag 6",
"Auf ein neues 7"
         );
$indexend = $#texte;
$index = int( rand( $indexend ) );

return ('$texte[$index]');
}


Und in mein Notify folgendes
my $randText = mymorgentext();
fhem "set TTS_Alle  $randText";


Aber raus kommt dann
$texte[$index]

Die variablen werden nicht befüllt.
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: CoolTux am 04 Dezember 2015, 13:33:30

sub mymorgentext {
my @texte;
my $indexend;
my $index;


@texte = (  "Guten Morgen 0",
            "Moin Moin 1",
            "Hoffe wohl geruht zu haben 2",
            "Morgen 3",
            "Good Morning 4",
            "Ausgeschlafen oder Aufgehört 5",
"Ich wünsche einen guten Start in den Tag 5",
"Auf ein neues 5"
         );
$indexend = $#texte;
$index = int( rand( $indexend ) );

my $text=$texte[$index];
return $text;
}
Titel: Antw:zufälliger Text vorlesen am Tablet via AMAD
Beitrag von: mrbreil am 04 Dezember 2015, 14:36:37
Vielen Dank, jetzt funktioniert es.