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

    #76
    Interessant wäre auch noch die Möglichkeit, Befehle zu verketten. Also wenn drei zusammengehörige Muster gefunden wurden den Algorithmus mit dem verbleibenden Text zu wiederholen. Dadurch wären Sätze wie "Schalte das Licht im Badezimmer ein und stelle die Heizung auf 22 Grad". Beim zweiten Teil könnte man dann eine fehlende Angabe durch die aus dem ersten Teil ersetzen (hier z.B. das Zimmer = "Badezimmer").
    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


      #77
      Das ist eine gute Idee!

      Ich versuche gerade auch Quellen zu finden wie Apple das grob macht. Werden die als Objekt gelieferten Antworten z.B. auf dem iPhone verarbeitet oder bekommt es irgendwie schon eine Handlungsanweisung vom Server mit? Weil gerade wenn Apple wirklich Siri für Apps zulassen würde, müsste ja jede App selbst parsen und damit wäre pro App mit einer großen Menge von Daten zu rechnen.

      Wenn also jemand Quellen zur groben Funktionsweise von Siri hat wäre ich dankbar. Irgendwer im www wird doch bestimmt schon sämtliche Sources auf dem iPhone 4S gecheckt haben ;-)

      Kommentar


        #78
        Hi,
        @RalMue: hört sich gut an. Die Frage ist aber - ob sich der Aufwand lohnt!
        Besonders meine ich den "lern"-Algorythmus. Im Prinzip könnte man sich die Toilette=Bad=Klo einmal fix definieren - da wird irgendwann der Lernprozess abgeschlossen sein.
        Ich will aber keinen Bremsen :-)

        @All: ich habe immernoch mein Problem die Variablen richtig zu füllen:
        Das geht - hier wird der Wert schön in "number" geschrieben:
        Code:
        listen_for /Rollladen im Wohnzimmer auf ([0-9,]*[0-9])/i do |number|
        Das hier geht nicht:
        Code:
        listen_for /(Rollladen|Jalousie) im Wohnzimmer (auf) ([0-9,]*[0-9])/i do |number|
        Hier wird "number" nicht richtig gefüllt. Ich vermute mal ich muss irgendwie definieren das "number"=zahl aus 3. Klammer.

        Gruß
        Thorsten

        Kommentar


          #79
          Code:
          md = /(Porsche) (\w+)/.match(opa)
          md[0]          #-> "Porsche 944"          alles
          md[1]          #-> "Porsche"      erste Klammer
          md[2]          #-> "944"         zweite Klammer
          md.pre_match   #-> "Opa fährt einen "    vorher
          md.post_match  #-> " Turbo"             nachher
          Code:
          $&  #-> alles:           "Porsche 944"
          $1  #-> erste Klammer:   "Porsche"
          $2  #-> zweite Klammer:  "944"
          $`  #-> vorher:          "Opa fährt einen "
          $'  #-> nachher:         " Turbo
          Rubybuch-Wiki

          Kommentar


            #80
            Hi Berliner,
            danke - aber wie setzte ich das in der listen-zeile um?
            Bitte 2 konkrete Hilfestellungen:
            Code:
            1. Beispiel
              listen_for /(Rollladen|Jalousie) im Wohnzimmer (auf) ([0-9,]*[0-9])/i do |number|
                say "Rolladen wird im Wohnzimmer auf #{number[2]} % gefahren " #say something to the user!
            
            2. Beispiel:
              listen_for /Wecker (für|von) Verena (auf) ([0-9,]*[0-9]):([0-9,]*[0-9]) Uhr (einstellen|stellen|einschalten)/i do |number|
                say "Okay, Wecker für Verena wird auf #{number[2]}:#{number[3]} eingestellt"
            Sorry - stehe ein bisschen auf dem Schlauch: schubst mich runter ;-)

            Gruß
            Thorsten

            Kommentar


              #81
              Hallo,
              das sollte klappen:

              Code:
              listen_for /(Rollladen|Jalousie) im Wohnzimmer (auf) ([0-9,]*[0-9])/i do |raum,auf,nummer|
                  say "Rolladen wird im Wohnzimmer auf #{nummer} % gefahren " #say something to the user!
                  request_completed #always complete your request! Otherwise the phone will "spin" at the user!
                  end
              
                  listen_for /Wecker (für|von) Verena (auf) ([0-9,]*[0-9]):([0-9,]*[0-9]) Uhr (einstellen|stellen|einschalten)/i do |von,auf,nummer1,nummer2|
                  say "Okay, Wecker für Verena wird auf #{nummer1}:#{nummer2} eingestellt"
                      request_completed #always complete your request! Otherwise the phone will "spin" at the user!
                  end
              Für jede () die du im listen_for benutzt brauchs du eine eigene Variable.

              Gruß
              Markus

              Kommentar


                #82
                Hi,
                @h3ko: DANKE!
                Eigentlich hatte ich das auch schonmal probiert - aber irgendwie hatte das nicht geklappt.
                Jetzt passt alles.

                Gruß
                Thorsten

                Kommentar


                  #83
                  Hallo ihr Cracks :-)

                  Hab da mal ne Anfängerfrage: Für was benötigt man das Zertifikat auf dem Iphone?

                  @muerlemann: Hat das bei dir mit der statischen route in der Firewall geklappt um guzzoni umzubiegen?

                  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


                    #84
                    Und wie sehen die nächsten Schritte aus?

                    Hier ein Vorschlag: das Script liest ein XML/CSV File mit den Gruppenadressen ein, welches mit ETS generiert wurde. Bislang ist jede Applikation ja sehr speziell und individuell. Da im XML File ja auch die Bezeichnungen inkl. GA stehen, wäre das ein großer Schritt in Richtung Flexibilität.

                    Wenn die Bezeichnungen dann so etwa lauten "Wohnzimmer Decklicht schalten" und die GA 1/0/1, hätte man doch a) den Suchstring und b) die dann zu schaltende Gruppenadresse..

                    Kommentar


                      #85
                      Ich habe es hinbekommen, das der Testproxy antwortet. Wie kann ich die Scripte erweitern? Eine Änderung des Example-Scripts unter SiriProxy/plugins/siriproxy-example/lib/siriproxy-example.rb hat nichts gebracht. Muss ich die Scripte irgendwie noch komplilieren?
                      Wie geht das?

                      LG
                      Werner

                      Kommentar


                        #86
                        Hoi

                        Soweit ich weiss muss man ruby-scripte nicht kompilieren.
                        Grüsse Bodo
                        Fragen gehören ins Forum, und nicht in mein Postfach;
                        EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                        Kommentar


                          #87
                          Hi,
                          Zitat von marlan99 Beitrag anzeigen
                          Hab da mal ne Anfängerfrage: Für was benötigt man das Zertifikat auf dem Iphone?
                          Du brauchst die ca.pem

                          Die ist zwar auch in der VM - ich habe sie hier aber nochmal attached (muss in ca.pem umbenannt werden)

                          Zum umbiegen des DNS: wäre schön wenn ein Fritzbox-user mal screenshots posten würde... :-)
                          Wenn jemand openwrt oder ähnliches hat: einfach in /etc/dnsmasq.com folgende zeile einfügen:
                          address=/guzzoni.apple.com/192.168.x.y

                          @Berliner:
                          von einem Import der ETS Daten halte ich nicht viel - da hat jeder sicherlich eine eigene Namensdefinition. Eine Anpassung der Config - im Source oder als ausgelagerte Config - wird unumgänglich sein.

                          @WiBa: doch - das anpassen des Example-Scripts reicht aus!
                          Danach musst du den proxy natürlich neu starten.
                          Ich mache das gerne in 2 unterschiedlichen sessions (mit dem "screen" Befehl) ("strg+a c" erzeugt ein neues Screen, "strg+a n" springt zum nächsten fenster, wenn man die Sitzung beendet kommt man mit "screen -Dr" wieder zum letzten screen)

                          Also: script anpassen, ins proxy-screen wechseln, ctrl-c zum abbrechen und wieder mit "rvmsudo ruby start.rb" starten.

                          Gruß
                          Thorsten


                          Gruß
                          Thorsten
                          Angehängte Dateien

                          Kommentar


                            #88
                            Zitat von ThorstenGehrig Beitrag anzeigen
                            Hi,

                            Du brauchst die ca.pem
                            Ja, aber weshalb wird die benötigt? Was ist der Zweck?

                            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


                              #89
                              Relativ einfach.
                              Die Verbindung zu guzzoni ist eine HTTPS-Verbindung.
                              D.h. das iPhone will die gültigkeit des zertifikats überprüfen.
                              Da wir aber guzzoni spielen, passt das Zertifikat nicht.
                              Daher erstellen wir ein eigenes Zertifikat durch eine eigene CA (certification authority). Das diese CA aber dem Iphone nicht bekannt ist, vertraut dem iPhone diesem auch nicht....
                              ... wenn man das Zertifikat dem iPhone aber als "Vertrauenswürdig" einpflanzt... ist alles gut.

                              ACHTUNG: Security gefahr! Wenn jetzt ein Hacker diese VM nimmt, damit falsche Zertifikate erstellt und damit Man-in-the-Middle-Attacken gegen euch fährt - wird das iPhone diesen Zertifikaten auch vertrauen.

                              Wer davor Angst hat: eigene Fake-CA mit eigenen Fake-Zertifikaten erstellen (Aufwand: 2 Minuten, Anleitung: siehe Siri-Guthup)

                              Gruß
                              Thorsten

                              Nachtrag: gen_certs.zsh ist das script zum erzeugenen eigener Zertifikate. Zeitaufwand dann nur 20 Sekunden ;-)

                              Kommentar


                                #90
                                @ThorstenGehrig

                                ok, wir kommen der Sache schon näher. Ich bin nicht so der Ruby/Linux-Profi. Ich habe den Server aus dem Youtube-Video von Siri mit Siriproxy erweitern – mit ungeahnten Möglichkeiten | Robins Blog nachgebaut und funktioniert. Jetzt verlangt das System cora (weil es in dem Script vorkommt). Wie kann man das nachinstallieren?

                                LG
                                Werner

                                Kommentar

                                Lädt...
                                X