Played file stopps randomly / mpg123 direct play working

Bug
What I did
Play mp3 file via Web API AND via token. Same result.
What happened
The played file stops at a random position.
I expected this to happen
File plays till the end.
Playing the same file via mpg123 works as expected.
Further information that might help
Analytics_AfterInstallScript.sh
************************************
*** PHONIEBOX INFO
*** version: 2.2 - 305325d - master
*** edition: classic
*** Audio_iFace_Name: Headphone
*** Audio_Folders_Path: /home/pi/RPi-Jukebox-RFID/shared/audiofolders
*** Audio_Volume_Change_Step: 3
*** Max_Volume_Limit: 100
*** Idle_Time_Before_Shutdown: 0
*** Second_Swipe: RESTART
*** Playlists_Folders_Path: /home/pi/RPi-Jukebox-RFID/playlists
*** ShowCover: ON
************************************
*** CONF FILES DEFAULT

*** /etc/samba/smb.conf
-rw-r--r-- 1 root root 8.2K Dec 30 22:27 /etc/samba/smb.conf
   path=/home/pi/RPi-Jukebox-RFID/shared
   path=/home/pi/RPi-Jukebox-RFID/shared/audiofolders
*** /etc/lighttpd/lighttpd.conf
-rw-r--r-- 1 root root 2.1K Dec 30 22:27 /etc/lighttpd/lighttpd.conf
*** /etc/lighttpd/conf-available/15-fastcgi-php.conf
-rw-r--r-- 1 root root 575 Dec 30 22:27 /etc/lighttpd/conf-available/15-fastcgi-php.conf
*** /etc/php/7.0/fpm/php.ini
ls: cannot access '/etc/php/7.0/fpm/php.ini': No such file or directory
*** /etc/sudoers
-r--r----- 1 root root 784 Dec 30 22:27 /etc/sudoers
*** /etc/systemd/system/phoniebox*
-rw-r--r-- 1 root root 295 Dec 30 22:27 /etc/systemd/system/phoniebox-rfid-reader.service
ls: cannot access '/etc/systemd/system/phoniebox-startup-sound.service': No such file or directory
-rw-r--r-- 1 root root 322 Dec 30 22:51 /etc/systemd/system/phoniebox-gpio-buttons.service
-rw-r--r-- 1 root root 291 Dec 30 22:27 /etc/systemd/system/phoniebox-idle-watchdog.service
*** /etc/mpd.conf
-rw-r----- 1 mpd audio 14K Dec 30 23:39 /etc/mpd.conf
music_directory		"/home/pi/RPi-Jukebox-RFID/shared/audiofolders"
# music_directory are changed.
# symbolic links outside of the configured music_directory.
# symbolic links inside of the configured music_directory.
	mixer_control	"Headphone"		# optional
#	mixer_control	"PCM"		# optional
*** /etc/dhcpcd.conf
-rw-rw-r-- 1 root netdev 1.8K Nov 13  2019 /etc/dhcpcd.conf
#static ip_address=<IP_ADDRESS>/24
#static ip_address=<IP_ADDRESS>/24
#static routers=<IP_ADDRESS>
#static routers=<IP_ADDRESS>
option domain_name_servers, domain_name, domain_search, host_name
#static domain_name_servers=<IP_ADDRESS> <IP_ADDRESS> fd51:42f8:caae:d92e::1
#static domain_name_servers=<IP_ADDRESS>
*** /etc/wpa_supplicant/wpa_supplicant.conf
-rw------- 1 root root 186 Dec 30 18:54 /etc/wpa_supplicant/wpa_supplicant.conf
country=DE
************************************
*** +Spotify Edition

*** /etc/locale.gen
-rw-r--r-- 1 root root 9.2K Dec  2 12:38 /etc/locale.gen
*** /etc/locale.gen
-rw-r--r-- 1 root root 9.2K Dec  2 12:38 /etc/locale.gen
*** /etc/mopidy/mopidy.conf
ls: cannot access '/etc/mopidy/mopidy.conf': No such file or directory
cat: /etc/mopidy/mopidy.conf: No such file or directory
*** ~/.config/mopidy/mopidy.conf
ls: cannot access '/home/pi/.config/mopidy/mopidy.conf': No such file or directory
cat: /home/pi/.config/mopidy/mopidy.conf: No such file or directory

Software
Base image and version
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
Branch / Release
On branch master
Your branch is up to date with 'origin/master'.
Installscript
Hardware
RaspberryPi version
Raspberry Pi 4 Model B Rev 1.1
RFID Reader
Neuftech
Soundcard
pifi dac+
Other notable hardware
buttons not used so far

What's the output of tail -n 500 /var/log/syslog?

What's the output of tail -n 500 /var/log/syslog?

aktuell läuft es... warte auf den Abbruch;-)
MPD service thrown an exception...?!
Jan  1 15:49:20 pipi01 systemd[1]: Started User Manager for UID 1000.
Jan  1 15:49:20 pipi01 systemd[1162]: Starting Music Player Daemon...
Jan  1 15:49:20 pipi01 systemd[1]: Started Session 1 of user pi.
Jan  1 15:49:21 pipi01 mpd: exception: Failed to bind to '[::1]:6600'
Jan  1 15:49:21 pipi01 mpd: exception: nested: Failed to bind socket: Address already in use
Jan  1 15:49:21 pipi01 systemd[1162]: mpd.service: Main process exited, code=exited, status=1/FAILURE
Jan  1 15:49:21 pipi01 systemd[1162]: mpd.service: Failed with result 'exit-code'.
Jan  1 15:49:21 pipi01 systemd[1162]: Failed to start Music Player Daemon.
Jan  1 15:49:21 pipi01 systemd[1162]: Reached target Default.
Jan  1 15:49:21 pipi01 systemd[1162]: Startup finished in 741ms.
Jan  1 15:49:21 pipi01 dhcpcd[581]: wlan0: no IPv6 Routers available
Jan  1 15:49:30 pipi01 systemd[1]: systemd-fsckd.service: Succeeded.
Jan  1 15:58:34 pipi01 systemd-timesyncd[320]: Synchronized to time server for the first time <IP_ADDRESS>:123 (2.debian.pool.ntp.org).

Jan  1 15:49:20 pipi01 systemd[1]: Started User Manager for UID 1000.
Jan  1 15:49:20 pipi01 systemd[1162]: Starting Music Player Daemon...
Jan  1 15:49:20 pipi01 systemd[1]: Started Session 1 of user pi.
Jan  1 15:49:21 pipi01 mpd: exception: Failed to bind to '[::1]:6600'
Jan  1 15:49:21 pipi01 mpd: exception: nested: Failed to bind socket: Address already in use
Jan  1 15:49:21 pipi01 systemd[1162]: mpd.service: Main process exited, code=exited, status=1/FAILURE
Jan  1 15:49:21 pipi01 systemd[1162]: mpd.service: Failed with result 'exit-code'.
Jan  1 15:49:21 pipi01 systemd[1162]: Failed to start Music Player Daemon.
Jan  1 15:49:21 pipi01 systemd[1162]: Reached target Default.
Jan  1 15:49:21 pipi01 systemd[1162]: Startup finished in 741ms.
Jan  1 15:49:21 pipi01 dhcpcd[581]: wlan0: no IPv6 Routers available
Jan  1 15:49:30 pipi01 systemd[1]: systemd-fsckd.service: Succeeded.
Jan  1 15:58:34 pipi01 systemd-timesyncd[320]: Synchronized to time server for the first time <IP_ADDRESS>:123 (2.debian.pool.ntp.org).

Jan  1 15:58:36 pipi01 kernel: [   39.940136] pcm512x 1-004d: No SCLK, using BCLK: -2
Jan  1 15:58:42 pipi01 systemd[1]: systemd-hostnamed.service: Succeeded.
Jan  1 15:59:17 pipi01 systemd[1]: phoniebox-idle-watchdog.service: Succeeded.
Jan  1 15:59:36 pipi01 systemd[1]<EMAIL_ADDRESS>Succeeded.
Jan  1 15:59:36 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  1 15:59:36 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 1.
Jan  1 15:59:36 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  1 15:59:36 pipi01 systemd[1]: Started Getty on tty1.

Jan  1 16:02:11 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  1 16:02:11 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 2.
Jan  1 16:02:11 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  1 16:02:11 pipi01 systemd[1]: Started Getty on tty1.

Jan  1 15:58:36 pipi01 kernel: [   39.940136] pcm512x 1-004d: No SCLK, using BCLK: -2
Jan  1 15:58:42 pipi01 systemd[1]: systemd-hostnamed.service: Succeeded.
Jan  1 15:59:17 pipi01 systemd[1]: phoniebox-idle-watchdog.service: Succeeded.
Jan  1 15:59:36 pipi01 systemd[1]<EMAIL_ADDRESS>Succeeded.
Jan  1 15:59:36 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  1 15:59:36 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 1.
Jan  1 15:59:36 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  1 15:59:36 pipi01 systemd[1]: Started Getty on tty1.

Jan  1 16:02:11 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  1 16:02:11 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 2.
Jan  1 16:02:11 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  1 16:02:11 pipi01 systemd[1]: Started Getty on tty1.
 Do the files work in another player?

Looks pretty normal. Do the files work in another player?

Just had this first file for testing and then the problem showed up:
U can get it there.
https://www.gratis-hoerspiele.de/go/seidenpfote
I will get a second mp3 and test it with that...

