Der RasPi hört aufs Wort [1. Post edit, bessere Lösungen sind da]

Begonnen von Rince, 29 Mai 2013, 18:00:46

Vorheriges Thema - Nächstes Thema

Rince

Bin nicht zu Hause, ich schau mal heute Nacht.

Aber im Moment wird set nicht gehen, weil so wie ich es bis jetzt verstanden habe, die Sub nicht so angesprochen werden kann.
Dafür müssten wir also erst in der fhem.cfg ein Device anlegen, welches dann das say aufruft und als webCmd den Text übergibt.
Wenn ich da keinen gedanklichen Wurm drin habe jedenfalls.

Wie gesagt, ich schau mal heute Abend.
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Rince

Erster Versuch:


In die fhem.cfg eingetragen

### Dummy für TTS
define TTS dummy
attr TTS webCmd
attr TTS room Wohnzimmer
define myTTS notify TTS { say($EVENT)};;


Jetzt kannst du bei dem Dummy TTS (bei mir dem Wohnzimmer zugeordnet)irgend einen Text reinschreiben, und schon quasselt die Dame wieder los :)

Beispiel:
Tippe in die Ausführungszeile von FHEM:
set TTS Hallo hier ist der vorzulesende Text, Gänsefüsschen braucht es dabei gar nicht
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Steffen

Zitat von: Rince schrieb am So, 23 Juni 2013 18:53Erster Versuch:


In die fhem.cfg eingetragen

### Dummy für TTS
define TTS dummy
attr TTS webCmd
attr TTS room Wohnzimmer
define myTTS notify TTS { say($EVENT)};;


Jetzt kannst du bei dem Dummy TTS (bei mir dem Wohnzimmer zugeordnet)irgend einen Text reinschreiben, und schon quasselt die Dame wieder los :)

Beispiel:
Tippe in die Ausführungszeile von FHEM:
set TTS Hallo hier ist der vorzulesende Text, Gänsefüsschen braucht es dabei gar nicht

Hallo!

Erster versuch und gleich schiff versenkt;-)

Klappt genau so wie es soll...vielen dank dafür

Mfg Steffen

Stefan M.

Hallo zusammen,
irgendwie scheint bei mir was nicht zu funktionieren.
Es wird ein Text aufgenommen. das .wav File wird angelegt und hat auch den aufgenommenen Text als Inhalt, allerdings schneller als gesprochen. Wo kann ich die Geschwindigkeit einstellen ?
Ob das .flac File angelegt wird kann ich nicht sagen, ich finde es jedenfalls nicht im Verzeichnis. Das stt.txt File bleibt immer leer.

Habt Ihr eine Idee, wo ich suchen kann ?

lg
Stefan
 
FHEM auf 3 x RaspberryPi, 1 x Fritzbox,1 x Win. FS20 über CUL, HomeMatic über HMLan, 6 x  HM_CC_RT_DN,2 x HM_LC_BL1_FM,3 x HM_SEC_KEY,2 x HM_RC_Key4_2,7 x HM_SEC_SC,1 x HM_SEC_WDS,1 x HM_Sen_RD_O, 1x HM_Sen_Wa_Od,2 x HM_RC_Key4_2, 5 x HM-ES-PMSw1-Pl,1 x HM_LC_SW4_WM,1 x HM_SCI_3_FM

Stefan M.

Hallo zusammen

Danke für say() das funktioniert bei mir. Nach drücken einer Taste der Fernbedienung wird gesagt welche Taste gedrückt wird.

lg
Stefan
FHEM auf 3 x RaspberryPi, 1 x Fritzbox,1 x Win. FS20 über CUL, HomeMatic über HMLan, 6 x  HM_CC_RT_DN,2 x HM_LC_BL1_FM,3 x HM_SEC_KEY,2 x HM_RC_Key4_2,7 x HM_SEC_SC,1 x HM_SEC_WDS,1 x HM_Sen_RD_O, 1x HM_Sen_Wa_Od,2 x HM_RC_Key4_2, 5 x HM-ES-PMSw1-Pl,1 x HM_LC_SW4_WM,1 x HM_SCI_3_FM

Rince

Hi,

mit dem "say" meinst du den Eintrag in der 99_utils und dem Eintrag in der fhem.cfg?
Wärst du so lieb zu posten, wie du das mit der gesprochenen Zahl gelöst hast?



Was die Aufnahme angeht:
Soweit bin ich leider noch nicht :)

Das Skript aus der C´t ist ja zunächst ein Papagei. So gesehen von FHEM völlig losgelöst.

Hast du die Speicherorte für die Ramdisk überall geändert? Das wäre das erste, was mir einfällt.

