Ελέγξτε σχεδόν τίποτα με το Siri - Δεν απαιτείται Jailbreak

Το Siri μπορεί να είναι εκπληκτικό κατά περιόδους, αλλά μπορεί να κάνει μόνο ό, τι της επιτρέπει η Apple. Οχι πια.

Το Siri μπορεί να είναι εκπληκτικό κατά περιόδους, αλλά μπορεί να κάνει μόνο ό, τι της επιτρέπει η Apple.  Οχι πια.
Διαφήμιση

Το Siri μπορεί να είναι εκπληκτικό κατά περιόδους, αλλά μπορεί να κάνει μόνο ό, τι της επιτρέπει η Apple. Όχι πια: μια νέα υπηρεσία Web που ονομάζεται BetterThanSiri ρίχνει τις πόρτες πολύ ανοιχτές και δεν απαιτεί τη συσκευή σας να είναι jailbroken για να το χρησιμοποιήσει. Σήμερα, θα εξηγήσω λίγο για την υπηρεσία και θα σας δείξει πώς να ξεκινήσετε τον έλεγχο ενός συνόλου φώτων RGB. Παρακολουθήστε πρώτα το βίντεο για να το δείτε σε δράση.

Πώς λειτουργεί αυτή η σκοτεινή μαγεία;

Όταν ζητάτε από το Siri να "Google" κάτι, ανοίγει το πρόγραμμα περιήγησης Safari και δρομολογεί το αίτημά σας όπως θα περιμένατε. Σε αυτό το σημείο γίνεται ένα αίτημα HTTP, οπότε αν έχετε ρυθμίσει έναν διακομιστή μεσολάβησης HTTP στη σύνδεσή σας στο Internet - ένα τυπικό χαρακτηριστικό που δεν απαιτεί jailbreaking - το αίτημα περνά μέσω του πληρεξούσιου .

Τώρα εδώ είναι η μαγεία: με την εισαγωγή εντολών με "googolplex", ο όρος αναζήτησης γίνεται "plex" συν οτιδήποτε λέτε. Ο πληρεξούσιος - BetterThanSiri.com - προσδιορίζει την παρουσία του "plex" και παρακολουθεί το ερώτημα αναζήτησης. Οτιδήποτε ακολουθεί θεωρείται τότε η πραγματική "εντολή". Το BetterThanSiri πραγματοποιεί αντιστοίχιση προτύπων σε σχέση με την προσωπική σας επιλογή διαμορφωμένων εντολών και εκτελεί τον σχετικό κώδικα. Είναι πραγματικά εκπληκτικό και δεν μπορώ να περιμένω να σας δείξω πώς να το χρησιμοποιήσετε.

Έλεγχος φώτων RGB

Για να επιδείξω τη BetterThanSiri, έχω ρυθμίσει ένα βασικό κύκλωμα IR αποστολής και λήψης - δείτε το προηγούμενο μου σεμινάριο για τη φάρσα Devil TV Παρουσιάζοντας τον τηλεοπτικό διάβολο, ένα εύκολο τηλεχειριστήριο Arduino φάρσα Παρουσιάζοντας τον τηλεοπτικό διάβολο, ένα εύκολο τηλεχειριστήριο Arduino φάρσα Διαβάστε περισσότερα για μάθετε περισσότερα σχετικά με την αλληλεπίδραση με τους κωδικούς IR ή διαβάστε για τη συμπυκνωμένη έκδοση. Εδώ είναι τα μέρη που θα χρειαστείτε:

  • Arduino, θωράκιση Ethernet και καλωδιώσεις Ethernet
  • IR LED, αντίσταση 220 Ohm (εξαρτάται από το συγκεκριμένο LED σας, αλλά αυτό θα πρέπει να είναι αρκετό στις περισσότερες περιπτώσεις) και δέκτη IR
  • RGB λυχνίες LED, τροφοδοσία 12V και υπάρχον τηλεχειριστήριο

αντισταθμιστικό κύκλωμα

Κάθε τηλεχειριστήριο λειτουργεί με κωδικοποίηση ενός αριθμού σε παλμούς υπέρυθρου φωτός - έτσι πρώτα θα πρέπει να μάθετε τους αριθμούς ελέγχου που χρησιμοποιούνται από το συγκεκριμένο τηλεχειριστήριο. Κατεβάστε τη βιβλιοθήκη IRremote και κάντε επανεκκίνηση του IDE του Arduino. Για τους περισσότερους δέκτες IR, με τον θόλο της LED που βλέπει προς εσάς, οι ακίδες από αριστερά προς τα δεξιά είναι: σήμα, GND, + 5V.

IR-recv

Σύρετε το σήμα στο ακροδέκτη 11 και τα άλλα δύο ως συνήθως και φορτώστε στο παράδειγμα IRrecvDemo που παρέχεται από τη βιβλιοθήκη. Ανοίξτε τη σειριακή κονσόλα και αρχίστε να πιέζετε τα κουμπιά στο τηλεχειριστήριό σας - θα πρέπει να λάβετε κάποιες τιμές HEX. Θέλουμε πραγματικά αυτές τις τιμές Hex ως ένα μακρύ ακέραιο αριθμό, οπότε προσθέστε ένα νέο Serial.println χωρίς το τμήμα HEX:

 Serial.println (results.value, HEX). Serial.println (results.value); 

Καταγράψτε όλους τους αριθμούς που χρειάζεστε. Στην περίπτωσή μου, βρήκα:

  • Κόκκινο: 16195807
  • Πράσινο: 16228447
  • Μπλε: 16212127

Εάν χρησιμοποιείτε διαφορετικό είδος τηλεχειριστηρίου, ίσως χρειαστεί να φορτώσετε το παράδειγμα IRrecvDump, το οποίο θα εξάγει επίσης τον τύπο σήματος - στην περίπτωσή μου, το τηλεχειριστήριο έστειλε κώδικες NEC 32-bit (ή 8-ψηφίων) που αντικατοπτρίζεται στον τροποποιημένο κώδικα διακομιστή μου αργότερα - θυμηθείτε να το αλλάξετε αν το χρειάζεστε.

irrecvdump-παράδειγμα

Πριν προχωρήσετε, συνδέστε το IR LED σας για αποστολή (η επίπεδη πλευρά του LED πηγαίνει στο GND, η άλλη πλευρά περνάει μέσω μιας αντίστασης 220 Ohm στον ακροδέκτη 3) και φορτώνει το IRsendDemo . Διπλασιάστε την κύρια εντολή αποστολής μερικές φορές και αντικαταστήστε τους δικούς σας κωδικούς IR για να τις δοκιμάσετε - προσθέστε μια καθυστέρηση μεταξύ των δύο. Μεταφορτώστε και, αν όλα λειτουργούν καλά, θα πρέπει να δείτε τις λυχνίες LED σας μέσω των εντολών που προσθέσατε.

πιο παράξενο παράδειγμα

Στη συνέχεια, κατεβάστε το πακέτο RESTduino - υπάρχει μια υποκατάστατη βιβλιοθήκη Ethernet εκεί που θα χρειαστεί να προσθέσετε και ξανά, κάντε επανεκκίνηση του IDE του Arduino. Το RESTduino είναι ένα ισχυρό RESTful web API - δημιουργεί ένα διακομιστή, ο οποίος ακούει εισερχόμενα αιτήματα με δυνατότητα να ελέγχει τις ακίδες ή να διαβάζει τις τιμές από αυτές. Δοκιμάστε πρώτα την συμπεριλαμβανόμενη επίδειξη για να διασφαλίσετε ότι όλα λειτουργούν - θα χρειαστεί να τροποποιήσετε τη διεύθυνση MAC, να κάνετε τη στατική διεύθυνση IP του διακομιστή και να ορίσετε μια IP στην περιοχή τοπικού δικτύου (πιθανώς 192.168.0.x ή 10.0.1.x ) .

προσαρμοσμένο-restduino

Θα πρέπει να μπορείτε να έχετε πρόσβαση στο Arduino από οποιοδήποτε πρόγραμμα περιήγησης - δοκιμάστε απλές εντολές για να διαβάσετε τις τιμές στην αναλογική είσοδο 1 - για παράδειγμα:

http://10.0.1.99/a1/

Δεν έχει σημασία αν δεν υπάρχει τίποτα συνδεδεμένο, ελέγχουμε απλώς ότι ο διακομιστής λειτουργεί. Τώρα, ανεβάστε την τροποποιημένη έκδοση αυτής της επίδειξης. Έχω απογυμνώσει τον έλεγχο των ακίδων και απλά το αντικατέστησα με IR έλεγχο αντ 'αυτού. Χρησιμοποιήστε μια διεύθυνση URL της φόρμας:

http://10.0.1.99/1/IRCODE

Η σημαντική γραμμή στον τροποποιημένο κώδικα είναι εδώ:

 irsend.sendNEC (strtoul (τιμή, NULL, 10), 32). 

