I just figured it out, so just in case anyone wants to do something similar:
For writing data it was fine to use the default class the psychopy version of parallel brings (from psychopy import parallel).
For reading from my particular device I used the original parallel class instead: https://github.com/pyserial/pyparallel (import parallel). Then there are several other functions for the object, especially the PPDATADIR(out) which can reverse the direction of the port. Having the out parameter set to 0, turns off the driver so that the peripheral device drives the signal. Then it was possible to read data using PPRDATA() function or convert this to single pin data using p.PPRDATA() >> (pinNumber - 2)) + 1 as it can be seen in the psychopy version of parallel.
Complete code looked like this:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import parallel
pinNumber = 2 # one data pin the device uses
p = parallel.Parallel() # with default port = 0, you can also give another port as argument
p.PPDATADIR(0) # sets port to reverse mode (default out = 1)
p.PPRDATA() >> (pinNumber - 2)) + 1 #read single pin data
Of course again I implemented something related to how often it should be checked and then saved it somewhere, but just to show what worked for me.
Maybe there is an easier way to do this in psychopy but at least it worked