Hello,
Maybe I'm wrong, but I have a suspicion BrickletSegmentDisplay4x7V2#get_segments does not return correct values.
I think the Bricklet responds with correct data, but the data is mangled when unpacked.
To be precise, when data is unpacked for the first segment (8 values), too much data is slurped so nothing remains for the other 27 values.
Here is a quick & dirty debug helper:
module Tinkerforge
class BrickletSegmentDisplay4x7V2
def debug_get_segments
puts ' |.......|.......|.......|.......|.|'
puts 'get_segments : ' + get_