Θα χρειαστεί να το αλλάξετε αν το τηλεχειριστήριό σας δεν είναι τύπου NEC ή δεν έχει μήκος 32 bit. Έχω επίσης προσθέσει μια καθυστέρηση και επανέλαβε την εντολή μερικές φορές, καθώς το IR μπορεί να είναι λίγο αναξιόπιστο μερικές φορές. Τέλος, ρυθμίστε την προώθηση των θυρών Τι είναι η προώθηση θυρών και πώς μπορεί να με βοηθήσει; [Το MakeUseOf Εξηγεί] Τι είναι η προώθηση των θυρών και πώς μπορεί να με βοηθήσει; [MakeUseOf Εξηγεί] Φωνάζετε λίγο στο εσωτερικό όταν κάποιος σας λέει ότι υπάρχει ένα πρόβλημα προώθησης θύρας και γι 'αυτό το λαμπερό νέο app σας δεν θα λειτουργήσει; Το Xbox σας δεν θα σας αφήσει να παίξετε παιχνίδια, οι λήψεις σας torrent αρνούνται ... Διαβάστε περισσότερα στο δρομολογητή σας, ώστε να μπορείτε να στέλνετε IR εντολές από οπουδήποτε στον κόσμο. Προωθήστε τα πάντα στη θύρα 80 στην εσωτερική διεύθυνση IP του Arduino σας. Θα πρέπει τώρα να μπορείτε να αντικαταστήσετε την εσωτερική διεύθυνση IP με την δημόσια IP σας και ο έλεγχος θα πρέπει να συνεχίσει να λειτουργεί. Τώρα μπορούμε να προχωρήσουμε στη δημιουργία των προσαρμοσμένων εντολών μας στο BetterThanSiri.com.

Ξεκινήστε με την εγγραφή σας και, στη συνέχεια, συνδεθείτε για να διαχειριστείτε την προσωπική σας λίστα εντολών.

betterthansiri-web-interface

Ρίξτε μια ματιά στις υπάρχουσες εντολές εάν είστε περίεργοι για το πώς λειτουργούν ή απλά προχωρήστε και δημιουργήστε ένα νέο. Ονομάστε την εντολή και προσθέστε τη φράση matcher:

 φώτα ~ 

setup-new-command

