Loxone Music Server // TTS Zahlenausgabe

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • christof89
    Lox Guru
    • 29.08.2015
    • 1374

    #1

    Loxone Music Server // TTS Zahlenausgabe

    Hi@all,

    ich lasse mir bei Betreten meiner Garage den aktuell günstigsten Benzinpreis am Weg in die Arbeit ausgeben.
    Den Preis pusht ein Raspberry in einen virtuellen Texteingang.

    Format: 1.176€ oder 1,176€.

    In beiden Fällen wird aber per TTS ausgegeben: "EinTausendEinHundertSechsUndSiebzig".

    Übergebe ich den Wert so: "1 Komma 176" wird folgendes ausgegeben:
    "Eines Komma EinHundertSechsUndSiebzig".

    Kann mir jemand sagen, wie man Zahlen korrekt an den Music Server Zonen TTS Eingang übergeben muss?


    Danke!
  • AlexW
    Extension Master
    • 12.05.2016
    • 132

    #2
    Geht das nicht über den Statusbaustein, so habe ich es jedenfalls mit der Temperatur gelöst.

    Kommentar

    • christof89
      Lox Guru
      • 29.08.2015
      • 1374

      #3
      Im Statusbaustein wird das korrekt übergeben, als Text wird ausgegeben "Die billigste Tankstelle ist Metro Vösendorf mit 1.176 €."
      Eigentlich müsste nun ja "Eins Komma EinsSiebenSechs" angesagt werden, und nicht "EinTausendEinhundertSechsUndSiebzig".

      Auch wenn ich den Punkt gegen ein Komma tausche wird es falsch angesagt.

      Kommentar

      • hismastersvoice
        Supermoderator
        • 25.08.2015
        • 7271

        #4
        Punkt ist bei TTS ein Tausender-Trenner. Du musst dann schon ein Komma weitergeben und nur zwei Kommastellen. Dann müsste es gehen.
        Zuletzt geändert von hismastersvoice; 01.01.2020, 14:03.
        Kein Support per PN!

        Kommentar


        • christof89
          christof89 kommentierte
          Kommentar bearbeiten
          Komma alleine ging nicht, werde mal die Eingabe auf 2 Kommastellen bringen und schauen ob es die Lösung ist - danke.
      • christof89
        Lox Guru
        • 29.08.2015
        • 1374

        #5
        Zitat von hismastersvoice
        Punkt ist bei TTS ein Tausender-Trenner. Du musst dann schon ein Komma weitergeben und nur zwei Kommastellen.
        Hi, ich habe es soeben getestet.
        Format muss so sein: 1.17 €

        Also 2 Kommastellen und kein Komma sondern ein Punkt, dann wird per TTS "Ein Euro SiebZehn Cent" ausgegeben.

        danke.

        Kommentar

        • christof89
          Lox Guru
          • 29.08.2015
          • 1374

          #6
          Habe das Format jetzt nochmals abgeändert, da mir die Ausgabe mit nur 2 Kommastellen zu ungenau war.
          Leider ist das die einzige Lösung wie es korrekt ausgegeben wird:
          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Foto 06.01.20, 02 12 14.png
Ansichten: 565
Größe: 44,3 KB
ID: 228997
          Angehängte Dateien

          Kommentar


          • hme0354
            hme0354 kommentierte
            Kommentar bearbeiten
            Wenn du die Anzeige verbessern willst, könntest du einen zweiten Status Baustein machen, der die Anzeige korrekt macht.
        • christof89
          Lox Guru
          • 29.08.2015
          • 1374

          #7
          Habe die Anzeige nur für den Screenshot aktiviert, eigentlich lasse ich mir als Anzeige nur meine 3 Tankstellen anzeigen zu denen ich fahre.
          Den anderen VI verwende ich nur für die TTS Ausgabe.

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Foto 06.01.20, 16 08 34.png
Ansichten: 553
Größe: 131,2 KB
ID: 229079
          Angehängte Dateien

          Kommentar

          • hme0354
            MS Profi
            • 06.07.2019
            • 969

            #8
            Wie bekommt ihr eigentlich die Preise?
            Smarthome: 1x Miniserver Gen. 2, 3x Relay Extensions, 1x Tree Extension, 1x DI-Extension, 1x Air Base Extension, 8x RGBW Tree Dimmer, 9x Touch-Tree, 1x Nano DI Tree, 10x Tree BWM
            Technik: IDM Aero SLM 3-11 mit HGL, MS4H mit 9 Zonen, 2x Loxberry, 2x RPI für Anzeige, Doorbird, Froggit WH2600, POE+ System für Peripherie, Gedad Luftgütesensoren, Deconz (Bridge + 2x BWM + 2x RGBW + 5 Smartplug)

            Kommentar

            • Xenobiologist
              Lox Guru
              • 15.01.2016
              • 1118

              #9
              Ich denke, es gibt ne API so wie hier : https://creativecommons.tankerkoenig.de/
              Node-RED mit influxDB und Grafana - z.B. Statistiken auslagern:
              https://www.loxforum.com/forum/germa...d-grafana-visu
              Mit Loxone einen Windows-PC steuern:
              https://www.loxforum.com/forum/faqs-...indows-steuern

              Kommentar

              • christof89
                Lox Guru
                • 29.08.2015
                • 1374

                #10
                Zitat von hme0354
                Wie bekommt ihr eigentlich die Preise?
                API gibt es nicht direkt, aber über die URL kann man die Tankstellen in der Umgebung abfragen:


                Lat und Lng musst du natürlich an deinen Standort anpassen.
                Nachdem ich nur zu 3-4 bestimmten Tankstellen fahre überprüfe ich dann anhand des Namens im Object ob das Attribut "name" meine Tankstelle ist,
                wenn die if-Abfrage zutrifft, dann hole ich mir den Preis für diese Tankstelle.

                Den Preis sende ich mir dann an einen VI am Miniserver.

                Das Ganze erledigt mein Loxberry für mich, der führt das das PHP-Skript alle 2 Stunden aus.

                Wenn ich dann in der früh die Garagentüre öffne, wird mir die billigste Tankstelle genannt.

                Kommentar


                • hme0354
                  hme0354 kommentierte
                  Kommentar bearbeiten
                  Hast du eine Anleitung dafür?
              • christof89
                Lox Guru
                • 29.08.2015
                • 1374

                #11
                hme0354 Anleitung habe ich keine direkt - ich habe das selbst nur mal schnell zwischendurch in 15min programmiert, der Code ist auch dementsprechend schnell geschrieben.

                Wie gesagt es gibt am Raspberry einen Cronjob der einfach das PHP-Skript alle 2 Stunden aufruft.
                In der LoxConfig habe ich Virtuelle Texteingänge angelegt, die ich mit diesem Skript befülle.

                Das Script, wie gesagt nur schnell zwischendurch geschrieben sieht in etwa so aus:
                PHP-Code:
                $scs = array_slice(json_decode(file_get_contents("https://api.e-control.at/sprit/1.0/search/gas-stations/by-address?latitude=48.10425879525144&longitude=16.318540343565918&fuelType=SUP&includeClosed=false")), 0, 5);
                
                file_get_contents("http://user:passwort@10.0.0.10/dev/sps/io/VTI5/".rawurlencode("keine Infos..."));
                file_get_contents("http://user:passwort@10.0.0.10/dev/sps/io/VTI6/".rawurlencode("keine Infos..."));
                
                $billigste_preis = 999;
                $billigste_name = "";
                
                foreach($scs as $s)
                {
                  if($s->name === "SPRITKÖNIG SCS"){
                    file_get_contents("http://user:passwort@10.0.0.10/dev/sps/io/VTI5/".rawurlencode(sprintf("€ %s - (%s)", $s->prices[0]->amount, date("d.m.Y H:i"))));
                    if($s->prices[0]->amount < $billigste_preis) {
                      $billigste_preis = $s->prices[0]->amount;
                      $billigste_name = "SPRITKÖNIG SCS";
                    }
                  }
                  else if($s->name === "avanti - Vösendorf Metro Platz 1"){
                    file_get_contents("http://user:passwort@10.0.0.10/dev/sps/io/VTI6/".rawurlencode(sprintf("€ %s - (%s)", $s->prices[0]->amount, date("d.m.Y H:i"))));
                    if($s->prices[0]->amount < $billigste_preis) {
                      $billigste_preis = $s->prices[0]->amount;
                      $billigste_name = "Metro Vösendorf";
                    }
                  }
                }
                
                $chars = str_split($billigste_preis);
                $tts = sprintf("%s mit %s Komma %s %s %s €", $billigste_name, str_replace(["0", "1", "2"], ["Null", "Eins", "Zwei"], $chars[0]), $chars[2], $chars[3], $chars[4]);
                
                file_get_contents("http://user:passwort@10.0.0.10/dev/sps/io/VTI7/".rawurlencode($tts)); 
                

                VTI5 sowie VTI6 sind für die Anzeige in der App (insgesamt sind es 3 Tankestellen, habe jetzt aber der Übersicht halber den Code etwas gekürzt.
                VTI7 ist der Text Eingang der für die TTS Ausgabe verwendet wird, daher auch die "komische" Schreibweise: "Eins Komma 1 4 7 €".


                LG
                Zuletzt geändert von christof89; 06.01.2020, 20:41.

                Kommentar

                • Lightpicture
                  Lebende Foren Legende
                  • 16.11.2015
                  • 3622

                  #12
                  Mit der Anleitung / API Link bekomme ich die Werte perfekt in meine DB.
                  Danke Christof89
                  FG
                  Lightpicture

                  Nur ein Netzwerkkabel ist richtiges WLAN

                  Kommentar

                  Lädt...