Ich will aber mit dem Skript nicht viel weiter machen, da es überaus umständlich zu pflegen ist. Jeden möglichen Befehl händisch einbauen, das stelle ich mir lästig vor :(



Ich überlege zur Zeit, wie man das schlau integrieren kann ;)
Ein Modul zum Sprachverständnis sozusagen.

Um meine Gedanken mal zu posten (nicht erschrecken, als CSV speichern und in die Tabellenkalkulation damit):
Zitat"Schlüsselwort",,"susi",,,,,
,,,,,,,
"Ort","wo",,,,,,
"DG",,"dach","dachgeschoss","ganz oben",,,
"OG","default","oben","obergeschoss",,,,
"UG",,"unten","untergeschoss",,,,
"GH",,"im garten","draußen",,,,
"*",,"überall",,,,,
,,,,,,,
"room","in welchem zimmer",,,,,,
"bz",,"bad","badezimmer","toilette",,,
"wz",,"wohnzimmer",,,,,
"sz",,"schlafzimmer",,,,,
"ez",,"esszimmer",,,,,
"fl1",,"vorderer flur","vorderen flur",,,,
"fl2",,"hinterer flur","hinteren flur",,,,
"ab",,"büro","arbeitszimmer",,,,
"*",,"überall","in allen zimmern","in allen räumen",,,
,,,,,,,
"device","welches gerät",,,,,,
"TTS",,,,,,,
"WS",,"licht","lichter","lampe","lampen",,
"HZ",,"heizung","heizkörper","heizungen",,,
"*",,"alle",,,,,
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
"command","was soll ich tun",,,,,,
"set",,"schalte","stelle","mach","mache","dreh","drehe"
,,,,,,,
,,,,,,,
,,,,,,,
,,,,,,,
"on",,"an","ein",,,,
"off",,"aus",,,,,
,,,,,,,
"on-for-timer",,"für",,,,,
,,,,,,,
"off-for-timer",,"in",,,,,


Eine CSV Datei:
ganz links steht der passende FHEM Code, dann folgen einfach die Wörter, die ihn entsprechend triggern.
Unterteilt in Räume, Devices etc. Daneben steht noch die Frage, die die Haussteuerung stellen soll, wenn der Wert fehlt (so in etwa jedenfalls) :)

Das sieht hier etwas unübersichtlich aus, einfach mal als csv speichern und in der Tabellenkalkulation des eigenen Vertrauens laden, dann wird das schön übersichtlich.


Das ganze soll dann in einem Perl Modul entsprechend aufbereitet werden, um einen passenden Befehl für FHEM zu generieren.

Nachdem es nur eine CSV Datei ist, die sich mit jeder Tabellenkalkulation bequem bearbeiten lässt, sollte diese gut an die persönlichen Bedürfnisse anpassbar sein.

Es ist auch nur ein erster Versuch, so Sachen wie Fragen sind noch nicht berücksichtigt :)


Und überflüssig zu erwähnen, dass ich noch keine Zeile Perl geschreiben habe :)
(Aber ich weiß mittlerweile, wie aus Text einen Text machen kann, der nur Kleinbuchstaben enthält :)


Frage:
Zum Aufnehmen von Text muss ja "sox" im Hintergrund vor sich hin werkeln.

Von der Rechenleistung her ist es kein großes Problem für den Raspi, aber evtl. mag sich der ein oder andere gestört davon fühlen (und ich weiß auch noch nicht, wie ich dieses Sox im Hintergrund von FHEM aus laufen lassen kann)

Ist es schlauer, dass Ding immer gestartet zu haben, oder ist es besser, wenn eine bestimmte Taste gedrückt wird das Teil anzuwerfen?
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Stefan M.

Hallo
ich hab mir es etwas einfach gemacht



### Dummy für TTS
define TTS dummy
attr TTS room System
attr TTS webCmd 1
define myTTS notify TTS { say($EVENT)};;


define No_Voice_on_1 notify FS20_ab1c00:on.* { fhem("set TTS Taste 1 Ein")   }
attr No_Voice_on_1 room Notify
define No_Voice_off_1 notify FS20_ab1c00:off.* { fhem("set TTS Taste 1 Aus")   }
attr No_Voice_off_1 room Notify

define No_Voice_on_2 notify FS20_ab1c01:on.* { fhem("set TTS Taste 2 Ein")   }
attr No_Voice_on_2 room Notify
define No_Voice_off_2 notify FS20_ab1c01:off.* { fhem("set TTS Taste 2 Aus")   }
attr No_Voice_off_2 room Notify