Αυτό σημαίνει "αυτή η εντολή θα ταιριάζει με τα φώτα + οτιδήποτε" . Στη συνέχεια, επικολλήστε τον παρακάτω κώδικα - τροποποιήστε το για να συμπεριλάβετε τη δημόσια διεύθυνση IP (ή ένα δυναμικό DNS αν έχετε), καθώς και τις φράσεις που θέλετε να αντιστοιχιστούν και τους σχετικούς κωδικούς IR. Η πρώτη μεταβλητή στη λειτουργία είναι μόνο ένα μικρό κείμενο που αποστέλλεται πίσω στο πρόγραμμα περιήγησης. Μπορείτε να αντιγράψετε / επικολλήσετε περισσότερα από τα άλλα if bits για να δημιουργήσετε όσες εντολές θέλετε.

 εάν η φράση == "ανάβει") {respondWithTextAndURL ('Ανάβουν τα φώτα', 'http: // YOURIP / 1/16236607'). } else if (φράση == "κόκκινο φως") {responseWithTextAndURL ('Προετοιμασία για σέξι χρόνο', 'http: // YOURIP / 1/16195807')? } else if (φράση == "αναβοσβήνει μπλε") {respondWithTextAndURL ('ενεργός τρόπος λειτουργίας', 'http: // YOURIP / 1/16212127'); } else if (φράση == "ανοιχτό πράσινο") {respondWithTextAndURL («Είστε περίεργος», http: // YOURIP / 1/16228447); }} 

Ακολουθήστε τις οδηγίες για να ρυθμίσετε τον διακομιστή μεσολάβησης στη συσκευή σας. Ουσιαστικά, πρέπει να προσθέσετε έναν αυτόματο διακομιστή μεσολάβησης HTTP (URL: http://totally.betterthansiri.com ) στη σύνδεσή σας στο διαδίκτυο. Την πρώτη φορά που θα χρησιμοποιήσετε την υπηρεσία, θα πρέπει να συνδεθείτε από την κινητή συσκευή σας, ώστε να γνωρίζει ποιες είναι οι προσωπικές σας εντολές, αλλά θα χρειαστεί να το κάνετε μόνο μία φορά.

Περιορισμοί

Όπως μπορείτε να δείτε, το BetterThanSiri είναι αρκετά πολύπλοκο σύστημα αυτή τη στιγμή - δεν υπάρχει interface drag-and-drop έτσι θα πρέπει να κατανοήσετε τα βασικά του Javascript για να δημιουργήσετε το δικό σας σύνολο εντολών. Τούτου λεχθέντος, έχουν εκθέσει μια τεράστια δύναμη με τη δυνατότητα να δημοσιεύουν δεδομένα σε τυχαίες διευθύνσεις URL είτε στο παρασκήνιο είτε απλά μια ανακατεύθυνση, οπότε πραγματικά δεν μπορούσαμε να ζητήσουμε περισσότερα. Μπορείτε πάντα να περιηγηθείτε στις υπάρχουσες συνταγές εάν δεν είστε προγραμματισμένοι για το δικό σας.

Επίσης, δεν σας μιλάει, όπως κάνει η Siri. Όλοι οι λογαριασμοί περιλαμβάνουν ένα χαρακτηριστικό "μου λέει μια αστεία" παρόμοιο με το Siri, αλλά τα ανέκδοτα εξέρχονται στην οθόνη, στο πρόγραμμα περιήγησης ιστού. Είναι πιθανό ότι θα μπορούσαν να προσθέσουν αυτό αργότερα χρησιμοποιώντας ένα πρόσθετο JavaScript τρίτου μέρους, αλλά μπορεί να σημαίνει αυξημένη χρήση εύρους ζώνης ή ανταπόκριση.

Τέλος, υπάρχει βεβαίως η καθυστέρηση. Η ομιλία σας αποστέλλεται στην Apple για επεξεργασία σε μια εντολή κειμένου, σας στέλνει πίσω, αποστέλλεται στον πληρεξούσιο, επεξεργάζεται το BetterThanSiri και στη συνέχεια στέλνεται πίσω μέσω του Διαδικτύου στον τοπικό μας Arduino. Στο demo κάθε εντολή χρειάστηκε περίπου 5-10 δευτερόλεπτα συνολικά και είναι απίθανο ότι αυτό μπορεί ποτέ να βελτιωθεί. Για το σπίτι αυτοματισμού, αυτό είναι απολύτως αποδεκτό, αλλά αν προσπαθείτε να παραδώσετε τις πληροφορίες στον χρήστη εγκαίρως, είναι λίγο απογοητευτικό.

ΘΕΜΑΤΑ ΑΣΦΑΛΕΙΑΣ

Χρησιμοποιώντας έναν διακομιστή μεσολάβησης HTTP όπως αυτό σημαίνει ότι κάθε αίτημα HTTP που πραγματοποιείτε δρομολογείται μέσω των διακομιστών: θεωρητικά, θα μπορούσαν να εξετάσουν όλα όσα ψάχνετε, κάθε τοποθεσία που επισκέπτεστε. Ζήτησα από τους προγραμματιστές γι 'αυτό, και αυτή ήταν η απάντησή τους:

Σίγουρα μια έγκυρη ανησυχία, αλλά δεν εξετάζουμε κάθε αίτημα HTTP. Η υπηρεσία autoconfig του διακομιστή μεσολάβησης διαθέτει μια μηχανή απόφασης που εξετάζει μόνο τις αιτήσεις HTTP που σχετίζονται με το GoogolPlex (με "plex" σε αυτές).

Μπορείτε να το πάρετε αυτό με την ονομαστική του αξία. θα ήταν αδύνατο να αποδειχθεί το αντίθετο, αλλά εάν το λογισμικό διακομιστή ήταν ανοικτού κώδικα (το οποίο δεν είναι) θα μπορούσατε τουλάχιστον να το επιβεβαιώσετε και να εκτελέσετε το δικό σας ιδιωτικό διακομιστή. Λαμβάνοντας υπόψη τις δυνατότητες για εμπορικές εφαρμογές, φαίνεται απίθανο να το ανοίξουν, οπότε αν το ιδιωτικό απόρρητο και η ασφάλεια στο πρόγραμμα περιήγησης του κινητού σας είναι ιδιαίτερα σημαντικό, είναι κατανοητό ότι αυτή δεν είναι μια υπηρεσία που θα θέλετε να χρησιμοποιήσετε.

Προσωπικά, δεν νομίζω ότι είναι υποτιμητικό να ονομάζουμε αυτή την υπηρεσία πραγματικά καταπληκτική. Άκουσα αρχικά για μερικούς μήνες πίσω, αλλά εκείνη την εποχή περιοριζόταν μόνο στον έλεγχο του Spotify - μια απόδειξη της έννοιας. Τώρα που έχουν προσθέσει τη δυνατότητα δημιουργίας εξατομικευμένων εντολών και διασύνδεσης με οτιδήποτε, είναι ένα απίστευτα ισχυρό σύστημα που θα επανέλθω στο μέλλον για να αποτελέσει τη βάση ενός πλήρους συστήματος αυτοματισμού οικιακού συστήματος Arduino. Ποιες χρήσεις μπορείτε να σκεφτείτε για το BetterThanSiri;

In this article