Just had this first file for testing and then the problem showed up:
U can get it there.
https://www.gratis-hoerspiele.de/go/seidenpfote
I will get a second mp3 and test it with that...

Happens also with other file.
BTW Don have any hard buttons connected so far, just card reader, audio card, battery hat and speaker...

Jan  1 17:06:53 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  1 17:06:53 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 8.
Jan  1 17:06:53 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  1 17:06:53 pipi01 systemd[1]: Started Getty on tty1.

Jan  1 17:07:00 pipi01 python3[590]: Traceback (most recent call last):
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  1 17:07:00 pipi01 python3[590]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  1 17:07:00 pipi01 python3[590]:     self.state if state is None else state)
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  1 17:07:00 pipi01 python3[590]:     method(ticks, state)
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  1 17:07:00 pipi01 python3[590]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  1 17:07:00 pipi01 python3[590]:     self._fire_activated()
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  1 17:07:00 pipi01 python3[590]:     super(HoldMixin, self)._fire_activated()
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  1 17:07:00 pipi01 python3[590]:     self.when_activated()
Jan  1 17:07:00 pipi01 python3[590]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next

Happens also with other file.
BTW Don have any hard buttons connected so far, just card reader, audio card, battery hat and speaker...

Jan  1 17:06:53 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  1 17:06:53 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 8.
Jan  1 17:06:53 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  1 17:06:53 pipi01 systemd[1]: Started Getty on tty1.

Jan  1 17:07:00 pipi01 python3[590]: Traceback (most recent call last):
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  1 17:07:00 pipi01 python3[590]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  1 17:07:00 pipi01 python3[590]:     self.state if state is None else state)
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  1 17:07:00 pipi01 python3[590]:     method(ticks, state)
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  1 17:07:00 pipi01 python3[590]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  1 17:07:00 pipi01 python3[590]:     self._fire_activated()
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  1 17:07:00 pipi01 python3[590]:     super(HoldMixin, self)._fire_activated()
Jan  1 17:07:00 pipi01 python3[590]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  1 17:07:00 pipi01 python3[590]:     self.when_activated()
Jan  1 17:07:00 pipi01 python3[590]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next

Still not solved...

Jan  2 00:35:48 pipi01 systemd[1]: Stopped OLED Phoniebox Display Service.
Jan  2 00:35:55 pipi01 kernel: [10152.133972] pcm512x 1-004d: No SCLK, using BCLK: -2
Jan  2 00:39:01 pipi01 CRON[1073]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Jan  2 00:39:14 pipi01 systemd[1]: Starting Clean php session files...
Jan  2 00:39:14 pipi01 systemd[1]: phpsessionclean.service: Succeeded.
Jan  2 00:39:14 pipi01 systemd[1]: Started Clean php session files.

Was bedeutet Jan  2 00:50:40 pipi01 mpd: exception: Not playing
Jan  2 00:50:40 pipi01 python3[599]: mpd error: Not playing¨??

I did also stop the OLED as it also uses I2C, as the soundcard... but no success.
Jan  2 00:35:48 pipi01 systemd[1]: Stopped OLED Phoniebox Display Service.
Jan  2 00:35:55 pipi01 kernel: [10152.133972] pcm512x 1-004d: No SCLK, using BCLK: -2
Jan  2 00:39:01 pipi01 CRON[1073]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi)
Jan  2 00:39:14 pipi01 systemd[1]: Starting Clean php session files...
Jan  2 00:39:14 pipi01 systemd[1]: phpsessionclean.service: Succeeded.
Jan  2 00:39:14 pipi01 systemd[1]: Started Clean php session files.

Was bedeutet Jan  2 00:50:40 pipi01 mpd: exception: Not playing
Jan  2 00:50:40 pipi01 python3[599]: mpd error: Not playing¨??

The sclk message is just an info that there sound card doesn't use the raspberry clock, see https://support.hifiberry.com/hc/en-us/community/posts/201847081-No-SCLK-using-BCLK-2

The sclk message is just an info that there sound card doesn't use the raspberry clock, see https://support.hifiberry.com/hc/en-us/community/posts/201847081-No-SCLK-using-BCLK-2

Please show the outputs of
cat /proc/asound/modules
cat /etc/mpd.conf
cat /etc/asound.conf
alsamixer
amixer scontrols
aplay -l

Please show the outputs of
cat /proc/asound/modules
cat /etc/mpd.conf
cat /etc/asound.conf
alsamixer
amixer scontrols
aplay -l

@s-martin Thanks for supporting me. Strange thing is that audio always starts AND the duration of playing is randomly...
pi@pipi01:~ $ cat /etc/mpd.conf
Files and directories

This setting controls the top directory which MPD will search
music_directory		"/home/pi/RPi-Jukebox-RFID/shared/audiofolders"

This setting sets the MPD internal playlist directory.
playlist_directory		"/home/pi/RPi-Jukebox-RFID/playlists"

This setting sets the location of the MPD database.
db_file			"/var/lib/mpd/tag_cache"

These settings are the locations for the daemon log files for the daemon.
log_file			"syslog"

This setting sets the location of the file which stores the process ID
pid_file			"/run/mpd/pid"

This setting sets the location of the file which contains information about most variables
state_file			"/var/lib/mpd/state"

The location of the sticker database.
sticker_file                   "/var/lib/mpd/sticker.sql"

###############################################################################
General music daemon options

This setting specifies the user that MPD will run as. MPD should never run as
root and you may use this setting to make MPD change its user ID after
initialization. This setting is disabled by default and MPD is run as the
current user.

user				"root"

This setting specifies the group that MPD will run as.
#group                          "nogroup"

This setting sets the address for the daemon to listen on.
For network
bind_to_address		"localhost"

This setting is the TCP port that is desired for the daemon to get assigned to
port				"6600"

This setting controls the type of information which is logged.
log_level			"default"
log_level			"verbose"

This setting enables automatic update of MPD's database
auto_update    "yes"

Limit the depth of the directories being watched
auto_update_depth "10"

###############################################################################
Input

input {
plugin "curl"
proxy "proxy.isp.com:8080"
proxy_user "user"
proxy_password "password"
}
QOBUZ input plugin
input {
enabled    "no"
plugin     "qobuz"
app_id     "ID"
app_secret "SECRET"
username   "USERNAME"
password   "PASSWORD"
format_id  "N"
}
TIDAL input plugin
input {
enabled      "no"
plugin       "tidal"
token        "TOKEN"
username     "USERNAME"
password     "PASSWORD"
audioquality "Q"
}
Decoder

decoder {
plugin                  "hybrid_dsd"
enabled                 "no"
gapless                 "no"
}

###############################################################################
Audio Output

MPD supports various audio output types

An example of an ALSA output:

audio_output {
type		"alsa"
name		"Pipis PIFI DAC"
device		"hw:0,0"	# optional, HIER nur ein Device, keine Subdevices
mixer_type      "software"      # optional
mixer_device	"default"	# optional
mixer_control	"Digital"		# optional
mixer_index	"0"		# optional
enabled         "yes"

}
Normalization automatic volume adjustments

This setting enables on-the-fly normalization volume adjustment.
volume_normalization		"yes"

###############################################################################
Character Encoding
filesystem_charset		"UTF-8"

###############################################################################
pi@pipi01:~ $ cat /proc/asound/modules
0 snd_soc_hifiberry_dacplus
pi@pipi01:~ $ cat /etc/asound.conf
cat: /etc/asound.conf: No such file or directory

FRÜHER: Raspbian Jessie: sudo nano /etc/asound.conf (https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/updating-alsa-config)
-Earlier versions of Raspbian store sound settings in different places, with different syntax… For Raspbian Jessie, run sudo nano /etc/asound.conf

pi@pipi01:~ $ amixer scontrols
Simple mixer control 'DSP Program',0
Simple mixer control 'Analogue',0
Simple mixer control 'Analogue Playback Boost',0
Simple mixer control 'Auto Mute',0
Simple mixer control 'Auto Mute Mono',0
Simple mixer control 'Auto Mute Time Left',0
Simple mixer control 'Auto Mute Time Right',0
Simple mixer control 'Clock Missing Period',0
Simple mixer control 'Deemphasis',0
Simple mixer control 'Digital',0
Simple mixer control 'Max Overclock DAC',0
Simple mixer control 'Max Overclock DSP',0
Simple mixer control 'Max Overclock PLL',0
Simple mixer control 'Volume Ramp Down Emergency Rate',0
Simple mixer control 'Volume Ramp Down Emergency Step',0
Simple mixer control 'Volume Ramp Down Rate',0
Simple mixer control 'Volume Ramp Down Step',0
Simple mixer control 'Volume Ramp Up Rate',0
Simple mixer control 'Volume Ramp Up Step',0
pi@pipi01:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 [HiFiBerry DAC+ HiFi pcm512x-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

@s-martin Thanks for supporting me. Strange thing is that audio always starts AND the duration of playing is randomly...
pi@pipi01:~ $ cat /etc/mpd.conf
Files and directories

This setting controls the top directory which MPD will search
music_directory		"/home/pi/RPi-Jukebox-RFID/shared/audiofolders"

This setting sets the MPD internal playlist directory.
playlist_directory		"/home/pi/RPi-Jukebox-RFID/playlists"

This setting sets the location of the MPD database.
db_file			"/var/lib/mpd/tag_cache"

These settings are the locations for the daemon log files for the daemon.
log_file			"syslog"

This setting sets the location of the file which stores the process ID
pid_file			"/run/mpd/pid"

This setting sets the location of the file which contains information about most variables
state_file			"/var/lib/mpd/state"

The location of the sticker database.
sticker_file                   "/var/lib/mpd/sticker.sql"

###############################################################################
General music daemon options

This setting specifies the user that MPD will run as. MPD should never run as
root and you may use this setting to make MPD change its user ID after
initialization. This setting is disabled by default and MPD is run as the
current user.

user				"root"

This setting specifies the group that MPD will run as.
#group                          "nogroup"

This setting sets the address for the daemon to listen on.
For network
bind_to_address		"localhost"

This setting is the TCP port that is desired for the daemon to get assigned to
port				"6600"

This setting controls the type of information which is logged.
log_level			"default"
log_level			"verbose"

This setting enables automatic update of MPD's database
auto_update    "yes"

Limit the depth of the directories being watched
auto_update_depth "10"

###############################################################################
Input

input {
plugin "curl"
proxy "proxy.isp.com:8080"
proxy_user "user"
proxy_password "password"
}
QOBUZ input plugin
input {
enabled    "no"
plugin     "qobuz"
app_id     "ID"
app_secret "SECRET"
username   "USERNAME"
password   "PASSWORD"
format_id  "N"
}
TIDAL input plugin
input {
enabled      "no"
plugin       "tidal"
token        "TOKEN"
username     "USERNAME"
password     "PASSWORD"
audioquality "Q"
}
Decoder

decoder {
plugin                  "hybrid_dsd"
enabled                 "no"
gapless                 "no"
}

###############################################################################
Audio Output

MPD supports various audio output types

An example of an ALSA output:

audio_output {
type		"alsa"
name		"Pipis PIFI DAC"
device		"hw:0,0"	# optional, HIER nur ein Device, keine Subdevices
mixer_type      "software"      # optional
mixer_device	"default"	# optional
mixer_control	"Digital"		# optional
mixer_index	"0"		# optional
enabled         "yes"

}
Normalization automatic volume adjustments

This setting enables on-the-fly normalization volume adjustment.
volume_normalization		"yes"

###############################################################################
Character Encoding
filesystem_charset		"UTF-8"

###############################################################################
pi@pipi01:~ $ cat /proc/asound/modules
0 snd_soc_hifiberry_dacplus
pi@pipi01:~ $ cat /etc/asound.conf
cat: /etc/asound.conf: No such file or directory

FRÜHER: Raspbian Jessie: sudo nano /etc/asound.conf (https://learn.adafruit.com/usb-audio-cards-with-a-raspberry-pi/updating-alsa-config)
-Earlier versions of Raspbian store sound settings in different places, with different syntax… For Raspbian Jessie, run sudo nano /etc/asound.conf

pi@pipi01:~ $ amixer scontrols
Simple mixer control 'DSP Program',0
Simple mixer control 'Analogue',0
Simple mixer control 'Analogue Playback Boost',0
Simple mixer control 'Auto Mute',0
Simple mixer control 'Auto Mute Mono',0
Simple mixer control 'Auto Mute Time Left',0
Simple mixer control 'Auto Mute Time Right',0
Simple mixer control 'Clock Missing Period',0
Simple mixer control 'Deemphasis',0
Simple mixer control 'Digital',0
Simple mixer control 'Max Overclock DAC',0
Simple mixer control 'Max Overclock DSP',0
Simple mixer control 'Max Overclock PLL',0
Simple mixer control 'Volume Ramp Down Emergency Rate',0
Simple mixer control 'Volume Ramp Down Emergency Step',0
Simple mixer control 'Volume Ramp Down Rate',0
Simple mixer control 'Volume Ramp Down Step',0
Simple mixer control 'Volume Ramp Up Rate',0
Simple mixer control 'Volume Ramp Up Step',0
pi@pipi01:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 [HiFiBerry DAC+ HiFi pcm512x-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

You could set log_level			"default" temporarily to  log_level			"verbose" (maybe with a reboot) to get more info on n the logfile.

You could set log_level			"default" temporarily to  log_level			"verbose" (maybe with a reboot) to get more info on n the logfile.

@s-martin: Why is the command exited with status code 1?
Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
You should know better why the python script logs to syslog....

Jan  3 15:43:06 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  3 15:43:06 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 2.
Jan  3 15:43:06 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  3 15:43:06 pipi01 systemd[1]: Started Getty on tty1.

Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call

@s-martin: Why is the command exited with status code 1?
Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
You should know better why the python script logs to syslog....

Jan  3 15:43:06 pipi01 systemd[1]<EMAIL_ADDRESS>Service has no hold-off time (RestartSec=0), scheduling restart.
Jan  3 15:43:06 pipi01 systemd[1]<EMAIL_ADDRESS>Scheduled restart job, restart counter is at 2.
Jan  3 15:43:06 pipi01 systemd[1]: Stopped Getty on tty1.
Jan  3 15:43:06 pipi01 systemd[1]: Started Getty on tty1.

Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
Jan  3 15:46:10 pipi01 python3[581]:     raise CalledProcessError(retcode, cmd)
Jan  3 15:46:10 pipi01 python3[581]: subprocess.CalledProcessError: Command '/home/pi/RPi-Jukebox-RFID/scripts/playout_controls.sh -c=playernext' returned non-zero exit status 1.
Jan  3 15:46:10 pipi01 python3[581]: Traceback (most recent call last):
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/rpigpio.py", line 244, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     super(RPiGPIOPin, self)._call_when_changed()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/local.py", line 143, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     self.state if state is None else state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 293, in _call_when_changed
Jan  3 15:46:10 pipi01 python3[581]:     method(ticks, state)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/input_devices.py", line 197, in _pin_changed
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_events(ticks, bool(self._state_to_value(state)))
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 368, in _fire_events
Jan  3 15:46:10 pipi01 python3[581]:     self._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan  3 15:46:10 pipi01 python3[581]:     self.when_activated()
Jan  3 15:46:10 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan  3 15:46:10 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
Jan  3 15:46:10 pipi01 python3[581]:   File "/usr/lib/python3.7/subprocess.py", line 347, in check_call

What I don't understand in the log in the first post is stated you use the current Phoniebox version 2.2, but in syslog there's an error coming from gpio_buttons.py, which isn't used anymore in 2.2.
Did you upgrade from a version <2.1?

What I don't understand in the log in the first post is stated you use the current Phoniebox version 2.2, but in syslog there's an error coming from gpio_buttons.py, which isn't used anymore in 2.2.
Did you upgrade from a version <2.1?

No, just did use the one line installer:
cd; rm buster-install-*; wget https://raw.githubusercontent.com/MiczFlor/RPi-Jukebox-RFID/master/scripts/installscripts/buster-install-default.sh; chmod +x buster-install-default.sh; ./buster-install-default.sh
Hm, maybe the installer still installs some old stuff??

No, just did use the one line installer:
cd; rm buster-install-*; wget https://raw.githubusercontent.com/MiczFlor/RPi-Jukebox-RFID/master/scripts/installscripts/buster-install-default.sh; chmod +x buster-install-default.sh; ./buster-install-default.sh
Hm, maybe the installer still installs some old stuff??

Why do you have a directory /home/pi/oled_phoniebox/, we install in /home/pi/RPi-Jukebox-RFID
Please post the following outputs:

cat /home/pi/RPi-Jukebox-RFID/settings/version-number
cat /home/pi/RPi-Jukebox-RFID/settings/gpio_settings.ini
cat /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons/gpio-buttons.py
sudo systemctl status phoniebox-gio-control
sudo systemctl status phoniebox-gio-buttons

Why do you have a directory /home/pi/oled_phoniebox/, we install in /home/pi/RPi-Jukebox-RFID
Please post the following outputs:

cat /home/pi/RPi-Jukebox-RFID/settings/version-number
cat /home/pi/RPi-Jukebox-RFID/settings/gpio_settings.ini
cat /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons/gpio-buttons.py
sudo systemctl status phoniebox-gio-control
sudo systemctl status phoniebox-gio-buttons

Was using the part in the manual: Oled Display, One line installer
cd; rm o4p_installer.sh; wget https://raw.githubusercontent.com/splitti/oled_phoniebox/master/scripts/install/o4p_installer.sh; chmod +x o4p_installer.sh; ./o4p_installer.sh
BTW: existing dirs:
-rw-r--r--  1 pi   pi     297 Dec 30 22:16 PhonieboxInstall.conf
drwxr-xr-x 15 pi   pi    4096 Dec 30 22:27 RPi-Jukebox-RFID
-rw-r--r--  1 pi   pi    5512 Jan  2 10:26 bla
-rwxr-xr-x  1 pi   pi   48510 Dec 30 22:07 buster-install-default.sh
-rwxr-xr-x  1 pi   pi   23429 Dec 30 22:50 o4p_installer.sh
drwxr-xr-x  8 pi   pi    4096 Dec 30 22:51 oled_phoniebox
drwxr-xr-x  2 pi   pi    4096 Dec 30 22:32 phoniebox_logs

**cat /home/pi/RPi-Jukebox-RFID/settings/version-number** --> 2.2

**cat /home/pi/RPi-Jukebox-RFID/settings/gpio_settings.ini**

[DEFAULT]
enabled: True
[VolumeControl]
enabled: True
Type: TwoButtonControl ;or RotaryEncoder
PinUp: 5
PinDown: 6
pull_up: True
hold_time: 0.3
hold_repeat: True
timeBase: 0.1 ;only for RotaryEncoder
functionCallDown: functionCallVolD
functionCallUp: functionCallVolU
functionCallTwoButtons: functionCallVol0 ;only for TwoButtonControl
[PrevNextControl]
enabled: True
Type: TwoButtonControl
Pin1: 00
Pin2: 01
functionCall1: functionCallPlayerPrev
functionCall2: functionCallPlayerNext
functionCallTwoButtons: None
pull_up: True
hold_time: 0.3
hold_repeat: False
[PlayPause]
enabled: True
Type: Button
Pin: 12
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPause
[Shutdown]
enabled: True
Type:  Button
Pin: 13
pull_up: True
hold_time: 2
functionCall: functionCallShutdown
[Volume0]
enabled: False
Type:  Button
Pin: 17
pull_up: True
hold_time: 0.3
functionCall: functionCallVol0
[VolumeUp]
enabled: False
Type:  Button
Pin: 16
pull_up: True
hold_time: 0.3
hold_repeat: True
functionCall: functionCallVolU
[VolumeDown]
enabled: False
Type:  Button
Pin: 19
pull_up: True
hold_time: 0.3
hold_repeat: True
functionCall: functionCallVolD
[NextSong]
enabled: False
Type:  Button
Pin: 26
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerNext
[PrevSong]
enabled: False
Type:  Button
Pin: 20
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPrev
[Halt]
enabled: False
Type:  Button
Pin: 21
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPauseForce
**cat /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons/gpio-buttons.py** --> No such file or directory

**sudo systemctl status phoniebox-gio-control** --> Unit phoniebox-gio-control.service could not be found

**sudo systemctl status phoniebox-gio-buttons** --> Unit phoniebox-gio-buttons.service could not be found

Was using the part in the manual: Oled Display, One line installer
cd; rm o4p_installer.sh; wget https://raw.githubusercontent.com/splitti/oled_phoniebox/master/scripts/install/o4p_installer.sh; chmod +x o4p_installer.sh; ./o4p_installer.sh
BTW: existing dirs:
-rw-r--r--  1 pi   pi     297 Dec 30 22:16 PhonieboxInstall.conf
drwxr-xr-x 15 pi   pi    4096 Dec 30 22:27 RPi-Jukebox-RFID
-rw-r--r--  1 pi   pi    5512 Jan  2 10:26 bla
-rwxr-xr-x  1 pi   pi   48510 Dec 30 22:07 buster-install-default.sh
-rwxr-xr-x  1 pi   pi   23429 Dec 30 22:50 o4p_installer.sh
drwxr-xr-x  8 pi   pi    4096 Dec 30 22:51 oled_phoniebox
drwxr-xr-x  2 pi   pi    4096 Dec 30 22:32 phoniebox_logs

**cat /home/pi/RPi-Jukebox-RFID/settings/version-number** --> 2.2

**cat /home/pi/RPi-Jukebox-RFID/settings/gpio_settings.ini**

[DEFAULT]
enabled: True
[VolumeControl]
enabled: True
Type: TwoButtonControl ;or RotaryEncoder
PinUp: 5
PinDown: 6
pull_up: True
hold_time: 0.3
hold_repeat: True
timeBase: 0.1 ;only for RotaryEncoder
functionCallDown: functionCallVolD
functionCallUp: functionCallVolU
functionCallTwoButtons: functionCallVol0 ;only for TwoButtonControl
[PrevNextControl]
enabled: True
Type: TwoButtonControl
Pin1: 00
Pin2: 01
functionCall1: functionCallPlayerPrev
functionCall2: functionCallPlayerNext
functionCallTwoButtons: None
pull_up: True
hold_time: 0.3
hold_repeat: False
[PlayPause]
enabled: True
Type: Button
Pin: 12
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPause
[Shutdown]
enabled: True
Type:  Button
Pin: 13
pull_up: True
hold_time: 2
functionCall: functionCallShutdown
[Volume0]
enabled: False
Type:  Button
Pin: 17
pull_up: True
hold_time: 0.3
functionCall: functionCallVol0
[VolumeUp]
enabled: False
Type:  Button
Pin: 16
pull_up: True
hold_time: 0.3
hold_repeat: True
functionCall: functionCallVolU
[VolumeDown]
enabled: False
Type:  Button
Pin: 19
pull_up: True
hold_time: 0.3
hold_repeat: True
functionCall: functionCallVolD
[NextSong]
enabled: False
Type:  Button
Pin: 26
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerNext
[PrevSong]
enabled: False
Type:  Button
Pin: 20
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPrev
[Halt]
enabled: False
Type:  Button
Pin: 21
pull_up: True
hold_time: 0.3
functionCall: functionCallPlayerPauseForce
**cat /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons/gpio-buttons.py** --> No such file or directory

**sudo systemctl status phoniebox-gio-control** --> Unit phoniebox-gio-control.service could not be found

**sudo systemctl status phoniebox-gio-buttons** --> Unit phoniebox-gio-buttons.service could not be found

**cat /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons/gpio-buttons.py** --> No such file or directory

BUT
cat oled_phoniebox/scripts/gpio-buttons/gpio-buttons.py
#!/usr/bin/python3
from gpiozero import Button
from signal import pause
from subprocess import check_call
from time import sleep
This script will block any I2S DAC e.g. from Hifiberry, Justboom, ES9023, PCM5102A
due to the assignment of GPIO 19 and 21 to a buttons
2018-10-31
Added the function on holding volume + - buttons to change the volume in 0.3s interval

2018-10-15
this script has the pull_up=True for all pins. See the following link for additional info:
https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/259#issuecomment-430007446

2017-12-12
This script was copied from the following RPi forum post:
https://forum-raspberrypi.de/forum/thread/13144-projekt-jukebox4kids-jukebox-fuer-kinder/?postID=312257#post312257
I have not yet had the time to test is, so I placed it in the misc folder.
If anybody has ideas or tests or experience regarding this solution, please create pull requests or contact me.
jukebox4kidsPath = "/home/pi/RPi-Jukebox-RFID"
def def_shutdown():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=shutdown", shell=True)
def def_volU():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=volumeup", shell=True)
def def_volD():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=volumedown", shell=True)
def def_vol0():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=mute", shell=True)
def def_next():
for x in range(0, 19):
if btn_next.is_pressed == True :
sleep(0.1)
else:
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
break
def def_contrastup():
if btn_prev.is_pressed == True :
check_call("/usr/bin/touch /tmp/o4p_overview.temp", shell=True)
else:
check_call("/usr/bin/python3 /home/pi/oled_phoniebox/scripts/contrast/contrast_up.py", shell=True)
def def_contrastdown():
if btn_next.is_pressed == True :
check_call("/usr/bin/touch /tmp/o4p_overview.temp", shell=True)
else:
check_call("/usr/bin/python3 /home/pi/oled_phoniebox/scripts/contrast/contrast_down.py", shell=True)
def def_prev():
for x in range(0, 19):
if btn_prev.is_pressed == True :
sleep(0.1)
else:
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerprev", shell=True)
break
def def_halt():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerpause", shell=True)
def toggle_display():
check_call("/home/pi/oled_phoniebox/scripts/toggle_display/toggle_display.sh", shell=True)
#btn_shut = Button(3, hold_time=2)
#btn_vol0 = Button(21,pull_up=True)
btn_volup = Button(16,pull_up=True,hold_time=0.3,hold_repeat=True)
btn_voldown = Button(13,pull_up=True,hold_time=0.3,hold_repeat=True)
btn_next = Button(26,pull_up=True,hold_time=2.0,hold_repeat=False)
btn_prev = Button(27,pull_up=True,hold_time=2.0,hold_repeat=False)
btn_halt = Button(12,pull_up=True,hold_time=2.0,hold_repeat=False)
#btn_shut.when_held = def_shutdown
#btn_vol0.when_pressed = def_vol0
btn_volup.when_pressed = def_volU
#When the Volume Up button was held for more than 0.3 seconds every 0.3 seconds he will call a ra$
btn_volup.when_held = def_volU
btn_voldown.when_pressed = def_volD
#When the Volume Down button was held for more than 0.3 seconds every 0.3 seconds he will lower t$
btn_voldown.when_held = def_volD
btn_next.when_pressed = def_next
btn_next.when_held = def_contrastup
btn_prev.when_pressed = def_prev
btn_prev.when_held = def_contrastdown
btn_halt.when_pressed = def_halt
btn_halt.when_held = toggle_display
pause()

**cat /home/pi/RPi-Jukebox-RFID/scripts/gpio-buttons/gpio-buttons.py** --> No such file or directory

BUT
cat oled_phoniebox/scripts/gpio-buttons/gpio-buttons.py
#!/usr/bin/python3
from gpiozero import Button
from signal import pause
from subprocess import check_call
from time import sleep
This script will block any I2S DAC e.g. from Hifiberry, Justboom, ES9023, PCM5102A
due to the assignment of GPIO 19 and 21 to a buttons
2018-10-31
Added the function on holding volume + - buttons to change the volume in 0.3s interval

2018-10-15
this script has the pull_up=True for all pins. See the following link for additional info:
https://github.com/MiczFlor/RPi-Jukebox-RFID/issues/259#issuecomment-430007446

2017-12-12
This script was copied from the following RPi forum post:
https://forum-raspberrypi.de/forum/thread/13144-projekt-jukebox4kids-jukebox-fuer-kinder/?postID=312257#post312257
I have not yet had the time to test is, so I placed it in the misc folder.
If anybody has ideas or tests or experience regarding this solution, please create pull requests or contact me.
jukebox4kidsPath = "/home/pi/RPi-Jukebox-RFID"
def def_shutdown():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=shutdown", shell=True)
def def_volU():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=volumeup", shell=True)
def def_volD():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=volumedown", shell=True)
def def_vol0():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=mute", shell=True)
def def_next():
for x in range(0, 19):
if btn_next.is_pressed == True :
sleep(0.1)
else:
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)
break
def def_contrastup():
if btn_prev.is_pressed == True :
check_call("/usr/bin/touch /tmp/o4p_overview.temp", shell=True)
else:
check_call("/usr/bin/python3 /home/pi/oled_phoniebox/scripts/contrast/contrast_up.py", shell=True)
def def_contrastdown():
if btn_next.is_pressed == True :
check_call("/usr/bin/touch /tmp/o4p_overview.temp", shell=True)
else:
check_call("/usr/bin/python3 /home/pi/oled_phoniebox/scripts/contrast/contrast_down.py", shell=True)
def def_prev():
for x in range(0, 19):
if btn_prev.is_pressed == True :
sleep(0.1)
else:
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerprev", shell=True)
break
def def_halt():
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerpause", shell=True)
def toggle_display():
check_call("/home/pi/oled_phoniebox/scripts/toggle_display/toggle_display.sh", shell=True)
#btn_shut = Button(3, hold_time=2)
#btn_vol0 = Button(21,pull_up=True)
btn_volup = Button(16,pull_up=True,hold_time=0.3,hold_repeat=True)
btn_voldown = Button(13,pull_up=True,hold_time=0.3,hold_repeat=True)
btn_next = Button(26,pull_up=True,hold_time=2.0,hold_repeat=False)
btn_prev = Button(27,pull_up=True,hold_time=2.0,hold_repeat=False)
btn_halt = Button(12,pull_up=True,hold_time=2.0,hold_repeat=False)
#btn_shut.when_held = def_shutdown
#btn_vol0.when_pressed = def_vol0
btn_volup.when_pressed = def_volU
#When the Volume Up button was held for more than 0.3 seconds every 0.3 seconds he will call a ra$
btn_volup.when_held = def_volU
btn_voldown.when_pressed = def_volD
#When the Volume Down button was held for more than 0.3 seconds every 0.3 seconds he will lower t$
btn_voldown.when_held = def_volD
btn_next.when_pressed = def_next
btn_next.when_held = def_contrastup
btn_prev.when_pressed = def_prev
btn_prev.when_held = def_contrastdown
btn_halt.when_pressed = def_halt
btn_halt.when_held = toggle_display
pause()

sudo systemctl status phoniebox-gio-control --> Unit phoniebox-gio-control.service could not be found
sudo systemctl status phoniebox-gio-buttons --> Unit phoniebox-gio-buttons.service could not be found

Sorry, there was a typo, please use:
sudo systemctl status phoniebox-gpio-control
sudo systemctl status phoniebox-gpio-buttons

sudo systemctl status phoniebox-gio-control --> Unit phoniebox-gio-control.service could not be found
sudo systemctl status phoniebox-gio-buttons --> Unit phoniebox-gio-buttons.service could not be found

Sorry, there was a typo, please use:
sudo systemctl status phoniebox-gpio-control
sudo systemctl status phoniebox-gpio-buttons

pi@pipi01:~ $ sudo systemctl status phoniebox-gpio-control
● phoniebox-gpio-control.service - Phoniebox GPIO Control Service
Loaded: loaded (/etc/systemd/system/phoniebox-gpio-control.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-01-03 15:37:06 GMT; 6h ago
Main PID: 596 (python3)
Tasks: 2 (limit: 3861)
CGroup: /system.slice/phoniebox-gpio-control.service
└─596 python3 /home/pi/RPi-Jukebox-RFID/components/gpio_control/gpio_control.py
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:GPIODevices.simple_button:add new action
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:adding GPIO-Device, PlayPause
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:adding GPIO-Device, Shutdown
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device Volume0 not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device VolumeUp not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device VolumeDown not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device NextSong not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device PrevSong not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device Halt not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Ready for taking actions
pi@pipi01:~ $ sudo systemctl status phoniebox-gpio-buttons
● phoniebox-gpio-buttons.service - Phoniebox GPIO Buttons Service
Loaded: loaded (/etc/systemd/system/phoniebox-gpio-buttons.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-01-03 15:37:06 GMT; 6h ago
Main PID: 581 (python3)
Tasks: 7 (limit: 3861)
CGroup: /system.slice/phoniebox-gpio-buttons.service
└─581 /usr/bin/python3 /home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py
Jan 03 22:01:42 pipi01 python3[581]:     self._fire_activated()
Jan 03 22:01:42 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan 03 22:01:42 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan 03 22:01:42 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan 03 22:01:42 pipi01 python3[581]:     self.when_activated()
Jan 03 22:01:42 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan 03 22:03:03 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)mpd error: Not playing
Jan 03 22:03:16 pipi01 python3[581]: mpd error: Not playing
Jan 03 22:06:50 pipi01 python3[581]: mpd error: Not playing
Jan 03 22:08:55 pipi01 python3[581]: mpd error: Not playing

pi@pipi01:~ $ sudo systemctl status phoniebox-gpio-control
● phoniebox-gpio-control.service - Phoniebox GPIO Control Service
Loaded: loaded (/etc/systemd/system/phoniebox-gpio-control.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-01-03 15:37:06 GMT; 6h ago
Main PID: 596 (python3)
Tasks: 2 (limit: 3861)
CGroup: /system.slice/phoniebox-gpio-control.service
└─596 python3 /home/pi/RPi-Jukebox-RFID/components/gpio_control/gpio_control.py
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:GPIODevices.simple_button:add new action
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:adding GPIO-Device, PlayPause
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:adding GPIO-Device, Shutdown
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device Volume0 not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device VolumeUp not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device VolumeDown not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device NextSong not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device PrevSong not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Device Halt not enabled
Jan 03 15:37:07 pipi01 PhonieboxGPIOControl[596]: INFO:root:Ready for taking actions
pi@pipi01:~ $ sudo systemctl status phoniebox-gpio-buttons
● phoniebox-gpio-buttons.service - Phoniebox GPIO Buttons Service
Loaded: loaded (/etc/systemd/system/phoniebox-gpio-buttons.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-01-03 15:37:06 GMT; 6h ago
Main PID: 581 (python3)
Tasks: 7 (limit: 3861)
CGroup: /system.slice/phoniebox-gpio-buttons.service
└─581 /usr/bin/python3 /home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py
Jan 03 22:01:42 pipi01 python3[581]:     self._fire_activated()
Jan 03 22:01:42 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 397, in _fire_activated
Jan 03 22:01:42 pipi01 python3[581]:     super(HoldMixin, self)._fire_activated()
Jan 03 22:01:42 pipi01 python3[581]:   File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 344, in _fire_activated
Jan 03 22:01:42 pipi01 python3[581]:     self.when_activated()
Jan 03 22:01:42 pipi01 python3[581]:   File "/home/pi/oled_phoniebox/scripts/gpio-buttons/./gpio-buttons.py", line 42, in def_next
Jan 03 22:03:03 pipi01 python3[581]:     check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playernext", shell=True)mpd error: Not playing
Jan 03 22:03:16 pipi01 python3[581]: mpd error: Not playing
Jan 03 22:06:50 pipi01 python3[581]: mpd error: Not playing
Jan 03 22:08:55 pipi01 python3[581]: mpd error: Not playing

I'm not sure what oled_phoniebox uses of original Phoniebox and if they should be installed in parallel. Maybe @splitti can help here.
However Phoniebox 2.2 uses a different implementation for GPIO now and oled_phoniebox uses the old implementation, I'm not sure, if this works.

I'm not sure what oled_phoniebox uses of original Phoniebox and if they should be installed in parallel. Maybe @splitti can help here.
However Phoniebox 2.2 uses a different implementation for GPIO now and oled_phoniebox uses the old implementation, I'm not sure, if this works.

As you said you don't use any buttons you could disable one of the services, e.g.
sudo systemctl stop phoniebox-gpio-control
sudo systemctl disable phoniebox-gpio-control

As you said you don't use any buttons you could disable one of the services, e.g.
sudo systemctl stop phoniebox-gpio-control
sudo systemctl disable phoniebox-gpio-control

ok, I was just following splittis Howto;) Yes, but next step is to connect real buttons...
I was modifying the OLED gpio-buttons.py to use the same keys as gpio_settings.ini. Seems this at least solves the problem, that the phoniebox-gpio-buttons.service now runs without warnings.
In General: Why can the two setting files be merged??

ok, I was just following splittis Howto;) Yes, but next step is to connect real buttons...
I was modifying the OLED gpio-buttons.py to use the same keys as gpio_settings.ini. Seems this at least solves the problem, that the phoniebox-gpio-buttons.service now runs without warnings.
In General: Why can the two setting files be merged??

ok, I was just following splittis Howto;) Yes, but next step is to connect real buttons...
I was modifying the OLED gpio-buttons.py to use the same keys as gpio_settings.ini. Seems this at least solves the problem, that the phoniebox-gpio-buttons.service now runs without warnings.
In General: Why can the two setting files be merged??

ok, I was just following splittis Howto;) Yes, but next step is to connect real buttons...
I was modifying the OLED gpio-buttons.py to use the same keys as gpio_settings.ini. Seems this at least solves the problem, that the phoniebox-gpio-buttons.service now runs without warnings.
In General: Why can the two setting files be merged??


Why change Entity Handle when MarkAsNoLongerNeeded() is called ?

https://github.com/crosire/scripthookvdotnet/blob/421a83571afa7934f9d8f8ec3592c9b327f99ea6/source/scripting/World/Entities/Entity.cs#L1320
I create a Ped, when I no longer use it , I do :
Ped.MarkAsNoLongerNeeded();
However, this changes Ped.Handle to 0, due to mentioned above line in the code.
So, lets say
Ped PreviousPed = (Ped)Entity.FromHandle(Ped.Handle);
or
Ped PreviousPed = new Ped(Ped.Handle);
then when I call :
PreviousPed.Exists() : this returns true

Meaning that the ped handle is still valid, even after I call MarkAsNoLongerNeeded()
So, I dont see the reason why we need to set the Ped.Handle to 0.

Is it just because, SET_ENTITY_AS_NO_LONGER_NEEDED takes a pointer as an input ?

Once it is marked as no longer needed, you should not use it anymore, as such the game clears the handle. SHVDN just replicates that behavior.


Running with max gstreamer debug -ggg causes a crash

While trying to debug another issue, I ran voctocore with -ggg:
❯ python voctocore/voctocore.py -ggg
Traceback (most recent call last):
  File "/home/samw/prog/voctomix/voctocore/voctocore.py", line 111, in <module>
    main()
  File "/home/samw/prog/voctomix/voctocore/voctocore.py", line 98, in main
    voctocore = Voctocore()
  File "/home/samw/prog/voctomix/voctocore/voctocore.py", line 49, in __init__
    self.pipeline = Pipeline()
  File "/home/samw/prog/voctomix/voctocore/lib/pipeline.py", line 169, in __init__
    self.pipeline.use_clock(Clock)
AttributeError: 'Bin' object has no attribute 'use_clock'. Did you mean: 'set_clock'?

The really weird thing is that something is causing Gst.parse_launch to return a different type of object. If we add:
--- a/voctocore/lib/pipeline.py
+++ b/voctocore/lib/pipeline.py
@@ -166,6 +166,7 @@ class Pipeline(object):
         for bin in self.bins:
             bin.attach(self.pipeline)

+        print(type(self.pipeline))
         self.pipeline.use_clock(Clock)

         # fetch all queues

and run with -gg, we see (as expected):
❯ python voctocore/voctocore.py -gg
<class 'gi.overrides.Gst.Pipeline'>
^C

but if we run with -ggg, the type has changed!:
❯ python voctocore/voctocore.py -ggg
<class 'gi.overrides.Gst.Bin'>
.... traceback omitted ....

I've narrowed it down to Gst.debug_add_log_function in debug.py. If you comment that out, it works. So it seems to be a combination of setting the default threshold to DEBUG and adding a log function.
To be honest this caused me psychic damage but I thought I'd better write it down somewhere...
This is on voctomix 27e2c58eaeda59cc021a6596d36fdb1ed28a4ace.
    INFO root: Python Version: sys.version_info(major=3, minor=10, micro=12, releaselevel='final', serial=0)
    INFO root: GStreamer Version: (major=1, minor=22, micro=5, nano=0)

Filed a pygobject issue: https://gitlab.gnome.org/GNOME/pygobject/-/issues/664


Updated for new Stonehearth standards

The old recommended settings were wrong with the new game. Those would not only generate bigger files but also be misaligned with what the animations expected.

Merged this in and will do a release shortly! Thank you very much for the PR!


Add phpcs and phpcbf

Codecov Report

Merging #9 (571f0cb) into main (fb7e72e) will not change coverage.
The diff coverage is 100.00%.

@@             Coverage Diff             @@
##                main        #9   +/-   ##
===========================================
  Coverage     100.00%   100.00%
  Complexity         4         4
===========================================
  Files              4         4
  Lines              9         9
===========================================
  Hits               9         9

Impacted Files
Coverage Δ

app/Console/Kernel.php
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update fb7e72e...571f0cb. Read the comment docs.


Endpoint changes with k8s 1.5

In kubernetes 1.5, the "parameters" options in the storage class no longer use the "endpoints" parameter.  As per https://github.com/kubernetes/kubernetes/pull/34705:

When the persistent volumes are dynamically provisioned, the Gluster plugin automatically create an endpoint and a headless service in the name `gluster-dynamic-

Leaving it in will generate the below error when trying to create the PVC.  This option needs to be removed from the Hello World storage class example.  Also, gk-deploy should not even create the "heketi-storage-endpoints" at all since k8s handles the endpoint.
ubuntu@kube1:~$ kubectl describe pvc/gluster1
Name:           gluster1
Namespace:      default
Status:         Pending
Volume:
Labels:         <none>
Capacity:
Access Modes:
Events:
  FirstSeen     LastSeen        Count   From                            SubobjectPath   Type            Reason                  Message
  ---------     --------        -----   ----                            -------------   --------        ------                  -------
  10m           14s             41      {persistentvolume-controller }                  Warning         ProvisioningFailed      Failed
to provision volume with StorageClass "gluster-heketi": glusterfs: invalid option "endpoint" for volume plugin kubernetes.io/glusterfs

It will be removed with when OCP 3.5 is released or we could even have version specific defs

Here's an example of k8s automatically creating the endpoint:
ubuntu@kube1:~$ sudo kubectl create -f docs/examples/hello_world/gluster-pvc.yaml
persistentvolumeclaim "gluster1" created
ubuntu@kube1:~$ sudo kubectl get endpoints
NAME                         ENDPOINTS                                      AGE
glusterfs-dynamic-gluster1   <IP_ADDRESS>:1,<IP_ADDRESS>:1,<IP_ADDRESS>:1   10s
heketi                       <IP_ADDRESS>:8080                           23h
heketi-storage-endpoints     <IP_ADDRESS>:1,<IP_ADDRESS>:1,<IP_ADDRESS>:1   23h
kubernetes                   <IP_ADDRESS>:6443                              2d

@screeley44 OCP?  Sorry, not familiar with that.

OpenShift Container Platform - I don't think Kubernetes 1.5 is officially released yet is it?  OCP is always behind Kube as that is downstream and Kube is upstream, so we might have to manage those differences in some way, I guess we also need an OCP version of HelloWorld doc as well

OK, thanks.  Familiar with OpenShift, just not that acronym.  Kubernetes v1.5 was just released a couple days ago.

We do need to maintain compatibility with both Kubernetes and OpenShift. This will require a few changes in various places, starting with https://github.com/heketi/heketi. The setup-openshift-heketi-storage command of heketi-cli will need to be trimmed down so it only creates the DB secret and the copy job. Then we'll still need to create the endpoints manually for OpenShift and also Kube < 1.5 (which will require a version check). Once these things are done we should be able to get away with not creating them for Kube 1.5.
@ravishivt Would you be willing to open the issue on the heketi project, as a compatibility request for Kubernetes 1.5?

Sure, https://github.com/heketi/heketi/issues/628

Since this PR was last updated, it has been determined that the heketi-storage-endpoints are still required since the heketidbstorage volume is statically provisioned. Further, the Hello World example has been updated to indicate that endpoints: should be omitted from Kube >= 1.6.


About won't render

I was able to get everything set up and working but the about link isn't re-rendering, even on a reload.  In the Route line I added an "exact" for the '/' path and that now makes it render when reloaded but the links don't cause the page to reload.
Any suggestions?

I see you committed some changes to AppView.js and other files to address the router issues but for some reason when I do a git clone I'm not getting these changes.

Good catch. The withRouter HOC should wrap outside of connect, as per the react-router-dom documentation.
See ff02e7f for diff.
Tell me if this is fixed or not.

That did the trick.  I figured it was the shouldcomponentupdate setting but didn't see the wrapping bit inside the documentation.. Thanks!


Return Calls Work Horse (Front End)

Once a return call has been started and the phone has been connected on both ends (handled in #xxxx).  You will need to load up the core call ui screen in the middle.

[x] "Start" open right portion of the screen to the call view in the middle, and the either
[x] Existing case data on the right (Already built)
[x] New case on the right if there is no existing case selected (Already built)

The Main call screen has several components and 4 tabs.  We will focus only on the first 2 tabs for this case.

[x] Create Case card with 2 tabs across the top
[x] "Current Call"
[x] "Scripts"

Main tab "Current Call"
Design as follows in the image above

[x] Phone
[x] Survivor Name
[x] number of calls / number of days placeholder
[x] Language Flag
[x] Mute Icon
[x] Join Operator Icon
[x] Hangup Icon
[ ] Existing cases cards
[x] Call Status Dropdown (see below)
[x] Notes Box

Second Tab "Scripts"

[x] Expansion panels with text (see image)

When the call is completed in any way, we need to

[ ] REQUIRE that the call status is updated on the record

would like to see this in action to approve it.  I'm sure we will once flow pops it open.

approved


ValueError: libfranka: Attempt to set invalid transformation in motion generator. Has to be column major!

I'm using frankx (a high level api for libfranka), but when I run example/home.py i get:
# python3 examples/home.py
initial position:   0.529378
  0.123311
   0.37398
   2.35987
-0.0296578
 0.0611505
 -0.643318
initial velocity: 0
0
0
0
0
0
0
initial acceleration: 0
0
0
0
0
0
0
target position: 0.4805
-0.229
 0.389
     0
    -0
     0
  1.75
target velocity: 0
0
0
0
0
0
0
tf: 4298.34
v_max_tfs: 71.8799
518.105
22.0886
1179.93
14.8289
30.5753
4298.34
a_max_tfs:  8.5064
22.8376
4.71548
30.1382
3.37865
4.85148
84.8339
j_max_tfs:  1.55498
 3.00373
 1.04933
 3.61387
0.840214
 1.06941
 7.20455
a: -1.99876e-19
-1.44069e-18
 6.14216e-20
-4.04976e-12
-6.29602e-12
-4.05035e-12
-6.29601e-12
b:  2.14785e-15
 1.54815e-14
-6.60028e-16
 3.48145e-08
  5.4125e-08
 3.48196e-08
 5.41248e-08
c: -6.15479e-12
-4.43632e-11
 1.89135e-12
-7.48225e-05
-0.000116324
-7.48333e-05
-0.000116324
d: 0
0
0
0
0
0
0
e: 0
0
0
0
0
0
0
f:   0.529378
  0.123311
   0.37398
   2.35987
-0.0296578
 0.0611505
 -0.643318
Traceback (most recent call last):
  File "examples/home.py", line 17, in <module>
    robot.move(camera, LinearMotion(home, 1.75))
ValueError: libfranka: Attempt to set invalid transformation in motion generator. Has to be column major!

To reproduce:
git clone https://github.com/dti-research/frankx.git
cd frankx
docker build -t pantor/frankx -f docker/Dockerfile .
docker run -it --rm --network=host --privileged -v $(pwd):/code/frankx -w /code/frankx pantor/frankx

And inside the container build the repo:
mkdir build && cd build
cmake ..
make -j$(nproc)
make install

And finally run the example:
python3 example/home.py

I've checked that the transformation matrix is correct, which it seems it is.
I'm running firmware 4.0.4 and libfranka 0.8.0

Any updates on this?

Hi,
the transformation matrix set in the settings looks good!
The error you get arises here in libfranka, so on client side. This check is done for the commanded O_T_EE before it is sent to the robot. Please make sure to disable rate-limiting and filtering in the control loop. To debug that error further, you could log the commanded O_T_EE and check if it is a valid homogeneous transformation.
In 0.8.0 we split up F_T_EE into F_T_NE (which can be set in DESK) and NE_T_EE (can be set during run-time by the setEE operation) but also provide the user a calculated F_T_EE in the robot state. See here for all 0.8.0 changes.

Okay. I will look into this at a later date. I would strongly recommend that you find a way to allow users to downgrade the controller firmware to whatever the user want.

Hi @sgabl. So the commanded O_T_EE looks like this:
    0.707095    -0.707091  1.34426e-06     0.480498
    0.707091     0.707095  1.61359e-06    -0.204001
-2.09148e-06 -1.90446e-07            1       0.2676
           0            0            0            1

Which seems to be a valid homogeneous transformation. What next?

Hi @nily-dti. Yes, the commanded O_T_EE you posted is a valid homogeneous transformation and won't be rejected by libfranka.
To debug that problem further I think that a good place to insert a print statement would be before control_loop.cpp#L47 or as a part of the invalid_argument message. When printing in every control loop step (1kHz), you could get side effects like lost / late command packets which could change the behavior.

Met the same issues, any updates?

The problem arises because frankx tries to set EE matrix in setDefaultBehavior. However the behavior of setEE() function changes in libfranka 0.8.0

Hi, @jmkl009
When I was trying to run the examples that use the cartesian motion generator, the exceptions were thrown by libfranka (e.g. cartesian_motion_generator_joint_acceleration_discontinuity, cartesian_motion_generator_joint_velocity_discontinuity,). So, could you please share the solutions if you have already solved the similar issues?
Best regards

I have not solved the issue of acc discontinuity using LinearMotion/WaypointMotion in frankx. This problem arises due to Ruckig not checking joint acceleration against the limits when interpolating in cartesian space. We however cannot check the joint limits for Ruckig because that require us to have access to the internal inverse kinematic solver of the panda arm. That being said, I have heard people trying to convert CartesianPose to corresponding CartesianVelocity control loop and had success solving the problem. Another possible solution is to have ruckig plan out inside motion generator and we implement PD control to achieve the pose at every iteration.

@jmkl009 Thanks for your reply, I will try it.

Hi all,
thank you for the discussion. If anything is still open, don't hesitate to re-open!
Cheers,
Andreas


Updated natalsupplement-pregna...

Adding natalsupplement-pregna....
Review: https://brms-simulator.apps.silver.devops.gov.bc.ca/rule/6670c911ae632fd69b926de0?version=inReview&_=1732725348941

Rachel (@rachel0728) and I did Validation Testing for both Natal Supplement rules (Pregnancy and Infant). Here's our feedback:
Natal Supplement - both rules

"Family Unit in Pay for month" input is not present in both rules but it is present in most other rules
There should be an output for Cancellation Date (i.e. the month in which the child turns 1 year old). It is noted in the map as "System will calculate the expected end of benefits date for 12 months after the date of delivery". Related to this is that Cancellation Date should me maxed out at 22 months from today's date.
Input Benefit Month allows any date in the past or in the future. It should be limited to the rolling 3 months (Current, Past, Future)

Natal Supplement Pregnacy

Reason "Date of expected delivery has already passed" sounds like it is referring to today's date but it is referring to Benefit Month input.

Natal Supplement Infant

Date of Birth input should not allow a future date
if Natal Supplement is already approved as part of the Pregnacy rule, how will the Infant rule catch that?

@tekarrawilkinson @prchristenson @Iliana777

@sbuhovac @rachel0728)

Natal Supplement - both rules

"Family Unit in Pay for month" input is not present in both rules but it is present in most other rules

Updated both rules to include this, was thinking maybe this would exist in the parent rule, but we can visit that later.

There should be an output for Cancellation Date (i.e. the month in which the child turns 1 year old). It is noted in the map as "System will calculate the expected end of benefits date for 12 months after the date of delivery". Related to this is that Cancellation Date should me maxed out at 22 months from today's date.

We haven't built cancellation or end-dates into any of the rules yet, so I'm no sure what the approach will be yet, we'll have to discuss it.

Input Benefit Month allows any date in the past or in the future. It should be limited to the rolling 3 months (Current, Past, Future)

This will need to be a klamm data validation, and won't be implemented right away but I will note this.

Natal Supplement Pregnacy

Date of Birth input should not allow a past date

This will be a klamm data validation, Tim is already working on this for us.

Reason "Date of expected delivery has already passed" sounds like it is referring to today's date but it is referring to Benefit Month input.

I can change this to "The expected delivery date is prior to the benefit month."

Natal Supplement Infant

Date of Birth input should not allow a future date

This can be a klamm data validation.

if Natal Supplement is already approved as part of the Pregnacy rule, how will the Infant rule catch that?

Not sure how to build the parent rule at the moment, I'll need to discuss with the devs on how this can function.

Clarification: Natal Supplement - Pregnancy: estimatedDeliveryDate cannot be before the benefit month being assessed.

rule is built to function this way

Natal Supplement - Infant: Birth Date cannot be in the future (this is being completed by dev in klamm for data validation)

klamm validation has been updated and a future date cannot be assessed.
@sbuhovac @rachel0728 this one now has the updated klamm validation and everything else isnt applicable in the rule in the current state

Rachel (@rachel0728) and I did another round of validation testing, so here is our further feedback:

Natal Supplement - Infant rule allows 14 months instead of 13 months. For example, if DOB is any date in Nov 2024 then the last allowed benefit month should be Nov 2025 (13 months duration starts with the month of birth as the first month). Currently, the rule allows Dec 2025 as the last eligible month, and that is the 14th month.
Natal Supplement - Pregnancy rule contains input Estimated Delivery Date and it only allows past dates. It should be reverse, it should only allow future dates.

For @tekarrawilkinson  to review.

Rachel (@rachel0728) and I did another round of validation testing, so here is our further feedback:

Natal Supplement - Infant rule allows 14 months instead of 13 months. For example, if DOB is any date in Nov 2024 then the last allowed benefit month should be Nov 2025 (13 months duration starts with the month of birth as the first month). Currently, the rule allows Dec 2025 as the last eligible month, and that is the 14th month.
Natal Supplement - Pregnancy rule contains input Estimated Delivery Date and it only allows past dates. It should be reverse, it should only allow future dates.

For @tekarrawilkinson to review.

@rachel0728
I've altered the rule to be a bit more precise with the 13 month calculation, it may need to be adjusted again because its calculating it in hours.
I've updated the Estimated Delivery Date to include future dates, that's just my error.

Rachel (@rachel0728) and I did another round of validation testing, so here is our further feedback:

Natal Supplement - Infant rule allows 14 months instead of 13 months. For example, if DOB is any date in Nov 2024 then the last allowed benefit month should be Nov 2025 (13 months duration starts with the month of birth as the first month). Currently, the rule allows Dec 2025 as the last eligible month, and that is the 14th month.
Natal Supplement - Pregnancy rule contains input Estimated Delivery Date and it only allows past dates. It should be reverse, it should only allow future dates.

For @tekarrawilkinson to review.

@rachel0728 I've altered the rule to be a bit more precise with the 13 month calculation, it may need to be adjusted again because its calculating it in hours.
I've updated the Estimated Delivery Date to include future dates, that's just my error.

Thank you for fixing both @tekarrawilkinson. Upon retesting, I just realized there is no input for "Multiple Births" for the Natal Supplement - Infant rule. It should function like "Multiple Pregnancy" input in the Pregancy rule and approve $160 amount.

@sbuhovac @tekarrawilkinson @rachel0728  @Iliana777
Quick question:  If we are designing & building the natal supp rules to be contact based (per infant) rather than case based (family unit), I don't believe we would have to account for multiple births. I haven't run any validation tests yet but thought I would ask the question now just in case it helps this discussion.

@sbuhovac @tekarrawilkinson @rachel0728 @Iliana777
Quick question: If we are designing & building the natal supp rules to be contact based (per infant) rather than case based (family unit), I don't believe we would have to account for multiple births. I haven't run any validation tests yet but thought I would ask the question now just in case it helps this discussion.

I was thinking we could capture this in the parent rule for Natal, but wanted to confirm the amount if there were multiple infants.

@sbuhovac @tekarrawilkinson @rachel0728 @Iliana777
Quick question: If we are designing & building the natal supp rules to be contact based (per infant) rather than case based (family unit), I don't believe we would have to account for multiple births. I haven't run any validation tests yet but thought I would ask the question now just in case it helps this discussion.

I was thinking we could capture this in the parent rule for Natal, but wanted to confirm the amount if there were multiple infants.

Now I recall that discussion around Natal Supplement for infants being contact/child based (in the future). In that case, we don't need "Multiple Births" input. However, the regs limit the supplement to $160 so we'll need to have some sort of limit on triplets (or more), unless policy changes and allows $80 per child regardless of number.

@prchristenson @sbuhovac @rachel0728 @Iliana777
After some discussion with devs and policy and reviewing these comments, I've added a Natal Supplement Parent Rule page on the hive https://thehive.apps.silver.devops.gov.bc.ca/business_rules_engine/rules_repository/natal_supplement_parent_rule
The parent rule will need to provide a limit to the supplement of $160 for multiples as well as ensuring that the infant and pregnancy rule are not issued concurrently.
Besides these items, I think we can move forward with this rule knowing the parent rule will handle these exceptions.

@prchristenson @sbuhovac @rachel0728 @Iliana777
After some discussion with devs and policy and reviewing these comments, I've added a Natal Supplement Parent Rule page on the hive https://thehive.apps.silver.devops.gov.bc.ca/business_rules_engine/rules_repository/natal_supplement_parent_rule
The parent rule will need to provide a limit to the supplement of $160 for multiples as well as ensuring that the infant and pregnancy rule are not issued concurrently.
Besides these items, I think we can move forward with this rule knowing the parent rule will handle these exceptions.

Okay, in that case, validation testing is passed on our end. @prchristenson and @Iliana777 can proceed with their Validation Testing.

@tekarrawilkinson @prchristenson
I haven't started validation testing but re: the infant and the pregnancy rules not issued concurrently, we should be able to issue in situations where there is a pregnancy and an infant under 12 months on the case.

@tekarrawilkinson @prchristenson I haven't started validation testing but re: the infant and the pregnancy rules not issued concurrently, we should be able to issue in situations where there is a pregnancy and an infant under 12 months on the case.

I've updated the hive page to include these parameters as well. Thanks!

@tekarrawilkinson @prchristenson @sbuhovac @rachel0728
Ran two tests:

Delivery date over 9 months - it failed correctly but reason provided was 'expected delivery date is prior to the benefit month'
Benefit month prior to previous benefit month - if we are working with the current 3 rolling months, it should fail when a benefit month prior to the previous benefit month is entered

I know we have discussed that this will be mitigated in KLAMM but noting it here for the record.

@tekarrawilkinson @prchristenson @sbuhovac @rachel0728
Ran two tests:

Delivery date over 9 months - it failed correctly but reason provided was 'expected delivery date is prior to the benefit month'

This will now approve, and will need to be a klamm validation (added under user story 5572)

Benefit month prior to previous benefit month - if we are working with the current 3 rolling months, it should fail when a benefit month prior to the previous benefit month is entered

This will need to be discussed as its own rule when it comes to the rolling 3 benefit months as we haven't incorporated this into other rules and I've added a user story under future enhancements (User story 5573).

I know we have discussed that this will be mitigated in KLAMM but noting it here for the record.
Other concern that I have is the input 'Family unit in pay for month' in the context of these Natal (Pregnancy and Infant) rules as there are multiple dates (benefit month, estimated delivery date, date of birth). I know that the input is the standard input we have used for other rules but the other rules don't have so many dates. Just want to make sure that it is clear to the user which month the family unit is in pay for.

This is a really good point that I'm should be incorporated into the above 3 benefit month rolling eligibility concept, I've added your comment to the user story I've created.

@tekarrawilkinson @prchristenson @sbuhovac @rachel0728
Further feedback:
I like the reason 'Has not provided written confirmation of pregnancy'. Could we use something similar (pregnancy confirmed?) as the entry label rather than 'is pregnant?'

@cevenden and I did isolation testing on both Natal Supplements and here's our feedback.
Natal Supplement Pregnancy failed when the date within BenefitMonth input is after the date within the EstimatedDeliveryDate input but both dates are the same month. For example, if BenefitMonth date is 2025-07-28 and EstimatedDeliveryDate is 2025-07-17, the test should pass because it's the same month. Attached is our Isolation Tester file.
health-supplements_natalsupplement-pregnancy_testing_familyUnitInPayForMo_truenatalsupplement-pregna..._2024-12-20T18-03-05Z.csv
Isolation Tester doesn't work for Natal Supplement Infant as it gives out an error message.
@tekarrawilkinson @brysonjbest

@sbuhovac @cevenden @tekarrawilkinson I have updated the application and the isolation tester should now be working for Natal Supplement Infant. Handling of the 'today' restriction in validation hadn't yet been updated for scenario generation, but this should now be fixed in the application.
Additionally, I added the specific scenario you gave as an example for the Natal Supplement Pregnancy and it appears to be passing.

Isolation testing has passed for Natal Supplement Pregnancy.
health-supplements_natalsupplement-pregnancy_testing_health-supplements_natalsupplement-pregnancy_Isolation_testing_2024-12-21T00-20-09Z.csv
Isolation testing for Natal Supplement Infant fails when Benefit Month is the 14th month after DateOfBirth (example: BenefitMonth is March 2025 and DOB is February 2024). Output should be 'not eligible' but currently it shows eligible.
health-supplements_natalsupplementinfant_testing_natalsupplementinfant_isolation_testingV2_2024-12-21T00-18-00Z.csv


Remove link to internal documentation from Overview of Metadata Structure section in the Data Portal.

There is a link to the internal documentation on the Data Browser which should be removed as it is a work in progress document which does not add value to the user in the state it is in right now:
https://data.humancellatlas.org/metadata/design-principles/structure
Please remove the sentence: " More detailed specification of the format and syntax of the metadata schemas and their instantiation can be found in the metadata schema structure specification on Google Drive. "

Closing as this will be resolved within the Metadata-schema repo.


fix for read the docs build

@jamienoss, I have an added change that will obviate the need for :crossed_fingers: ! CI and tox should fail in same way (from warnings) that the RTD does with this


This example of mine wont work

https://gist.github.com/kieronboz/ed6dec78b3be2ba51e7d
Sorry to gist it, but ive imported script, applied to the tables, also tried a different id when running the script, no joy. any help appreciated.

Make sure you have the proper table syntax and tags.  It needs this to work.

...

Considering this fixed. Thanks for chipping in @dtwen


alpine/3.4/amd64 lxd image has wrong version (3.3) in /etc/os-release

To reproduce, with a recent Ubuntu 16.04:
lxc launch images:alpine/3.4/amd64 alpine34
lxc exec alpine34 cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.3.0
PRETTY_NAME="Alpine Linux v3.3"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"
Using lxc image list images:
I find this information about the image:
ALIAS: alpine/3.4/amd64
FINGERPRINT: 88c9d0565328
PUBLIC: yes
DESCRIPTION: Alpine 3.4 (amd64) (20160716_17:50)
ARCH: x86_64
SIZE: 2.63MB
UPLOAD DATE: Jul 16 2016 at 6:00pm (UTC)
I suspect it's a problem with the image generation scripts.
I first entered it here:  http://bugs.alpinelinux.org/issues/5908

https://jenkins.linuxcontainers.org/view/LXC/view/LXC Templates/job/lxc-template-alpine/arch=amd64,release=3.4,restrict=lxc-priv,variant=default/190/console shows that we do pass the 3.4 version string to lxc-alpine and it does seem to be downloading a bunch of 3.4 things.

I guess whatever was broken got fixed:
stgraber@castiana:~$ lxc launch images:alpine/3.4/amd64 alpine34
Creating alpine34
Retrieving image: 100%
Starting alpine34
stgraber@castiana:~$ lxc exec alpine34 cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.4.1
PRETTY_NAME="Alpine Linux v3.4"
HOME_URL="http://alpinelinux.org"
BUG_REPORT_URL="http://bugs.alpinelinux.org"
stgraber@castiana:~$

Indeed, it was fixed in the new template from 20160717_17:50.