Ankündigung

Einklappen
Keine Ankündigung bisher.

Exec in Rule

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Exec in Rule

    Hallo zusammen,


    ich möchte ein Script über Openhab ausführen.

    Skript:

    ./speak Hallo das ist ein Test um 15 Uhr

    Es werden keine Anführungszeichen benötigt

    Wie kann ich es nun anstellen, wenn ich einen Button drücke er mir die aktuelle Uhrzeit einbindet ? Bzw. wie kann ich ein Komando so zusammen setzten mit Text und Inhalt von Variablen ?


    rule "Say-Test"
    when
    Item Test_Switch1 received update ON
    then
    *Skript ausführen*
    end

    #2
    Hallo,

    eine Rule brauchst du da nicht. Probier mal das in deinem xxx.items-File:

    Switch Spreche "Mein Text" (MyGroup) { exec=">[/Pfad/zu/speak Hallo das ist ein Test um 15 Uhr]" }

    Achtung: MyGroup muss vorhanden sein.

    Gruß,
    thoern

    Kommentar


      #3
      Danke für die Antwort, das hab ich mir schon gedacht das es so geht.

      Aber ich wollte eben die Parameter die ich speak.sh mitgebe selberdefinieren.

      Das immer die aktuelle Uhrzeit ausgeben wird.

      Kommentar


        #4
        Scripte können (derzeit) keine beim Aufruf übergebenen Variablen verarbeiten.
        Wenn Du eh mit Exec was externes aufrufst, könntest Du die Uhrzeit im externen Script über die Bash an speak übergeben. Oder Du nutzt das in openHAB eingebaute TTS und erstellst eine Rule, die die aktuelle Uhrzeit übergibt.

        Kommentar


          #5
          Danke für die Antwort.

          Das Problem ist, die interne TTS von OpenHAB ist so resourcenfressend, dass mein Raspberry nur Fetzen rausbringt und das kann man nicht anhören.

          Alternative könnte ich von OpenHAB einen Text in eine Textdatei schreiben lassen, aber des würde auch nicht gehen oder ?

          Kommentar


            #6
            Nur eine kurze Frage: Gibt es auf dem RaspPi ein solches "speak"-Kommando, was ordentlich funktioniert? Dann könnte man das ja als TTS-Service in openHAB anbieten (so wie es auch auf dem Mac gelöst ist).

            Grüße,
            Kai

            Kommentar


              #7
              Ich verwende dieses Skript (Raspberry Pi ? Text to Speech | Dan Fountain)

              Wenn ich natürlich OpenHAB beibringen könnte, dass es das Skript nutzt wenn ich say benutze, wärs echt fein.

              Ich hab jetzt das Skript angeglichen und kann über die gleiche Syntax verwenden wie beim Mac

              Code:
              say Hallo Test

              Kommentar


                #8
                Danke, das ist interessant. Es macht im Prinzip nur einen Aufruf von Google Translate und spielt den zurückerhaltenen Stream ab. Das funktioniert also nur, wenn man online ist, aber dann ist es eine qualitativ hochwertige Lösung.
                Anstatt das Skript also zu unterstützen, würde ich eher direkt einen Google-Translate-TTS-Service implementieren, der die Ausgabe über javax.sound macht - dann sollte das gleich auf allen Plattformen funktionieren, ohne dass ein separates Skript gebraucht wird.
                Habe gleich mal https://code.google.com/p/openhab/issues/detail?id=363 dafür angelegt!

                Grüße,
                Kai

                Kommentar


                  #9
                  Wie ist dann die Performance ? Sollte doch besser sein, oder ?
                  Denn das jetztige TTS stottert ganz schön an nem Raspberry Pi.


                  Eine Anmerkung noch: Google TTS kann nur 100 Byte verarbeiten, deshalb teilt das Skript den Text in n * 100 Byte große Häppchen auf

                  Kommentar


                    #10
                    Ja, Performance sollte analog zum Skriptaufruf sein. Wenn Du mit dem zufrieden bist, ist es ein gutes Zeichen.

                    Ja, die 100 Zeichen Beschränkung habe ich gesehen, dass muss man in der Implementierung entsprechend berücksichtigen.

                    Kommentar


                      #11
                      ich kann nicht einfach dem say Kommando sagen es soll als TTS Service mein Skript(hat ja die gleiche Syntax wie beim MAC) nehmen ?

                      Kommentar


                        #12
                        Nein, es gibt keinen TTS Service, der passend allgemein zu konfigurieren wäre. Und der TTS Service, der "say" aufruft, wird absichtlich nur auf einem MacOS aktiviert und steht sonst nicht zur Verfügung.

                        Kommentar

                        Lädt...
                        X