Die RAMDisk habe ich nicht zum laufen bekommen. Hast Du da nochmal eine genaue Anleitung dazu ?
Dafür habe ich mir heute die SD Karte geschossen.

lg
Stefan

FHEM auf 3 x RaspberryPi, 1 x Fritzbox,1 x Win. FS20 über CUL, HomeMatic über HMLan, 6 x  HM_CC_RT_DN,2 x HM_LC_BL1_FM,3 x HM_SEC_KEY,2 x HM_RC_Key4_2,7 x HM_SEC_SC,1 x HM_SEC_WDS,1 x HM_Sen_RD_O, 1x HM_Sen_Wa_Od,2 x HM_RC_Key4_2, 5 x HM-ES-PMSw1-Pl,1 x HM_LC_SW4_WM,1 x HM_SCI_3_FM

Rince

Ah, ok :-)
Ich war neugierig, ob das Teil auch Variablen vorlesen kann. Muss es wohl selber ausprobieren wie man die maskieren muss :-)

Das mit der SD Karte tut mir leid.


Was an der Anleitung
Link
hat denn nicht geklappt?

Mit dem fstab Eintrag wir ne Ramdisk erzeugt, die im Verzeichnis /tmp gemountet wird.

Holla,
es kann sein, dass das Verzeichnis leer sein muss!

Ob es funktioniert hat, kann man recht leicht nachprüfen: wenn der Rechner gebootet hat mit den fstab Einträgen, dann leg darin ne Datei an.
Anschließend neu booten.
Nun sollte das Verzeichnis wieder leer sein :-)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Steffen

Zitat von: Rince schrieb am Mo, 24 Juni 2013 23:39Ah, ok :-)
Ich war neugierig, ob das Teil auch Variablen vorlesen kann. Muss es wohl selber ausprobieren wie man die maskieren muss :-)

Das mit der SD Karte tut mir leid.


Was an der Anleitung
Link
hat denn nicht geklappt?

Mit dem fstab Eintrag wir ne Ramdisk erzeugt, die im Verzeichnis /tmp gemountet wird.

Holla,
es kann sein, dass das Verzeichnis leer sein muss!

Ob es funktioniert hat, kann man recht leicht nachprüfen: wenn der Rechner gebootet hat mit den fstab Einträgen, dann leg darin ne Datei an.
Anschließend neu booten.
Nun sollte das Verzeichnis wieder leer sein :-)

aber kann es sein das das neue Skript "say.sh", nicht mehr /tmp nutzt denn beim "ctvoice" musste man ja die Pfade zu /tmp ändern oder verstehe ich da was Falsch?

Mfg Steffen

Rince

Das einzelne say.sh speichert nicht zwischen. Es ruft den mplayer mit einer etwas längeren Befehlszeile auf. Die veranlasst den mplayer die Seite Google translate aufzurufen, einen Text zu übergeben, um Sprachsynthese zu bitten und diese Sprache dann gleich direkt abzuspielen :-)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Tobias

Hi,
wenn ich auf der Raspi-Console die mplayer Zeile aufrufe, kommst statt "Test" nur ein "T" aus dem Lautsprecher. Eigentlich fehlt jedem Satz die letzte Silbe. Ist das bei Euch nicht so?
mplayer -ao alsa:device=bluetooth -http-header-fields "User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22m" "[url]http://translate.google.com/translate_tts?tl=de&q=Test[/url]";]

Mein Raspi plappert nicht direkt, sondern per Bluetooth-Stick und Bluetooth-Lautsprecher "Creative D80".
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Trebor5

Hallo,

ich habe mich jetzt schon x mal durch diesen Thread durchgelesen aber leider kommt aus Fhem kein Ton .

Wenn ich auf der Raspconsole

mplayer -ao alsa:device=hw=0.0 -really-quiet -http-header-fields "User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22m" "http://translate.google.com/translate_tts?tl=de&q=Test";

eingebe kommt "Test" aus denn Lautsprechern.

Habe folgendes gemacht :

sudo apt-get install sox mplayer ffmpeg
sudo apt-get update
sudo apt-get install sox mplayer ffmpeg
in der mplayer.conf ( /etc/mplayer) folgende Zeile hinzugefügt irgendwo rein  :  norlirc=yes
http://www.ct.de/ch1302064 script runtergeladen und nach /opt/fhem/contrib kopiert

kompletten inhalt gegen

#!/bin/bash

# c't Hardware Hacks - Spracherkennung für den Raspberry Pi, GPL-Lizenz

count=1
lastsize=0
rec=0
first=1

# Der Soundchip des RPI erzeugt vor und nach der Wiedergabe ein Knacken. Deutlich bessere Ergebnisse liefert eine USB-Soundkarte, wie man sie bereits für rund fünf Euro bekommt. Damit mplayer die USB-Soundkarte benutzt, ändert man den Parameter "-ao alsa:device=hw=0.0" in "-ao alsa:device=hw=1.0".

function say {
mplayer -ao alsa:device=hw=0.0 -really-quiet -http-header-fields "User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22m" "http://translate.google.com/translate_tts?tl=de&q=$1";
}

sox -t alsa hw:1,0 test.wav silence 1 0 0.5% -1 1.0 1% &
sox_pid=$!

while [ $count -le 9 ]
do
   
size=$(stat --printf="%s" test.wav)

if [ $size -gt $lastsize ]
then
if [ $first -eq 0 ]
then
echo "Aufnahme!"
rec=1
else
first=0
fi
else
if [ $rec -eq 1 ]
then
echo "Abschicken"
kill $sox_pid
ffmpeg -loglevel panic -y -i test.wav -ar 16000 -acodec flac file.flac
wget -q -U "Mozilla/5.0" --post-file file.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=de-de&client=chromium" | cut -d\" -f12 >stt.txt
cat stt.txt
say "$(cat stt.txt)"

if [[ $(cat stt.txt) =~ "Befehl" ]]
then
echo "Sprachbefehl erkannt!"
say "Sprachbefehl erkannt! Ich könnte jetzt einen beliebigen Shell-Befehl ausführen!"
# mach was
elif [[ $(cat stt.txt) =~ "Wetterbericht" ]]
then
echo "Wetterbericht erkannt!"
say "Ich würde Dir jetzt den Wetterbericht vorlesen! Bring es mir bei!"
# mach was
elif [[ $(cat stt.txt) =~ "Licht an" ]]
then
echo "Licht an"
say "Ich schalte das Licht an"
/opt/fhem/fhem.pl 7072 "set OG_wz_ws_LICHT on"

elif [[ $(cat stt.txt) =~ "Licht aus" ]]
then
echo "Licht aus"
say "Ich schalte das Licht aus"
/opt/fhem/fhem.pl 7072 "set OG_wz_ws_LICHT off"
else
echo "Kein Kommando erkannt..."
fi

sleep 1
bash ctvoice.sh
else
echo "Stille..."
fi
rec=0
fi

lastsize=$size

sleep 1

done


ausgetauscht.

sudo amixer cset numid=3 1

Test unter http://www.raspberrypi-spy.co.uk/2012/06/raspberry-pi-speakers-analog-sound-test/ gemacht alles gut auf der Raspberry Console.

in der /etc/fstab ganz nach oben folgenden Eintrag hinzufügen

tmpfs           /tmp              tmpfs   defaults,noatime,mode=1777 0       0

eine Datei in denn Ordner tmp kopiert danach neustart die Datei ist weg also funzt die Ramdisk.


Also

Aus test.wav wird /tmp/test.wav
aus file.flac wird /tmp/file.flac
aus stt.txt wird /tmp/stt.txt

CTvoice.sh so abgeändert


#!/bin/bash

# c't Hardware Hacks - Spracherkennung für den Raspberry Pi, GPL-Lizenz

count=1
lastsize=0
rec=0
first=1

# Der Soundchip des RPI erzeugt vor und nach der Wiedergabe ein Knacken. Deutlich bessere Ergebnisse liefert eine USB-Soundkarte, wie man sie bereits für rund fünf Euro bekommt. Damit mplayer die USB-Soundkarte benutzt, ändert man den Parameter "-ao alsa:device=hw=0.0" in "-ao alsa:device=hw=1.0".

function say {
mplayer -ao alsa:device=hw=0.0 -really-quiet -http-header-fields "User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22m" "http://translate.google.com/translate_tts?tl=de&q=$1";
}

sox -t alsa hw:1,0 /tmp/test.wav silence 1 0 0.5% -1 1.0 1% &
sox_pid=$!

while [ $count -le 9 ]
do
   
size=$(stat --printf="%s" /tmp/test.wav)

if [ $size -gt $lastsize ]
then
if [ $first -eq 0 ]
then
echo "Aufnahme!"
rec=1
else
first=0
fi
else
if [ $rec -eq 1 ]
then
echo "Abschicken"
kill $sox_pid
ffmpeg -loglevel panic -y -i /tmp/test.wav -ar 16000 -acodec flac /tmp/file.flac
wget -q -U "Mozilla/5.0" --post-file /tmp/file.flac --header "Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=de-de&client=chromium" | cut -d\" -f12 >/tmp/stt.txt
cat /tmp/stt.txt
say "$(cat /tmp/stt.txt)"

