Περί τίνος πρόκειται?
Η εφαρμογή Companion του home assistant στο android προσφέρει πολλές διαφορετικές επιλογές ειδοποιήσεων.
Αντί για την αποστολή μιας πραγματικής ειδοποίησης στη συσκευή, μπορείτε να στείλετε μια εντολή ως μήνυμα για την ενεργοποίηση ορισμένων ενεργειών στο τηλέφωνό σας.
Δηλαδή?
Μπορούμε να χρησιμοποιήσουμε τον voice assistant του home assistant ως εναν εναλλακτικό open source assistant που θα εκτελεί λειτουργίες στο ίδιο το τηλέφωνο.
Τι θα χρειαστεί?
- TTS και STT engines στον HASS σέρβερ.
Αν η εγκατάσταση σου ειναι πλήρες HASS OS μπορείς να εγκαταστησεις τα whisper (Stt) και piper (tts) ως addon.
Αν η εγκατάσταση σου ειναι docker container τοτε θα πρεπει να σηκώσεις τα whisper και Piper ως ξεχωριστά docker containers.
Whisper:
version: '3'
services:
wyoming-whisper:
image: rhasspy/wyoming-whisper
ports:
- "10300:10300"
volumes:
- "./data:/data"
command: ["--model", "tiny-int8", "--language", "en"]
Στον HASS
Ρυθμίσεις>συσκευές>προσθήκη ενσωμάτωσης>whisper>ok
Ο Host είναι η IP του raspberry pi σας, π.χ. 192.168.1.1
Η θύρα είναι 10300 (μπορεί να αντιστοιχίσει οποιαδήποτε διαθέσιμη θύρα στον κεντρικό υπολογιστή).
Στη συνέχεια, στο Settings>devices>Wyoming protocol>entity>fast whisper>settings>enable
Και τέλος
Settings>voice assistant>assist>επιλογή whisper στο speech to text
Piper:
version: '3'
services:
wyoming-piper:
image: rhasspy/wyoming-piper
ports:
- "10200:10200"
volumes:
- ./data:/data
command: ["--voice", "en_US-lessac-medium"]
Στον HASS
Ρυθμίσεις>συσκευές>προσθήκη ενσωμάτωσης>piper>ok
Ο Host είναι η IP του raspberry pi σας, π.χ. 192.168.1.1
Η θύρα είναι 10200 (μπορεί να αντιστοιχίσει οποιαδήποτε διαθέσιμη θύρα στον κεντρικό υπολογιστή).
Στη συνέχεια, στο Settings>devices>Wyoming protocol>entity>piper>settings>enable
Και τέλος
Settings>voice assistant>assist>επιλογή piper στο text to speech
Notification Commands
Για να εκτελέσουμε ενα activity μιας android εφαρμογής προσδιορίζοντας το URI της , Θα χρησιμοποιησουμε το service notify.mobile_app
με message το command_activity
.
Θα χρειαστούμε το divice ID του companion app:
Ρυθμίσεις > companion app > home > device name
- Examples
Στο παρακατω παραδειγμα θα δουμε οως θα χρησιμοποιησουμε το voice assistant δινοντας του την εντολη να ξεκινησει την πλοηγηση σε μια συγκεκριμενη τοποθεσια.
Script:
Δημιουργούμε απο το UI απο τη διαδρομή settings> automation>scripts>add script>crate new>edit in yaml
alias: Navigate
mode: single
fields:
location:
description: The location to navigate to
example: Nea Smyrni
sequence:
- service: notify.mobile_app_phone
data_template:
message: command_activity
data:
intent_package_name: com.here.app.maps
intent_action: android.intent.action.VIEW
intent_uri: google.navigation:q={{ location }}?startActivity;
package name ειναι το όνομα του πακέτου της εφαρμογής που θα χρησιμοποιησουμε
Το action ειναι VIEW
Στο uri χρησιμοποιούμε τα google intents μιας και λειτουργουν με την εφαρμογη here
automation
Θα δημιουργήσουμε ενα custom sentence το οποίο θα τρέχει το παραπάνω script.
Επιπρόσθετα θα πρόσθετςι ως μεταβλητή οτι ακούσει μετά το custom sentence .
Δημιουργούμε απο το UI απο τη διαδρομή settings> automation>automation>add automation>crate new>edit in yaml
alias: Navigate
description: ""
trigger:
- platform: conversation
command: Go to {location}
condition: []
action:
- service: script.navigate
data:
location: "{{ trigger.slots.location }}"
mode: single
platform: conversation
Conversation ειναι η πλατφόρμα του voice assistant
command: Go to {location}
Στο πεδίο Command γραφυμε τις φράσεις τις οποίες αν θα ακούσει ο assist θα πυροδοτήσει το πεδίο action
"notify.mobile_app_phone:"
phone ειναι το device ID μου αντικατέστησε το με το δοκό σου.
‘location’ ειναι το variant που χρησιμοποιείω για το voice match που κανει η voice assistant μετα την εντολή. Τα παρακατω πεδία του automation πρεπει να ταυτίζεται με το πεδίο {{ location }} του script
"fields: location:"
"command: Go to {location}"
data: location:
"{{ trigger.slots.location }}"
Τέλος στο
“service: script.navigate”
Το navigate πρεπει να ταυτίζεται με το alias του script
Επιλογος
Επι της ουσίας αν γνωρίζουμε το uri του activity της εφαρμογής μπορούμε να το εκινησουμε και να το χρησιμοποιησουμε σε οτι αυτοματισμό θέλουμε