FHEM und Rhasspy

Begonnen von drhirn, 28 Juli 2020, 14:28:50

Vorheriges Thema - Nächstes Thema

drhirn

Wär's nicht einfacher, ein DOIF/structure/notify mit einem Sprachbefehl zu steuern? Dann bräuchtest die 99_myUtils.pm nicht extra.

JensS

@drhirn
Alle Rhasspy-subs habe eh in einer extra 99_myRhasspyUtils.pm. Ist über die Zeit gewachsen...

@Beta-User
Die Snps-Version lief gut und drhirn hat es auch gut angefangen. Natürlich hat sich die Welt inzischen weitergedreht und einiges muss angepasst werden. Nur so vieles mit einmal war mir dann doch zu heftig.
Die sub, welche ich in diesem Thread stelle, find ich für mich ganz praktisch. Sie sind natürlich laienhaft geschrieben. Vielleicht hilt es dem Einen oder Anderen - auch nur als Anregung.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

drhirn

Ich meinte nur. Vielleicht willst auch außerhalb von Rhasspy mal wissen, ob alle Fenster zu sind. Oder alle Lampen ausschalten, wenn du das Haus verlässt.

JensS

Zitat von: drhirn am 24 Februar 2021, 15:52:42
Ich meinte nur. Vielleicht willst auch außerhalb von Rhasspy mal wissen, ob alle Fenster zu sind. Oder alle Lampen ausschalten, wenn du das Haus verlässt.
Gute Idee - der Gedanke ist mir tatsächlich noch nicht gekommen. Mittlerweile sind viele Spachanweisungen (auch im Hinblick auf den WAF) in den Alltag eingezogen.
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Treibhaus

Hallo JenS, DrHirn,

bei der Tonausgabe benutz Ihr Espeak oder MarryTTS ?
Gibt es etwas Besseres ?
Ich glaube ich würde gerne mal eine online Sprachausgabe kurzfristig testen wollen. (ist nicht was ich will)
Aber könnte die Akzeptanz erhöhen :-)

Gruß jörg
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Treibhaus

#275
Hallo,

da gibt es die Wikipedia - Erweiterung.....

Bei der habe ich das Problem, das der Begriff wohl nicht erkannt wird.
Scrrenshot als Anhang.
Vielleicht weiss jemand Abhilfe ?

Gruß Jörg
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

Treibhaus

#276
@Treibhaus
Deine Witze habe ich auf die Schnelle in einen Intent gebracht. Dazu muss die Datei unter /opt/fhem/cache/Witze_erzaehlen.txt gespeichert werden und die Rechte mit chown fhem:dialout /opt/fhem/cache/Witze_erzaehlen.txtangepasst werden.
Zu rhasspyIntents die ZeileWitze=Witze()zugügen und in sentences.ini:[de.fhem:Witze]
erzähle einen Witz
einfügen.
99_myUtils.pm:sub Witze(){
my $filename = '/opt/fhem/cache/Witze_erzaehlen.txt';
my @Witze_array = undef;
my $Zeile = 0;
open(FH, '<', $filename) or die $!;
while(<FH>){
   my $Witz = $_ =~ m/"(.*?)"/;
   my $Witz = $1;
   @Witze_array[$Zeile] = $Witz;
   $Zeile++
}
close(FH);
my $Zufall = int(rand($Zeile+1));
return $Witze_array[$Zufall];
}
Ist quick & dirty...

Gruß Jens

p.s. Wenn ich rausfinde, wie man speicherschonend die Zeilen zählen kann und nur eine bestimmte Zeile ausliest, ändere ich den Code hier.



Hallo,

hier dann die passende witze.txt-Datei zum script

Gruß Jörg
Signatur:
Odroid -C2 + BSC EnOcean USB 300-TCM310 + HM485
Enocean-Taster-Fensterkontakt,-Bewegungsmelder
HM-Module über 3 Etagen + Garage/Garten
+ 1-wired Temp-Sensoren, S0-Schnittstellen + RHASSPY-Spracherkennung

laberlaib

Zitat von: drhirn am 24 Februar 2021, 12:16:37
Hatte deinen Wunsch noch im Hinterkopf.

