Neues Modul FULLY für Steuerung vom Fully Browser

Begonnen von zap, 03 November 2017, 19:31:22

Vorheriges Thema - Nächstes Thema

CoolTux

Zitat von: zap am 04 November 2017, 17:38:56
Ich habe eine neue Version im 1. Beitrag hochgeladen. Änderungen:

- Der Text bei "set speak" wird nun URL konform kodiert (Modul URI::Escape wird nun benötigt)
- Fehler behoben, der zum Abbruch der automatischen Updates führen konnte
- Attribut requestTimeout eingeführt. Falls das automatische Update öfters fehlschlägt oder auch wenn Befehle nicht ausgeführt werden, kann man diesen Wert etwas höher setzten. Standard ist 4 Sekunden, ggf. mal mit 8 Sekunden versuchen.
- Das Internal nextUpdate zeigt an, wann die Readings das nächste Mal aktualisiert werden.

URI::Escape

Brauchst du doch gar nicht. Es gibt doch die FHEM Funktion urlEncode oder so ähnlich in der fhem.pl. nimm die lieber zum encodieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

zap

Habe ich nicht gefunden. Aber eine Reihe anderer Module verwenden auch URI::Encode.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

amenomade

urlEncode: einige Nutzungsbeispiele in 01_FHEMWEB

Oder im Kommandofeld von FHEM: {urlEncode("This is my_text")} ==> This%20is%20my%5ftext
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

enno

#18
Die Version 0.2 funktioniert. Wenn ich aber einen Text senden will, stürzt FHEM komplett ab.

Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie


URI::Escape 3.31


Leider keine Fehlermeldung im Log.

Einfacher FHEM Anwender auf Intel®NUC

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

zap

Ich werfe URI::Encode wieder raus. Schaffe es heute aber nicht mehr.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

enno

Super, ich warte gespannt :). Familie freut sich wenn ich nicht am Rechner daddel.

Gruss
  Enno
Einfacher FHEM Anwender auf Intel®NUC

amenomade

#22
Zitatelsif ($opt eq 'speak') {
      my $text = shift @$a;
      Log3 $name, 3, "FULLY: Text ist $text";
      return "Usage: set $name speak {Text}" if (!defined ($text));
      $response = FULLY_Execute ($hash, "textToSpeech", { "text" => "$text" });
(initial Version)

Es bringt sowie so nichts, die letzte Zeile durch
$response = FULLY_Execute ($hash, "textToSpeech", { "text" => uri_encode ($text) });
zu ersetzten, da schon beim "shift @$a" der Text zum ersten Wort gekürzt wird, wie es man in meinem Post oben sehen kann (das "Log3" ist sofort nach dem shift.)

EDIT: Ok, funktioniert bei mir mit:
elsif ($opt eq 'speak') {
my $text = urlEncode(join (" ", @$a));
Log3 $name, 3, "FULLY: Text ist $text";
return "Usage: set $name speak {Text}" if (!defined ($text));
$response = FULLY_Execute ($hash, "textToSpeech", { "text" => "$text" });
}



Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

enno

#23
ZitatEDIT: Ok, funktioniert bei mir mit:

... Vorschlag habe ich bei mir ausgetauscht und es klappt auch hier.

Frage: Ist es auch möglich auf die Lautstärkesteuerung zuzugreifen? Konnte bei Fully in der Feature List nichts finden.
Einfacher FHEM Anwender auf Intel®NUC

zap

#24
Zitat von: amenomade am 04 November 2017, 20:25:37
Es bringt sowie so nichts, die letzte Zeile zu ersetzten, da schon beim "shift @$a" der Text zum ersten Wort gekürzt wird, wie es man in meinem Post oben sehen kann (das "Log3" ist sofort nach dem shift.)

FULLY.pm verwendet ParseParams, d.h. Parameter die Leerzeichen enthalten, können mit doppelten Hochkomma angegeben werden. Beispiel:

set myTablet speak "Das ist ein Test"

Neue Version im Anhang vom ersten Post:

- urlEncode wird statt URI::Escape verwendet (steckt in HttpUtils.pm, daher hatte ich das nicht gefunden)
- Wenn die automatische Aktualisierung der Readings fehlschlägt, wird es einige Sekunden später nochmal versucht
- Der Befehl set speak unterstützt nun die Ersetzung von Readings. Format ist [Device:Reading].

Beispiel:

set myTablet speak "Die Temperatur beträgt [myWeather:actTemperature] Grad"

BTW: Manchmal erfolgt die Sprachausgabe mit einigen Sekunden Verzögerung. Es scheint zu helfen, vorher ein "set on" zu schicken und ggf. das Attribut requestTimeout zu erhöhen. Kann aber auch von Tablet zu Tablet unterschiedlich sein.

Wenn sich die langen Ausführungszeiten der HTTP Abfragen bestätigen bzw häufen, werde ich wohl auf BlockingCall umstellen. Wollte das eigentlich aufgrund des Overheads v.a. für den Arbeitsspeicher vermeiden.
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

CoolTux

Zitat von: zap am 05 November 2017, 11:15:09
- urlEncode wird statt URI::Escape verwendet (steckt in HttpUtils.pm, daher hatte ich das nicht gefunden)

Sorry mein Fehler. War schon ne Weile her wie ich das eingebaut hatte bei mir.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

sylvester

Hallo,

eine kurze Frage:

Wie gebe ich den speak-Befehl ein?


{fhem("set Fully_Browser speak ""So geht es nicht""")}


Viele Grüße

Stephan

zap

Kommt darauf an. In der FHEM Oberfläche (Eingabezeile) einfach

set Fully_Browser speak Test

Bei Leerzeichen Hochkomma verwenden.

Ansonsten: neusten Fully installiert? Hat Fully alle Rechte? Google TTS App aktualisieren?

2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

sylvester

Hallo,

prinzipiell funktioniert die Sprachausgabe bei mir.
Das Problem sind nur die Anführungszeichen innerhalb des fhem-Befehls unter perl.
Die muss ich wahrscheinlich anders darstellen ... nur wie?

Gruß

Stephan

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus