Skylar

A intelligent software assistant written in Java

logo

Projekt HTML Handbuch PDF Handbuch

     

Selenium

Abhaengigkeiten - selenium

Picture

Bedienung - selenium

Siehe REST API section Selenium wie man Skylars Firefox fernsteuert. Um den Intnernetbrowser zu sehen verwendet man einen VNC viewer.

# Open your favorite VNC viewer
# https://www.realvnc.com/en/connect/download/viewer/
#     host: 127.0.0.1
#     port: 61622
#     password: skylar
xdg-open 'vnc://:skylar@127.0.0.1:61622'
# Now you should see a black screen with a Ubuntu logo
# more info https://github.com/SeleniumHQ/docker-selenium

Einschränkungen des Docker container - selenium

Früher oder später benötigt man Ton oder Mikrophone für Skylars Internetbrowser. Dies erreicht man am leichtesten wenn man einen Selenium Server in der Desktop Umgebung also außerhalb von Docker startet. Eine weitere Möglichkeit ist das aktivieren der benötigten Funktionen in Deinem Linux/Mac/Windows/ARM Docker Deamon. Jedoch hat jedes Betriebssystem seine eigene Einstellungen so wie Heimtücken…

Konfiguration des externen Selenium Server - selenium

PROJECT="$HOME/git/skylar"

# stop application
cd $PROJECT
./container_destroy.sh

# change selenium server to 172.23.42.1:4444
cd $PROJECT/docker/_volumes/registry
sed -i -e 's|selenium:4444/wd/hub|172.23.42.1:4444/wd/hub|' core.yml

# start application
cd $PROJECT
./container_start.sh

Start des externen Selenium Server - selenium

# Start selenium server
PROJECT="$HOME/git/skylar"
cd $PROJECT/tools/selenium
./startServer.sh

Weitere Inforamtionen finden sich in meinem Selenium Artikel

Ton

Methode 1: Gesamte Soundkarte - selenium

# edit docker-compose.yml
PROJECT="$HOME/git/skylar"
atom $PROJECT/docker/docker-compose.yml

diese Zeilen auskommentieren

selenium:
    volumes:
    #            - "$DEVICE_SHM"
    #            - "$VOLUME_PULSEAUDIO_DBUS"
    #            - "$VOLUME_PULSEAUDIO_MACHINE_ID"

    #        devices:
    #            - "$DEVICE_SOUND"

Restart pulseaudio - selenium

Beim aktiveren des Tons wird Docker die Soundkarte sperren und es kein Sound mehr von der Desktop Umgebung abgespielt werden.

# stop docker
PROJECT="$HOME/git/skylar"
cd $PROJECT/docker
docker-compose down

# make sure all containers are down
docker ps -a | grep skylar

# restart pulseaudio
pulseaudio -k && sudo alsa force-reload

Methode 2: Stream PulseAudio mit TCP - selenium

Z.B. günstiger Raspberry Pi mit Ubuntu

Setup TCP Server

sudo -i
# install pulseaudio
apt-get -y install \
                alsa-utils \
                libasound2 \
                libasound2-plugins \
                pulseaudio \
                pulseaudio-module-zeroconf \
                pulseaudio-utils \
                --no-install-recommends

# backup configuration
cp /etc/pulse/default.pa /etc/pulse/default.pa.org

# add TCP configuration --- replace network 192.168.0.0/16
echo '
# tcp server
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16 auth-anonymous=1
load-module module-zeroconf-publish
' >> /etc/pulse/default.pa

# restart linux box
reboot

Test TCP Server

# make shure you are NOT ROOT and are in AUDIO GROUP
id | grep -v root | grep audio

# Add your user to the audio group if needed then restart shell
# sudo usermod -aG audio,pulse,pulse-access USER
# exit

# test audio
# locate wav | grep wav$
aplay /usr/share/sounds/alsa/Noise.wav

# check tcp module loaded
pactl list | grep module-native-protocol-tcp

# start server in debug mode
pulseaudio -v

# use SECOND TERMINAL to test --- replace IP 192.168.0.10
PULSE_SERVER=192.168.0.10:4713 pavucontrol

# play tcp sound --- replace IP 192.168.0.10
PULSE_SERVER=192.168.0.10:4713 vlc

# more info
xdg-open https://wiki.ubuntuusers.de/PulseAudio/#Soundausgabe-im-Netzwerk-umleiten

Run PulseAudio as systemd service

sudo -i

# create service script
echo '[Unit]
Description=System PulseAudio sound server

[Service]
Type=notify
ExecStart=/usr/bin/pulseaudio --verbose --system --daemonize=no --high-priority --log-target=syslog --disallow-exit --disallow-module-loading=1

[Install]
WantedBy=multi-user.target' > /etc/systemd/system/pulseaudio.service

# enable and start daemon
systemctl enable pulseaudio
systemctl start pulseaudio

Setup Docker

Ändere den .env Wert ENV_PULSE_AUDIO_TCP in der Datei $PROJECT/docker/.env

ENV_PULSE_AUDIO_TCP=PULSE_SERVER=192.168.0.10:4713
# edit .env file
PROJECT="$HOME/git/skylar"
# atom $PROJECT/docker/.env

sed -i -e 's|ENV_PULSE_AUDIO_TCP=.*|ENV_PULSE_AUDIO_TCP=PULSE_SERVER=192.168.0.10:4713|' $PROJECT/docker/.env
cat $PROJECT/docker/.env | grep ENV_PULSE_AUDIO_TCP