Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. [gelöst] BUG: sayit funktioniert bei win nicht zuverlässig.

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    UNSOLVED [gelöst] BUG: sayit funktioniert bei win nicht zuverlässig.

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      fastfoot @bahnuhr last edited by

      @bahnuhr sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

      Wie speichere ich den Statte als mp3?

      evtl. musst du noch den timeout anpassen, je nach Länge deines Textes

      const fs = require('fs');
      const url = 'http://ip:8082/state/sayit.0.tts.mp3';
      const outfile = './Test.mp3';
      setState('sayit.0.tts.text','Hallo, dies ist ein ziemlich unnützer Text');
      setTimeout(function(){
          request(url, {encoding:'binary'}, function(error, response, body) {
              fs.writeFile(outfile, body, 'binary', function (err) {
                  if(err) log('Fehler!');
              });                
          });
      }, 2000);
      
      bahnuhr F 2 Replies Last reply Reply Quote 1
      • bahnuhr
        bahnuhr Forum Testing Most Active @fastfoot last edited by

        @fastfoot sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

        @bahnuhr sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

        Wie speichere ich den Statte als mp3?

        evtl. musst du noch den timeout anpassen, je nach Länge deines Textes

        const fs = require('fs');
        const url = 'http://ip:8082/state/sayit.0.tts.mp3';
        const outfile = './Test.mp3';
        setState('sayit.0.tts.text','Hallo, dies ist ein ziemlich unnützer Text');
        setTimeout(function(){
            request(url, {encoding:'binary'}, function(error, response, body) {
                fs.writeFile(outfile, body, 'binary', function (err) {
                    if(err) log('Fehler!');
                });                
            });
        }, 2000);
        

        Super,cool.
        Das probier ich heute abend gleich aus.
        Danke.

        F 1 Reply Last reply Reply Quote 0
        • F
          fastfoot @fastfoot last edited by

          @fastfoot sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

          evtl. musst du noch den timeout anpassen, je nach Länge deines Textes

          hier noch eine Version für die Blockly Fraktion
          Sayit.PNG

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id="W~_^HE%Iga5n.*fPdW;B">outfile</variable>
             <variable id="z_pVL7.qbcGrbBrmTenF">url</variable>
             <variable id="]^eO7?rtWHTfOD)d{,je">cmd</variable>
             <variable type="timeout" id="timeout">timeout</variable>
           </variables>
           <block type="variables_set" id="K!1=]xXNLcV%_;O8_moY" x="45" y="78">
             <field name="VAR" id="W~_^HE%Iga5n.*fPdW;B">outfile</field>
             <value name="VALUE">
               <block type="text" id="D~q[!co?DcpN8GJ^Gm]E">
                 <field name="TEXT">./tst.mp3</field>
               </block>
             </value>
             <next>
               <block type="variables_set" id="UbHJQ7(P?2U*Y39|s_wx">
                 <field name="VAR" id="z_pVL7.qbcGrbBrmTenF">url</field>
                 <value name="VALUE">
                   <block type="text" id="Y9N`m/ks7.Lh^~NFl{`)">
                     <field name="TEXT">localhost:8082/state/sayit.0.tts.mp3</field>
                   </block>
                 </value>
                 <next>
                   <block type="variables_set" id="!Rv8i+YxzgFe|-!vV43%">
                     <field name="VAR" id="]^eO7?rtWHTfOD)d{,je">cmd</field>
                     <value name="VALUE">
                       <block type="text_join" id="mPNwYvTJ@8l:/Db*G*R2" inline="true">
                         <mutation items="4"></mutation>
                         <value name="ADD0">
                           <block type="text" id="L[7r6VHfZH5DFuXa:ssB">
                             <field name="TEXT">curl -sL </field>
                           </block>
                         </value>
                         <value name="ADD1">
                           <block type="variables_get" id="`$*khLv1k;:oTW]_f8Qv">
                             <field name="VAR" id="z_pVL7.qbcGrbBrmTenF">url</field>
                           </block>
                         </value>
                         <value name="ADD2">
                           <block type="text" id="4DPjK%Ap5|n:LQ^2C0t=">
                             <field name="TEXT"> &gt; </field>
                           </block>
                         </value>
                         <value name="ADD3">
                           <block type="variables_get" id="{x:z]6MCBt`v`$mRN?rh">
                             <field name="VAR" id="W~_^HE%Iga5n.*fPdW;B">outfile</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="control" id="T9GI)E(k5$yyI;?/r;%?">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                         <field name="OID">sayit.0.tts.text</field>
                         <field name="WITH_DELAY">FALSE</field>
                         <value name="VALUE">
                           <block type="text" id="!}aB{aNW!yhWO|KPonc=">
                             <field name="TEXT">Hallo, dies ist ein echt unnützer Text</field>
                           </block>
                         </value>
                         <next>
                           <block type="timeouts_settimeout" id="se9)rFor]=weJDW=dYd%">
                             <field name="NAME">timeout</field>
                             <field name="DELAY">2000</field>
                             <field name="UNIT">ms</field>
                             <statement name="STATEMENT">
                               <block type="exec" id=";f7mWOxP)C:ATEQq=CCc">
                                 <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                 <field name="WITH_STATEMENT">FALSE</field>
                                 <field name="LOG"></field>
                                 <value name="COMMAND">
                                   <shadow type="text" id="u-?64-sg%3,3/7HCl.-r">
                                     <field name="TEXT"></field>
                                   </shadow>
                                   <block type="variables_get" id="[bCY$YRq2es63B$Q`NPQ">
                                     <field name="VAR" id="]^eO7?rtWHTfOD)d{,je">cmd</field>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
             </next>
           </block>
          </xml>
          

          1 Reply Last reply Reply Quote 0
          • apollon77
            apollon77 last edited by

            ein getBinaryState ist denke einfacher als der http Request (ok macht am Ende das gleiche)

            bahnuhr 1 Reply Last reply Reply Quote 1
            • bahnuhr
              bahnuhr Forum Testing Most Active @apollon77 last edited by

              @apollon77 sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

              getBinaryState

              Gib uns mal ein Beispiel.

              1 Reply Last reply Reply Quote 0
              • F
                fastfoot @bahnuhr last edited by

                @bahnuhr sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

                Das probier ich heute abend gleich aus.

                funktioniert es denn jetzt wie gewünscht?

                bahnuhr 1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active @fastfoot last edited by bahnuhr

                  @fastfoot sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

                  @bahnuhr sagte in BUG: sayit funktioniert unter win nicht zuverlässig.:

                  Das probier ich heute abend gleich aus.

                  funktioniert es denn jetzt wie gewünscht?

                  Also folgendes Fazit nach meinen Tests:

                  a) Datei sayit.2.say.mp3
                  Die Datei wird ja jetzt gespeichert unter: C:\iobroker\iobroker-data\sayit
                  Dies funktioniert aber nicht zuverlässig. Manchmal wird sie nicht gespeichert.

                  b) cache Datei
                  Hier wird ja auch die mp3 gespeichert; als Zufallszahl.mp3
                  Deshalb hab ich probiert immer die neueste Datei zu lesen (siehe anderer Thread).
                  Die neueste Datei hab ich auch ermittelt bekommen; jedoch ist es durch den Adapter nicht gesagt, dass zuverlässig die aktuell gewollte neueste Version gespeichert ist. Also auch nicht zuverlässig.

                  c) state: sayit.2.tts.mp3
                  Unter diesem objekt ist ein Link gespeichert. Und dieser enthält zuverlässig !!! die aktuelle mp3.
                  Durch o.g. Script von @fastfoot konnte ich zuverlässig die mp3 kopieren und damit weiter arbeiten.

                  Gesamt:
                  a und b ist nicht zuverlässig.
                  c hat zuverlässig geklappt.

                  Noch ein Problem hatte ich:
                  Ich benutze den Windows Media Player zum streamen ins Netz. Die Datei wurde dann per Script gelöscht. Diese Löschung hat auch nicht zuverlässig gelöscht. WMP hat die Datei offensichtlich für x Sek./Min. geblockt.
                  Also Alternative gesucht und gefunden:
                  Programm: universal media server
                  Das Programm ist kostenlos und funktioniert bisher einwandfrei. die Datei wird auch sofort frei gelassen und man kann sie per script sofort löschen.

                  Insgesamt Danke an alle die hier mit gelesen und zur Lösung beigetragen haben. Bin da jetzt schon mehrere Monate/Jahre dran.
                  Aber wie immer: wenn man weiß wie es geht, ist es einfach.

                  Nochmals Danke.
                  (Thread kennzeichne ich mal als gelöst und issue bei sayit nehm ich auch raus.

                  mfg
                  Dieter

                  F apollon77 2 Replies Last reply Reply Quote 0
                  • F
                    fastfoot @bahnuhr last edited by

                    @bahnuhr sagte in [gelöst] BUG: sayit funktioniert bei win nicht zuverlässig.:

                    Durch o.g. Script von @fastfoot konnte ich zuverlässig die mp3 kopieren und damit weiter arbeiten.

                    Schön dass es endlich funktioniert, hier dann noch die Version mit getBinaryState(), die hat den Vorteil, dass man keine URL braucht sondern direkt mit dem DP arbeiten kann, ausserdem muss bei den beiden anderen Versionen jeweils der WEB-Adapter laufen, das ist hier nicht nötig.

                    const fs = require('fs');
                    const idMP3 = 'sayit.0.tts.mp3';
                    const outfile = '/opt/iobroker/Test.mp3';
                    
                    setState('sayit.0.tts.text','Hallo, dies ist ein ziemlich unnützer Text');
                    
                    setTimeout(function(){
                        getBinaryState(idMP3, function (err, data) {
                            fs.writeFile(outfile, data, function (err) {
                                if(err) log('Fehler!');
                            });                
                        });
                    }, 2000);
                    
                    1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 @bahnuhr last edited by

                      @bahnuhr hey, ich kann am Ende mur wiederholen was ich oben schon zu a gesagt habe: diese Datei ist niemals für eine direkte Benutzung gedacht gewesen. Auch die Cache files nicht.

                      Von daher ist Lösung c die sinnvollste und richtige.

                      1 Reply Last reply Reply Quote 0
                      • bahnuhr
                        bahnuhr Forum Testing Most Active last edited by

                        @apollon77
                        @fastfoot

                        Ja, nochmals Danke an euch beide.
                        Ohne den Input hätte ich dies nicht geschafft.

                        apollon77 1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 @bahnuhr last edited by

                          Bitte testet mal 1.11.0 ob noch alles tut wie bisher

                          F 1 Reply Last reply Reply Quote 0
                          • F
                            fastfoot @apollon77 last edited by

                            @apollon77 sagte in [gelöst] BUG: sayit funktioniert bei win nicht zuverlässig.:

                            Bitte testet mal 1.11.0 ob noch alles tut wie bisher

                            aus meiner Sicht ok unter linux(Docker, buanet, qnap)

                            • Browser: funktioniert
                            • System: mpg321 habe ich nicht installiert, aber das im LOG genannte file in /opt/iobroker/cache/ lässt sich abspielen
                            • Sonos: ok
                            • die gezeigten Methoden mit request() und getBinaryState() funktionieren
                            • im Ordner iobroker-data/sayit taucht kein file auf(hatte ich erwartet wg. Änderungshistorie)
                            1 Reply Last reply Reply Quote 0
                            • bahnuhr
                              bahnuhr Forum Testing Most Active last edited by

                              1.11.0 läuft auch bei mir.
                              installiert über git

                              Methode request mit dem state funktioniert ebenfalls.

                              mfg

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              697
                              Online

                              31.9k
                              Users

                              80.1k
                              Topics

                              1.3m
                              Posts

                              bug sayit
                              6
                              95
                              4608
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo