Ankündigung

Einklappen
Keine Ankündigung bisher.

Siri-Proxy - wer hat know how und will mitbasteln?

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

    #61
    Hi
    was auch schonmal geht ist das:
    Code:
      listen_for /(Tor|Garage|Garagentor) (auf|aufmachen|oeffnen|hoch)/i do
        say "Garage wird geoeffnet!" #say something to the user!
        #wasGood = system( "groupswrite ip:wiregate 1/1/41 1" )
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
    
      listen_for /(Tor|Garage|Garagentor) (runter|zu|schliessen|zumachen)/i do
        say "Garage wird geschlossen!" #say something to the user!
        #wasGood = system( "groupswrite ip:wiregate 1/1/41 1" )
        request_completed #always complete your request! Otherwise the phone will "spin" at the user!
      end
    Leider kann ich öffnen / schließen nicht abfragen - wegen den öüäß.
    Mal schauen ob das mit den richtigen "locales" besser wird...


    Gruß
    Thorsten

    Kommentar


      #62
      Hallo Thorsten,

      Keyboard ändern als root mit: dpkg-reconfigure keyboard-configuration
      Dann wird man geführt. Nach dem reboot ist das neue layout aktiv

      Netzwerk mit bridging habe ich keine ip erhalten. Hab noch nicht im detail geschaut, evtl ipv6 aktiv? Ich hab nur ipv4

      Gruss
      Marcel
      seit: 11'08 KNX / 04'09 HS3 / 12'09 WG mit 21 Temp & 4 Feuchtesensoren / 10'10 Enocean mit 15 Fenstergriffe Hoppe / 02'11 MBus2Serial Gas-Wasserzähler
      HS3: 99% / VISU: PV 99%, iPad 99%
      60 Akt. Linie1 / 14 Akt. Linie2

      Kommentar


        #63
        Hi
        nö - ipv4 sollte schon gehen. hast du einen dhcp im netz?
        evtl. mit "ifup eth0" oder "dhclient" nochmal anstoßen?

        @Ruby-Spezialisten:
        Wie kriege ich denn in diesem Konstrukt die Variable "number" richtig gefüllt? Ich will "number" ja mit dem Wert der 3. Klammer gefüllt haben...
        Code:
          listen_for /(Rollladen|Jalousie) im Wohnzimmer (auf) ([0-9,]*[0-9])/i do |number|
        Gruß
        Thorsten

        Kommentar


          #64
          Zitat von ThorstenGehrig Beitrag anzeigen
          Hi
          Leider kann ich öffnen / schließen nicht abfragen - wegen den öüäß.
          Mal schauen ob das mit den richtigen "locales" besser wird...
          Du musst im File siriproxy-example.rb oder wo du auch immer rumprogrammierst

          Code:
          #Encoding: UTF-8
          in die erste Zeile eintragen, dann gehen Umlaute.

          Kommentar


            #65
            Danke. Die Umlaute laufen mittlerweile auch!
            Kriege ich noch ein Tip für die variablen?

            So langsamm fange ich auch mal an mir über ein Konzept gedanken zu machen.
            Rollladen oder Licht sind ja ganz nett - vorallem zum Zeigen.
            Aber in einem richtigen Smarthome schaltet man ja kaum noch Licht und die Rollladen fahren auch zu 99% automatisch.
            Die Frage ist jetzt: welche Befehle machen überhaupt sinn? Was kann/will ich von der manuellen Visu-Bedienung auf die Siri-Bedienung übertragen?
            Werde mir da wohl mal eine Ideensammlung machen müssen...
            Ist schon jemand gedanklich beim sinnvollen/strukturierten Voice-Command-Design?

            Gruß
            Thorsten

            Kommentar


              #66
              Zitat von ThorstenGehrig Beitrag anzeigen
              Rollladen oder Licht sind ja ganz nett - vorallem zum Zeigen.
              Aber in einem richtigen Smarthome schaltet man ja kaum noch Licht und die Rollladen fahren auch zu 99% automatisch.
              Die Frage ist jetzt: welche Befehle machen überhaupt sinn?
              Ich denke, dass hier im Wesentlichen die Betriebszustände des Hauses sowie die Szenen gefragt sind

              Code:
              listen_for /(Schatz|Hasi|Mausi) (kuscheln)/i do
                  say "Aber die Kinder...." #say something to the user!
                  #wasGood = system( "groupswrite ip:wiregate <Szene Romantikbeleuchtung>)
                  #wasGood = system( "groupswrite ip:multiroom <lauschige Musik">)
                   request_completed #always complete your request! Otherwise the phone will "spin" at the user!
                end
              Kritisch ist dann nur noch, in welchem Zimmer man gerade ist, damit das richtige Zimmer eingestellt wird.

              Kommentar


                #67
                Meine Planung geht ebenfalls in diese Richtung, JaKop.

                Ich möchte z.B. sagen "Entspannungsmodus Schlafzimmer", dann wird das Licht gedimmt, die Dekobeleuchtung geht an, die Lautsprecher gehen an und aus iTunes wird auf diese Lautsprecher die Playlist "xyz" gestreamt.

                Oder für das Wohnzimmer einen "Filmemodus" mit verknüpften Schaltvorgängen im Hintergrund.

                Allerdings wären für mich auch Abweichungen vom normalen Betriebsvorgang interessant. Beispiel: "Heize in 10 Minuten die Heizung im Bad auf 27 Grad".

                Ich als alter Schwarzmaler sehe aber vorher die Gefahr, dass Apple die Server dicht macht. Aber toi toi toi!

                Kommentar


                  #68
                  Zitat von RalMue Beitrag anzeigen
                  Ich als alter Schwarzmaler sehe aber vorher die Gefahr, dass Apple die Server dicht macht. Aber toi toi toi!
                  As reported by the hackers, the new iOS 5.1 also carries limited Siri API support for developers and enables them to give some Siri love to their applications, as we have already seen the couple of applications with limited integration of Siri into the third party application’s core. The new limited iPhone 4S Siri API’s allow developers to call some functions on their applications but still not allows them to fully integrate it in the core of the application.
                  In short, the availability of this limited Siri API support in iOS 5.1 beta 1 show that Apple has also been considering to roll out official API system for developers to create their applications according to their Siri feature need, or could allow them to develop such apps, which wake up on the Siri’s API calls. We have already seen the couple of Siri hacks from the SiriProxy, a web-based Siri proxy server that allows users/ developers to generate their own commands on Siri.
                  Quelle: freakgeeks.com


                  Vielleicht gehts also genau in die andere Richtung! Gut für uns ;-)

                  Kommentar


                    #69
                    Ich weiß nicht ob ihr es schon rausgefunden habt, mit .* bei listen_for wird auf das Vorkommen von Wörtern geprüft:

                    Code:
                    listen_for /(Teste.*Proxy)|(Proxy.*testen)/i do
                        say "Siri Proxy funktioniert!" #say something to the user!
                        
                        request_completed
                      end
                    "Kannst du bitte den Proxy testen" funktioniert jetzt ebenso wie "Teste mal bitte den Proxy du doofe Nuss" :-)

                    Verknüpft mit dem | Operator kann man schon viel abdecken:

                    Code:
                    listen_for /((mag|möchte).*Musik|Lautsprecher.*(an|ein))/i do

                    Kommentar


                      #70
                      Hi

                      kannst du mir das genauer erklären?
                      Code:
                      listen_for /(Teste.*Proxy)|(Proxy.*testen)/i do
                          say "Siri Proxy funktioniert!" #say something to the user!
                          
                          request_completed
                        end
                      Mach er hier in der ersten klammer
                      "Teste.*" = Teste ist irgendwo im Text
                      und
                      "Proxy" muss vorkommen
                      Die zweite Klammer
                      "Proxy.*" = Proxy kommt irgendwo vor
                      "testen" muss vorkommen
                      Die "Pipe" zwischen den beiden Afragen bedeutet eine von beiden bedingungen muss vorkommen...

                      Warum machst du dann nicht
                      listen_for /(Teste.*Proxy)|(testen.*Proxy)/i do
                      kommt doch aufs selbe raus, oder?

                      Code:
                      listen_for /((mag|möchte).*Musik|Lautsprecher.*(an|ein))/i do
                      Irgendwo muss mag oder mächte vorkommen
                      Irgendwo muss Musik oder Lautsprecher vorkommen
                      Irgendwo muss an oder ein vorkommen

                      Warum ist dann der 2. Teil nicht in klammern?

                      Gruß
                      Thorsten

                      Kommentar


                        #71
                        Das ist ein simpler regulärer Suchstring. Getestet wird, ob in der Sucheingabe "Teste" und "Proxy" vorkommt. Allerdings ist die Reihenfolge wichtig, deshalb sowohl "Teste.*Proxy" als auch "Proxy.*testen".

                        Code:
                        listen_for /((mag|möchte).*Musik|Lautsprecher.*(an|ein))/i do
                        Piepe bedeutet "oder".

                        Also "Ich mag gerne Musik hören" würde ebenso gehen wie "Ich möchte Musik hören"

                        Kommentar


                          #72
                          Ohne mich näher damit beschäftigt zu haben, sieht es für mich wie eine vom Syntax her "abgespeckte Form" von RegEx aus:
                          • Klammern kapseln Ausdrücke
                          • Der Punkt wird als Wildcard-Symbol verwendet, der Stern entspricht dem Multiplikator (0 bis n)
                          • Die Piep steht für ein oder


                          Wie Ralf schon geschrieben hat, kommt dann noch die Reihenfolge dazu.

                          In dem Bsp.

                          listen_for /(Teste.*Proxy)|(Proxy.*testen)/i do

                          ergibt das dann:

                          Wenn
                          "Teste" irgendwas dazwischen "Proxy"
                          ODER
                          "Proxy" irgendwas dazwischen "testen"
                          gehört wird, erfolgt die Sprachausgabe oder gewünschte Aktion.

                          Diese Mechanismen angereichert um etwas KI dürften das Rezept für Siri sein.

                          Unter Akzeptanz einer Anfangs längeren Lernphase könnte man sogar ein sich durch Fragen an den User anpassendes System aufbauen (wenn man noch Prolog mit einsetzt, Lisp könnte vllt auch klappen).
                          Gruß
                          Thorsten

                          Nach bestem Wissen, ohne Gewähr

                          Kommentar


                            #73
                            Ich möchte euch hier mal, bevor ich mich dumm und dämlich programmiere, grob mein Konzept zum parsen der Befehle vorstellen.

                            Ich habe eine Datenbank, in der Synonyme miteinander in Verbindung stehen. Der als Text gelieferte Satz wird zerlegt oder mit Regexp durchsucht. Der Einstieg in einen Befehl erfolgt erstmal über den Interaktionsgegenstand plus Matching auf die Datenbank. So baue ich mir ähnlich dem hardcodierten "Teste.*Proxy" einen dynamischen Befehlsblock auf, auf den gematcht wird.

                            Fehlt im Eingabestring, also dem gesprochenen und in Text umgewandelten Text, die Ortsangabe (kein Matching auf Tabelle 'Räume'), erfolgt die Nachfrage, welcher Raum gemeint wurde.

                            Soweit waren wir ja schon, und jetzt kommt meine Idee für eine Lernoption: Wurde nur ein Wort gefunden, z.b "hell" lasse ich Siri von jeder Kategorie, die hinterlegt ist nachfragen ob das gemeint war. Wird diese Frage mit ja beantwortet, werden die "wichtigen" Wörter des Satzes in die DB geschrieben und verknüpft.

                            Ablaufbeispiel: "Schalte das Licht auf der Toilette an."
                            #Matching erfolgt auf eine Anzahl von Objekten z.B Licht/ Heizung etc., auf eine Anzahl Räume z.B. Bad/ Küche etc. und auf eine Anzahl Befehle z.B. An/aus etc.
                            Erkannt wird: Licht und an, der Befehl Licht und an ohne Raum passt aber nicht.
                            "Wiederhole deinen Raum:"
                            "Toilette"
                            "Ich kenne die Räume: Küche, Bad, Wohnzimmer, Schlafzimmer. Was passt am Besten?"
                            "Bad"
                            "Das Licht in der Toilette ist nun an. Ich habe Toilette als Synonym für Bad gespeichert."

                            #Toilette wird in der DB unter Räume gespeichert und als Synonym zu Bad gekennzeichnet.

                            Das selbe passiert natürlich analog auch wenn Bad erkannt wurde aber nicht Licht sondern Lampe. Am Anfang ist das schwierig, aber mit der Zeit sollten das gut klappen. In meinen Augen reicht sogar wenn nur "an" erkannt wird, der folgende Dialog ist halt etwas länger.

                            Was meint ihr, macht das Sinn oder habe ich einen logischen Fehler drin?

                            Kommentar


                              #74
                              Zitat von RalMue Beitrag anzeigen
                              In meinen Augen reicht sogar wenn nur "an" erkannt wird, der folgende Dialog ist halt etwas länger.

                              Was meint ihr, macht das Sinn oder habe ich einen logischen Fehler drin?
                              Die gesamte Idee ist an sich gut, bei zu einfachen Wörtern könnte es jedoch schnell zu Problemen kommen. Wenn du alleine auf "an" reagierst wirst du mit Siri für andere Sachen nicht mehr glücklich werden. Beispiel: Schicke eine Nachricht an meine Freundin das ich später komme. Wie Thorsten auch schon meinte, Minimum zwei Wörter sollten schon matchen.
                              Mit freundlichen Grüßen
                              Niko Will

                              Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                              - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                              Kommentar


                                #75
                                Stimmt, daran habe ich gerade gar nicht gedacht :-D Also zwei Wörter :-)

                                Kommentar

                                Lädt...
                                X