diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py index 562a7e14..57948659 100644 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py @@ -76,6 +76,7 @@ class MycroftOS(MycroftSkill): except Exception: LOG.exception('In MycroftOS Skill') + self.settings.set_changed_callback(self.on_websettings_changed) # System volume #def on_volume_set(self, message): @@ -93,7 +94,6 @@ class MycroftOS(MycroftSkill): # self.muted = False # call(['pactl', 'set-sink-mute', '0', '0']) - # Cleanup def shutdown(self): # Gotta clean up manually since not using add_event() @@ -158,6 +158,8 @@ class MycroftOS(MycroftSkill): self.loading = False if is_paired(): os.system("fbv -f -d 1 /opt/mycroft/skills/mycroftos-enclosure-skill/ui/background.png > /dev/null 2>&1") + self.speak_dialog('finished.booting') + # System actions def on_shutdown(self, message): @@ -170,6 +172,26 @@ class MycroftOS(MycroftSkill): sleep(5) os.system("sudo shutdown --reboot now") + def enable_airplay(self, message): + os.system("sudo systemctl enable shairport-sync.service") + os.system("sudo systemctl start shairport-sync.service") + + def disable_airplay(self, message): + os.system("sudo systemctl disable shairport-sync.service") + os.system("sudo systemctl stop shairport-sync.service") + + + # Intent handlers + @intent_handler(IntentBuilder("").require("EnableAirPlay")) + def handle_enable_airplay_intent(self, message): + self.enable_airplay() + self.speak_dialog("EnableAirPlay") + + @intent_handler(IntentBuilder("").require("DisableAirPlay")) + def handle_disable_airplay_intent(self, message): + self.disable_airplay() + self.speak_dialog("DisableAirPlay") + def create_skill(): return MycroftOS() diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableAirPlay.dialog b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableAirPlay.dialog new file mode 100644 index 00000000..cd8a1d5b --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableAirPlay.dialog @@ -0,0 +1 @@ +Airplay is stopped and disabled diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableAirPlay.dialog b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableAirPlay.dialog new file mode 100644 index 00000000..e95992ce --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableAirPlay.dialog @@ -0,0 +1 @@ +Airplay is enabled and started diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/finished.booting.dialog b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/finished.booting.dialog new file mode 100644 index 00000000..f44e5b71 --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/finished.booting.dialog @@ -0,0 +1,4 @@ +I have now finished booting up. +I am now ready. +Hi, this is mycroft and I am ready to work. +You can get started with mycroft. diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/locale/en-us/rebooting.dialog b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/locale/en-us/rebooting.dialog deleted file mode 100644 index d3fe0444..00000000 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/locale/en-us/rebooting.dialog +++ /dev/null @@ -1,2 +0,0 @@ -Rebooting now, I'll be right back -Restarting, back in a few minutes diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc new file mode 100644 index 00000000..f00b5e0b --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc @@ -0,0 +1 @@ +Disable airplay diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc new file mode 100644 index 00000000..c660774e --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc @@ -0,0 +1 @@ +Enable airplay diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/shairport-sync.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/shairport-sync.service new file mode 100644 index 00000000..df8c9857 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/shairport-sync.service @@ -0,0 +1,16 @@ +[Unit] +Description=Shairport-sync +Wants=network.target +Requires=avahi-daemon.service +After=network.target sound.target avahi-daemon.service + +[Service] +Type=simple +# Avahi daemon needs some time until fully ready +ExecStartPre=/bin/sleep 3 +ExecStart=/usr/bin/shairport-sync +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target