if [[ $(cat /tmp/stt.txt) =~ "Befehl" ]]
then
echo "Sprachbefehl erkannt!"
say "Sprachbefehl erkannt! Ich könnte jetzt einen beliebigen Shell-Befehl ausführen!"
# mach was
elif [[ $(cat /tmp/stt.txt) =~ "Wetterbericht" ]]
then
echo "Wetterbericht erkannt!"
say "Ich würde Dir jetzt den Wetterbericht vorlesen! Bring es mir bei!"
# mach was
elif [[ $(cat /tmp/stt.txt) =~ "Licht an" ]]
then
echo "Licht an"
say "Ich schalte das Licht an"
/opt/fhem/fhem.pl 7072 "set OG_wz_ws_LICHT on"

elif [[ $(cat /tmp/stt.txt) =~ "Licht aus" ]]
then
echo "Licht aus"
say "Ich schalte das Licht aus"
/opt/fhem/fhem.pl 7072 "set OG_wz_ws_LICHT off"
else
echo "Kein Kommando erkannt..."
fi

sleep 1
bash ctvoice.sh
else
echo "Stille..."
fi
rec=0
fi

lastsize=$size

sleep 1

done



Als nächstes die ctvoice kopiert und in say .sh umbennant.

Diese Zeile ausgetauscht in :
mplayer -ao alsa:device=hw=0.0 -really-quiet -http-header-fields "User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22m" "http://translate.google.com/translate_tts?tl=de&q=Test";


Eintrag ganz ans ende der 99_myUtils.pm

sub say($)
{
my $Text = @_;
#sh /opt/fhem/contrib/say.sh;
`/opt/fhem/contrib/say.sh $Text`;
}

1;

Dann : sudo gpasswd -a fhem audio + Neustart


{say "huhu"} in der Fhem console bezweckt rein gar nichts !!!!!!!!!!!!!

Könnte man nicht mal die kompletten Codeschnippsel zusammentragen, die Funktionieren ?


Odroid N2,Hauptsensoren Homematic + 1 Wire + 8Kanal Homematic auf Relay Schaltung. Forum Beiträge sind meine letzte Hoffnung nach Stundenlangen erfolglosen suchen und probieren.

Rince

Oh,

ich glaube das ist insgesamt nen Tick anders gelöst.
Ich habe noch einen Befehl dafür definiert.

Bitte um Entschuldigung für das Sprachchaos.


Hier ein Beispiel aus meiner fhem.cfg
## Warnung Bewegung Hof
define Bewegung_Hofeinfahrt notify CUL_HM_HM_Sen_MDIR_O_1A8306:motion { \
fhem ("set TTS jemand ist in der hof einfahrt");;\
}


und, wichtig:
Zitat### Dummy für TTS
define TTS dummy
attr TTS room Wohnzimmer
attr TTS webCmd 1
define myTTS notify TTS { say($EVENT)};;

In der 99myUtils steht folgendes:
#### Sprachausgabe
#### Ruft den Mplayer auf f�r die Sprachausgabe von Google Translate
sub say($)
{
my $Text = @_;
`/opt/fhem/contrib/say.sh "@_"`;
}



So funktioniert das bei mir.

Frage jetzt aber bitte nicht:
Wie kann man Variablennamen ausgeben kann (keine Ahnung wie man die maskieren muss, wenn es mit obiger Lösung überhaupt klappt)

Ich poste auch gerne die Skripte, wenn du willst.

Habe mich darum im Moment nicht gekümmert, da FHEM einfach läuft *tschuldigung*


PS:
Hab im Moment net viel Zeit. Wenn du Fragen hast, schick mir am besten ne PM, das ich es mitbekomme :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Hyco

Ich raufe mir gerade die Haare aus....
Über das Terminal per ./say.sh spricht der PI brav alle Texte.
Ich habe in die 99_Utils.pm folgende Code eingegeben:
# start with your own functions below this line
sub say($)
{
my $Text = @_;
`/opt/fhem/contrib/say.sh "@_"`;
}
1;
# behind your last function, we need the following
1;


Wenn ich nun {say "Hallo"} in die FHEM-Konsole eingebe, erhalte ich folgende Meldung von FHEM:
syntax error at (eval 26) line 1, near "say "Hallo""

Ich habe es in vielen verschiedenen Variationen ausprobiert und finde den Fehler leider nicht. Habt Ihr eine Idee, warum FHEM den Befehl nicht richtig interpretiert?

Hyco

OK, ich habe meinen Fehler gefunden. Ich habe die 99_myUtils.pm nicht richtig angelegt. Nun läufst!!!!!