Du wirst um zwei 10_RHASSPY Devices nicht herum kommen.
Stört Rhasspy ja nicht, wenn da "fremdsprachige" Wörter in den Slots sind. Kennt halt die Wörter einfach nicht. Es ist nicht schön, das gebe ich zu. Dafür musst du bei den FHEM-Devices nicht mehrere Attribute befüllen.

Aber ich werde es weiter im Hinterkopf behalten, eine Lösung kann nicht das Drama sein.

Danke.
--
Proxmox, Homematic, G-Tags, Zigbee2MQTT, Rhasspy Sprachsteuerung im Aufbau (beta)

JensS

#278
@Treibhaus
Tonausgabe: Da bin ich auf deine Erfahrungen gespannt. Ich nutze aktuell PicoTTS.
Wikipedia: Funktioniert in der Form nur in Zusammenspiel mit "Open transcription mode". Der liefert mir derzeit aber alles mögliche, nur nicht was gesprochen wurde. Rhasspy kennt sonst nur die antrainierten Worte der sentences.ini sowie der Slots. [de.fhem:Wikipedia]
erkläre mir was (Wetter | Wikipedia | ($de.fhem.Device)){Begriff} ist

... erkennt deine z.B. bereits bekannten rhasspyDevices.
Witze: Der ursprüngliche Post ist geändert. https://forum.fhem.de/index.php/topic,113180.msg1133690.html#msg1133690(Hab mir ein gebrauchtes Kochbuch gekauft...)

Gruß Jens

p.s. Wenn du in deiner Witzedatei auf " und "; verzichtest, wird folgender Teil überflüssig:$line =~ m/"(.*?)"/;
$line = $1;
Eine Online-Witzedatenbank mit JSON-Anbindung wäre schöner.
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

drhirn

Kurze Umfrage: Verwendet jemand von euch Shortcuts? Und wenn ja, wofür?

Cordula

Hab noch nie shortcuts verwendet.

Thargor

Zitat von: drhirn am 20 Januar 2021, 16:31:03
Ich hab in der neuesten Version einen rudimentären Timer eingebaut. Der setzt einfach einen at-Befehl und sagt nach der abgelaufenen Zeit "Timer abgelaufen".

Rhasspy-Sentence wäre z.B.:

[de.fhem:SetTimer]
\[stell|stelle] (taimer|countdown) [im|auf dem|auf der|in der] [$de.fhem.Room{Room}] auf (0..60){Value} (sekunden|minuten|stunden){Unit}


Könnt ihr das mal testen?

Ich bin gerade mal wieder am Rhasspy basteln, habe die neuste Version eingespielt und den Timer in Rhasspy angelegt.
Der Befehl wird auch erkannt, an FHEM gemeldet, es wird auch ein reading in FHEM angelegt und es gibt eine akustische Bestätigung, dass der Timer angelegt wurde - allerdings bekomme ich kein "Timer abgelaufen" zurück. Woran kann das liegen bzw. wie kann ich das Debuggen?

drhirn

Indem du z.B. mal nachschaust, ob ein AT angelegt wurde und was da drinnen steht. Da passiert die ganze "Magie".

Thargor

Zitat von: drhirn am 26 Februar 2021, 12:32:17
Indem du z.B. mal nachschaust, ob ein AT angelegt wurde und was da drinnen steht. Da passiert die ganze "Magie".

Vielen Dank für die schnelle Antwort!

Das AT wird angelegt, allerdings wird die SiteID mit dem Raum [$de.fhem.Room{Room}] gefüllt (bei mir Wohnzimmer):
defmod timer_Wohnzimmer at +00:00:10 set rhasspy speak siteId="Wohnzimmer" text="taimer abgelaufen";;setreading rhasspy timer_wohnzimmer 0

Da muss aber die siteID (bei mir "satellite") rein, damit es dort auch abgespielt wird.
Muss ich da noch irgendwas konfigurieren?

drhirn

Welches Gerät - mit welcher siteId - nimmt denn die Sprache entgegen? Dort, wo du reinredest, wird auch die Ausgabe stattfinden. Wenn nicht, könnte es daran liegen, dass Rhasspy noch nicht fertig konfiguriert ist. Die siteIds der Satelliten müssen in der Base in den diversen Settings eingetragen werden.